buffet: Populate firmwareVersion BUG=brillo:103 TEST=buffet_BasicDBusAPI confirms this works as intended. Change-Id: I90e3da7f7a4fd7901e4a605413d81cbd14a43d09 Reviewed-on: https://chromium-review.googlesource.com/247234 Tested-by: Christopher Wiley <wiley@chromium.org> Reviewed-by: Alex Vakulenko <avakulenko@chromium.org> Commit-Queue: Christopher Wiley <wiley@chromium.org>
diff --git a/buffet/states/state_manager.cc b/buffet/states/state_manager.cc index b621d02..d98015d 100644 --- a/buffet/states/state_manager.cc +++ b/buffet/states/state_manager.cc
@@ -9,6 +9,7 @@ #include <base/logging.h> #include <base/values.h> #include <chromeos/errors/error_codes.h> +#include <chromeos/key_value_store.h> #include <chromeos/strings/string_utils.h> #include "buffet/states/error_codes.h" @@ -17,6 +18,13 @@ namespace buffet { +namespace { + +const char kBaseStateFirmwareVersion[] = "base.firmwareVersion"; + +} // namespace + + StateManager::StateManager(StateChangeQueueInterface* state_change_queue) : state_change_queue_(state_change_queue) { CHECK(state_change_queue_) << "State change queue not specified"; @@ -63,6 +71,23 @@ << "Failed to load the state defaults."; json_file_path = enumerator2.Next(); } + + // Populate state fields that belong to the system. + base::FilePath lsb_release_path("/etc/lsb-release"); + chromeos::KeyValueStore lsb_release_store; + std::string firmware_version; + if (lsb_release_store.Load(lsb_release_path)) { + if (!lsb_release_store.GetString("CHROMEOS_RELEASE_VERSION", + &firmware_version)) + LOG(ERROR) << "Missing key for firmware version in version file."; + + } else { + LOG(ERROR) << "Failed to read file for firmwareVersion."; + } + CHECK(SetPropertyValue(kBaseStateFirmwareVersion, + firmware_version, + base::Time::Now(), + nullptr)); } std::unique_ptr<base::DictionaryValue> StateManager::GetStateValuesAsJson(