Skip to content

Commit 0e15a90

Browse files
committed
SubnetFilter to SubnetParam
1 parent 5ae53bf commit 0e15a90

27 files changed

+1259
-742
lines changed

api/v1alpha5/conversion.go

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ func Convert_v1beta1_OpenStackClusterSpec_To_v1alpha5_OpenStackClusterSpec(in *i
217217

218218
if in.Subnets != nil {
219219
if len(in.Subnets) >= 1 {
220-
if err := Convert_v1beta1_SubnetFilter_To_v1alpha5_SubnetFilter(&in.Subnets[0], &out.Subnet, s); err != nil {
220+
if err := Convert_v1beta1_SubnetParam_To_v1alpha5_SubnetFilter(&in.Subnets[0], &out.Subnet, s); err != nil {
221221
return err
222222
}
223223
}
@@ -254,11 +254,11 @@ func Convert_v1alpha5_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec(in *O
254254

255255
emptySubnet := SubnetFilter{}
256256
if in.Subnet != emptySubnet {
257-
subnet := infrav1.SubnetFilter{}
258-
if err := Convert_v1alpha5_SubnetFilter_To_v1beta1_SubnetFilter(&in.Subnet, &subnet, s); err != nil {
257+
subnet := infrav1.SubnetParam{}
258+
if err := Convert_v1alpha5_SubnetFilter_To_v1beta1_SubnetParam(&in.Subnet, &subnet, s); err != nil {
259259
return err
260260
}
261-
out.Subnets = []infrav1.SubnetFilter{subnet}
261+
out.Subnets = []infrav1.SubnetParam{subnet}
262262
}
263263

264264
if len(in.NodeCIDR) > 0 {
@@ -547,25 +547,56 @@ func Convert_v1beta1_SecurityGroupFilter_To_v1alpha5_SecurityGroupParam(in *infr
547547
return nil
548548
}
549549

550-
func Convert_v1alpha5_SubnetParam_To_v1beta1_SubnetFilter(in *SubnetParam, out *infrav1.SubnetFilter, s conversion.Scope) error {
551-
if err := Convert_v1alpha5_SubnetFilter_To_v1beta1_SubnetFilter(&in.Filter, out, s); err != nil {
550+
func Convert_v1alpha5_SubnetParam_To_v1beta1_SubnetParam(in *SubnetParam, out *infrav1.SubnetParam, s conversion.Scope) error {
551+
if in.UUID != "" {
552+
out.ID = &in.UUID
553+
return nil
554+
}
555+
outFilter := &infrav1.SubnetFilter{}
556+
if err := Convert_v1alpha5_SubnetFilter_To_v1beta1_SubnetFilter(&in.Filter, outFilter, s); err != nil {
552557
return err
553558
}
554-
if in.UUID != "" {
555-
out.ID = in.UUID
559+
if !outFilter.IsZero() {
560+
out.Filter = outFilter
556561
}
557562
return nil
558563
}
559564

560-
func Convert_v1beta1_SubnetFilter_To_v1alpha5_SubnetParam(in *infrav1.SubnetFilter, out *SubnetParam, s conversion.Scope) error {
561-
if err := Convert_v1beta1_SubnetFilter_To_v1alpha5_SubnetFilter(in, &out.Filter, s); err != nil {
562-
return err
565+
func Convert_v1beta1_SubnetParam_To_v1alpha5_SubnetParam(in *infrav1.SubnetParam, out *SubnetParam, s conversion.Scope) error {
566+
if in.ID != nil {
567+
out.UUID = *in.ID
568+
return nil
569+
}
570+
571+
if in.Filter != nil {
572+
if err := Convert_v1beta1_SubnetFilter_To_v1alpha5_SubnetFilter(in.Filter, &out.Filter, s); err != nil {
573+
return err
574+
}
563575
}
564-
out.UUID = in.ID
565576

566577
return nil
567578
}
568579

580+
func Convert_v1alpha5_SubnetFilter_To_v1beta1_SubnetParam(in *SubnetFilter, out *infrav1.SubnetParam, s conversion.Scope) error {
581+
if in.ID != "" {
582+
out.ID = &in.ID
583+
return nil
584+
}
585+
out.Filter = &infrav1.SubnetFilter{}
586+
return Convert_v1alpha5_SubnetFilter_To_v1beta1_SubnetFilter(in, out.Filter, s)
587+
}
588+
589+
func Convert_v1beta1_SubnetParam_To_v1alpha5_SubnetFilter(in *infrav1.SubnetParam, out *SubnetFilter, s conversion.Scope) error {
590+
if in.ID != nil {
591+
out.ID = *in.ID
592+
return nil
593+
}
594+
if in.Filter != nil {
595+
return Convert_v1beta1_SubnetFilter_To_v1alpha5_SubnetFilter(in.Filter, out, s)
596+
}
597+
return nil
598+
}
599+
569600
func Convert_Map_string_To_Interface_To_v1beta1_BindingProfile(in map[string]string, out *infrav1.BindingProfile, _ conversion.Scope) error {
570601
for k, v := range in {
571602
if k == "capabilities" {

api/v1alpha5/zz_generated.conversion.go

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

api/v1alpha6/conversion_test.go

Lines changed: 53 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ func TestFuzzyConversion(t *testing.T) {
117117
// length 1, but we need to also test length 2.
118118
// Ensure it is occasionally generated.
119119
if len(spec.Subnets) == 1 && c.RandBool() {
120-
subnet := infrav1.SubnetFilter{}
120+
subnet := infrav1.SubnetParam{}
121121
c.FuzzNoCustom(&subnet)
122122
spec.Subnets = append(spec.Subnets, subnet)
123123
}
@@ -230,6 +230,22 @@ func TestFuzzyConversion(t *testing.T) {
230230
param.ID = nil
231231
}
232232
},
233+
234+
// v1beta1 subnet param contains exactly one of ID or filter
235+
func(param *infrav1.SubnetParam, c fuzz.Continue) {
236+
if c.RandBool() {
237+
id := nonEmptyString(c)
238+
param.ID = &id
239+
param.Filter = nil
240+
} else {
241+
filter := infrav1.SubnetFilter{}
242+
for filter.IsZero() {
243+
c.FuzzNoCustom(&filter)
244+
}
245+
param.Filter = &filter
246+
param.ID = nil
247+
}
248+
},
233249
}
234250
}
235251

@@ -393,8 +409,8 @@ func TestNetworksToPorts(t *testing.T) {
393409
},
394410
FixedIPs: []infrav1.FixedIP{
395411
{
396-
Subnet: &infrav1.SubnetFilter{
397-
ID: subnetuuid,
412+
Subnet: &infrav1.SubnetParam{
413+
ID: pointer.String(subnetuuid),
398414
},
399415
},
400416
},
@@ -437,20 +453,22 @@ func TestNetworksToPorts(t *testing.T) {
437453
},
438454
FixedIPs: []infrav1.FixedIP{
439455
{
440-
Subnet: &infrav1.SubnetFilter{
441-
Name: "subnet-name",
442-
Description: "subnet-description",
443-
ProjectID: "project-id",
444-
IPVersion: 6,
445-
GatewayIP: "x.x.x.x",
446-
CIDR: "y.y.y.y",
447-
IPv6AddressMode: "address-mode",
448-
IPv6RAMode: "ra-mode",
449-
FilterByNeutronTags: infrav1.FilterByNeutronTags{
450-
Tags: []infrav1.NeutronTag{"tags"},
451-
TagsAny: []infrav1.NeutronTag{"tags-any"},
452-
NotTags: []infrav1.NeutronTag{"not-tags"},
453-
NotTagsAny: []infrav1.NeutronTag{"not-tags-any"},
456+
Subnet: &infrav1.SubnetParam{
457+
Filter: &infrav1.SubnetFilter{
458+
Name: "subnet-name",
459+
Description: "subnet-description",
460+
ProjectID: "project-id",
461+
IPVersion: 6,
462+
GatewayIP: "x.x.x.x",
463+
CIDR: "y.y.y.y",
464+
IPv6AddressMode: "address-mode",
465+
IPv6RAMode: "ra-mode",
466+
FilterByNeutronTags: infrav1.FilterByNeutronTags{
467+
Tags: []infrav1.NeutronTag{"tags"},
468+
TagsAny: []infrav1.NeutronTag{"tags-any"},
469+
NotTags: []infrav1.NeutronTag{"not-tags"},
470+
NotTagsAny: []infrav1.NeutronTag{"not-tags-any"},
471+
},
454472
},
455473
},
456474
},
@@ -497,8 +515,8 @@ func TestNetworksToPorts(t *testing.T) {
497515
},
498516
FixedIPs: []infrav1.FixedIP{
499517
{
500-
Subnet: &infrav1.SubnetFilter{
501-
ID: subnetuuid,
518+
Subnet: &infrav1.SubnetParam{
519+
ID: pointer.String(subnetuuid),
502520
},
503521
},
504522
},
@@ -509,20 +527,22 @@ func TestNetworksToPorts(t *testing.T) {
509527
},
510528
FixedIPs: []infrav1.FixedIP{
511529
{
512-
Subnet: &infrav1.SubnetFilter{
513-
Name: "subnet-name",
514-
Description: "subnet-description",
515-
ProjectID: "project-id",
516-
IPVersion: 6,
517-
GatewayIP: "x.x.x.x",
518-
CIDR: "y.y.y.y",
519-
IPv6AddressMode: "address-mode",
520-
IPv6RAMode: "ra-mode",
521-
FilterByNeutronTags: infrav1.FilterByNeutronTags{
522-
Tags: []infrav1.NeutronTag{"tags"},
523-
TagsAny: []infrav1.NeutronTag{"tags-any"},
524-
NotTags: []infrav1.NeutronTag{"not-tags"},
525-
NotTagsAny: []infrav1.NeutronTag{"not-tags-any"},
530+
Subnet: &infrav1.SubnetParam{
531+
Filter: &infrav1.SubnetFilter{
532+
Name: "subnet-name",
533+
Description: "subnet-description",
534+
ProjectID: "project-id",
535+
IPVersion: 6,
536+
GatewayIP: "x.x.x.x",
537+
CIDR: "y.y.y.y",
538+
IPv6AddressMode: "address-mode",
539+
IPv6RAMode: "ra-mode",
540+
FilterByNeutronTags: infrav1.FilterByNeutronTags{
541+
Tags: []infrav1.NeutronTag{"tags"},
542+
TagsAny: []infrav1.NeutronTag{"tags-any"},
543+
NotTags: []infrav1.NeutronTag{"not-tags"},
544+
NotTagsAny: []infrav1.NeutronTag{"not-tags-any"},
545+
},
526546
},
527547
},
528548
},

api/v1alpha6/openstackcluster_conversion.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ func restorev1alpha6ClusterSpec(previous *OpenStackClusterSpec, dst *OpenStackCl
152152

153153
if len(dst.ExternalRouterIPs) == len(previous.ExternalRouterIPs) {
154154
for i := range dst.ExternalRouterIPs {
155-
restorev1alpha6SubnetFilter(&previous.ExternalRouterIPs[i].Subnet.Filter, &dst.ExternalRouterIPs[i].Subnet.Filter)
155+
restorev1alpha6SubnetParam(&previous.ExternalRouterIPs[i].Subnet, &dst.ExternalRouterIPs[i].Subnet)
156156
}
157157
}
158158

@@ -179,10 +179,19 @@ func restorev1beta1ClusterSpec(previous *infrav1.OpenStackClusterSpec, dst *infr
179179
dst.NetworkMTU = previous.NetworkMTU
180180
dst.DisableExternalNetwork = previous.DisableExternalNetwork
181181

182+
if len(previous.Subnets) > 0 && len(dst.Subnets) > 0 {
183+
restorev1beta1SubnetParam(&previous.Subnets[0], &dst.Subnets[0])
184+
}
182185
if len(previous.Subnets) > 1 {
183186
dst.Subnets = append(dst.Subnets, previous.Subnets[1:]...)
184187
}
185188

189+
if len(previous.ExternalRouterIPs) == len(dst.ExternalRouterIPs) {
190+
for i := range dst.ExternalRouterIPs {
191+
restorev1beta1SubnetParam(&previous.ExternalRouterIPs[i].Subnet, &dst.ExternalRouterIPs[i].Subnet)
192+
}
193+
}
194+
186195
dst.ManagedSubnets = previous.ManagedSubnets
187196

188197
if previous.ManagedSecurityGroups != nil {
@@ -232,11 +241,11 @@ func Convert_v1alpha6_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec(in *O
232241

233242
emptySubnet := SubnetFilter{}
234243
if in.Subnet != emptySubnet {
235-
subnet := infrav1.SubnetFilter{}
236-
if err := Convert_v1alpha6_SubnetFilter_To_v1beta1_SubnetFilter(&in.Subnet, &subnet, s); err != nil {
244+
subnet := infrav1.SubnetParam{}
245+
if err := Convert_v1alpha6_SubnetFilter_To_v1beta1_SubnetParam(&in.Subnet, &subnet, s); err != nil {
237246
return err
238247
}
239-
out.Subnets = []infrav1.SubnetFilter{subnet}
248+
out.Subnets = []infrav1.SubnetParam{subnet}
240249
}
241250

242251
// DNSNameservers without NodeCIDR doesn't make sense, so we drop that.
@@ -295,7 +304,7 @@ func Convert_v1beta1_OpenStackClusterSpec_To_v1alpha6_OpenStackClusterSpec(in *i
295304
}
296305

297306
if len(in.Subnets) >= 1 {
298-
if err := Convert_v1beta1_SubnetFilter_To_v1alpha6_SubnetFilter(&in.Subnets[0], &out.Subnet, s); err != nil {
307+
if err := Convert_v1beta1_SubnetParam_To_v1alpha6_SubnetFilter(&in.Subnets[0], &out.Subnet, s); err != nil {
299308
return err
300309
}
301310
}

api/v1alpha6/openstackmachine_conversion.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,18 +223,18 @@ func convertNetworksToPorts(networks []NetworkParam, s apiconversion.Scope) ([]i
223223
ports = append(ports, infrav1.PortOpts{
224224
Network: networkFilter,
225225
FixedIPs: []infrav1.FixedIP{
226-
{Subnet: &infrav1.SubnetFilter{ID: subnet.UUID}},
226+
{Subnet: &infrav1.SubnetParam{ID: &subnet.UUID}},
227227
},
228228
})
229229
} else {
230-
subnetFilter := &infrav1.SubnetFilter{}
231-
if err := Convert_v1alpha6_SubnetFilter_To_v1beta1_SubnetFilter(&subnet.Filter, subnetFilter, s); err != nil {
230+
subnetParam := &infrav1.SubnetParam{}
231+
if err := Convert_v1alpha6_SubnetFilter_To_v1beta1_SubnetParam(&subnet.Filter, subnetParam, s); err != nil {
232232
return nil, err
233233
}
234234
ports = append(ports, infrav1.PortOpts{
235235
Network: networkFilter,
236236
FixedIPs: []infrav1.FixedIP{
237-
{Subnet: subnetFilter},
237+
{Subnet: subnetParam},
238238
},
239239
})
240240
}

0 commit comments

Comments
 (0)