7 #include <glib/gi18n.h>
10 #include "libaktualizr/packagemanagerinterface.h"
12 #include "crypto/keymanager.h"
13 #include "utilities/apiqueue.h"
15 constexpr
const char *remote =
"aktualizr-remote";
19 void operator()(T *e)
const { g_object_unref(
reinterpret_cast<gpointer
>(e)); }
23 using GObjectUniquePtr = std::unique_ptr<T, GObjectFinalizer<T>>;
24 using OstreeProgressCb = std::function<void(
const Uptane::Target &,
const std::string &,
unsigned int)>;
28 OstreeProgressCb progress_cb_in)
29 : target{std::move(target_in)},
32 cancellable{cancellable_in},
33 progress_cb{std::move(progress_cb_in)} {}
35 unsigned int percent_complete;
37 GObjectUniquePtr<GCancellable> cancellable;
38 OstreeProgressCb progress_cb;
44 const std::shared_ptr<INvStorage> &storage,
const std::shared_ptr<HttpInterface> &http);
46 std::string name()
const override {
return "ostree"; }
47 Json::Value getInstalledPackages()
const override;
48 std::string getCurrentHash()
const;
52 void completeInstall()
const override;
54 void updateNotify()
override;
57 TargetStatus verifyTarget(
const Uptane::Target &target)
const override;
59 GObjectUniquePtr<OstreeDeployment> getStagedDeployment()
const;
60 static GObjectUniquePtr<OstreeSysroot> LoadSysroot(
const boost::filesystem::path &path);
61 static GObjectUniquePtr<OstreeRepo> LoadRepo(OstreeSysroot *sysroot, GError **error);
62 static bool addRemote(OstreeRepo *repo,
const std::string &url,
const KeyManager &keys);
66 OstreeProgressCb progress_cb =
nullptr);
69 TargetStatus verifyTargetInternal(
const Uptane::Target &target)
const;
72 std::unique_ptr<Bootloader> bootloader_;