Skip to content

Commit 12e6357

Browse files
authored
⚠️ Restructure strategy fields (#12506)
* Move deletePolicy to deletion.order Signed-off-by: Stefan Büringer buringerst@vmware.com * Move maxInFlight * Rename KCP remediationStrategy to remediation Signed-off-by: Stefan Büringer buringerst@vmware.com * Restructure KCP spec.rollout fields Signed-off-by: Stefan Büringer buringerst@vmware.com * Restructure strategy fields in MD, Cluster and ClusterClass Signed-off-by: Stefan Büringer buringerst@vmware.com * Adjust e2e YAML files according to API changes * Fix review findings * Fix e2e tests --------- Signed-off-by: Stefan Büringer buringerst@vmware.com
1 parent 1cbe7e0 commit 12e6357

File tree

86 files changed

+2726
-2219
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+2726
-2219
lines changed

.golangci-kal.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,23 +168,23 @@ linters:
168168
linters:
169169
- kubeapilinter
170170
- path: "api/controlplane/kubeadm/v1beta2"
171-
text: "optionalfields: field (Spec|ObjectMeta|KubeadmConfigSpec) is optional and should (be a pointer|have the omitempty tag)"
171+
text: "optionalfields: field (Spec|ObjectMeta|KubeadmConfigSpec|Remediation|Rollout|Before|Strategy|RollingUpdate|MachineTemplate) is optional and should (be a pointer|have the omitempty tag)"
172172
linters:
173173
- kubeapilinter
174174
- path: "api/core/v1beta2/cluster_types.go"
175-
text: "optionalfields: field (ClusterNetwork|Services|Pods|ControlPlaneEndpoint|ControlPlane|Workers|Metadata|Variables|Strategy) is optional and should (be a pointer|have the omitempty tag)"
175+
text: "optionalfields: field (ClusterNetwork|Services|Pods|ControlPlaneEndpoint|ControlPlane|Workers|Metadata|Variables|Strategy|Rollout|RollingUpdate) is optional and should (be a pointer|have the omitempty tag)"
176176
linters:
177177
- kubeapilinter
178178
- path: "api/core/v1beta2/clusterclass_types.go"
179-
text: "optionalfields: field (Workers|Metadata|ControlPlane|Strategy|Infrastructure|DeprecatedV1Beta1Metadata) is optional and should (be a pointer|have the omitempty tag)"
179+
text: "optionalfields: field (Workers|Metadata|ControlPlane|Strategy|Infrastructure|DeprecatedV1Beta1Metadata|Rollout|RollingUpdate) is optional and should (be a pointer|have the omitempty tag)"
180180
linters:
181181
- kubeapilinter
182182
- path: "api/core/v1beta2/(cluster_types.go|clusterclass_types.go|machinehealthcheck_types.go)"
183183
text: "optionalfields: field (Checks|Remediation|TriggerIf) is optional and should (be a pointer|have the omitempty tag)"
184184
linters:
185185
- kubeapilinter
186186
- path: "api/core/v1beta2/machinedeployment_types.go"
187-
text: "optionalfields: field (Strategy|RollingUpdate|Remediation) is optional and should (be a pointer|have the omitempty tag)"
187+
text: "optionalfields: field (Strategy|Rollout|RollingUpdate|Remediation) is optional and should (be a pointer|have the omitempty tag)"
188188
linters:
189189
- kubeapilinter
190190
- path: "api/ipam/v1beta2/ipaddressclaim_types.go"

api/controlplane/kubeadm/v1beta1/conversion.go

Lines changed: 123 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,7 @@ func (src *KubeadmControlPlane) ConvertTo(dstRaw conversion.Hub) error {
8181
}
8282

8383
if src.Spec.RemediationStrategy != nil {
84-
if dst.Spec.RemediationStrategy == nil {
85-
dst.Spec.RemediationStrategy = &controlplanev1.RemediationStrategy{}
86-
}
87-
var restoredRetryPeriodSeconds *int32
88-
if restored.Spec.RemediationStrategy != nil {
89-
restoredRetryPeriodSeconds = restored.Spec.RemediationStrategy.RetryPeriodSeconds
90-
}
91-
clusterv1.Convert_Duration_To_Pointer_int32(src.Spec.RemediationStrategy.RetryPeriod, ok, restoredRetryPeriodSeconds, &dst.Spec.RemediationStrategy.RetryPeriodSeconds)
84+
clusterv1.Convert_Duration_To_Pointer_int32(src.Spec.RemediationStrategy.RetryPeriod, ok, restored.Spec.Remediation.RetryPeriodSeconds, &dst.Spec.Remediation.RetryPeriodSeconds)
9285
}
9386

9487
// Override restored data with timeouts values already existing in v1beta1 but in other structs.
@@ -142,14 +135,7 @@ func (src *KubeadmControlPlaneTemplate) ConvertTo(dstRaw conversion.Hub) error {
142135
}
143136

144137
if src.Spec.Template.Spec.RemediationStrategy != nil {
145-
if dst.Spec.Template.Spec.RemediationStrategy == nil {
146-
dst.Spec.Template.Spec.RemediationStrategy = &controlplanev1.RemediationStrategy{}
147-
}
148-
var restoredRetryPeriodSeconds *int32
149-
if restored.Spec.Template.Spec.RemediationStrategy != nil {
150-
restoredRetryPeriodSeconds = restored.Spec.Template.Spec.RemediationStrategy.RetryPeriodSeconds
151-
}
152-
clusterv1.Convert_Duration_To_Pointer_int32(src.Spec.Template.Spec.RemediationStrategy.RetryPeriod, ok, restoredRetryPeriodSeconds, &dst.Spec.Template.Spec.RemediationStrategy.RetryPeriodSeconds)
138+
clusterv1.Convert_Duration_To_Pointer_int32(src.Spec.Template.Spec.RemediationStrategy.RetryPeriod, ok, restored.Spec.Template.Spec.Remediation.RetryPeriodSeconds, &dst.Spec.Template.Spec.Remediation.RetryPeriodSeconds)
153139
}
154140

155141
// Override restored data with timeouts values already existing in v1beta1 but in other structs.
@@ -172,6 +158,123 @@ func (dst *KubeadmControlPlaneTemplate) ConvertFrom(srcRaw conversion.Hub) error
172158
return utilconversion.MarshalData(src, dst)
173159
}
174160

