Skip to content

Commit aa9fd8d

Browse files
committed
Added unit tests for conversion functions added for setting v3 APIVersion
1 parent d32d7c2 commit aa9fd8d

File tree

2 files changed

+187
-8
lines changed

2 files changed

+187
-8
lines changed

api/v1alpha2/conversion.go

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
apiconversion "k8s.io/apimachinery/pkg/conversion"
2424
"k8s.io/apimachinery/pkg/runtime/schema"
2525
"sigs.k8s.io/cluster-api/api/v1alpha3"
26-
bootstrapv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1alpha3"
26+
bootstrapv1a3 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1alpha3"
2727
"sigs.k8s.io/controller-runtime/pkg/conversion"
2828
)
2929

@@ -166,14 +166,15 @@ func Convert_v1alpha2_MachineSpec_To_v1alpha3_MachineSpec(in *MachineSpec, out *
166166
if err != nil {
167167
return err
168168
}
169-
if inGV.Group == bootstrapv1.GroupVersion.Group && (out.Bootstrap.ConfigRef.Kind == kubeadmConfigKind || out.Bootstrap.ConfigRef.Kind == kubeadmConfigTemplateKind) {
170-
out.Bootstrap.ConfigRef.APIVersion = bootstrapv1.GroupVersion.String()
171-
}
172169

173170
if err := autoConvert_v1alpha2_MachineSpec_To_v1alpha3_MachineSpec(in, out, s); err != nil {
174171
return err
175172
}
176173

174+
if inGV.Group == bootstrapv1a3.GroupVersion.Group && (out.Bootstrap.ConfigRef.Kind == kubeadmConfigKind || out.Bootstrap.ConfigRef.Kind == kubeadmConfigTemplateKind) {
175+
out.Bootstrap.ConfigRef.APIVersion = bootstrapv1a3.GroupVersion.String()
176+
}
177+
177178
// Discards unused ObjectMeta
178179

179180
return nil
@@ -184,23 +185,33 @@ func Convert_v1alpha2_MachineSetSpec_To_v1alpha3_MachineSetSpec(in *MachineSetSp
184185
if err != nil {
185186
return err
186187
}
187-
if inGV.Group == bootstrapv1.GroupVersion.Group && (out.Template.Spec.Bootstrap.ConfigRef.Kind == kubeadmConfigKind || out.Template.Spec.Bootstrap.ConfigRef.Kind == kubeadmConfigTemplateKind) {
188+
189+
if err = autoConvert_v1alpha2_MachineSetSpec_To_v1alpha3_MachineSetSpec(in, out, s); err != nil {
190+
return err
191+
}
192+
193+
if inGV.Group == bootstrapv1a3.GroupVersion.Group && (out.Template.Spec.Bootstrap.ConfigRef.Kind == kubeadmConfigKind || out.Template.Spec.Bootstrap.ConfigRef.Kind == kubeadmConfigTemplateKind) {
188194
out.Template.Spec.Bootstrap.ConfigRef.APIVersion = in.Template.Spec.Bootstrap.ConfigRef.GroupVersionKind().Group + "/" + "v1alpha3"
189195
}
190196

191-
return autoConvert_v1alpha2_MachineSetSpec_To_v1alpha3_MachineSetSpec(in, out, s)
197+
return nil
192198
}
193199

194200
func Convert_v1alpha2_MachineDeploymentSpec_To_v1alpha3_MachineDeploymentSpec(in *MachineDeploymentSpec, out *v1alpha3.MachineDeploymentSpec, s apiconversion.Scope) error {
195201
inGV, err := schema.ParseGroupVersion(in.Template.Spec.Bootstrap.ConfigRef.APIVersion)
196202
if err != nil {
197203
return err
198204
}
199-
if inGV.Group == bootstrapv1.GroupVersion.Group && (out.Template.Spec.Bootstrap.ConfigRef.Kind == kubeadmConfigKind || out.Template.Spec.Bootstrap.ConfigRef.Kind == kubeadmConfigTemplateKind) {
205+
206+
if err = autoConvert_v1alpha2_MachineDeploymentSpec_To_v1alpha3_MachineDeploymentSpec(in, out, s); err != nil {
207+
return err
208+
}
209+
210+
if inGV.Group == bootstrapv1a3.GroupVersion.Group && (out.Template.Spec.Bootstrap.ConfigRef.Kind == kubeadmConfigKind || out.Template.Spec.Bootstrap.ConfigRef.Kind == kubeadmConfigTemplateKind) {
200211
out.Template.Spec.Bootstrap.ConfigRef.APIVersion = in.Template.Spec.Bootstrap.ConfigRef.GroupVersionKind().Group + "/" + "v1alpha3"
201212
}
202213

203-
return autoConvert_v1alpha2_MachineDeploymentSpec_To_v1alpha3_MachineDeploymentSpec(in, out, s)
214+
return nil
204215
}
205216

206217
func Convert_v1alpha2_ClusterSpec_To_v1alpha3_ClusterSpec(in *ClusterSpec, out *v1alpha3.ClusterSpec, s apiconversion.Scope) error {

api/v1alpha2/conversion_test.go

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
package v1alpha2
2+
3+
import (
4+
apicorev1 "k8s.io/api/core/v1"
5+
"sigs.k8s.io/cluster-api/api/v1alpha3"
6+
bootstrapv1a2 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1alpha2"
7+
bootstrapv1a3 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1alpha3"
8+
"testing"
9+
)
10+
11+
var (
12+
kubeAdmObj = &apicorev1.ObjectReference{
13+
Kind: kubeadmConfigKind,
14+
APIVersion: bootstrapv1a2.GroupVersion.String(),
15+
}
16+
kubeAdmConfigTemplateObj = &apicorev1.ObjectReference{
17+
Kind: kubeadmConfigTemplateKind,
18+
APIVersion: bootstrapv1a2.GroupVersion.String(),
19+
}
20+
verV1alpha3 = bootstrapv1a3.GroupVersion.String()
21+
)
22+
23+
func TestConvert_v1alpha2_MachineSpec_To_v1alpha3_MachineSpec(t *testing.T) {
24+
25+
t.Run("Convert 'v1alpha2' APIVersion to 'v1alpha3' for 'KubeadmConfig' object reference in MachineSpec", func(t *testing.T) {
26+
b := new(Bootstrap)
27+
b.ConfigRef = kubeAdmObj
28+
in := new(MachineSpec)
29+
in.Bootstrap = *b
30+
out := new(v1alpha3.MachineSpec)
31+
32+
err := Convert_v1alpha2_MachineSpec_To_v1alpha3_MachineSpec(in, out, nil)
33+
if err != nil {
34+
t.Fatalf("Expected no errors, got %v", err)
35+
}
36+
if out.Bootstrap.ConfigRef.APIVersion != verV1alpha3 {
37+
t.Fatalf("Unexpected APIVersion value in MachineSpec: "+
38+
"expected: %q\n"+
39+
"actual : %q", verV1alpha3, out.Bootstrap.ConfigRef.APIVersion)
40+
}
41+
if out.Bootstrap.ConfigRef.Kind != kubeadmConfigKind {
42+
t.Fatalf("Unexpected Kind value in MachineSpec: "+
43+
"expected: %q\n"+
44+
"actual : %q", kubeadmConfigKind, out.Bootstrap.ConfigRef.Kind)
45+
}
46+
})
47+
48+
t.Run("Convert 'v1alpha2' APIVersion to 'v1alpha3' for 'kubeAdmConflictTemplate' object reference in MachineSpec", func(t *testing.T) {
49+
b := new(Bootstrap)
50+
b.ConfigRef = kubeAdmConfigTemplateObj
51+
in := new(MachineSpec)
52+
in.Bootstrap = *b
53+
out := new(v1alpha3.MachineSpec)
54+
55+
err := Convert_v1alpha2_MachineSpec_To_v1alpha3_MachineSpec(in, out, nil)
56+
if err != nil {
57+
t.Fatalf("Expected no errors, got %v", err)
58+
}
59+
if out.Bootstrap.ConfigRef.APIVersion != verV1alpha3 {
60+
t.Fatalf("\nUnexpected APIVersion value in MachineSpec: "+
61+
"\nexpected: %q"+
62+
"\nactual : %q", verV1alpha3, out.Bootstrap.ConfigRef.APIVersion)
63+
}
64+
if out.Bootstrap.ConfigRef.Kind != kubeadmConfigTemplateKind {
65+
t.Fatalf("\nUnexpected Kind value in MachineSpec: "+
66+
"\nexpected: %q"+
67+
"\nactual : %q", kubeadmConfigTemplateKind, out.Bootstrap.ConfigRef.Kind)
68+
}
69+
})
70+
}
71+
72+
func TestConvert_v1alpha2_MachineSetSpec_To_v1alpha3_MachineSetSpec(t *testing.T) {
73+
74+
t.Run("Convert 'v1alpha2' APIVersion to 'v1alpha3' for 'KubeadmConfig' object reference in MachineSetSpec", func(t *testing.T) {
75+
b := new(Bootstrap)
76+
b.ConfigRef = kubeAdmObj
77+
in := new(MachineSetSpec)
78+
in.Template.Spec.Bootstrap = *b
79+
out := new(v1alpha3.MachineSetSpec)
80+
81+
err := Convert_v1alpha2_MachineSetSpec_To_v1alpha3_MachineSetSpec(in, out, nil)
82+
if err != nil {
83+
t.Fatalf("Expected no errors, got %v", err)
84+
}
85+
if out.Template.Spec.Bootstrap.ConfigRef.APIVersion != verV1alpha3 {
86+
t.Fatalf("\nUnexpected APIVersion value in MachineSetSpec: "+
87+
"\nexpected: %q"+
88+
"\nactual : %q", verV1alpha3, out.Template.Spec.Bootstrap.ConfigRef.APIVersion)
89+
}
90+
if out.Template.Spec.Bootstrap.ConfigRef.Kind != kubeadmConfigKind {
91+
t.Fatalf("\nUnexpected Kind value in MachineSetSpec: "+
92+
"\nexpected: %q"+
93+
"\nactual : %q", kubeadmConfigKind, out.Template.Spec.Bootstrap.ConfigRef.Kind)
94+
}
95+
})
96+
97+
t.Run("Convert 'v1alpha2' APIVersion to 'v1alpha3' for 'kubeAdmConflictTemplate' object reference in MachineSetSpec", func(t *testing.T) {
98+
b := new(Bootstrap)
99+
b.ConfigRef = kubeAdmConfigTemplateObj
100+
in := new(MachineSetSpec)
101+
in.Template.Spec.Bootstrap = *b
102+
out := new(v1alpha3.MachineSetSpec)
103+
104+
err := Convert_v1alpha2_MachineSetSpec_To_v1alpha3_MachineSetSpec(in, out, nil)
105+
if err != nil {
106+
t.Fatalf("Expected no errors, got %v", err)
107+
}
108+
if out.Template.Spec.Bootstrap.ConfigRef.APIVersion != verV1alpha3 {
109+
t.Fatalf("\nUnexpected APIVersion value in MachineSetSpec: "+
110+
"\nexpected: %q"+
111+
"\nactual : %q", verV1alpha3, out.Template.Spec.Bootstrap.ConfigRef.APIVersion)
112+
}
113+
if out.Template.Spec.Bootstrap.ConfigRef.Kind != kubeadmConfigTemplateKind {
114+
t.Fatalf("\nUnexpected Kind value in MachineSetSpec: "+
115+
"\nexpected: %q"+
116+
"\nactual : %q", kubeadmConfigTemplateKind, out.Template.Spec.Bootstrap.ConfigRef.Kind)
117+
}
118+
})
119+
}
120+
121+
func TestConvert_v1alpha2_MachineDeploymentSpec_To_v1alpha3_MachineDeploymentSpec(t *testing.T) {
122+
123+
t.Run("Convert 'v1alpha2' APIVersion to 'v1alpha3' for 'KubeadmConfig' object reference in MachineDeploymentSpec", func(t *testing.T) {
124+
b := new(Bootstrap)
125+
b.ConfigRef = kubeAdmObj
126+
in := new(MachineDeploymentSpec)
127+
in.Template.Spec.Bootstrap = *b
128+
out := new(v1alpha3.MachineDeploymentSpec)
129+
130+
err := Convert_v1alpha2_MachineDeploymentSpec_To_v1alpha3_MachineDeploymentSpec(in, out, nil)
131+
if err != nil {
132+
t.Fatalf("Expected no errors, got %v", err)
133+
}
134+
if out.Template.Spec.Bootstrap.ConfigRef.APIVersion != verV1alpha3 {
135+
t.Fatalf("\nUnexpected APIVersion value in MachineSetSpec: "+
136+
"\nexpected: %q"+
137+
"\nactual : %q", verV1alpha3, out.Template.Spec.Bootstrap.ConfigRef.APIVersion)
138+
}
139+
if out.Template.Spec.Bootstrap.ConfigRef.Kind != kubeadmConfigKind {
140+
t.Fatalf("\nUnexpected Kind value in MachineSpec: "+
141+
"\nexpected: %q"+
142+
"\nactual : %q", kubeadmConfigKind, out.Template.Spec.Bootstrap.ConfigRef.Kind)
143+
}
144+
})
145+
146+
t.Run("Convert 'v1alpha2' APIVersion to 'v1alpha3' for 'kubeAdmConflictTemplate' object reference in MachineDeploymentSpec", func(t *testing.T) {
147+
b := new(Bootstrap)
148+
b.ConfigRef = kubeAdmConfigTemplateObj
149+
in := new(MachineDeploymentSpec)
150+
in.Template.Spec.Bootstrap = *b
151+
out := new(v1alpha3.MachineDeploymentSpec)
152+
153+
err := Convert_v1alpha2_MachineDeploymentSpec_To_v1alpha3_MachineDeploymentSpec(in, out, nil)
154+
if err != nil {
155+
t.Fatalf("Expected no errors, got %v", err)
156+
}
157+
if out.Template.Spec.Bootstrap.ConfigRef.APIVersion != verV1alpha3 {
158+
t.Fatalf("\nUnexpected APIVersion value in MachineDeploymentSpec:"+
159+
"\nexpected: %q"+
160+
"\nactual : %q", verV1alpha3, out.Template.Spec.Bootstrap.ConfigRef.APIVersion)
161+
}
162+
if out.Template.Spec.Bootstrap.ConfigRef.Kind != kubeadmConfigTemplateKind {
163+
t.Fatalf("\nUnexpected Kind value in MachineDeploymentSpec:"+
164+
"\nexpected: %q"+
165+
"\nactual : %q", kubeadmConfigTemplateKind, out.Template.Spec.Bootstrap.ConfigRef.Kind)
166+
}
167+
})
168+
}

0 commit comments

Comments
 (0)