From 12edb6d4052c1e196e0ac972188677e712f1399c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?=
 <charles.edouard@nirmata.com>
Date: Tue, 10 Sep 2024 15:56:00 +0200
Subject: [PATCH] feat: use pointer in rule (generate field) (#11076)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
---
 api/kyverno/v2beta1/rule_types.go            | 4 ++--
 api/kyverno/v2beta1/zz_generated.deepcopy.go | 6 +++++-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/api/kyverno/v2beta1/rule_types.go b/api/kyverno/v2beta1/rule_types.go
index 986d3835b8..0d6ffe1bf6 100644
--- a/api/kyverno/v2beta1/rule_types.go
+++ b/api/kyverno/v2beta1/rule_types.go
@@ -60,7 +60,7 @@ type Rule struct {
 
 	// Generation is used to create new resources.
 	// +optional
-	Generation kyvernov1.Generation `json:"generate,omitempty"`
+	Generation *kyvernov1.Generation `json:"generate,omitempty"`
 
 	// VerifyImages is used to verify image signatures and mutate them to add a digest
 	// +optional
@@ -134,7 +134,7 @@ func (r *Rule) HasValidate() bool {
 
 // HasGenerate checks for generate rule
 func (r *Rule) HasGenerate() bool {
-	return !datautils.DeepEqual(r.Generation, kyvernov1.Generation{})
+	return r.Generation != nil && !datautils.DeepEqual(*r.Generation, kyvernov1.Generation{})
 }
 
 // ValidateRuleType checks only one type of rule is defined per rule
diff --git a/api/kyverno/v2beta1/zz_generated.deepcopy.go b/api/kyverno/v2beta1/zz_generated.deepcopy.go
index 67d9d7c124..9e742810ca 100755
--- a/api/kyverno/v2beta1/zz_generated.deepcopy.go
+++ b/api/kyverno/v2beta1/zz_generated.deepcopy.go
@@ -744,7 +744,11 @@ func (in *Rule) DeepCopyInto(out *Rule) {
 	}
 	in.Mutation.DeepCopyInto(&out.Mutation)
 	in.Validation.DeepCopyInto(&out.Validation)
-	in.Generation.DeepCopyInto(&out.Generation)
+	if in.Generation != nil {
+		in, out := &in.Generation, &out.Generation
+		*out = new(v1.Generation)
+		(*in).DeepCopyInto(*out)
+	}
 	if in.VerifyImages != nil {
 		in, out := &in.VerifyImages, &out.VerifyImages
 		*out = make([]ImageVerification, len(*in))