in pkg/config/dynamic.go [61:91]
func SetDynamicDefaults(jsonWithDefaults []byte) {
// Unmarshal to map to preserve keys for Paths and Values
var defaultsMap map[string]interface{}
json.Unmarshal(jsonWithDefaults, &defaultsMap)
dyPaths := defaultsMap["dynamic"].(map[string]interface{})["paths"].(map[string]interface{})
dyValues := defaultsMap["dynamic"].(map[string]interface{})["values"].(map[string]interface{})
for k, v := range dyPaths {
newKey := dyPathsCfgPrefix + k
// ex: "dynamic.paths.instance-identity-document": "/latest/dynamic/instance-identity/document"
dyPathsDefaults[newKey] = v
}
for k, v := range dyValues {
newKey := dyValuesCfgPrefix + k
// ex: "dynamic.values.instance-identity-document": {"accountId" ...}
dyValuesDefaults[newKey] = v
// if dyvalue is a nested struct, then re-unmarshal json data to correct type
if nestedStruct, ok := dyNestedValues[newKey]; ok {
updatedVal, err := unmarshalToNestedStruct(v, nestedStruct)
if err == nil {
dyValuesDefaults[newKey] = updatedVal
}
}
}
LoadConfigFromDefaults(dyPathsDefaults)
LoadConfigFromDefaults(dyValuesDefaults)
}