in pkg/gcv/oldconfigs/config.go [154:183]
func extractRego(yaml *simpleyaml.Yaml) (string, error) {
targets := yaml.GetPath("spec", "targets")
if !targets.IsArray() {
// Old format looks like the following
// targets:
// validation.gcp.forsetisecurity.org:
// rego:
return targets.GetPath(expectedTarget, "rego").String()
}
// New format looks like the following
// targets:
// - target: validation.gcp.forsetisecurity.org
// rego:
size, err := targets.GetArraySize()
if err != nil {
return "", err
}
for i := 0; i < size; i++ {
target := targets.GetIndex(i)
targetString, err := target.Get("target").String()
if err != nil {
return "", err
}
if targetString == expectedTarget {
return target.Get("rego").String()
}
}
return "", status.Error(codes.InvalidArgument, "Unable to locate rego field in constraint template")
}