Skip to content

Commit 87cb356

Browse files
committed
New API for External Network
1 parent 5f306c3 commit 87cb356

22 files changed

+548
-119
lines changed

api/v1alpha5/conversion.go

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,31 @@ func (r *OpenStackMachineTemplateList) ConvertFrom(srcRaw ctrlconversion.Hub) er
187187
}
188188

189189
func Convert_v1alpha8_OpenStackClusterSpec_To_v1alpha5_OpenStackClusterSpec(in *infrav1.OpenStackClusterSpec, out *OpenStackClusterSpec, s conversion.Scope) error {
190-
// Our new flag has no equivalent in v1alpha5
191-
return autoConvert_v1alpha8_OpenStackClusterSpec_To_v1alpha5_OpenStackClusterSpec(in, out, s)
190+
err := autoConvert_v1alpha8_OpenStackClusterSpec_To_v1alpha5_OpenStackClusterSpec(in, out, s)
191+
if err != nil {
192+
return err
193+
}
194+
195+
if in.ExternalNetwork.ID != "" {
196+
out.ExternalNetworkID = in.ExternalNetwork.ID
197+
}
198+
199+
return nil
200+
}
201+
202+
func Convert_v1alpha5_OpenStackClusterSpec_To_v1alpha8_OpenStackClusterSpec(in *OpenStackClusterSpec, out *infrav1.OpenStackClusterSpec, s conversion.Scope) error {
203+
err := autoConvert_v1alpha5_OpenStackClusterSpec_To_v1alpha8_OpenStackClusterSpec(in, out, s)
204+
if err != nil {
205+
return err
206+
}
207+
208+
if in.ExternalNetworkID != "" {
209+
out.ExternalNetwork = infrav1.NetworkFilter{
210+
ID: in.ExternalNetworkID,
211+
}
212+
}
213+
214+
return nil
192215
}
193216

194217
func Convert_v1alpha8_LoadBalancer_To_v1alpha5_LoadBalancer(in *infrav1.LoadBalancer, out *LoadBalancer, s conversion.Scope) error {

api/v1alpha5/conversion_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func TestConvertFrom(t *testing.T) {
4949
Spec: OpenStackClusterSpec{},
5050
ObjectMeta: metav1.ObjectMeta{
5151
Annotations: map[string]string{
52-
"cluster.x-k8s.io/conversion-data": "{\"spec\":{\"allowAllInClusterTraffic\":false,\"apiServerLoadBalancer\":{},\"cloudName\":\"\",\"controlPlaneEndpoint\":{\"host\":\"\",\"port\":0},\"disableAPIServerFloatingIP\":false,\"managedSecurityGroups\":false,\"network\":{},\"subnet\":{}},\"status\":{\"ready\":false}}",
52+
"cluster.x-k8s.io/conversion-data": "{\"spec\":{\"allowAllInClusterTraffic\":false,\"apiServerLoadBalancer\":{},\"cloudName\":\"\",\"controlPlaneEndpoint\":{\"host\":\"\",\"port\":0},\"disableAPIServerFloatingIP\":false,\"disableExternalNetwork\":false,\"externalNetwork\":{},\"managedSecurityGroups\":false,\"network\":{},\"subnet\":{}},\"status\":{\"ready\":false}}",
5353
},
5454
},
5555
},
@@ -64,7 +64,7 @@ func TestConvertFrom(t *testing.T) {
6464
Spec: OpenStackClusterTemplateSpec{},
6565
ObjectMeta: metav1.ObjectMeta{
6666
Annotations: map[string]string{
67-
"cluster.x-k8s.io/conversion-data": "{\"spec\":{\"template\":{\"spec\":{\"allowAllInClusterTraffic\":false,\"apiServerLoadBalancer\":{},\"cloudName\":\"\",\"controlPlaneEndpoint\":{\"host\":\"\",\"port\":0},\"disableAPIServerFloatingIP\":false,\"managedSecurityGroups\":false,\"network\":{},\"subnet\":{}}}}}",
67+
"cluster.x-k8s.io/conversion-data": "{\"spec\":{\"template\":{\"spec\":{\"allowAllInClusterTraffic\":false,\"apiServerLoadBalancer\":{},\"cloudName\":\"\",\"controlPlaneEndpoint\":{\"host\":\"\",\"port\":0},\"disableAPIServerFloatingIP\":false,\"disableExternalNetwork\":false,\"externalNetwork\":{},\"managedSecurityGroups\":false,\"network\":{},\"subnet\":{}}}}}",
6868
},
6969
},
7070
},

api/v1alpha5/zz_generated.conversion.go

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

api/v1alpha6/conversion.go

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,16 @@ var v1alpha6OpenStackClusterRestorer = conversion.RestorerFor[*OpenStackCluster]
123123
}
124124

