in alzlib.go [781:802]
func (az *AlzLib) generateArchitectures(res *processor.Result) error {
for name, libArch := range res.LibArchitectures {
if _, exists := az.architectures[name]; exists && !az.Options.AllowOverwrite {
return fmt.Errorf("Alzlib.generateArchitectures: error processing architecture %s - it already exists in the library", name)
}
validParents := mapset.NewThreadUnsafeSet[string]()
for _, mg := range libArch.ManagementGroups {
validParents.Add(mg.Id)
}
for _, mg := range libArch.ManagementGroups {
if mg.ParentId != nil && !validParents.Contains(*mg.ParentId) {
return fmt.Errorf("Alzlib.generateArchitectures: error processing architecture %s - management group %s has invalid parent %s", name, mg.Id, *mg.ParentId)
}
}
arch := NewArchitecture(name, az)
if err := architectureRecursion(nil, libArch, arch, az, 0); err != nil {
return fmt.Errorf("Alzlib.generateArchitectures: error processing architecture %s: %w", name, err)
}
az.architectures[name] = arch
}
return nil
}