fix rule status set (#5219)

Signed-off-by: junot <junotxiang@kubesphere.io>

Signed-off-by: junot <junotxiang@kubesphere.io>
This commit is contained in:
junot
2022-09-16 18:43:48 +08:00
committed by GitHub
parent 5ea9d3deac
commit 789a0ab1e4
8 changed files with 205 additions and 51 deletions

View File

@@ -25,6 +25,7 @@ import (
yaml "gopkg.in/yaml.v3"
runtime "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/uuid"
ctrl "sigs.k8s.io/controller-runtime"
logf "sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/webhook"
@@ -32,6 +33,8 @@ import (
var rulegrouplog = logf.Log.WithName("rulegroup")
const RuleLabelKeyRuleId = "rule_id"
func (r *RuleGroup) SetupWebhookWithManager(mgr ctrl.Manager) error {
return ctrl.NewWebhookManagedBy(mgr).
For(r).
@@ -50,10 +53,26 @@ func (r *RuleGroup) Default() {
rule.Expr = intstr.FromString(rule.ExprBuilder.Workload.Build())
}
}
setRuleId(&rule.Rule)
r.Spec.Rules[i] = rule
}
}
func setRuleId(rule *Rule) {
var setRuleId = true
if len(rule.Labels) > 0 {
if _, ok := rule.Labels[RuleLabelKeyRuleId]; ok {
setRuleId = false
}
}
if setRuleId {
if rule.Labels == nil {
rule.Labels = make(map[string]string)
}
rule.Labels[RuleLabelKeyRuleId] = string(uuid.NewUUID())
}
}
var _ webhook.Validator = &RuleGroup{}
func (r *RuleGroup) ValidateCreate() error {
@@ -171,6 +190,7 @@ func (r *ClusterRuleGroup) Default() {
rule.Expr = intstr.FromString(rule.ExprBuilder.Node.Build())
}
}
setRuleId(&rule.Rule)
r.Spec.Rules[i] = rule
}
}
@@ -224,6 +244,7 @@ func (r *GlobalRuleGroup) Default() {
rule.Expr = intstr.FromString(rule.ExprBuilder.Workload.Build())
}
}
setRuleId(&rule.Rule)
r.Spec.Rules[i] = rule
}
}