bmc: use json for configuration
Use a json file for configuration of the flash image.
Tested: Verified that /flash/image worked as expected.
Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: I205978203360140870f0e68208912a894e00a6fc
diff --git a/bmc/main.cpp b/bmc/main.cpp
index 2120107..b988ab2 100644
--- a/bmc/main.cpp
+++ b/bmc/main.cpp
@@ -103,93 +103,24 @@
std::unique_ptr<blobs::GenericBlobInterface> createHandler()
{
- /* NOTE: This is unused presently. */
- {
- std::vector<ipmi_flash::HandlerConfig> configsFromJson =
- ipmi_flash::BuildHandlerConfigs(ipmi_flash::jsonConfigurationPath);
-
- for (const auto& config : configsFromJson)
- {
- std::fprintf(stderr, "config loaded: %s\n", config.blobId.c_str());
- }
- }
-
ipmi_flash::ActionMap actionPacks = {};
- {
- auto bmcPack = std::make_unique<ipmi_flash::ActionPack>();
-
-#ifdef ENABLE_REBOOT_UPDATE
- static constexpr auto rebootTarget = "reboot.target";
- static constexpr auto rebootMode = "replace-irreversibly";
-
- bmcPack->update =
- ipmi_flash::SystemdUpdateMechanism::CreateSystemdUpdate(
- sdbusplus::bus::new_default(), rebootTarget, rebootMode);
-#else
- bmcPack->update =
- ipmi_flash::SystemdUpdateMechanism::CreateSystemdUpdate(
- sdbusplus::bus::new_default(), UPDATE_DBUS_SERVICE);
-#endif
-
- bmcPack->preparation =
- ipmi_flash::SystemdPreparation::CreatePreparation(
- sdbusplus::bus::new_default(), PREPARATION_DBUS_SERVICE);
-
- bmcPack->verification =
- ipmi_flash::SystemdVerification::CreateVerification(
- sdbusplus::bus::new_default(), VERIFY_STATUS_FILENAME,
- VERIFY_DBUS_SERVICE);
-
- std::string bmcName;
-#ifdef ENABLE_STATIC_LAYOUT
- bmcName = ipmi_flash::staticLayoutBlobId;
-#endif
-#ifdef ENABLE_TARBALL_UBI
- bmcName = ipmi_flash::ubiTarballBlobId;
-#endif
-
- actionPacks[bmcName] = std::move(bmcPack);
- }
-
-#ifdef ENABLE_HOST_BIOS
- {
- auto biosPack = std::make_unique<ipmi_flash::ActionPack>();
-
- biosPack->preparation =
- ipmi_flash::SystemdPreparation::CreatePreparation(
- sdbusplus::bus::new_default(), PREPARATION_BIOS_TARGET);
-
- biosPack->verification =
- ipmi_flash::SystemdVerification::CreateVerification(
- sdbusplus::bus::new_default(), BIOS_VERIFY_STATUS_FILENAME,
- VERIFY_BIOS_TARGET);
-
- biosPack->update =
- ipmi_flash::SystemdUpdateMechanism::CreateSystemdUpdate(
- sdbusplus::bus::new_default(), UPDATE_BIOS_TARGET);
-
- actionPacks[ipmi_flash::biosBlobId] = std::move(biosPack);
- }
-#endif
+ std::vector<ipmi_flash::HandlerConfig> configsFromJson =
+ ipmi_flash::BuildHandlerConfigs(ipmi_flash::jsonConfigurationPath);
std::vector<ipmi_flash::HandlerPack> supportedFirmware;
supportedFirmware.push_back(std::move(ipmi_flash::CreateFileHandlerPack(
ipmi_flash::hashBlobId, HASH_FILENAME)));
-#ifdef ENABLE_STATIC_LAYOUT
- supportedFirmware.push_back(std::move(ipmi_flash::CreateFileHandlerPack(
- ipmi_flash::staticLayoutBlobId, STATIC_HANDLER_STAGED_NAME)));
-#endif
-#ifdef ENABLE_TARBALL_UBI
- supportedFirmware.push_back(std::move(ipmi_flash::CreateFileHandlerPack(
- ipmi_flash::ubiTarballBlobId, TARBALL_STAGED_NAME)));
-#endif
-#ifdef ENABLE_HOST_BIOS
- supportedFirmware.push_back(std::move(ipmi_flash::CreateFileHandlerPack(
- ipmi_flash::biosBlobId, BIOS_STAGED_NAME)));
-#endif
+ for (auto& config : configsFromJson)
+ {
+ supportedFirmware.push_back(std::move(
+ ipmi_flash::HandlerPack(config.blobId, std::move(config.handler))));
+ actionPacks[config.blobId] = std::move(config.actions);
+
+ std::fprintf(stderr, "config loaded: %s\n", config.blobId.c_str());
+ }
auto handler = ipmi_flash::FirmwareBlobHandler::CreateFirmwareBlobHandler(
std::move(supportedFirmware), ipmi_flash::supportedTransports,