Rename overused ProjectConfig types/variables in the config parser.

Previously there was a ProjectConfig that contained another ProjectConfig,
and neither of these was the *actual* ProjectConfig from the proto file.
This led to code being hard to follow and write, as the actual type was
hard to discern.

Change-Id: I49065ca37b5156eb743f4d2f965a78cf606d5e2d
Reviewed-on: https://fuchsia-review.googlesource.com/c/cobalt/+/657223
Reviewed-by: Zach Bush <zmbush@google.com>
Fuchsia-Auto-Submit: Cameron Dale <camrdale@google.com>
Commit-Queue: Cameron Dale <camrdale@google.com>
diff --git a/src/bin/config_parser/src/config_parser/config_parser.go b/src/bin/config_parser/src/config_parser/config_parser.go
index 43445f6..acf623c 100644
--- a/src/bin/config_parser/src/config_parser/config_parser.go
+++ b/src/bin/config_parser/src/config_parser/config_parser.go
@@ -59,7 +59,7 @@
 
 // appendNewCustomers adds the new project configs to the list, verifying that
 // none of their customers overlap with existing customers.
-func appendNewCustomers(existingCustomers map[uint32]string, configs []ProjectConfig, newConfigs ...ProjectConfig) (map[uint32]string, []ProjectConfig, error) {
+func appendNewCustomers(existingCustomers map[uint32]string, configs []ProjectConfigData, newConfigs ...ProjectConfigData) (map[uint32]string, []ProjectConfigData, error) {
 	for _, config := range newConfigs {
 		if customerName, ok := existingCustomers[config.CustomerId]; ok {
 			return nil, nil, fmt.Errorf("Duplicate customer ID %v for customers %s and %s", config.CustomerId, customerName, config.CustomerName)
@@ -72,20 +72,20 @@
 	return existingCustomers, configs, nil
 }
 
-// ParseConfigFromFlags uses the specified flags to find the specified registry,
-// read and parse it.
-func ParseConfigFromFlags() ([]ProjectConfig, error) {
+// ParseProjectConfigDataFromFlags uses the specified flags to find the
+// specified registry, read and parse it.
+func ParseProjectConfigDataFromFlags() ([]ProjectConfigData, error) {
 	if err := checkFlags(); err != nil {
 		return nil, err
 	}
 
 	existingCustomers := make(map[uint32]string)
-	configs := []ProjectConfig{}
-	var pc ProjectConfig
+	configs := []ProjectConfigData{}
+	var pc ProjectConfigData
 	var err error
 	if len(repoUrls) != 0 {
 		gitTimeout := time.Duration(*gitTimeoutSec) * time.Second
-		var repoConfigs []ProjectConfig
+		var repoConfigs []ProjectConfigData
 		for _, repoUrl := range repoUrls {
 			if repoConfigs, err = ReadConfigFromRepo(repoUrl, gitTimeout); err != nil {
 				return nil, err
@@ -104,7 +104,7 @@
 		}
 	} else if *customerId >= 0 && *projectId >= 0 {
 		for _, configDir := range configDirs {
-			if pc, err = ReadProjectConfigFromDir(configDir, uint32(*customerId), uint32(*projectId)); err != nil {
+			if pc, err = ReadProjectConfigDataFromDir(configDir, uint32(*customerId), uint32(*projectId)); err != nil {
 				return nil, err
 			}
 			if existingCustomers, configs, err = appendNewCustomers(existingCustomers, configs, pc); err != nil {
@@ -112,7 +112,7 @@
 			}
 		}
 	} else {
-		var dirConfigs []ProjectConfig
+		var dirConfigs []ProjectConfigData
 		for _, configDir := range configDirs {
 			if dirConfigs, err = ReadConfigFromDir(configDir); err != nil {
 				return nil, err
diff --git a/src/bin/config_parser/src/config_parser/config_reader.go b/src/bin/config_parser/src/config_parser/config_reader.go
index 259e302..6203bc8 100644
--- a/src/bin/config_parser/src/config_parser/config_reader.go
+++ b/src/bin/config_parser/src/config_parser/config_reader.go
@@ -21,7 +21,7 @@
 // It is assumed that <rootDir>/projects.yaml contains the customers and projects list. (see project_list.go)
 // It is assumed that <rootDir>/<customerName>/<projectName>/config.yaml
 // contains the configuration for a project. (see project_config.go)
-func ReadConfigFromDir(rootDir string) (c []ProjectConfig, err error) {
+func ReadConfigFromDir(rootDir string) (c []ProjectConfigData, err error) {
 	r, err := newConfigReaderForDir(rootDir)
 	if err != nil {
 		return c, err
@@ -34,13 +34,13 @@
 	return c, nil
 }
 
-func ReadProjectConfigFromDir(rootDir string, customerId uint32, projectId uint32) (c ProjectConfig, err error) {
+func ReadProjectConfigDataFromDir(rootDir string, customerId uint32, projectId uint32) (c ProjectConfigData, err error) {
 	r, err := newConfigReaderForDir(rootDir)
 	if err != nil {
 		return c, err
 	}
 
-	l := []ProjectConfig{}
+	l := []ProjectConfigData{}
 	if err = readProjectsList(r, &l); err != nil {
 		return c, err
 	}
@@ -48,7 +48,7 @@
 	for i := range l {
 		config := &l[i]
 		if config.CustomerId == customerId && config.ProjectId == projectId {
-			if err = ReadProjectConfig(r, config); err != nil {
+			if err = ReadProjectConfigData(r, config); err != nil {
 				return c, fmt.Errorf("Error reading config for %v %v: %v", config.CustomerName, config.ProjectName, err)
 			}
 			return *config, nil
@@ -60,7 +60,7 @@
 
 // ReadConfigFromYaml reads the configuration for a single project from a single yaml file.
 // See project_config.go for the format.
-func ReadConfigFromYaml(yamlConfigPath string, customerId uint32, projectId uint32, version CobaltVersion) (c ProjectConfig, err error) {
+func ReadConfigFromYaml(yamlConfigPath string, customerId uint32, projectId uint32, version CobaltVersion) (c ProjectConfigData, err error) {
 	r, err := newConfigReaderForFile(yamlConfigPath)
 	if err != nil {
 		return c, err
@@ -69,7 +69,7 @@
 	c.CustomerId = customerId
 	c.ProjectId = projectId
 	c.CobaltVersion = version
-	if err := ReadProjectConfig(r, &c); err != nil {
+	if err := ReadProjectConfigData(r, &c); err != nil {
 		return c, err
 	}
 
@@ -86,7 +86,7 @@
 		return files, err
 	}
 
-	l := []ProjectConfig{}
+	l := []ProjectConfigData{}
 	if err := readProjectsList(r, &l); err != nil {
 		return files, err
 	}
@@ -158,11 +158,11 @@
 }
 
 func (r *configDirReader) Project(customerName string, projectName string) (string, error) {
-	projectConfig, err := ioutil.ReadFile(r.projectFilePath(customerName, projectName))
+	projectConfigFile, err := ioutil.ReadFile(r.projectFilePath(customerName, projectName))
 	if err != nil {
 		return "", err
 	}
-	return string(projectConfig), nil
+	return string(projectConfigFile), nil
 }
 
 // configFileReader is an implementation of configReader where the configuration
@@ -201,15 +201,15 @@
 }
 
 func (r *configFileReader) Project(_ string, _ string) (string, error) {
-	projectConfig, err := ioutil.ReadFile(r.configFile)
+	projectConfigFile, err := ioutil.ReadFile(r.configFile)
 	if err != nil {
 		return "", err
 	}
 
-	return string(projectConfig), nil
+	return string(projectConfigFile), nil
 }
 
-func readProjectsList(r configReader, l *[]ProjectConfig) (err error) {
+func readProjectsList(r configReader, l *[]ProjectConfigData) (err error) {
 	// First, we get and parse the customer list.
 	customerListYaml, err := r.Customers()
 	if err != nil {
@@ -224,7 +224,7 @@
 }
 
 // ReadConfig reads and parses the configuration for all projects from a configReader.
-func ReadConfig(r configReader, l *[]ProjectConfig) (err error) {
+func ReadConfig(r configReader, l *[]ProjectConfigData) (err error) {
 	if err = readProjectsList(r, l); err != nil {
 		return err
 	}
@@ -232,7 +232,7 @@
 	// Then, based on the customer list, we read and parse all the project configs.
 	for i := range *l {
 		c := &((*l)[i])
-		if err = ReadProjectConfig(r, c); err != nil {
+		if err = ReadProjectConfigData(r, c); err != nil {
 			return fmt.Errorf("Error reading config for %v %v: %v", c.CustomerName, c.ProjectName, err)
 		}
 	}
@@ -240,13 +240,13 @@
 	return nil
 }
 
-// ReadProjectConfig reads the configuration of a particular project.
-func ReadProjectConfig(r configReader, c *ProjectConfig) (err error) {
+// ReadProjectConfigData reads the configuration of a particular project.
+func ReadProjectConfigData(r configReader, c *ProjectConfigData) (err error) {
 	configYaml, err := r.Project(c.CustomerName, c.ProjectName)
 	if err != nil {
 		return err
 	}
-	return parseProjectConfig(configYaml, c)
+	return parseProjectConfigData(configYaml, c)
 }
 
 // cmpConfigEntry takes two protobuf pointers that must have the fields
@@ -277,10 +277,11 @@
 	return false
 }
 
-// MergeConfigs accepts a list of ProjectConfigFile protos each of which contains the
-// encoding, metric and report configs for a particular project and aggregates
-// all those into a single ProjectConfigFile proto.
-func MergeConfigs(l []ProjectConfig) (s config.CobaltRegistry) {
+// MergeConfigs accepts a list of ProjectConfigDatas containing
+// ProjectConfigFile protos each of which contains the encoding, metric and
+// report configs for a particular project and aggregates all those into a
+// single CobaltRegistry proto.
+func MergeConfigs(l []ProjectConfigData) (s config.CobaltRegistry) {
 	customers := map[uint32]int{}
 
 	for _, c := range l {
@@ -304,7 +305,7 @@
 		}
 		cidx := customers[c.CustomerId]
 
-		s.Customers[cidx].Projects = append(s.Customers[cidx].Projects, v1ProjectConfig(c))
+		s.Customers[cidx].Projects = append(s.Customers[cidx].Projects, toProjectConfigProto(c))
 	}
 
 	sort.SliceStable(s.Customers, func(i, j int) bool {
@@ -320,14 +321,15 @@
 	return s
 }
 
-// v1Projectconfig converts an internal representation of a ProjectConfig into the ProjectConfig proto.
-func v1ProjectConfig(c ProjectConfig) *config.ProjectConfig {
+// toProjectConfigProto converts an internal representation of a project config,
+// a ProjectConfigData, into the ProjectConfig proto.
+func toProjectConfigProto(c ProjectConfigData) *config.ProjectConfig {
 	p := config.ProjectConfig{}
 	p.ProjectName = c.ProjectName
 	p.ProjectId = c.ProjectId
 	p.ProjectContact = c.Contact
-	if c.ProjectConfig != nil {
-		p.Metrics = c.ProjectConfig.MetricDefinitions
+	if c.ProjectConfigFile != nil {
+		p.Metrics = c.ProjectConfigFile.MetricDefinitions
 	}
 
 	p.ExperimentsNamespaces = make([]string, len(c.ProjectExperimentsNamespaces))
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 de76e55..bd0a0f9 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
@@ -85,17 +85,17 @@
     metric_name: "MetricB1a"
 `
 
-// Tests the ReadProjectConfig function's basic functionality.
-func TestReadProjectConfig(t *testing.T) {
+// Tests the ReadProjectConfigData function's basic functionality.
+func TestReadProjectConfigData(t *testing.T) {
 	r := memConfigReader{}
 	r.SetProject("customer", "project", projectConfigYaml)
-	c := ProjectConfig{
+	c := ProjectConfigData{
 		CustomerName: "customer",
 		CustomerId:   10,
 		ProjectName:  "project",
 		ProjectId:    5,
 	}
-	if err := ReadProjectConfig(r, &c); err != nil {
+	if err := ReadProjectConfigData(r, &c); err != nil {
 		t.Errorf("Error reading project config: %v", err)
 	}
 }
@@ -107,7 +107,7 @@
 	r.SetProject("fuchsia", "ledger", projectConfigYaml)
 	r.SetProject("fuchsia", "module_usage_tracking", projectConfigYaml)
 	r.SetProject("test_customer", "test_project", projectConfigYaml)
-	l := []ProjectConfig{}
+	l := []ProjectConfigData{}
 	if err := ReadConfig(r, &l); err != nil {
 		t.Errorf("Error reading project config: %v", err)
 	}
@@ -124,7 +124,7 @@
 	r.SetProject("fuchsia", "ledger", projectConfigYaml)
 	r.SetProject("fuchsia", "module_usage_tracking", projectConfigYaml)
 	r.SetProject("test_customer", "test_project", projectConfigYaml)
-	l := []ProjectConfig{}
+	l := []ProjectConfigData{}
 	if err := ReadConfig(r, &l); err != nil {
 		if !strings.Contains(err.Error(), "fake/customers.yaml") {
 			t.Errorf("Error message did not contain the expected fake/customers.yaml: %v", err)
@@ -135,7 +135,7 @@
 }
 
 func TestMergeConfigs(t *testing.T) {
-	l := []ProjectConfig{
+	l := []ProjectConfigData{
 		{
 			CustomerName:  "customer5",
 			CustomerId:    5,
diff --git a/src/bin/config_parser/src/config_parser/expand_defaults.go b/src/bin/config_parser/src/config_parser/expand_defaults.go
index d6001eb..c303ee6 100644
--- a/src/bin/config_parser/src/config_parser/expand_defaults.go
+++ b/src/bin/config_parser/src/config_parser/expand_defaults.go
@@ -4,14 +4,14 @@
 	"config"
 )
 
-func ExpandDefaults(configs []ProjectConfig) {
+func ExpandDefaults(configs []ProjectConfigData) {
 	for _, c := range configs {
 		expandDefaultsForConfig(&c)
 	}
 }
 
-func expandDefaultsForConfig(c *ProjectConfig) {
-	for _, metric := range c.ProjectConfig.MetricDefinitions {
+func expandDefaultsForConfig(c *ProjectConfigData) {
+	for _, metric := range c.ProjectConfigFile.MetricDefinitions {
 		if !Cobalt11MetricTypesSet[metric.MetricType] {
 			continue
 		}
diff --git a/src/bin/config_parser/src/config_parser/git.go b/src/bin/config_parser/src/config_parser/git.go
index 2796ca4..4f9a63b 100644
--- a/src/bin/config_parser/src/config_parser/git.go
+++ b/src/bin/config_parser/src/config_parser/git.go
@@ -67,7 +67,7 @@
 // configuration from it. For the organization expected of the repository, see
 // ReadConfigFromDir in config_reader.go.
 // gitTimeout is the maximum amount of time to wait for a git command to finish.
-func ReadConfigFromRepo(repoUrl string, gitTimeout time.Duration) (c []ProjectConfig, err error) {
+func ReadConfigFromRepo(repoUrl string, gitTimeout time.Duration) (c []ProjectConfigData, err error) {
 	if err = checkUrl(repoUrl); err != nil {
 		return c, err
 	}
diff --git a/src/bin/config_parser/src/config_parser/populate_privacy_params.go b/src/bin/config_parser/src/config_parser/populate_privacy_params.go
index b49ea20..5ec625c 100644
--- a/src/bin/config_parser/src/config_parser/populate_privacy_params.go
+++ b/src/bin/config_parser/src/config_parser/populate_privacy_params.go
@@ -9,7 +9,7 @@
 
 var privacyEncodingParamsFile = flag.String("privacy_encoding_params_file", "", "File containing precomputed privacy encoding parameters.")
 
-func PopulatePrivacyParams(configs []ProjectConfig) error {
+func PopulatePrivacyParams(configs []ProjectConfigData) error {
 	if *privacyEncodingParamsFile == "" {
 		return fmt.Errorf("Missing required flag --privacy_encoding_params_file.")
 	}
@@ -28,8 +28,8 @@
 	return nil
 }
 
-func populateParamsForConfig(calc *privacy.PrivacyEncodingParamsCalculator, c *ProjectConfig) error {
-	for _, metric := range c.ProjectConfig.MetricDefinitions {
+func populateParamsForConfig(calc *privacy.PrivacyEncodingParamsCalculator, c *ProjectConfigData) error {
+	for _, metric := range c.ProjectConfigFile.MetricDefinitions {
 		if !Cobalt11MetricTypesSet[metric.MetricType] {
 			continue
 		}
diff --git a/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go b/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go
index 7bc7646..822de78 100644
--- a/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go
+++ b/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go
@@ -360,8 +360,8 @@
 		Reports:    []*config.ReportDefinition{&cobalt11Report},
 	}
 
-	c := ProjectConfig{}
-	c.ProjectConfig = &config.ProjectConfigFile{MetricDefinitions: []*config.MetricDefinition{&cobalt10Metric, &cobalt11Metric}}
+	c := ProjectConfigData{}
+	c.ProjectConfigFile = &config.ProjectConfigFile{MetricDefinitions: []*config.MetricDefinition{&cobalt10Metric, &cobalt11Metric}}
 
 	calc, err := privacy.NewPrivacyEncodingParamsCalculatorForTesting(testParamRecords)
 	if err != nil {
diff --git a/src/bin/config_parser/src/config_parser/project_config.go b/src/bin/config_parser/src/config_parser/project_config.go
index 96a257a..bf8870c 100644
--- a/src/bin/config_parser/src/config_parser/project_config.go
+++ b/src/bin/config_parser/src/config_parser/project_config.go
@@ -25,7 +25,7 @@
 )
 
 // Represents the configuration of a single project.
-type ProjectConfig struct {
+type ProjectConfigData struct {
 	CustomerName                  string
 	CustomerId                    uint32
 	ProjectName                   string
@@ -34,18 +34,18 @@
 	CobaltVersion                 CobaltVersion
 	CustomerExperimentsNamespaces []interface{}
 	ProjectExperimentsNamespaces  []interface{}
-	ProjectConfig                 *config.ProjectConfigFile
+	ProjectConfigFile             *config.ProjectConfigFile
 }
 
 // Parse the configuration for one project from the yaml string provided into
-// the config field in ProjectConfig.
-func parseProjectConfig(y string, c *ProjectConfig) (err error) {
-	c.ProjectConfig = &config.ProjectConfigFile{}
-	if err := yamlpb.UnmarshalString(y, c.ProjectConfig); err != nil {
+// the ProjectConfigFile field in ProjectConfigData.
+func parseProjectConfigData(y string, c *ProjectConfigData) (err error) {
+	c.ProjectConfigFile = &config.ProjectConfigFile{}
+	if err := yamlpb.UnmarshalString(y, c.ProjectConfigFile); err != nil {
 		return fmt.Errorf("Error while parsing yaml: %v", err)
 	}
 
-	for _, e := range c.ProjectConfig.MetricDefinitions {
+	for _, e := range c.ProjectConfigFile.MetricDefinitions {
 		e.CustomerId = c.CustomerId
 		e.ProjectId = c.ProjectId
 		e.CustomerName = c.CustomerName
diff --git a/src/bin/config_parser/src/config_parser/project_config_test.go b/src/bin/config_parser/src/config_parser/project_config_test.go
index cf56efc..ebfa2b0 100644
--- a/src/bin/config_parser/src/config_parser/project_config_test.go
+++ b/src/bin/config_parser/src/config_parser/project_config_test.go
@@ -13,8 +13,8 @@
 	"google.golang.org/protobuf/proto"
 )
 
-// Basic test for parseProjectConfig with a 1.0 project.
-func TestParseProjectConfig(t *testing.T) {
+// Basic test for parseProjectConfigData with a 1.0 project.
+func TestParseProjectConfigData(t *testing.T) {
 	y := `
 metric_definitions:
 - metric_name: the_metric_name
@@ -35,7 +35,7 @@
     id: 10
     report_type: NUMERIC_AGGREGATION
 `
-	c := ProjectConfig{
+	c := ProjectConfigData{
 		CustomerId:    1,
 		ProjectId:     10,
 		CustomerName:  "customer_name",
@@ -43,7 +43,7 @@
 		CobaltVersion: CobaltVersion1,
 	}
 
-	if err := parseProjectConfig(y, &c); err != nil {
+	if err := parseProjectConfigData(y, &c); err != nil {
 		t.Error(err)
 	}
 
@@ -89,14 +89,14 @@
 		},
 	}
 
-	if !proto.Equal(&e, c.ProjectConfig) {
-		t.Errorf("%v\n!=\n%v", prototext.Format(&e), prototext.Format(c.ProjectConfig))
+	if !proto.Equal(&e, c.ProjectConfigFile) {
+		t.Errorf("%v\n!=\n%v", prototext.Format(&e), prototext.Format(c.ProjectConfigFile))
 	}
 
 }
 
 // Tests that we catch non-unique encoding ids.
-func TestParseProjectConfigUniqueEncodingIds(t *testing.T) {
+func TestParseProjectConfigDataUniqueEncodingIds(t *testing.T) {
 	y := `
 metric_configs:
 - id: 1
@@ -117,12 +117,12 @@
 - id: 2
 `
 
-	c := ProjectConfig{
+	c := ProjectConfigData{
 		CustomerId: 1,
 		ProjectId:  10,
 	}
 
-	if err := parseProjectConfig(y, &c); err == nil {
+	if err := parseProjectConfigData(y, &c); err == nil {
 		t.Error("Accepted non-unique encoding id.")
 	}
 }
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 9aa86ff..921f28d 100644
--- a/src/bin/config_parser/src/config_parser/project_list.go
+++ b/src/bin/config_parser/src/config_parser/project_list.go
@@ -19,9 +19,9 @@
 
 var validNameRegexp = regexp.MustCompile("^[a-zA-Z][_a-zA-Z0-9]{1,81}$")
 
-// Parse a list of customers appending all their projects to the ProjectConfig
+// Parse a list of customers appending all their projects to the ProjectConfigData
 // list that was passed in.
-func parseCustomerList(content string, l *[]ProjectConfig) (err error) {
+func parseCustomerList(content string, l *[]ProjectConfigData) (err error) {
 	var y []map[string]interface{}
 	if err := yaml.Unmarshal([]byte(content), &y); err != nil {
 		return fmt.Errorf("Error while parsing the yaml for a list of Cobalt customer definitions: %v", err)
@@ -87,7 +87,7 @@
 			fmt.Errorf("Project list for customer %v is invalid. It should be a yaml list.", customerName)
 		}
 
-		c := []ProjectConfig{}
+		c := []ProjectConfigData{}
 		if err := populateProjectList(projectsAsList, &c); err != nil {
 			return fmt.Errorf("Project list for customer %v is invalid: %v", customerName, err)
 		}
@@ -106,9 +106,9 @@
 
 // populateProjectList populates a list of cobalt projects given in the form of
 // a map as returned by a call to yaml.Unmarshal. For more details, see
-// populateProjectConfig. This function also validates that project names and
+// populateProjectConfigData. This function also validates that project names and
 // ids are unique.
-func populateProjectList(y []interface{}, l *[]ProjectConfig) (err error) {
+func populateProjectList(y []interface{}, l *[]ProjectConfigData) (err error) {
 	projectNames := map[string]bool{}
 	projectIds := map[uint32]bool{}
 	for i, v := range y {
@@ -120,8 +120,8 @@
 		if err != nil {
 			return fmt.Errorf("Entry %v in project list is not valid: %v", i, err)
 		}
-		c := ProjectConfig{}
-		if err := populateProjectConfig(p, &c); err != nil {
+		c := ProjectConfigData{}
+		if err := populateProjectConfigData(p, &c); err != nil {
 			return fmt.Errorf("Error in entry %v in project list: %v", i, err)
 		}
 
@@ -140,12 +140,12 @@
 	return
 }
 
-// populateProjectConfig populates a cobalt project given in the form of a map
+// populateProjectConfigData populates a cobalt project given in the form of a map
 // as returned by a call to yaml.Unmarshal. It populates the name, projectId and
-// contact fields of the ProjectConfig it returns. It also validates those
+// contact fields of the ProjectConfigData it returns. It also validates those
 // values. The project id must be a positive integer. The project must have
 // name, id and contact fields.
-func populateProjectConfig(p map[string]interface{}, c *ProjectConfig) (err error) {
+func populateProjectConfigData(p map[string]interface{}, c *ProjectConfigData) (err error) {
 	v, ok := p["project_name"]
 	if !ok {
 		return fmt.Errorf("Missing name in project list.")
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 d5207bc..691dc95 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
@@ -42,7 +42,7 @@
     project_contact: maria
 `
 
-	e := []ProjectConfig{
+	e := []ProjectConfigData{
 		{
 			CustomerName:                  "fuchsia",
 			CustomerId:                    20,
@@ -85,7 +85,7 @@
 		},
 	}
 
-	l := []ProjectConfig{}
+	l := []ProjectConfigData{}
 	if err := parseCustomerList(y, &l); err != nil {
 		t.Error(err)
 	}
@@ -98,7 +98,7 @@
 // Tests that duplicated customer project_names and ids result in errors.
 func TestParseCustomerListDuplicateValues(t *testing.T) {
 	var y string
-	l := []ProjectConfig{}
+	l := []ProjectConfigData{}
 
 	// Checks that an error is returned if a duplicate customer project_name is used.
 	y = `
@@ -140,7 +140,7 @@
 // Tests the customer project_name validation logic.
 func TestParseCustomerListNameValidation(t *testing.T) {
 	var y string
-	l := []ProjectConfig{}
+	l := []ProjectConfigData{}
 
 	// Checks that an error is returned if no customer project_name is specified.
 	y = `
@@ -184,7 +184,7 @@
 // Tests the customer id validation logic.
 func TestParseCustomerListIdValidation(t *testing.T) {
 	var y string
-	l := []ProjectConfig{}
+	l := []ProjectConfigData{}
 
 	// Checks that an error is returned if no customer id is specified.
 	y = `
@@ -226,7 +226,7 @@
 }
 
 // Allows tests to specify input data in yaml when testing populateProjectList.
-func parseProjectListForTest(content string, l *[]ProjectConfig) (err error) {
+func parseProjectListForTest(content string, l *[]ProjectConfigData) (err error) {
 	var y []interface{}
 	if err := yaml.Unmarshal([]byte(content), &y); err != nil {
 		panic(err)
@@ -246,12 +246,12 @@
   project_contact: yvonne
 `
 
-	l := []ProjectConfig{}
+	l := []ProjectConfigData{}
 	if err := parseProjectListForTest(y, &l); err != nil {
 		t.Error(err)
 	}
 
-	e := []ProjectConfig{
+	e := []ProjectConfigData{
 		{
 			ProjectName:                  "ledger",
 			ProjectId:                    10,
@@ -275,7 +275,7 @@
 // Test duplicate project project_name or id validation logic.
 func TestDuplicateProjectValuesValidation(t *testing.T) {
 	var y string
-	var l []ProjectConfig
+	var l []ProjectConfigData
 	// Checks that an error is returned if a project_name is duplicated.
 	y = `
 - project_name: ledger
@@ -284,33 +284,33 @@
   project_contact: yvonne
 `
 
-	l = []ProjectConfig{}
+	l = []ProjectConfigData{}
 	if err := parseProjectListForTest(y, &l); err == nil {
 		t.Errorf("Accepted list with duplicate project project_name.")
 	}
 }
 
-// Allows tests to specify inputs in yaml when testing populateProjectConfig.
-func parseProjectConfigForTest(content string, c *ProjectConfig) (err error) {
+// Allows tests to specify inputs in yaml when testing populateProjectConfigData.
+func parseProjectConfigDataForTest(content string, c *ProjectConfigData) (err error) {
 	var y map[string]interface{}
 	if err := yaml.Unmarshal([]byte(content), &y); err != nil {
 		panic(err)
 	}
 
-	return populateProjectConfig(y, c)
+	return populateProjectConfigData(y, c)
 }
 
 // Checks validation for the project_name field.
 func TestPopulateProjectListNameValidation(t *testing.T) {
 	var y string
-	var c ProjectConfig
+	var c ProjectConfigData
 	// Checks that an error is returned if a project_name is the wrong type.
 	y = `
 project_name: 10
 project_contact: ben
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted project with numeric project_name.")
 	}
 
@@ -319,8 +319,8 @@
 project_name: hello world
 project_contact: ben
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted project with invalid project_name.")
 	}
 
@@ -328,8 +328,8 @@
 	y = `
 project_contact: ben
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted project without project_name.")
 	}
 }
@@ -337,7 +337,7 @@
 // Checks validation for the cobalt_version field.
 func TestPopulateProjectListVersionValidation(t *testing.T) {
 	var y string
-	var c ProjectConfig
+	var c ProjectConfigData
 
 	y = `
 project_name: ledger
@@ -345,8 +345,8 @@
 project_contact: ben
 cobalt_version: 0
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted a project with Cobalt version 0: %v", err)
 	}
 
@@ -354,8 +354,8 @@
 project_name: ledger
 project_contact: ben
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted a project without an ID")
 	}
 
@@ -365,8 +365,8 @@
 project_contact: ben
 cobalt_version: 10
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted project with invalid Cobalt version.")
 	}
 }
@@ -374,7 +374,7 @@
 // Checks validation for the id field.
 func TestPopulateProjectListIdValidation(t *testing.T) {
 	var y string
-	var c ProjectConfig
+	var c ProjectConfigData
 
 	// Checks that an error is returned if the id missing.
 	y = `
@@ -382,8 +382,8 @@
 project_contact: ben
 cobalt_version: 0
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted project without id.")
 	}
 
@@ -392,8 +392,8 @@
 project_name: ledger
 project_contact: ben
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted a project without an ID")
 	}
 
@@ -404,8 +404,8 @@
 project_contact: ben
 cobalt_version: 0
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted project with non-integer id.")
 	}
 
@@ -416,8 +416,8 @@
 project_contact: ben
 cobalt_version: 0
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted project with negative id.")
 	}
 }
@@ -425,7 +425,7 @@
 // Checks validation for the project_contact field.
 func TestPopulateProjectListContactValidation(t *testing.T) {
 	var y string
-	var c ProjectConfig
+	var c ProjectConfigData
 
 	// Checks that an error is returned if a project_contact is the wrong type.
 	y = `
@@ -433,8 +433,8 @@
 project_id: 1
 project_contact: 10
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted project with numeric project_contact.")
 	}
 
@@ -443,8 +443,8 @@
 project_name: ledger
 project_id: 10
 `
-	c = ProjectConfig{}
-	if err := parseProjectConfigForTest(y, &c); err == nil {
+	c = ProjectConfigData{}
+	if err := parseProjectConfigDataForTest(y, &c); err == nil {
 		t.Errorf("Accepted project without project_contact.")
 	}
 }
diff --git a/src/bin/config_parser/src/config_parser_main.go b/src/bin/config_parser/src/config_parser_main.go
index a834966..937a74d 100644
--- a/src/bin/config_parser/src/config_parser_main.go
+++ b/src/bin/config_parser/src/config_parser_main.go
@@ -46,28 +46,28 @@
 	}
 
 	// First, we parse the configuration from the specified location.
-	configs, err := config_parser.ParseConfigFromFlags()
+	config_datas, err := config_parser.ParseProjectConfigDataFromFlags()
 	if err != nil {
 		fail("parse registry", err)
 	}
 
-	config_parser.ExpandDefaults(configs)
+	config_parser.ExpandDefaults(config_datas)
 
 	// Unless otherwise specified, validate the registry.
 	if !*skipValidation {
-		if err = config_validator.ValidateProjectConfigs(configs); err != nil {
+		if err = config_validator.ValidateProjectConfigDatas(config_datas); err != nil {
 			fail("validate registry", err)
 		}
 	}
 
 	// Compute and write the |prob_bit_flip| and |num_index_points| fields for each Cobalt 1.1 ReportDefinition
-	// in |configs|.
-	if err := config_parser.PopulatePrivacyParams(configs); err != nil {
+	// in |config_datas|.
+	if err := config_parser.PopulatePrivacyParams(config_datas); err != nil {
 		fail("populate privacy parameters", err)
 	}
 
 	// Merge the list of project configs in a single config.CobaltRegistry.
-	c := config_parser.MergeConfigs(configs)
+	c := config_parser.MergeConfigs(config_datas)
 	filtered := proto.Clone(&c).(*config.CobaltRegistry)
 
 	// Filter the fields that are not needed on the client.
diff --git a/src/bin/config_parser/src/config_validator/validator.go b/src/bin/config_parser/src/config_validator/validator.go
index 484983a..c1b90ac 100644
--- a/src/bin/config_parser/src/config_validator/validator.go
+++ b/src/bin/config_parser/src/config_validator/validator.go
@@ -75,11 +75,11 @@
 	return nil
 }
 
-func ValidateProjectConfigs(configs []config_parser.ProjectConfig) error {
+func ValidateProjectConfigDatas(configs []config_parser.ProjectConfigData) error {
 	projectErrors := newValidationErrors("customer/project")
 
 	for _, c := range configs {
-		if err := validateProjectConfig(&c); err != nil {
+		if err := validateProjectConfigData(&c); err != nil {
 			projectErrors.addError(fmt.Sprintf("%s/%s", c.CustomerName, c.ProjectName), err)
 		}
 	}
@@ -87,16 +87,16 @@
 	return projectErrors.err()
 }
 
-func validateProjectConfig(c *config_parser.ProjectConfig) (err error) {
+func validateProjectConfigData(c *config_parser.ProjectConfigData) (err error) {
 	if c.CobaltVersion == config_parser.CobaltVersion0 {
 		return fmt.Errorf("Cobalt version 0.1 configs are no longer supported")
 	}
 
-	if err = validateConfiguredMetricDefinitions(c.ProjectConfig.MetricDefinitions); err != nil {
+	if err = validateConfiguredMetricDefinitions(c.ProjectConfigFile.MetricDefinitions); err != nil {
 		return err
 	}
 
-	if err = validateReplacementMetricSaturation(c.ProjectConfig.MetricDefinitions); err != nil {
+	if err = validateReplacementMetricSaturation(c.ProjectConfigFile.MetricDefinitions); err != nil {
 		return err
 	}
 	return nil
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test.go b/src/bin/config_parser/src/source_generator/source_generator_test.go
index 65497c8..361d238 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test.go
+++ b/src/bin/config_parser/src/source_generator/source_generator_test.go
@@ -157,7 +157,7 @@
 func getConfigFrom(config string, cobalt_version config_parser.CobaltVersion) config.CobaltRegistry {
 	r := memConfigReader{}
 	r.SetProject("the_customer", "the_project", config)
-	con := config_parser.ProjectConfig{
+	con := config_parser.ProjectConfigData{
 		CustomerName:  "the_customer",
 		CustomerId:    10,
 		ProjectName:   "the_project",
@@ -165,8 +165,8 @@
 		CobaltVersion: cobalt_version,
 	}
 
-	_ = config_parser.ReadProjectConfig(r, &con)
-	return config_parser.MergeConfigs([]config_parser.ProjectConfig{con})
+	_ = config_parser.ReadProjectConfigData(r, &con)
+	return config_parser.MergeConfigs([]config_parser.ProjectConfigData{con})
 }
 
 var cfgTests = []struct {