125125
var v1alpha8OpenStackClusterRestorer = conversion.RestorerFor[*infrav1.OpenStackCluster]{
126+
"externalNetwork": conversion.UnconditionalFieldRestorer(
127+
func(c *infrav1.OpenStackCluster) *infrav1.NetworkFilter {
128+
return &c.Spec.ExternalNetwork
129+
},
130+
),
131+
"disableExternalNetwork": conversion.UnconditionalFieldRestorer(
132+
func(c *infrav1.OpenStackCluster) *bool {
133+
return &c.Spec.DisableExternalNetwork
134+
},
135+
),
126136
"router": conversion.UnconditionalFieldRestorer(
127137
func(c *infrav1.OpenStackCluster) **infrav1.RouterFilter {
128138
return &c.Spec.Router
@@ -193,6 +203,16 @@ var v1alpha6OpenStackClusterTemplateRestorer = conversion.RestorerFor[*OpenStack
193203
}
194204

195205
var v1alpha8OpenStackClusterTemplateRestorer = conversion.RestorerFor[*infrav1.OpenStackClusterTemplate]{
206+
"externalNetwork": conversion.UnconditionalFieldRestorer(
207+
func(c *infrav1.OpenStackClusterTemplate) *infrav1.NetworkFilter {
208+
return &c.Spec.Template.Spec.ExternalNetwork
209+
},
210+
),
211+
"disableExternalNetwork": conversion.UnconditionalFieldRestorer(
212+
func(c *infrav1.OpenStackClusterTemplate) *bool {
213+
return &c.Spec.Template.Spec.DisableExternalNetwork
214+
},
215+
),
196216
"router": conversion.UnconditionalFieldRestorer(
197217
func(c *infrav1.OpenStackClusterTemplate) **infrav1.RouterFilter {
198218
return &c.Spec.Template.Spec.Router
@@ -443,7 +463,31 @@ func convertNetworksToPorts(networks []NetworkParam) []infrav1.PortOpts {
443463
}
444464

445465
func Convert_v1alpha8_OpenStackClusterSpec_To_v1alpha6_OpenStackClusterSpec(in *infrav1.OpenStackClusterSpec, out *OpenStackClusterSpec, s apiconversion.Scope) error {
446-
return autoConvert_v1alpha8_OpenStackClusterSpec_To_v1alpha6_OpenStackClusterSpec(in, out, s)
466+
err := autoConvert_v1alpha8_OpenStackClusterSpec_To_v1alpha6_OpenStackClusterSpec(in, out, s)
467+
if err != nil {
468+
return err
469+
}
470+
471+
if in.ExternalNetwork.ID != "" {
472+
out.ExternalNetworkID = in.ExternalNetwork.ID
473+
}
474+
475+
return nil
476+
}
477+
478+
func Convert_v1alpha6_OpenStackClusterSpec_To_v1alpha8_OpenStackClusterSpec(in *OpenStackClusterSpec, out *infrav1.OpenStackClusterSpec, s apiconversion.Scope) error {
479+
err := autoConvert_v1alpha6_OpenStackClusterSpec_To_v1alpha8_OpenStackClusterSpec(in, out, s)
480+
if err != nil {
481+
return err
482+
}
483+
484+
if in.ExternalNetworkID != "" {
485+
out.ExternalNetwork = infrav1.NetworkFilter{
486+
ID: in.ExternalNetworkID,
487+
}
488+
}
489+
490+
return nil
447491
}
448492

449493
func Convert_v1alpha6_PortOpts_To_v1alpha8_PortOpts(in *PortOpts, out *infrav1.PortOpts, s apiconversion.Scope) error {

api/v1alpha6/zz_generated.conversion.go

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

api/v1alpha7/conversion.go

Lines changed: 60 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,18 @@ var v1alpha8OpenStackClusterRestorer = conversion.RestorerFor[*infrav1.OpenStack
4040
return &c.Spec
4141
},
4242
restorev1alpha8ClusterSpec,
43+
44+
// Filter out Bastion, which is restored separately
45+
conversion.HashedFilterField[*infrav1.OpenStackCluster, infrav1.OpenStackClusterSpec](
46+
func(s *infrav1.OpenStackClusterSpec) *infrav1.OpenStackClusterSpec {
47+
if s.Bastion != nil {
48+
f := *s
49+
f.Bastion = nil
50+
return &f
51+
}
52+
return s
53+
},
54+
),
4355
),
4456

4557
// No equivalent in v1alpha7
@@ -69,6 +81,17 @@ func restorev1alpha8ClusterSpec(previous *infrav1.OpenStackClusterSpec, dst *inf
6981
if prevBastion != nil && dstBastion != nil {
7082
restorev1alpha8MachineSpec(&prevBastion.Instance, &dstBastion.Instance)
7183
}
84+
85+
// Restore all fields except ID, which should have been copied over in conversion
86+
dst.ExternalNetwork.Name = previous.ExternalNetwork.Name
87+
dst.ExternalNetwork.Description = previous.ExternalNetwork.Description
88+
dst.ExternalNetwork.ProjectID = previous.ExternalNetwork.ProjectID
89+
dst.ExternalNetwork.Tags = previous.ExternalNetwork.Tags
90+
dst.ExternalNetwork.TagsAny = previous.ExternalNetwork.TagsAny
91+
dst.ExternalNetwork.NotTags = previous.ExternalNetwork.NotTags
92+
dst.ExternalNetwork.NotTagsAny = previous.ExternalNetwork.NotTagsAny
93+
94+
dst.DisableExternalNetwork = previous.DisableExternalNetwork
7295
}
7396

7497
func (r *OpenStackCluster) ConvertTo(dstRaw ctrlconversion.Hub) error {
@@ -107,14 +130,19 @@ func (r *OpenStackClusterList) ConvertFrom(srcRaw ctrlconversion.Hub) error {
107130

108131
var _ ctrlconversion.Convertible = &OpenStackClusterTemplate{}
109132

133+
func restorev1alpha8ClusterTemplateSpec(previous *infrav1.OpenStackClusterTemplateSpec, dst *infrav1.OpenStackClusterTemplateSpec) {
134+
restorev1alpha8Bastion(&previous.Template.Spec.Bastion, &dst.Template.Spec.Bastion)
135+
restorev1alpha8ClusterSpec(&previous.Template.Spec, &dst.Template.Spec)
136+
}
137+
110138
var v1alpha7OpenStackClusterTemplateRestorer = conversion.RestorerFor[*OpenStackClusterTemplate]{}
111139

112140
var v1alpha8OpenStackClusterTemplateRestorer = conversion.RestorerFor[*infrav1.OpenStackClusterTemplate]{
113-
"bastion": conversion.HashedFieldRestorer(
114-
func(c *infrav1.OpenStackClusterTemplate) **infrav1.Bastion {
115-
return &c.Spec.Template.Spec.Bastion
141+
"spec": conversion.HashedFieldRestorer(
142+
func(c *infrav1.OpenStackClusterTemplate) *infrav1.OpenStackClusterTemplateSpec {
143+
return &c.Spec
116144
},
117-
restorev1alpha8Bastion,
145+
restorev1alpha8ClusterTemplateSpec,
118146
),
119147
}
120148

@@ -300,3 +328,31 @@ func Convert_v1alpha8_Bastion_To_v1alpha7_Bastion(in *infrav1.Bastion, out *Bast
300328

301329
return nil
302330
}
331+
332+
func Convert_v1alpha7_OpenStackClusterSpec_To_v1alpha8_OpenStackClusterSpec(in *OpenStackClusterSpec, out *infrav1.OpenStackClusterSpec, s apiconversion.Scope) error {
333+
err := autoConvert_v1alpha7_OpenStackClusterSpec_To_v1alpha8_OpenStackClusterSpec(in, out, s)
334+
if err != nil {
335+
return err
336+
}
337+
338+
if in.ExternalNetworkID != "" {
339+
out.ExternalNetwork = infrav1.NetworkFilter{
340+
ID: in.ExternalNetworkID,
341+
}
342+
}
343+
344+
return nil
345+
}
346+
347+
func Convert_v1alpha8_OpenStackClusterSpec_To_v1alpha7_OpenStackClusterSpec(in *infrav1.OpenStackClusterSpec, out *OpenStackClusterSpec, s apiconversion.Scope) error {
348+
err := autoConvert_v1alpha8_OpenStackClusterSpec_To_v1alpha7_OpenStackClusterSpec(in, out, s)
349+
if err != nil {
350+
return err
351+
}
352+
353+
if in.ExternalNetwork.ID != "" {
354+
out.ExternalNetworkID = in.ExternalNetwork.ID
355+
}
356+
357+
return nil
358+
}

0 commit comments

Comments
 (0)