Allow cobalt registry entries to specify IDs for projects.
Bug: 36820
Change-Id: I44838e65d6c86e827ccb1fdb23df6ace34e45499
diff --git a/src/bin/config_parser/src/config_parser/config_reader_test.go b/src/bin/config_parser/src/config_parser/config_reader_test.go
index 1286995..dc28dff 100644
--- a/src/bin/config_parser/src/config_parser/config_reader_test.go
+++ b/src/bin/config_parser/src/config_parser/config_reader_test.go
@@ -48,15 +48,18 @@
customer_id: 1
projects:
- project_name: ledger
+ project_id: 1
project_contact: bob
cobalt_version: 1
- project_name: module_usage_tracking
+ project_id: 2
project_contact: bob
cobalt_version: 1
- customer_name: test_customer
customer_id: 100
projects:
- project_name: test_project
+ project_id: 1
project_contact: bob
cobalt_version: 1
`
@@ -66,15 +69,18 @@
customer_id: 1
projects:
- naINVALIDme: ledger
+ project_id: 1
project_contact: bob
cobalt_version: 1
- project_name: module_usage_tracking
+ project_id: 2
project_contact: bob
cobalt_version: 1
- customer_name: test_customer
customer_id: 100
projects:
- project_name: test_project
+ project_id: 1
project_contact: bob
cobalt_version: 1
`
diff --git a/src/bin/config_parser/src/config_parser/project_list.go b/src/bin/config_parser/src/config_parser/project_list.go
index 646a664..e6d43cc 100644
--- a/src/bin/config_parser/src/config_parser/project_list.go
+++ b/src/bin/config_parser/src/config_parser/project_list.go
@@ -181,16 +181,24 @@
}
if c.CobaltVersion == CobaltVersion1 {
- // TODO(zmbush): Remove once config is updated to use project_id
- _, ok = p["id"]
- if ok {
- return fmt.Errorf("Project %v is using version 1.0. Version 1.0 projects may not specify an id.", c.ProjectName)
- }
- _, ok = p["project_id"]
- if ok {
- return fmt.Errorf("Project %v is using version 1.0. Version 1.0 projects may not specify an id.", c.ProjectName)
- }
- c.ProjectId = IdFromName(c.ProjectName)
+ v, ok := p["project_id"]
+ if !ok {
+ // TODO(zmbush): Remove once config is updated to use project_id
+ v, ok = p["id"]
+ if !ok {
+ c.ProjectId = IdFromName(c.ProjectName)
+ }
+ }
+ if ok {
+ projectId, ok := v.(int)
+ if !ok {
+ return fmt.Errorf("ID '%v' for project %v is not an integer.", v, c.ProjectName)
+ }
+ if projectId <= 0 {
+ return fmt.Errorf("ID for project %v is not a positive integer.",c.ProjectName)
+ }
+ c.ProjectId = uint32(projectId)
+ }
}
v, ok = p["project_contact"]
diff --git a/src/bin/config_parser/src/config_parser/project_list_test.go b/src/bin/config_parser/src/config_parser/project_list_test.go
index 558a7ac..9fc1044 100644
--- a/src/bin/config_parser/src/config_parser/project_list_test.go
+++ b/src/bin/config_parser/src/config_parser/project_list_test.go
@@ -29,11 +29,13 @@
projects:
- project_name: ledger
project_contact: ben
+ project_id: 10
cobalt_version: 1
- customer_name: test_project
customer_id: 25
projects:
- project_name: ledger
+ project_id: 10
project_contact: ben
cobalt_version: 1
`
@@ -43,7 +45,7 @@
CustomerName: "fuchsia",
CustomerId: 20,
ProjectName: "ledger",
- ProjectId: IdFromName("ledger"),
+ ProjectId: 10,
Contact: "ben",
CobaltVersion: CobaltVersion1,
},
@@ -51,7 +53,7 @@
CustomerName: "test_project",
CustomerId: 25,
ProjectName: "ledger",
- ProjectId: IdFromName("ledger"),
+ ProjectId: 10,
Contact: "ben",
CobaltVersion: CobaltVersion1,
},
@@ -222,6 +224,7 @@
y := `
- project_name: ledger
project_contact: ben,etienne
+ project_id: 10
cobalt_version: 1
- project_name: zircon
project_contact: yvonne
@@ -236,7 +239,7 @@
e := []ProjectConfig{
ProjectConfig{
ProjectName: "ledger",
- ProjectId: IdFromName("ledger"),
+ ProjectId: 10,
Contact: "ben,etienne",
CobaltVersion: CobaltVersion1,
},
@@ -380,18 +383,6 @@
t.Errorf("Rejected a Cobalt version 1 project without id.: %v", err)
}
- // Checks that Cobalt version 1 projects with an id are rejected.
- y = `
-project_name: ledger
-project_contact: ben
-project_id: 10
-cobalt_version: 1
-`
- c = ProjectConfig{}
- if err := parseProjectConfigForTest(y, &c); err == nil {
- t.Errorf("Accepted a Cobalt version 1 project with an id.")
- }
-
// Checks that an error is returned if the id is an invalid type.
y = `
project_name: ledger
diff --git a/src/bin/test_app/test_registry/projects.yaml b/src/bin/test_app/test_registry/projects.yaml
index b890502..8e56f71 100644
--- a/src/bin/test_app/test_registry/projects.yaml
+++ b/src/bin/test_app/test_registry/projects.yaml
@@ -3,5 +3,6 @@
projects:
- project_name: Cobalt
+ project_id: 1
cobalt_version: 1
project_contact: nobody@example.com
diff --git a/src/logger/test_registries/project_context_factory_test_registry/projects.yaml b/src/logger/test_registries/project_context_factory_test_registry/projects.yaml
index f71ba61..10ca118 100644
--- a/src/logger/test_registries/project_context_factory_test_registry/projects.yaml
+++ b/src/logger/test_registries/project_context_factory_test_registry/projects.yaml
@@ -2,6 +2,7 @@
customer_id: 11
projects:
- project_name: Project11
+ project_id: 1
cobalt_version: 1
project_contact: nobody@example.com
@@ -9,5 +10,6 @@
customer_id: 22
projects:
- project_name: Project22
+ project_id: 1
cobalt_version: 1
project_contact: nobody@example.com
diff --git a/src/logger/test_registries/project_context_test_registry/projects.yaml b/src/logger/test_registries/project_context_test_registry/projects.yaml
index 087b8ad..164456a 100644
--- a/src/logger/test_registries/project_context_test_registry/projects.yaml
+++ b/src/logger/test_registries/project_context_test_registry/projects.yaml
@@ -3,9 +3,11 @@
projects:
- project_name: ProjectA1
+ project_id: 1
cobalt_version: 1
project_contact: nobody@example.com
- project_name: ProjectA2
+ project_id: 2
cobalt_version: 1
project_contact: nobody@example.com
@@ -14,5 +16,6 @@
projects:
- project_name: ProjectB1
+ project_id: 1
cobalt_version: 1
project_contact: nobody@example.com