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)
}