func parseArmFunctionInPolicySetParameter()

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
}