7 #include <glib/gi18n.h>
10 #include "crypto/keymanager.h"
11 #include "packagemanagerinterface.h"
12 #include "utilities/apiqueue.h"
14 constexpr
const char *remote =
"aktualizr-remote";
18 void operator()(T *e)
const { g_object_unref(reinterpret_cast<gpointer>(e)); }
22 using GObjectUniquePtr = std::unique_ptr<T, GObjectFinalizer<T>>;
23 using OstreeProgressCb = std::function<void(
const Uptane::Target &,
const std::string &,
unsigned int)>;
27 OstreeProgressCb progress_cb_in)
28 : target{std::move(target_in)},
31 cancellable{cancellable_in},
32 progress_cb{std::move(progress_cb_in)} {}
34 unsigned int percent_complete;
36 GObjectUniquePtr<GCancellable> cancellable;
37 OstreeProgressCb progress_cb;
43 const std::shared_ptr<INvStorage> &storage,
const std::shared_ptr<HttpInterface> &http);
45 std::string name()
const override {
return "ostree"; }
46 Json::Value getInstalledPackages()
const override;
47 std::string getCurrentHash()
const;
51 void completeInstall()
const override;
53 void updateNotify()
override { bootloader_->updateNotify(); };
56 TargetStatus verifyTarget(
const Uptane::Target &target)
const override;
58 GObjectUniquePtr<OstreeDeployment> getStagedDeployment()
const;
59 static GObjectUniquePtr<OstreeSysroot> LoadSysroot(
const boost::filesystem::path &path);
60 static GObjectUniquePtr<OstreeRepo> LoadRepo(OstreeSysroot *sysroot, GError **error);
61 static bool addRemote(OstreeRepo *repo,
const std::string &url,
const KeyManager &keys);
65 OstreeProgressCb progress_cb =
nullptr);
68 TargetStatus verifyTargetInternal(
const Uptane::Target &target)
const;
71 std::unique_ptr<Bootloader> bootloader_;