mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-29 02:45:06 +00:00
refactor: reduce usage of reflect.DeepEqual (#3328)
Signed-off-by: Charles-Edouard Brétéché <charled.breteche@gmail.com>
This commit is contained in:
parent
93ad2d6011
commit
1293ef4691
2 changed files with 30 additions and 31 deletions
|
@ -3,7 +3,6 @@ package autogen
|
|||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strconv"
|
||||
|
||||
jsonpatch "github.com/evanphx/json-patch"
|
||||
|
@ -160,9 +159,9 @@ func GenerateRulePatches(spec *kyverno.Spec, controllers string, log logr.Logger
|
|||
|
||||
// handle all other controllers other than CronJob
|
||||
genRule := generateRuleForControllers(rule, stripCronJob(controllers), log)
|
||||
if !reflect.DeepEqual(genRule, kyvernoRule{}) {
|
||||
pbytes := convertToPatches(genRule, patchPostion)
|
||||
pbytes = updateGenRuleByte(pbytes, "Pod", genRule)
|
||||
if genRule != nil {
|
||||
pbytes := convertToPatches(*genRule, patchPostion)
|
||||
pbytes = updateGenRuleByte(pbytes, "Pod", *genRule)
|
||||
if pbytes != nil {
|
||||
rulePatches = append(rulePatches, pbytes)
|
||||
}
|
||||
|
@ -172,9 +171,9 @@ func GenerateRulePatches(spec *kyverno.Spec, controllers string, log logr.Logger
|
|||
|
||||
// handle CronJob, it appends an additional rule
|
||||
genRule = generateCronJobRule(rule, controllers, log)
|
||||
if !reflect.DeepEqual(genRule, kyvernoRule{}) {
|
||||
pbytes := convertToPatches(genRule, patchPostion)
|
||||
pbytes = updateGenRuleByte(pbytes, "Cronjob", genRule)
|
||||
if genRule != nil {
|
||||
pbytes := convertToPatches(*genRule, patchPostion)
|
||||
pbytes = updateGenRuleByte(pbytes, "Cronjob", *genRule)
|
||||
if pbytes != nil {
|
||||
rulePatches = append(rulePatches, pbytes)
|
||||
}
|
||||
|
|
|
@ -62,12 +62,12 @@ func createRuleMap(rules []kyverno.Rule) map[string]kyvernoRule {
|
|||
return ruleMap
|
||||
}
|
||||
|
||||
func generateRuleForControllers(rule kyverno.Rule, controllers string, log logr.Logger) kyvernoRule {
|
||||
func generateRuleForControllers(rule kyverno.Rule, controllers string, log logr.Logger) *kyvernoRule {
|
||||
logger := log.WithName("generateRuleForControllers")
|
||||
|
||||
if strings.HasPrefix(rule.Name, "autogen-") || controllers == "" {
|
||||
logger.V(5).Info("skip generateRuleForControllers")
|
||||
return kyvernoRule{}
|
||||
return nil
|
||||
}
|
||||
|
||||
logger.V(3).Info("processing rule", "rulename", rule.Name)
|
||||
|
@ -80,7 +80,7 @@ func generateRuleForControllers(rule kyverno.Rule, controllers string, log logr.
|
|||
|
||||
if !utils.ContainsPod(matchResourceDescriptionsKinds, "Pod") ||
|
||||
(len(excludeResourceDescriptionsKinds) != 0 && !utils.ContainsPod(excludeResourceDescriptionsKinds, "Pod")) {
|
||||
return kyvernoRule{}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Support backwards compatibility
|
||||
|
@ -171,7 +171,7 @@ func generateRuleForControllers(rule kyverno.Rule, controllers string, log logr.
|
|||
}
|
||||
|
||||
controllerRule.Mutation = newMutation.DeepCopy()
|
||||
return *controllerRule
|
||||
return controllerRule
|
||||
}
|
||||
|
||||
if len(rule.Mutation.ForEachMutation) > 0 && rule.Mutation.ForEachMutation != nil {
|
||||
|
@ -191,7 +191,7 @@ func generateRuleForControllers(rule kyverno.Rule, controllers string, log logr.
|
|||
controllerRule.Mutation = &kyverno.Mutation{
|
||||
ForEachMutation: newForeachMutation,
|
||||
}
|
||||
return *controllerRule
|
||||
return controllerRule
|
||||
}
|
||||
|
||||
if rule.Validation.Pattern != nil {
|
||||
|
@ -204,7 +204,7 @@ func generateRuleForControllers(rule kyverno.Rule, controllers string, log logr.
|
|||
},
|
||||
}
|
||||
controllerRule.Validation = newValidate.DeepCopy()
|
||||
return *controllerRule
|
||||
return controllerRule
|
||||
}
|
||||
|
||||
if rule.Validation.Deny != nil {
|
||||
|
@ -213,7 +213,7 @@ func generateRuleForControllers(rule kyverno.Rule, controllers string, log logr.
|
|||
Deny: rule.Validation.Deny,
|
||||
}
|
||||
controllerRule.Validation = deny.DeepCopy()
|
||||
return *controllerRule
|
||||
return controllerRule
|
||||
}
|
||||
|
||||
if rule.Validation.AnyPattern != nil {
|
||||
|
@ -228,7 +228,7 @@ func generateRuleForControllers(rule kyverno.Rule, controllers string, log logr.
|
|||
Message: variables.FindAndShiftReferences(log, rule.Validation.Message, "spec/template", "anyPattern"),
|
||||
AnyPattern: patterns,
|
||||
}
|
||||
return *controllerRule
|
||||
return controllerRule
|
||||
}
|
||||
|
||||
if len(rule.Validation.ForEachValidation) > 0 && rule.Validation.ForEachValidation != nil {
|
||||
|
@ -240,7 +240,7 @@ func generateRuleForControllers(rule kyverno.Rule, controllers string, log logr.
|
|||
Message: variables.FindAndShiftReferences(log, rule.Validation.Message, "spec/template", "pattern"),
|
||||
ForEachValidation: newForeachValidate,
|
||||
}
|
||||
return *controllerRule
|
||||
return controllerRule
|
||||
}
|
||||
|
||||
if rule.VerifyImages != nil {
|
||||
|
@ -250,28 +250,28 @@ func generateRuleForControllers(rule kyverno.Rule, controllers string, log logr.
|
|||
}
|
||||
|
||||
controllerRule.VerifyImages = newVerifyImages
|
||||
return *controllerRule
|
||||
return controllerRule
|
||||
}
|
||||
|
||||
return kyvernoRule{}
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateCronJobRule(rule kyverno.Rule, controllers string, log logr.Logger) kyvernoRule {
|
||||
func generateCronJobRule(rule kyverno.Rule, controllers string, log logr.Logger) *kyvernoRule {
|
||||
logger := log.WithName("handleCronJob")
|
||||
|
||||
hasCronJob := strings.Contains(controllers, engine.PodControllerCronJob) || strings.Contains(controllers, "all")
|
||||
if !hasCronJob {
|
||||
return kyvernoRule{}
|
||||
return nil
|
||||
}
|
||||
|
||||
logger.V(3).Info("generating rule for cronJob")
|
||||
jobRule := generateRuleForControllers(rule, "Job", logger)
|
||||
|
||||
if reflect.DeepEqual(jobRule, kyvernoRule{}) {
|
||||
return kyvernoRule{}
|
||||
if jobRule == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
cronJobRule := &jobRule
|
||||
cronJobRule := jobRule
|
||||
|
||||
name := fmt.Sprintf("autogen-cronjob-%s", rule.Name)
|
||||
if len(name) > 63 {
|
||||
|
@ -310,7 +310,7 @@ func generateCronJobRule(rule kyverno.Rule, controllers string, log logr.Logger)
|
|||
},
|
||||
}
|
||||
cronJobRule.Mutation = newMutation.DeepCopy()
|
||||
return *cronJobRule
|
||||
return cronJobRule
|
||||
}
|
||||
|
||||
if (jobRule.Validation != nil) && (jobRule.Validation.Pattern != nil) {
|
||||
|
@ -323,7 +323,7 @@ func generateCronJobRule(rule kyverno.Rule, controllers string, log logr.Logger)
|
|||
},
|
||||
}
|
||||
cronJobRule.Validation = newValidate.DeepCopy()
|
||||
return *cronJobRule
|
||||
return cronJobRule
|
||||
}
|
||||
|
||||
if (jobRule.Validation != nil) && (jobRule.Validation.Deny != nil) {
|
||||
|
@ -332,7 +332,7 @@ func generateCronJobRule(rule kyverno.Rule, controllers string, log logr.Logger)
|
|||
Deny: jobRule.Validation.Deny,
|
||||
}
|
||||
cronJobRule.Validation = newValidate.DeepCopy()
|
||||
return *cronJobRule
|
||||
return cronJobRule
|
||||
}
|
||||
|
||||
if (jobRule.Validation != nil) && (jobRule.Validation.AnyPattern != nil) {
|
||||
|
@ -356,7 +356,7 @@ func generateCronJobRule(rule kyverno.Rule, controllers string, log logr.Logger)
|
|||
Message: variables.FindAndShiftReferences(log, rule.Validation.Message, "spec/jobTemplate/spec/template", "anyPattern"),
|
||||
AnyPattern: patterns,
|
||||
}
|
||||
return *cronJobRule
|
||||
return cronJobRule
|
||||
}
|
||||
|
||||
if (jobRule.Validation != nil) && len(jobRule.Validation.ForEachValidation) > 0 && jobRule.Validation.ForEachValidation != nil {
|
||||
|
@ -368,7 +368,7 @@ func generateCronJobRule(rule kyverno.Rule, controllers string, log logr.Logger)
|
|||
Message: variables.FindAndShiftReferences(log, rule.Validation.Message, "spec/template", "pattern"),
|
||||
ForEachValidation: newForeachValidate,
|
||||
}
|
||||
return *cronJobRule
|
||||
return cronJobRule
|
||||
}
|
||||
|
||||
if (jobRule.Mutation != nil) && len(jobRule.Mutation.ForEachMutation) > 0 && jobRule.Mutation.ForEachMutation != nil {
|
||||
|
@ -390,7 +390,7 @@ func generateCronJobRule(rule kyverno.Rule, controllers string, log logr.Logger)
|
|||
cronJobRule.Mutation = &kyverno.Mutation{
|
||||
ForEachMutation: newForeachMutation,
|
||||
}
|
||||
return *cronJobRule
|
||||
return cronJobRule
|
||||
}
|
||||
|
||||
if jobRule.VerifyImages != nil {
|
||||
|
@ -399,10 +399,10 @@ func generateCronJobRule(rule kyverno.Rule, controllers string, log logr.Logger)
|
|||
newVerifyImages[i] = vi.DeepCopy()
|
||||
}
|
||||
cronJobRule.VerifyImages = newVerifyImages
|
||||
return *cronJobRule
|
||||
return cronJobRule
|
||||
}
|
||||
|
||||
return kyvernoRule{}
|
||||
return nil
|
||||
}
|
||||
|
||||
func updateGenRuleByte(pbyte []byte, kind string, genRule kyvernoRule) (obj []byte) {
|
||||
|
|
Loading…
Add table
Reference in a new issue