Add OEM name to model_sku.json
Add a new top-level field oem_name in model_sku.json, and the data will
later be written to VPD based on its key (i.e., the custom label). This
is part of the OEM name customization process, see
go/cros-healthd-customize-impl-oem.
BUG=b:239674405
TEST=./generate.sh
TEST=(cd test/project/fake/fake && config/bin/gen_config config.star)
then verify model_sku.json
TEST=./run_py_unittests.sh && ./run_go_unittests.sh
Cq-Depend: chrome-internal:4923552,chrome-internal:4923553,chrome-internal:4922938,chrome-internal:4923122
Cq-Depend: chrome-internal:4923577,chrome-internal:4922772,chrome-internal:4923554,chrome-internal:4922336
Cq-Depend: chrome-internal:4923555,chrome-internal:4923597,chrome-internal:4923123,chrome-internal:4923556
Cq-Depend: chrome-internal:4923071,chrome-internal:4922398,chrome-internal:4923344,chrome-internal:4922071
Cq-Depend: chrome-internal:4923124,chrome-internal:4923345,chrome-internal:4923598,chrome-internal:4923599
Cq-Depend: chrome-internal:4923125,chrome-internal:4923346,chrome-internal:4923618,chrome-internal:4922773
Cq-Depend: chrome-internal:4923347,chrome-internal:4923126,chrome-internal:4923348,chrome-internal:4923600
Cq-Depend: chrome-internal:4923619,chrome-internal:4923349,chrome-internal:4922774,chrome-internal:4923620
Cq-Depend: chrome-internal:4923601,chrome-internal:4923602,chrome-internal:4923621,chrome-internal:4922939
Cq-Depend: chrome-internal:4922775,chrome-internal:4923127,chrome-internal:4923072,chrome-internal:4923622
Cq-Depend: chrome-internal:4923623,chrome-internal:4923073,chrome-internal:4922072,chrome-internal:4923603
Cq-Depend: chrome-internal:4923128,chrome-internal:4923578,chrome-internal:4923624,chrome-internal:4922073
Cq-Depend: chrome-internal:4922776,chrome-internal:4923604,chrome-internal:4923129,chrome-internal:4923130
Cq-Depend: chrome-internal:4923350,chrome-internal:4922399
Cq-Depend: chrome-internal:4949287,chrome-internal:4949110,chrome-internal:4949111
Cq-Depend: chrome-internal:4949112,chrome-internal:4948205,chrome-internal:4949508
Cq-Depend: chrome-internal:4953762
Change-Id: I280d0964510e3d465ccdbed66e7b6e77d8ee8c0c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/config/+/3687034
Reviewed-by: Sam McNally <sammc@chromium.org>
Commit-Queue: Denny Huang <dennyh@google.com>
Reviewed-by: YH Lin <yueherngl@chromium.org>
Reviewed-by: Cheng Yueh <cyueh@chromium.org>
diff --git a/payload_utils/factory_config_proto_converter.py b/payload_utils/factory_config_proto_converter.py
index fb03782..5e3ea01 100755
--- a/payload_utils/factory_config_proto_converter.py
+++ b/payload_utils/factory_config_proto_converter.py
@@ -267,6 +267,10 @@
dict that maps the design id onto the factory test config.
"""
product_sku = {}
+ oem_name = {}
+ partners = {x.id.value: x for x in config.partner_list}
+ brand_configs = {x.brand_id.value: x for x in config.brand_configs}
+
# Enumerate designs.
for hw_design in config.design_list:
design_name = hw_design.id.value
@@ -283,6 +287,25 @@
design_config_table.update({'custom_type': 'whitelabel'})
elif custom_type == design_pb2.Design.CustomType.REBRAND:
design_config_table.update({'custom_type': 'rebrand'})
+ # Create map from custom label to oem name.
+ if config.device_brand_list:
+ for device_brand in config.device_brand_list:
+ device_brand_id = device_brand.id.value
+ # Design names should be lowercase, to be consistent with `model`.
+ design_name = device_brand.design_id.value.lower()
+ design_oem_name_table = oem_name.setdefault(design_name, {})
+ if not partners.get(device_brand.oem_id.value):
+ print(
+ "OEM %r for the device_brand %r is not found in partner_list %r." %
+ (device_brand.oem_id.value, device_brand_id, list(partners.keys())),
+ file=sys.stderr)
+ continue
+ key = ''
+ value = partners[device_brand.oem_id.value].name
+ brand_config = brand_configs.get(device_brand_id)
+ if brand_config and brand_config.scan_config.whitelabel_tag:
+ key = brand_config.scan_config.whitelabel_tag
+ design_oem_name_table.setdefault(key, value)
# Enumerate (design, sku id).
for sw_design in config.software_configs:
design_name, sku_id = ParseDesignConfigId(sw_design.design_config_id.value)
@@ -321,7 +344,7 @@
file=sys.stderr)
else:
product_name_table[sku_id] = content
- return {'model': model, 'product_sku': new_product_sku}
+ return {'model': model, 'oem_name': oem_name, 'product_sku': new_product_sku}
def _ReadConfig(path):
diff --git a/payload_utils/test_data/model_sku.json b/payload_utils/test_data/model_sku.json
index d5aee05..b78e212 100644
--- a/payload_utils/test_data/model_sku.json
+++ b/payload_utils/test_data/model_sku.json
@@ -318,6 +318,31 @@
"fw_config": 90914
}
},
+ "oem_name": {
+ "fake_ref_design": {
+ "": "FAKE_OEM"
+ },
+ "project_a": {
+ "": "FAKE_OEMA"
+ },
+ "project_b": {
+ "": "FAKE_OEMB"
+ },
+ "project_box": {
+ "": "FAKE_OEM"
+ },
+ "project_c": {
+ "": "FAKE_OEMC"
+ },
+ "project_rebrand": {
+ "branda": "FAKE_OEMD"
+ },
+ "project_wl": {
+ "loema": "FAKE_LOEMA",
+ "loemb": "FAKE_LOEMB",
+ "loemc": "FAKE_LOEMC"
+ }
+ },
"product_sku": {
"FAKE_REF_DESIGN": {
"0": {
diff --git a/test/project/fake/fake/factory/generated/model_sku.json b/test/project/fake/fake/factory/generated/model_sku.json
index d5aee05..b78e212 100644
--- a/test/project/fake/fake/factory/generated/model_sku.json
+++ b/test/project/fake/fake/factory/generated/model_sku.json
@@ -318,6 +318,31 @@
"fw_config": 90914
}
},
+ "oem_name": {
+ "fake_ref_design": {
+ "": "FAKE_OEM"
+ },
+ "project_a": {
+ "": "FAKE_OEMA"
+ },
+ "project_b": {
+ "": "FAKE_OEMB"
+ },
+ "project_box": {
+ "": "FAKE_OEM"
+ },
+ "project_c": {
+ "": "FAKE_OEMC"
+ },
+ "project_rebrand": {
+ "branda": "FAKE_OEMD"
+ },
+ "project_wl": {
+ "loema": "FAKE_LOEMA",
+ "loemb": "FAKE_LOEMB",
+ "loemc": "FAKE_LOEMC"
+ }
+ },
"product_sku": {
"FAKE_REF_DESIGN": {
"0": {