161+
func Convert_v1beta2_KubeadmControlPlaneSpec_To_v1beta1_KubeadmControlPlaneSpec(in *controlplanev1.KubeadmControlPlaneSpec, out *KubeadmControlPlaneSpec, s apimachineryconversion.Scope) error {
162+
if err := autoConvert_v1beta2_KubeadmControlPlaneSpec_To_v1beta1_KubeadmControlPlaneSpec(in, out, s); err != nil {
163+
return err
164+
}
165+
166+
if !reflect.DeepEqual(in.Remediation, controlplanev1.KubeadmControlPlaneRemediationSpec{}) {
167+
out.RemediationStrategy = &RemediationStrategy{}
168+
if err := Convert_v1beta2_KubeadmControlPlaneRemediationSpec_To_v1beta1_RemediationStrategy(&in.Remediation, out.RemediationStrategy, s); err != nil {
169+
return err
170+
}
171+
}
172+
if !reflect.DeepEqual(in.Rollout.Before, controlplanev1.KubeadmControlPlaneRolloutBeforeSpec{}) {
173+
out.RolloutBefore = &RolloutBefore{}
174+
out.RolloutBefore.CertificatesExpiryDays = ptr.To(in.Rollout.Before.CertificatesExpiryDays)
175+
}
176+
out.RolloutAfter = in.Rollout.After
177+
if !reflect.DeepEqual(in.Rollout.Strategy, controlplanev1.KubeadmControlPlaneRolloutStrategy{}) {
178+
out.RolloutStrategy = &RolloutStrategy{}
179+
out.RolloutStrategy.Type = RolloutStrategyType(in.Rollout.Strategy.Type)
180+
if in.Rollout.Strategy.RollingUpdate.MaxSurge != nil {
181+
out.RolloutStrategy.RollingUpdate = &RollingUpdate{}
182+
out.RolloutStrategy.RollingUpdate.MaxSurge = in.Rollout.Strategy.RollingUpdate.MaxSurge
183+
}
184+
}
185+
186+
return nil
187+
}
188+
189+
func Convert_v1beta1_KubeadmControlPlaneSpec_To_v1beta2_KubeadmControlPlaneSpec(in *KubeadmControlPlaneSpec, out *controlplanev1.KubeadmControlPlaneSpec, s apimachineryconversion.Scope) error {
190+
if err := autoConvert_v1beta1_KubeadmControlPlaneSpec_To_v1beta2_KubeadmControlPlaneSpec(in, out, s); err != nil {
191+
return err
192+
}
193+
194+
if in.RemediationStrategy != nil {
195+
if err := Convert_v1beta1_RemediationStrategy_To_v1beta2_KubeadmControlPlaneRemediationSpec(in.RemediationStrategy, &out.Remediation, s); err != nil {
196+
return err
197+
}
198+
}
199+
if in.RolloutBefore != nil && in.RolloutBefore.CertificatesExpiryDays != nil {
200+
out.Rollout.Before.CertificatesExpiryDays = *in.RolloutBefore.CertificatesExpiryDays
201+
}
202+
out.Rollout.After = in.RolloutAfter
203+
if in.RolloutStrategy != nil {
204+
out.Rollout.Strategy.Type = controlplanev1.KubeadmControlPlaneRolloutStrategyType(in.RolloutStrategy.Type)
205+
if in.RolloutStrategy.RollingUpdate != nil && in.RolloutStrategy.RollingUpdate.MaxSurge != nil {
206+
out.Rollout.Strategy.RollingUpdate.MaxSurge = in.RolloutStrategy.RollingUpdate.MaxSurge
207+
}
208+
}
209+
210+
return nil
211+
}
212+
213+
func Convert_v1beta2_KubeadmControlPlaneTemplateResourceSpec_To_v1beta1_KubeadmControlPlaneTemplateResourceSpec(in *controlplanev1.KubeadmControlPlaneTemplateResourceSpec, out *KubeadmControlPlaneTemplateResourceSpec, s apimachineryconversion.Scope) error {
214+
if err := autoConvert_v1beta2_KubeadmControlPlaneTemplateResourceSpec_To_v1beta1_KubeadmControlPlaneTemplateResourceSpec(in, out, s); err != nil {
215+
return err
216+
}
217+
218+
if !reflect.DeepEqual(in.MachineTemplate, KubeadmControlPlaneTemplateMachineTemplate{}) {
219+
out.MachineTemplate = &KubeadmControlPlaneTemplateMachineTemplate{}
220+
if err := Convert_v1beta2_KubeadmControlPlaneTemplateMachineTemplate_To_v1beta1_KubeadmControlPlaneTemplateMachineTemplate(&in.MachineTemplate, out.MachineTemplate, s); err != nil {
221+
return err
222+
}
223+
}
224+
225+
if !reflect.DeepEqual(in.Remediation, controlplanev1.KubeadmControlPlaneRemediationSpec{}) {
226+
out.RemediationStrategy = &RemediationStrategy{}
227+
if err := Convert_v1beta2_KubeadmControlPlaneRemediationSpec_To_v1beta1_RemediationStrategy(&in.Remediation, out.RemediationStrategy, s); err != nil {
228+
return err
229+
}
230+
}
231+
if !reflect.DeepEqual(in.Rollout.Before, controlplanev1.KubeadmControlPlaneRolloutBeforeSpec{}) {
232+
out.RolloutBefore = &RolloutBefore{}
233+
out.RolloutBefore.CertificatesExpiryDays = ptr.To(in.Rollout.Before.CertificatesExpiryDays)
234+
}
235+
out.RolloutAfter = in.Rollout.After
236+
if !reflect.DeepEqual(in.Rollout.Strategy, controlplanev1.KubeadmControlPlaneRolloutStrategy{}) {
237+
out.RolloutStrategy = &RolloutStrategy{}
238+
out.RolloutStrategy.Type = RolloutStrategyType(in.Rollout.Strategy.Type)
239+
if in.Rollout.Strategy.RollingUpdate.MaxSurge != nil {
240+
out.RolloutStrategy.RollingUpdate = &RollingUpdate{}
241+
out.RolloutStrategy.RollingUpdate.MaxSurge = in.Rollout.Strategy.RollingUpdate.MaxSurge
242+
}
243+
}
244+
245+
return nil
246+
}
247+
248+
func Convert_v1beta1_KubeadmControlPlaneTemplateResourceSpec_To_v1beta2_KubeadmControlPlaneTemplateResourceSpec(in *KubeadmControlPlaneTemplateResourceSpec, out *controlplanev1.KubeadmControlPlaneTemplateResourceSpec, s apimachineryconversion.Scope) error {
249+
if err := autoConvert_v1beta1_KubeadmControlPlaneTemplateResourceSpec_To_v1beta2_KubeadmControlPlaneTemplateResourceSpec(in, out, s); err != nil {
250+
return err
251+
}
252+
253+
if in.MachineTemplate != nil {
254+
if err := Convert_v1beta1_KubeadmControlPlaneTemplateMachineTemplate_To_v1beta2_KubeadmControlPlaneTemplateMachineTemplate(in.MachineTemplate, &out.MachineTemplate, s); err != nil {
255+
return err
256+
}
257+
}
258+
259+
if in.RemediationStrategy != nil {
260+
if err := Convert_v1beta1_RemediationStrategy_To_v1beta2_KubeadmControlPlaneRemediationSpec(in.RemediationStrategy, &out.Remediation, s); err != nil {
261+
return err
262+
}
263+
}
264+
if in.RolloutBefore != nil && in.RolloutBefore.CertificatesExpiryDays != nil {
265+
out.Rollout.Before.CertificatesExpiryDays = *in.RolloutBefore.CertificatesExpiryDays
266+
}
267+
out.Rollout.After = in.RolloutAfter
268+
if in.RolloutStrategy != nil {
269+
out.Rollout.Strategy.Type = controlplanev1.KubeadmControlPlaneRolloutStrategyType(in.RolloutStrategy.Type)
270+
if in.RolloutStrategy.RollingUpdate != nil && in.RolloutStrategy.RollingUpdate.MaxSurge != nil {
271+
out.Rollout.Strategy.RollingUpdate.MaxSurge = in.RolloutStrategy.RollingUpdate.MaxSurge
272+
}
273+
}
274+
275+
return nil
276+
}
277+
175278
func Convert_v1beta2_KubeadmControlPlaneStatus_To_v1beta1_KubeadmControlPlaneStatus(in *controlplanev1.KubeadmControlPlaneStatus, out *KubeadmControlPlaneStatus, s apimachineryconversion.Scope) error {
176279
if err := autoConvert_v1beta2_KubeadmControlPlaneStatus_To_v1beta1_KubeadmControlPlaneStatus(in, out, s); err != nil {
177280
return err
@@ -311,19 +414,15 @@ func Convert_v1beta2_KubeadmControlPlaneTemplateMachineTemplate_To_v1beta1_Kubea
311414
return nil
312415
}
313416

314-
func Convert_v1beta1_RemediationStrategy_To_v1beta2_RemediationStrategy(in *RemediationStrategy, out *controlplanev1.RemediationStrategy, s apimachineryconversion.Scope) error {
315-
if err := autoConvert_v1beta1_RemediationStrategy_To_v1beta2_RemediationStrategy(in, out, s); err != nil {
316-
return err
317-
}
417+
func Convert_v1beta1_RemediationStrategy_To_v1beta2_KubeadmControlPlaneRemediationSpec(in *RemediationStrategy, out *controlplanev1.KubeadmControlPlaneRemediationSpec, _ apimachineryconversion.Scope) error {
418+
out.MaxRetry = in.MaxRetry
318419
out.MinHealthyPeriodSeconds = clusterv1.ConvertToSeconds(in.MinHealthyPeriod)
319420
out.RetryPeriodSeconds = clusterv1.ConvertToSeconds(&in.RetryPeriod)
320421
return nil
321422
}
322423

323-
func Convert_v1beta2_RemediationStrategy_To_v1beta1_RemediationStrategy(in *controlplanev1.RemediationStrategy, out *RemediationStrategy, s apimachineryconversion.Scope) error {
324-
if err := autoConvert_v1beta2_RemediationStrategy_To_v1beta1_RemediationStrategy(in, out, s); err != nil {
325-
return err
326-
}
424+
func Convert_v1beta2_KubeadmControlPlaneRemediationSpec_To_v1beta1_RemediationStrategy(in *controlplanev1.KubeadmControlPlaneRemediationSpec, out *RemediationStrategy, _ apimachineryconversion.Scope) error {
425+
out.MaxRetry = in.MaxRetry
327426
out.MinHealthyPeriod = clusterv1.ConvertFromSeconds(in.MinHealthyPeriodSeconds)
328427
out.RetryPeriod = ptr.Deref(clusterv1.ConvertFromSeconds(in.RetryPeriodSeconds), metav1.Duration{})
329428
return nil

api/controlplane/kubeadm/v1beta1/conversion_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ func KubeadmControlPlaneTemplateFuzzFuncs(_ runtimeserializer.CodecFactory) []in
9999
spokeDiscovery,
100100
hubKubeadmConfigSpec,
101101
hubNodeRegistrationOptions,
102+
spokeKubeadmControlPlaneTemplate,
102103
spokeRemediationStrategy,
103104
spokeKubeadmControlPlaneTemplateMachineTemplate,
104105
spokeBootstrapToken,
@@ -162,6 +163,13 @@ func spokeKubeadmControlPlane(in *KubeadmControlPlane, c randfill.Continue) {
162163
in.Spec.MachineTemplate.InfrastructureRef.UID = ""
163164
in.Spec.MachineTemplate.InfrastructureRef.ResourceVersion = ""
164165
in.Spec.MachineTemplate.InfrastructureRef.FieldPath = ""
166+
167+
if reflect.DeepEqual(in.Spec.RolloutBefore, &RolloutBefore{}) {
168+
in.Spec.RolloutBefore = nil
169+
}
170+
if reflect.DeepEqual(in.Spec.RolloutStrategy, &RolloutStrategy{}) {
171+
in.Spec.RolloutStrategy = nil
172+
}
165173
}
166174

167175
func hubKubeadmControlPlaneStatus(in *controlplanev1.KubeadmControlPlaneStatus, c randfill.Continue) {
@@ -232,6 +240,17 @@ func spokeClusterConfiguration(in *bootstrapv1beta1.ClusterConfiguration, c rand
232240
in.ClusterName = ""
233241
}
234242

243+
func spokeKubeadmControlPlaneTemplate(in *KubeadmControlPlaneTemplate, c randfill.Continue) {
244+
c.FillNoCustom(in)
245+
246+
if reflect.DeepEqual(in.Spec.Template.Spec.RolloutBefore, &RolloutBefore{}) {
247+
in.Spec.Template.Spec.RolloutBefore = nil
248+
}
249+
if reflect.DeepEqual(in.Spec.Template.Spec.RolloutStrategy, &RolloutStrategy{}) {
250+
in.Spec.Template.Spec.RolloutStrategy = nil
251+
}
252+
}
253+
235254
func spokeRemediationStrategy(in *RemediationStrategy, c randfill.Continue) {
236255
c.FillNoCustom(in)
237256

0 commit comments

Comments
 (0)