internal/processor/libArchetypeOverride.go (65 lines of code) (raw):

// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. package processor import ( "encoding/json" "fmt" mapset "github.com/deckarep/golang-set/v2" "gopkg.in/yaml.v3" ) // LibArchetypeOverride represents an archetype override definition file, // it used to construct generate a new Archetype struct from an existing // full archetype and is then added to the AlzLib struct. type LibArchetypeOverride struct { Name string `json:"name" yaml:"name"` BaseArchetype string `json:"base_archetype" yaml:"base_archetype"` PolicyAssignmentsToAdd mapset.Set[string] `json:"policy_assignments_to_add" yaml:"policy_assignments_to_add"` PolicyAssignmentsToRemove mapset.Set[string] `json:"policy_assignments_to_remove" yaml:"policy_assignments_to_remove"` PolicyDefinitionsToAdd mapset.Set[string] `json:"policy_definitions_to_add" yaml:"policy_definitions_to_add"` PolicyDefinitionsToRemove mapset.Set[string] `json:"policy_definitions_to_remove" yaml:"policy_definitions_to_remove"` PolicySetDefinitionsToAdd mapset.Set[string] `json:"policy_set_definitions_to_add" yaml:"policy_set_definitions_to_add"` PolicySetDefinitionsToRemove mapset.Set[string] `json:"policy_set_definitions_to_remove" yaml:"policy_set_definitions_to_remove"` RoleDefinitionsToAdd mapset.Set[string] `json:"role_definitions_to_add" yaml:"role_definitions_to_add"` RoleDefinitionsToRemove mapset.Set[string] `json:"role_definitions_to_remove" yaml:"role_definitions_to_remove"` } type libArchetypeOverrideUnmarshaler struct { Name string `json:"name" yaml:"name"` BaseArchetype string `json:"base_archetype" yaml:"base_archetype"` PolicyAssignmentsToAdd []string `json:"policy_assignments_to_add" yaml:"policy_assignments_to_add"` PolicyAssignmentsToRemove []string `json:"policy_assignments_to_remove" yaml:"policy_assignments_to_remove"` PolicyDefinitionsToAdd []string `json:"policy_definitions_to_add" yaml:"policy_definitions_to_add"` PolicyDefinitionsToRemove []string `json:"policy_definitions_to_remove" yaml:"policy_definitions_to_remove"` PolicySetDefinitionsToAdd []string `json:"policy_set_definitions_to_add" yaml:"policy_set_definitions_to_add"` PolicySetDefinitionsToRemove []string `json:"policy_set_definitions_to_remove" yaml:"policy_set_definitions_to_remove"` RoleDefinitionsToAdd []string `json:"role_definitions_to_add" yaml:"role_definitions_to_add"` RoleDefinitionsToRemove []string `json:"role_definitions_to_remove" yaml:"role_definitions_to_remove"` } func (lao *LibArchetypeOverride) UnmarshalJSON(data []byte) error { tmp := libArchetypeOverrideUnmarshaler{} if err := json.Unmarshal(data, &tmp); err != nil { return fmt.Errorf("LibArchetypeOverride.UnmarshalJSON: json.Unmarshal error: %w", err) } lao.Name = tmp.Name lao.BaseArchetype = tmp.BaseArchetype lao.PolicyAssignmentsToAdd = mapset.NewThreadUnsafeSet[string](tmp.PolicyAssignmentsToAdd...) lao.PolicyAssignmentsToRemove = mapset.NewThreadUnsafeSet[string](tmp.PolicyAssignmentsToRemove...) lao.PolicyDefinitionsToAdd = mapset.NewThreadUnsafeSet[string](tmp.PolicyDefinitionsToAdd...) lao.PolicyDefinitionsToRemove = mapset.NewThreadUnsafeSet[string](tmp.PolicyDefinitionsToRemove...) lao.PolicySetDefinitionsToAdd = mapset.NewThreadUnsafeSet[string](tmp.PolicySetDefinitionsToAdd...) lao.PolicySetDefinitionsToRemove = mapset.NewThreadUnsafeSet[string](tmp.PolicySetDefinitionsToRemove...) lao.RoleDefinitionsToAdd = mapset.NewThreadUnsafeSet[string](tmp.RoleDefinitionsToAdd...) lao.RoleDefinitionsToRemove = mapset.NewThreadUnsafeSet[string](tmp.RoleDefinitionsToRemove...) return nil } func (lao *LibArchetypeOverride) UnmarshalYAML(n *yaml.Node) error { tmp := libArchetypeOverrideUnmarshaler{} if err := n.Decode(&tmp); err != nil { return fmt.Errorf("LibArchetypeOverride.UnmarshalYAML: yaml.Node.Decode error: %w", err) } lao.Name = tmp.Name lao.BaseArchetype = tmp.BaseArchetype lao.PolicyAssignmentsToAdd = mapset.NewThreadUnsafeSet[string](tmp.PolicyAssignmentsToAdd...) lao.PolicyAssignmentsToRemove = mapset.NewThreadUnsafeSet[string](tmp.PolicyAssignmentsToRemove...) lao.PolicyDefinitionsToAdd = mapset.NewThreadUnsafeSet[string](tmp.PolicyDefinitionsToAdd...) lao.PolicyDefinitionsToRemove = mapset.NewThreadUnsafeSet[string](tmp.PolicyDefinitionsToRemove...) lao.PolicySetDefinitionsToAdd = mapset.NewThreadUnsafeSet[string](tmp.PolicySetDefinitionsToAdd...) lao.PolicySetDefinitionsToRemove = mapset.NewThreadUnsafeSet[string](tmp.PolicySetDefinitionsToRemove...) lao.RoleDefinitionsToAdd = mapset.NewThreadUnsafeSet[string](tmp.RoleDefinitionsToAdd...) lao.RoleDefinitionsToRemove = mapset.NewThreadUnsafeSet[string](tmp.RoleDefinitionsToRemove...) return nil }