2022-09-09 16:19:38 +02:00
|
|
|
package generation
|
|
|
|
|
|
|
|
import (
|
|
|
|
kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1"
|
2024-06-20 11:44:43 +02:00
|
|
|
kyvernov2 "github.com/kyverno/kyverno/api/kyverno/v2"
|
2023-03-11 01:17:10 +08:00
|
|
|
"github.com/kyverno/kyverno/pkg/engine"
|
2022-09-09 16:19:38 +02:00
|
|
|
admissionv1 "k8s.io/api/admission/v1"
|
|
|
|
)
|
|
|
|
|
2024-08-14 01:14:06 +08:00
|
|
|
func buildURSpecNew(requestType kyvernov2.RequestType, policyKey string, rules []kyvernov1.Rule, trigger kyvernov1.ResourceSpec, deleteDownstream bool) kyvernov2.UpdateRequestSpec {
|
|
|
|
ruleCtx := make([]kyvernov2.RuleContext, 0)
|
|
|
|
for _, rule := range rules {
|
|
|
|
ctx := buildRuleContext(rule, trigger, deleteDownstream)
|
|
|
|
ruleCtx = append(ruleCtx, ctx)
|
|
|
|
}
|
2024-06-20 11:44:43 +02:00
|
|
|
return kyvernov2.UpdateRequestSpec{
|
2024-08-14 01:14:06 +08:00
|
|
|
Type: requestType,
|
|
|
|
Policy: policyKey,
|
|
|
|
RuleContext: ruleCtx,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func buildRuleContext(rule kyvernov1.Rule, trigger kyvernov1.ResourceSpec, deleteDownstream bool) kyvernov2.RuleContext {
|
|
|
|
return kyvernov2.RuleContext{
|
|
|
|
Rule: rule.Name,
|
|
|
|
Trigger: trigger,
|
2023-03-11 01:17:10 +08:00
|
|
|
DeleteDownstream: deleteDownstream,
|
2022-09-09 16:19:38 +02:00
|
|
|
}
|
2023-03-11 01:17:10 +08:00
|
|
|
}
|
2022-09-09 16:19:38 +02:00
|
|
|
|
2024-06-20 11:44:43 +02:00
|
|
|
func buildURContext(request admissionv1.AdmissionRequest, policyContext *engine.PolicyContext) kyvernov2.UpdateRequestSpecContext {
|
|
|
|
return kyvernov2.UpdateRequestSpecContext{
|
2023-03-11 01:17:10 +08:00
|
|
|
UserRequestInfo: policyContext.AdmissionInfo(),
|
2024-06-20 11:44:43 +02:00
|
|
|
AdmissionRequestInfo: kyvernov2.AdmissionRequestInfoObject{
|
2023-04-04 07:11:18 +02:00
|
|
|
AdmissionRequest: &request,
|
2023-03-11 01:17:10 +08:00
|
|
|
Operation: request.Operation,
|
|
|
|
},
|
2022-09-09 16:19:38 +02:00
|
|
|
}
|
2023-03-11 01:17:10 +08:00
|
|
|
}
|