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(