Skip to content

Commit 01ff70b

Browse files
⚠️ Drop unnecessary fields from ClusterClass template references (#12358)
* Refactor clusterclass LocalObjectTemplate * Fix E2E * Address comments * Generate manifests * More comments * More comments
1 parent 70ef756 commit 01ff70b

File tree

32 files changed

+1004
-1149
lines changed

32 files changed

+1004
-1149
lines changed

api/core/v1beta1/conversion.go

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package v1beta1
1919
import (
2020
"unsafe"
2121

22+
corev1 "k8s.io/api/core/v1"
2223
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2324
apimachineryconversion "k8s.io/apimachinery/pkg/conversion"
2425
"k8s.io/utils/ptr"
@@ -177,6 +178,39 @@ func (dst *MachineDrainRule) ConvertFrom(srcRaw conversion.Hub) error {
177178
return Convert_v1beta2_MachineDrainRule_To_v1beta1_MachineDrainRule(src, dst, nil)
178179
}
179180

181+
func Convert_v1beta2_ClusterClass_To_v1beta1_ClusterClass(in *clusterv1.ClusterClass, out *ClusterClass, s apimachineryconversion.Scope) error {
182+
if err := autoConvert_v1beta2_ClusterClass_To_v1beta1_ClusterClass(in, out, s); err != nil {
183+
return err
184+
}
185+
186+
if out.Spec.Infrastructure.Ref != nil {
187+
out.Spec.Infrastructure.Ref.Namespace = in.Namespace
188+
}
189+
if out.Spec.ControlPlane.Ref != nil {
190+
out.Spec.ControlPlane.Ref.Namespace = in.Namespace
191+
}
192+
if out.Spec.ControlPlane.MachineInfrastructure != nil && out.Spec.ControlPlane.MachineInfrastructure.Ref != nil {
193+
out.Spec.ControlPlane.MachineInfrastructure.Ref.Namespace = in.Namespace
194+
}
195+
for _, md := range out.Spec.Workers.MachineDeployments {
196+
if md.Template.Bootstrap.Ref != nil {
197+
md.Template.Bootstrap.Ref.Namespace = in.Namespace
198+
}
199+
if md.Template.Infrastructure.Ref != nil {
200+
md.Template.Infrastructure.Ref.Namespace = in.Namespace
201+
}
202+
}
203+
for _, mp := range out.Spec.Workers.MachinePools {
204+
if mp.Template.Bootstrap.Ref != nil {
205+
mp.Template.Bootstrap.Ref.Namespace = in.Namespace
206+
}
207+
if mp.Template.Infrastructure.Ref != nil {
208+
mp.Template.Infrastructure.Ref.Namespace = in.Namespace
209+
}
210+
}
211+
return nil
212+
}
213+
180214
func Convert_v1beta2_ClusterClassSpec_To_v1beta1_ClusterClassSpec(in *clusterv1.ClusterClassSpec, out *ClusterClassSpec, s apimachineryconversion.Scope) error {
181215
if err := autoConvert_v1beta2_ClusterClassSpec_To_v1beta1_ClusterClassSpec(in, out, s); err != nil {
182216
return err
@@ -195,7 +229,7 @@ func Convert_v1beta2_InfrastructureClass_To_v1beta1_LocalObjectTemplate(in *clus
195229
return nil
196230
}
197231

198-
return autoConvert_v1beta2_LocalObjectTemplate_To_v1beta1_LocalObjectTemplate(&in.LocalObjectTemplate, out, s)
232+
return Convert_v1beta2_ClusterClassTemplate_To_v1beta1_LocalObjectTemplate(&in.ClusterClassTemplate, out, s)
199233
}
200234

201235
func Convert_v1beta1_ClusterClassSpec_To_v1beta2_ClusterClassSpec(in *ClusterClassSpec, out *clusterv1.ClusterClassSpec, s apimachineryconversion.Scope) error {
@@ -250,7 +284,7 @@ func Convert_v1beta1_LocalObjectTemplate_To_v1beta2_InfrastructureClass(in *Loca
250284
return nil
251285
}
252286

253-
return autoConvert_v1beta1_LocalObjectTemplate_To_v1beta2_LocalObjectTemplate(in, &out.LocalObjectTemplate, s)
287+
return Convert_v1beta1_LocalObjectTemplate_To_v1beta2_ClusterClassTemplate(in, &out.ClusterClassTemplate, s)
254288
}
255289

256290
func Convert_v1beta1_ControlPlaneClass_To_v1beta2_ControlPlaneClass(in *ControlPlaneClass, out *clusterv1.ControlPlaneClass, s apimachineryconversion.Scope) error {
@@ -260,7 +294,7 @@ func Convert_v1beta1_ControlPlaneClass_To_v1beta2_ControlPlaneClass(in *ControlP
260294
out.NodeDrainTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeDrainTimeout)
261295
out.NodeVolumeDetachTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeVolumeDetachTimeout)
262296
out.NodeDeletionTimeoutSeconds = clusterv1.ConvertToSeconds(in.NodeDeletionTimeout)
263-
return nil
297+
return Convert_v1beta1_LocalObjectTemplate_To_v1beta2_ClusterClassTemplate(&in.LocalObjectTemplate, &out.ClusterClassTemplate, s)
264298
}
265299

266300
func Convert_v1beta2_ControlPlaneClass_To_v1beta1_ControlPlaneClass(in *clusterv1.ControlPlaneClass, out *ControlPlaneClass, s apimachineryconversion.Scope) error {
@@ -270,7 +304,7 @@ func Convert_v1beta2_ControlPlaneClass_To_v1beta1_ControlPlaneClass(in *clusterv
270304
out.NodeDrainTimeout = clusterv1.ConvertFromSeconds(in.NodeDrainTimeoutSeconds)
271305
out.NodeVolumeDetachTimeout = clusterv1.ConvertFromSeconds(in.NodeVolumeDetachTimeoutSeconds)
272306
out.NodeDeletionTimeout = clusterv1.ConvertFromSeconds(in.NodeDeletionTimeoutSeconds)
273-
return nil
307+
return Convert_v1beta2_ClusterClassTemplate_To_v1beta1_LocalObjectTemplate(&in.ClusterClassTemplate, &out.LocalObjectTemplate, s)
274308
}
275309

276310
func Convert_v1beta1_ControlPlaneTopology_To_v1beta2_ControlPlaneTopology(in *ControlPlaneTopology, out *clusterv1.ControlPlaneTopology, s apimachineryconversion.Scope) error {
@@ -1105,3 +1139,29 @@ func Convert_v1beta2_ExternalPatchDefinition_To_v1beta1_ExternalPatchDefinition(
11051139
out.ValidateExtension = in.ValidateTopologyExtension
11061140
return nil
11071141
}
1142+
1143+
func Convert_v1beta1_LocalObjectTemplate_To_v1beta2_ClusterClassTemplate(in *LocalObjectTemplate, out *clusterv1.ClusterClassTemplate, _ apimachineryconversion.Scope) error {
1144+
if in.Ref == nil {
1145+
return nil
1146+
}
1147+
1148+
out.Ref = &clusterv1.ClusterClassTemplateReference{
1149+
Kind: in.Ref.Kind,
1150+
Name: in.Ref.Name,
1151+
APIVersion: in.Ref.APIVersion,
1152+
}
1153+
return nil
1154+
}
1155+
1156+
func Convert_v1beta2_ClusterClassTemplate_To_v1beta1_LocalObjectTemplate(in *clusterv1.ClusterClassTemplate, out *LocalObjectTemplate, _ apimachineryconversion.Scope) error {
1157+
if in.Ref == nil {
1158+
return nil
1159+
}
1160+
1161+
out.Ref = &corev1.ObjectReference{
1162+
Kind: in.Ref.Kind,
1163+
Name: in.Ref.Name,
1164+
APIVersion: in.Ref.APIVersion,
1165+
}
1166+
return nil
1167+
}

api/core/v1beta1/conversion_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"testing"
2525
"time"
2626

27+
corev1 "k8s.io/api/core/v1"
2728
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2829
"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
2930
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -134,13 +135,15 @@ func ClusterClassFuncs(_ runtimeserializer.CodecFactory) []interface{} {
134135
return []interface{}{
135136
hubClusterClassStatus,
136137
hubJSONSchemaProps,
138+
spokeClusterClass,
137139
spokeClusterClassStatus,
138140
spokeJSONSchemaProps,
139141
spokeControlPlaneClass,
140142
spokeMachineDeploymentClass,
141143
spokeMachinePoolClass,
142144
spokeMachineHealthCheckClass,
143145
spokeUnhealthyCondition,
146+
spokeLocalObjectTemplate,
144147
}
145148
}
146149

@@ -197,6 +200,12 @@ func hubJSONSchemaProps(in *clusterv1.JSONSchemaProps, c randfill.Continue) {
197200
in.Items = in2
198201
}
199202

203+
func spokeClusterClass(in *ClusterClass, c randfill.Continue) {
204+
c.FillNoCustom(in)
205+
206+
in.Namespace = "foo"
207+
}
208+
200209
func spokeClusterClassStatus(in *ClusterClassStatus, c randfill.Continue) {
201210
c.FillNoCustom(in)
202211
// Drop empty structs with only omit empty fields.
@@ -250,6 +259,21 @@ func spokeJSONSchemaProps(in *JSONSchemaProps, c randfill.Continue) {
250259
in.Items = in2
251260
}
252261

262+
func spokeLocalObjectTemplate(in *LocalObjectTemplate, c randfill.Continue) {
263+
c.FillNoCustom(in)
264+
265+
if in.Ref == nil {
266+
return
267+
}
268+
269+
in.Ref = &corev1.ObjectReference{
270+
APIVersion: in.Ref.APIVersion,
271+
Kind: in.Ref.Kind,
272+
Name: in.Ref.Name,
273+
Namespace: "foo",
274+
}
275+
}
276+
253277
func MachineFuzzFuncs(_ runtimeserializer.CodecFactory) []interface{} {
254278
return []interface{}{
255279
hubMachineStatus,

api/core/v1beta1/zz_generated.conversion.go

Lines changed: 41 additions & 54 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)