@@ -56,6 +56,7 @@ type OverridePolicy struct {
5656 // OverrideRules defines an array of override rules to be applied on the selected resources.
5757 // The order of the rules determines the override order.
5858 // When there are two rules selecting the same fields on the target cluster, the last one will win.
59+ // There can only be one override rule if it is a `Delete` type override rule.
5960 // You can have 1-20 rules.
6061 // +kubebuilder:validation:Required
6162 // +kubebuilder:validation:MinItems=1
@@ -66,6 +67,12 @@ type OverridePolicy struct {
6667
6768// OverrideRule defines how to override the selected resources on the target clusters.
6869type OverrideRule struct {
70+ // OverrideType defines the type of the override rules.
71+ // +kubebuilder:validation:Enum=JSONPatch;Delete
72+ // +kubebuilder:default:JSONPatch
73+ // +optional
74+ OverrideType OverrideType `json:"overrideType,omitempty"`
75+
6976 // ClusterSelectors selects the target clusters.
7077 // The resources will be overridden before applying to the matching clusters.
7178 // An empty clusterSelector selects ALL the member clusters.
@@ -78,10 +85,21 @@ type OverrideRule struct {
7885 // +kubebuilder:validation:Required
7986 // +kubebuilder:validation:MinItems=1
8087 // +kubebuilder:validation:MaxItems=20
81- // +required
82- JSONPatchOverrides []JSONPatchOverride `json:"jsonPatchOverrides"`
88+ // +optional
89+ JSONPatchOverrides []JSONPatchOverride `json:"jsonPatchOverrides,omitempty "`
8390}
8491
92+ // OverrideType defines the type of Override
93+ type OverrideType string
94+
95+ const (
96+ // JSONPatchOverrideType applies a JSON patch on the selected resources following [RFC 6902](https://datatracker.ietf.org/doc/html/rfc6902).
97+ JSONPatchOverrideType OverrideType = "JSONPatch"
98+
99+ // DeleteOverrideType deletes the selected resources on the target clusters.
100+ DeleteOverrideType OverrideType = "Delete"
101+ )
102+
85103// +genclient
86104// +genclient:Namespaced
87105// +kubebuilder:object:root=true
0 commit comments