From b689f1f15c4281b0a6bc2d78912586831c95ee76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Wed, 27 Apr 2022 16:08:31 +0200 Subject: [PATCH] fix: kind wash in mutate policy helper (#3698) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché --- api/kyverno/v1/policy_test.go | 4 ++-- api/kyverno/v1/policy_types.go | 2 +- .../kubectl-kyverno/utils/common/common.go | 20 +++++++++++++------ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/api/kyverno/v1/policy_test.go b/api/kyverno/v1/policy_test.go index 2785565c91..f374dc9fa9 100644 --- a/api/kyverno/v1/policy_test.go +++ b/api/kyverno/v1/policy_test.go @@ -34,8 +34,8 @@ func Test_Policy_IsNamespaced(t *testing.T) { Name: "this-is-a-way-too-long-policy-name-that-should-trigger-an-error-when-calling-the-policy-validation-method", }, } - assert.Equal(t, namespaced.IsNamespaced(), false) - assert.Equal(t, notNamespaced.IsNamespaced(), false) + assert.Equal(t, namespaced.IsNamespaced(), true) + assert.Equal(t, notNamespaced.IsNamespaced(), true) } func Test_Policy_Autogen_All(t *testing.T) { diff --git a/api/kyverno/v1/policy_types.go b/api/kyverno/v1/policy_types.go index cc9c19497e..a8700503f2 100755 --- a/api/kyverno/v1/policy_types.go +++ b/api/kyverno/v1/policy_types.go @@ -84,7 +84,7 @@ func (p *Policy) GetSpec() *Spec { // IsNamespaced indicates if the policy is namespace scoped func (p *Policy) IsNamespaced() bool { - return false + return true } // IsReady indicates if the policy is ready to serve the admission request diff --git a/cmd/cli/kubectl-kyverno/utils/common/common.go b/cmd/cli/kubectl-kyverno/utils/common/common.go index db3f2c2e10..23136ea74e 100644 --- a/cmd/cli/kubectl-kyverno/utils/common/common.go +++ b/cmd/cli/kubectl-kyverno/utils/common/common.go @@ -189,13 +189,21 @@ func MutatePolicy(policy v1.PolicyInterface, logger logr.Logger) (v1.PolicyInter if err != nil { return nil, sanitizederror.NewWithError(fmt.Sprintf("failed to apply %s policy", policy.GetName()), err) } - var p v1.ClusterPolicy - err = json.Unmarshal(modifiedPolicy, &p) - if err != nil { - return nil, sanitizederror.NewWithError(fmt.Sprintf("failed to unmarshal %s policy", policy.GetName()), err) + if policy.IsNamespaced() { + var p v1.Policy + err = json.Unmarshal(modifiedPolicy, &p) + if err != nil { + return nil, sanitizederror.NewWithError(fmt.Sprintf("failed to unmarshal %s policy", policy.GetName()), err) + } + return &p, nil + } else { + var p v1.ClusterPolicy + err = json.Unmarshal(modifiedPolicy, &p) + if err != nil { + return nil, sanitizederror.NewWithError(fmt.Sprintf("failed to unmarshal %s policy", policy.GetName()), err) + } + return &p, nil } - - return &p, nil } // IsInputFromPipe - check if input is passed using pipe