1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-06 07:57:07 +00:00
kyverno/pkg/engine/loadtargets.go
Charles-Edouard Brétéché 75e300799a
fix: remove unused type TargetMutation (#3706)
Signed-off-by: Charles-Edouard Brétéché <charled.breteche@gmail.com>

Co-authored-by: Vyankatesh Kudtarkar <vyankateshkd@gmail.com>
2022-04-28 06:05:13 +00:00

61 lines
2 KiB
Go

package engine
import (
"fmt"
"github.com/go-logr/logr"
kyverno "github.com/kyverno/kyverno/api/kyverno/v1"
engineUtils "github.com/kyverno/kyverno/pkg/engine/utils"
"github.com/kyverno/kyverno/pkg/engine/variables"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
)
func loadTargets(logger logr.Logger, targets []kyverno.ResourceSpec, ctx *PolicyContext) ([]unstructured.Unstructured, error) {
targetObjects := make([]unstructured.Unstructured, len(targets))
var errors []error
for i, target := range targets {
apiversion, err := variables.SubstituteAll(logger, ctx.JSONContext, target.APIVersion)
if err != nil {
errors = append(errors, fmt.Errorf("failed to substitute variables in target[%d].APIVersion %s: %v", i, target.APIVersion, err))
continue
}
kind, err := variables.SubstituteAll(logger, ctx.JSONContext, target.Kind)
if err != nil {
errors = append(errors, fmt.Errorf("failed to substitute variables in target[%d].Kind %s: %v", i, target.Kind, err))
continue
}
name, err := variables.SubstituteAll(logger, ctx.JSONContext, target.Name)
if err != nil {
errors = append(errors, fmt.Errorf("failed to substitute variables in target[%d].Name %s: %v", i, target.Name, err))
continue
}
namespace, err := variables.SubstituteAll(logger, ctx.JSONContext, target.Namespace)
if err != nil {
errors = append(errors, fmt.Errorf("failed to substitute variables in target[%d].Namespace %s: %v", i, target.Namespace, err))
continue
}
if namespace == "" {
namespace = "default"
}
obj, err := ctx.Client.GetResource(apiversion.(string), kind.(string), namespace.(string), name.(string))
if err != nil {
errors = append(errors, fmt.Errorf("failed to get target %s/%s %s/%s : %v", apiversion, kind, namespace, name, err))
continue
}
if obj.GetKind() == "" {
obj.SetKind(kind.(string))
}
obj.SetAPIVersion(apiversion.(string))
targetObjects = append(targetObjects, *obj)
}
return targetObjects, engineUtils.CombineErrors(errors)
}