pkg/engine/testutils.go (29 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
package engine
import "github.com/fatih/structs"
func resourceSliceToMap(resources []interface{}) map[string]interface{} {
resourceMap := map[string]interface{}{}
for _, resource := range resources {
if isARMResource(resource) {
resourceName := extractNameFromARMType(resource)
resourceMap[resourceName] = resource
}
}
return resourceMap
}
func extractNameFromARMType(resource interface{}) string {
s := structs.New(resource)
fields := s.Field(s.Names()[1]).Fields()
for _, f := range fields {
innerField := s.Field(f.Name())
innerFieldValue := innerField.Value()
if innerStringValue, ok := innerFieldValue.(*string); ok && innerField.Name() == "Name" {
return *innerStringValue
}
}
return ""
}
func isARMResource(resource interface{}) bool {
s := structs.New(resource)
_, ok := s.FieldOk("ARMResource")
return ok
}