3 #include <primary/aktualizr.h> 6 #include "utilities/utils.h" 11 #include "primary/reportqueue.h" 12 #include "primary/sotauptaneclient.h" 13 #include "storage/invstorage.h" 14 #include "storage/sqlstorage.h" 15 #include "uptane/uptanerepository.h" 33 static std::shared_ptr<INvStorage> newStorage(
const StorageConfig &config) {
34 return std::make_shared<EphemeralStorage>(config,
false);
41 std::unique_ptr<Aktualizr> aktualizr_ptr;
44 CheckForUpdate(
Config config_) : config{config_}, aktualizr_ptr{std_::make_unique<Aktualizr>(config)} {
48 LOG_ERROR <<
"Unable to initialize a device: " << config.storage.path;
53 LOG_DEBUG <<
"Updating a device in " << config.storage.path.native();
57 LOG_DEBUG << e.what();
58 }
catch (
const std::exception &e) {
59 LOG_ERROR <<
"Unable to get new targets: " << e.what();
61 LOG_ERROR <<
"Unknown error occured while checking for updates";
67 std::vector<Config> configs;
71 std::uniform_int_distribution<size_t> gen;
75 : configs{loadDeviceConfigurations(baseDir)}, gen(0UL, configs.size() - 1) {
76 std::random_device seedGen;
81 auto srcConfig = configs[gen(rng)];
82 auto config{srcConfig};
83 config.storage.path = fs::temp_directory_path() / fs::unique_path();
84 LOG_DEBUG <<
"Copy device " << srcConfig.storage.path <<
" into " << config.storage.path;
85 fs::create_directory(config.storage.path);
86 fs::permissions(config.storage.path, fs::remove_perms | fs::group_write | fs::others_write);
87 fs::copy_file(srcConfig.storage.sqldb_path.get(srcConfig.storage.path),
88 config.storage.sqldb_path.get(config.storage.path));
93 void checkForUpdates(
const boost::filesystem::path &baseDir,
const unsigned int rate,
const unsigned int nr,
94 const unsigned int parallelism) {
95 LOG_INFO <<
"Target rate: " << rate <<
"op/s, operations: " << nr <<
", workers: " << parallelism;
97 std::unique_ptr<ExecutionController> execController;
99 execController = std_::make_unique<InterruptableExecutionController>();
101 execController = std_::make_unique<FixedExecutionController>(nr);
Metadata version numbers.
Configuration object for an aktualizr instance running on a Primary ECU.
std::future< result::UpdateCheck > CheckUpdates()
Fetch Uptane metadata and check for updates.
void Initialize()
Initialize aktualizr.