Skip to content

Commit

Permalink
fix: fetching logic for triggers
Browse files Browse the repository at this point in the history
Signed-off-by: ShutingZhao <[email protected]>
  • Loading branch information
realshuting committed Aug 8, 2024
1 parent 4d46891 commit 6335219
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
18 changes: 14 additions & 4 deletions pkg/background/common/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package common
import (
"context"
"fmt"
"reflect"

"github.com/go-logr/logr"
kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1"
Expand All @@ -15,7 +16,12 @@ import (
)

func GetResource(client dclient.Interface, resourceSpec kyvernov1.ResourceSpec, urSpec kyvernov2.UpdateRequestSpec, log logr.Logger) (resource *unstructured.Unstructured, err error) {
if urSpec.GetResource().GetUID() != "" {
obj := resourceSpec
if reflect.DeepEqual(obj, kyvernov1.ResourceSpec{}) {
obj = urSpec.GetResource()
}

if obj.GetUID() != "" {
triggers, err := client.ListResource(context.TODO(), resourceSpec.GetAPIVersion(), resourceSpec.GetKind(), resourceSpec.GetNamespace(), nil)
if err != nil {
return nil, fmt.Errorf("failed to list trigger resources: %v", err)
Expand All @@ -26,7 +32,7 @@ func GetResource(client dclient.Interface, resourceSpec kyvernov1.ResourceSpec,
return &trigger, nil
}
}
} else if urSpec.GetResource().GetName() != "" {
} else if obj.GetName() != "" {
if resourceSpec.Kind == "Namespace" {
resourceSpec.Namespace = ""
}
Expand All @@ -51,8 +57,12 @@ func GetResource(client dclient.Interface, resourceSpec kyvernov1.ResourceSpec,
}

resource, err = kubeutils.BytesToUnstructured(raw)
if err != nil {
return nil, fmt.Errorf("failed to convert raw object to unstructured: %v", err)
} else {
return resource, nil
}
}

log.V(3).Info("fetched trigger resource", "resourceSpec", resourceSpec)
return resource, err
return nil, fmt.Errorf("resource not found")
}
3 changes: 2 additions & 1 deletion pkg/background/generate/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ func NewGenerateController(
}

func (c *GenerateController) ProcessUR(ur *kyvernov2.UpdateRequest) error {
logger := c.log.WithValues("name", ur.GetName(), "policy", ur.Spec.GetPolicyKey(), "resource", ur.Spec.GetResource().String())
logger := c.log.WithValues("name", ur.GetName(), "policy", ur.Spec.GetPolicyKey())
var err error
var genResources []kyvernov1.ResourceSpec
logger.Info("start processing UR", "ur", ur.Name, "resourceVersion", ur.GetResourceVersion())
Expand Down Expand Up @@ -137,6 +137,7 @@ const doesNotApply = "policy does not apply to resource"

func (c *GenerateController) getTrigger(spec kyvernov2.UpdateRequestSpec, i int) (*unstructured.Unstructured, error) {
resourceSpec := spec.RuleContext[i].Trigger
c.log.V(4).Info("fetching trigger", "trigger", resourceSpec.String())
admissionRequest := spec.Context.AdmissionRequestInfo.AdmissionRequest
if admissionRequest == nil {
return common.GetResource(c.client, resourceSpec, spec, c.log)
Expand Down

0 comments on commit 6335219

Please sign in to comment.