in deployment/managementgroup.go [415:443]
func parseArmFunctionInPolicySetParameter(pdRef, paramName string, ass *armpolicy.Assignment, setDef *armpolicy.SetDefinition) (any, error) {
resultantParams := make(map[string]any)
for k, v := range setDef.Properties.Parameters {
resultantParams[k] = v.DefaultValue
}
for k, v := range ass.Properties.Parameters {
resultantParams[k] = v.Value
}
var toParse string
for _, def := range setDef.Properties.PolicyDefinitions {
if *def.PolicyDefinitionReferenceID != pdRef {
continue
}
p, ok := def.Parameters[paramName]
if !ok {
return nil, fmt.Errorf("parseArmFunctionInPolicySetParameter: paramName %s not found in %s", paramName, *def.PolicyDefinitionReferenceID)
}
pStr, ok := p.Value.(string)
if !ok {
return nil, fmt.Errorf("parseArmFunctionInPolicySetParameter: paramName %s in %s is not a string", paramName, *def.PolicyDefinitionReferenceID)
}
toParse = pStr
}
res, err := goarmfunctions.LexAndParse(context.Background(), toParse, resultantParams, nil)
if err != nil {
return nil, fmt.Errorf("parseArmFunctionInPolicySetParameter: error parsing parameter %s in reference %s in set definition %s: %w", paramName, pdRef, *setDef.Name, err)
}
return res, nil
}