buffet: Update configuration reading for new fields moved from privetd

Removed default_ prefix from default_name and default_description.
Added fields location, model_id, oem_name, model_name.

BUG=brillo:377,brillo:342
TEST=FEATURE=test emerge-gizmo buffet
CQ-DEPEND=CL:266085

Change-Id: I133ac5e41db0d7a7fc67fa0d9773dd1179a90032
Reviewed-on: https://chromium-review.googlesource.com/266028
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/buffet_config.cc b/buffet/buffet_config.cc
index 1ed7842..d8e0324 100644
--- a/buffet/buffet_config.cc
+++ b/buffet/buffet_config.cc
@@ -7,19 +7,56 @@
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
 
+namespace {
+
+// TODO(vitalybuka): Remove this when deviceKind is gone from server.
+std::string GetDeviceKind(const std::string& manifest_id) {
+  CHECK_EQ(5u, manifest_id.size());
+  std::string kind = manifest_id.substr(0, 2);
+  if (kind == "AC")
+    return "accessPoint";
+  if (kind == "AK")
+    return "aggregator";
+  if (kind == "AM")
+    return "camera";
+  if (kind == "AB")
+    return "developmentBoard";
+  if (kind == "AE")
+    return "printer";
+  if (kind == "AF")
+    return "scanner";
+  if (kind == "AD")
+    return "speaker";
+  if (kind == "AL")
+    return "storage";
+  if (kind == "AJ")
+    return "toy";
+  if (kind == "AA")
+    return "vendor";
+  if (kind == "AN")
+    return "video";
+  LOG(FATAL) << "Invalid model id: " << manifest_id;
+  return std::string();
+}
+
+}  // namespace
+
 namespace buffet {
+
 namespace config_keys {
 
-const char kClientId[]             = "client_id";
-const char kClientSecret[]         = "client_secret";
-const char kApiKey[]               = "api_key";
-const char kOAuthURL[]             = "oauth_url";
-const char kServiceURL[]           = "service_url";
-const char kDeviceKind[]           = "device_kind";
-const char kName[]                 = "name";
-const char kDefaultDescription[]   = "default_description";
-const char kDefaultLocation[]      = "default_location";
-const char kModelId[]              = "model_id";
+const char kClientId[] = "client_id";
+const char kClientSecret[] = "client_secret";
+const char kApiKey[] = "api_key";
+const char kOAuthURL[] = "oauth_url";
+const char kServiceURL[] = "service_url";
+const char kName[] = "name";
+const char kDescription[] = "description";
+const char kLocation[] = "location";
+const char kOemName[] = "oem_name";
+const char kModelName[] = "model_name";
+const char kModelId[] = "model_id";
+
 const char kPollingPeriodMs[]      = "polling_period_ms";
 
 }  // namespace config_keys
@@ -33,22 +70,43 @@
 
 void BuffetConfig::Load(const chromeos::KeyValueStore& store) {
   store.GetString(config_keys::kClientId, &client_id_);
+  CHECK(!client_id_.empty());
+
   store.GetString(config_keys::kClientSecret, &client_secret_);
+  CHECK(!client_secret_.empty());
+
   store.GetString(config_keys::kApiKey, &api_key_);
+  CHECK(!api_key_.empty());
+
   store.GetString(config_keys::kOAuthURL, &oauth_url_);
+  CHECK(!oauth_url_.empty());
+
   store.GetString(config_keys::kServiceURL, &service_url_);
-  store.GetString(config_keys::kDeviceKind, &device_kind_);
-  store.GetString(config_keys::kName, &name_);
-  store.GetString(config_keys::kDefaultDescription, &default_description_);
-  store.GetString(config_keys::kDefaultLocation, &default_location_);
+  CHECK(!service_url_.empty());
+
+  store.GetString(config_keys::kOemName, &oem_name_);
+  CHECK(!oem_name_.empty());
+
+  store.GetString(config_keys::kModelName, &model_name_);
+  CHECK(!model_name_.empty());
+
   store.GetString(config_keys::kModelId, &model_id_);
+  device_kind_ = GetDeviceKind(model_id_);
+
   std::string polling_period_str;
-  if (store.GetString(config_keys::kPollingPeriodMs, &polling_period_str)) {
-    CHECK(base::StringToUint64(polling_period_str, &polling_period_ms_))
-        << "Failed to parse polling period in configuration file.";
-    VLOG(1) << "Using a polling period of " << polling_period_ms_
-            << " milliseconds.";
-  }
+  if (store.GetString(config_keys::kPollingPeriodMs, &polling_period_str))
+    CHECK(base::StringToUint64(polling_period_str, &polling_period_ms_));
+
+  store.GetString(config_keys::kName, &name_);
+  CHECK(!name_.empty());
+
+  store.GetString(config_keys::kDescription, &description_);
+  store.GetString(config_keys::kLocation, &location_);
+}
+
+void BuffetConfig::set_name(const std::string& name) {
+  CHECK(!name.empty());
+  name_ = name;
 }
 
 }  // namespace buffet