in deployment/managementgroup.go [358:411]
func (alzmg *HierarchyManagementGroup) ModifyPolicyAssignment(
name string,
parameters map[string]*armpolicy.ParameterValuesValue,
enforcementMode *armpolicy.EnforcementMode,
nonComplianceMessages []*armpolicy.NonComplianceMessage,
identity *armpolicy.Identity,
resourceSelectors []*armpolicy.ResourceSelector,
overrides []*armpolicy.Override,
) error {
if _, ok := alzmg.policyAssignments[name]; !ok {
return fmt.Errorf("HierarchyManagementGroup.ModifyPolicyAssignment: policy assignment %s not found in management group %s", name, alzmg.id)
}
if alzmg.policyAssignments[name].Properties == nil {
return fmt.Errorf("HierarchyManagementGroup.ModifyPolicyAssignment: properties for policy assignment %s in management group %s is nil", name, alzmg.id)
}
if alzmg.policyAssignments[name].Properties.Parameters == nil && len(parameters) > 0 {
alzmg.policyAssignments[name].Properties.Parameters = make(map[string]*armpolicy.ParameterValuesValue, len(parameters))
}
for k, v := range parameters {
// Only add parameter if it exists in the referenced policy definition.
ref, err := alzmg.policyAssignments[name].ReferencedPolicyDefinitionResourceId()
if err != nil {
return fmt.Errorf("HierarchyManagementGroup.ModifyPolicyAssignment: error getting referenced policy definition resource id for policy assignment %s: %w", name, err)
}
if !alzmg.hierarchy.alzlib.AssignmentReferencedDefinitionHasParameter(ref, k) {
return fmt.Errorf("HierarchyManagementGroup.ModifyPolicyAssignment: parameter `%s` not found in referenced %s `%s` for policy assignment `%s`", k, ref.ResourceType.Type, ref.Name, name)
}
alzmg.policyAssignments[name].Properties.Parameters[k] = v
}
if enforcementMode != nil {
alzmg.policyAssignments[name].Properties.EnforcementMode = enforcementMode
}
if nonComplianceMessages != nil {
alzmg.policyAssignments[name].Properties.NonComplianceMessages = nonComplianceMessages
}
if resourceSelectors != nil {
alzmg.policyAssignments[name].Properties.ResourceSelectors = resourceSelectors
}
if overrides != nil {
alzmg.policyAssignments[name].Properties.Overrides = overrides
}
if identity != nil {
alzmg.policyAssignments[name].Identity = identity
}
return nil
}