func SetDynamicDefaults()

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