func SetMetadataDefaults()

in pkg/config/metadata.go [105:135]


func SetMetadataDefaults(jsonWithDefaults []byte) {
	// Unmarshal to map to preserve keys for Paths and Values
	var defaultsMap map[string]interface{}
	json.Unmarshal(jsonWithDefaults, &defaultsMap)

	mdPaths := defaultsMap["metadata"].(map[string]interface{})["paths"].(map[string]interface{})
	mdValues := defaultsMap["metadata"].(map[string]interface{})["values"].(map[string]interface{})

	for k, v := range mdPaths {
		newKey := mdPathsCfgPrefix + k
		// ex: "metadata.paths.ami-id": "/latest/meta-data/ami-id"
		mdPathsDefaults[newKey] = v
	}

	for k, v := range mdValues {
		newKey := mdValuesCfgPrefix + k
		// ex: "metadata.values.ami-id": "ami-0a887e401f7654935"
		mdValuesDefaults[newKey] = v

		// if mdvalue is a nested struct, then re-unmarshal json data to correct type
		if nestedStruct, ok := mdNestedValues[newKey]; ok {
			updatedVal, err := unmarshalToNestedStruct(v, nestedStruct)
			if err == nil {
				mdValuesDefaults[newKey] = updatedVal
			}
		}
	}

	LoadConfigFromDefaults(mdPathsDefaults)
	LoadConfigFromDefaults(mdValuesDefaults)
}