@@ -377,12 +377,15 @@ func Convert_v1beta1_OpenStackClusterSpec_To_v1beta2_OpenStackClusterSpec(
377377 }
378378
379379 if in .NetworkMTU != nil || in .DisablePortSecurity != nil {
380- out .ManagedNetwork = & infrav1.ManagedNetwork {
381- MTU : in .NetworkMTU ,
380+ managed := & infrav1.ManagedNetwork {}
381+ if in .NetworkMTU != nil {
382+ mtu := int32 (* in .NetworkMTU ) //nolint:gosec // MTU values are always within int32 range
383+ managed .MTU = & mtu
382384 }
383385 if in .DisablePortSecurity != nil {
384- out . ManagedNetwork .EnablePortSecurity = ptr .To (! * in .DisablePortSecurity )
386+ managed .EnablePortSecurity = ptr .To (! * in .DisablePortSecurity )
385387 }
388+ out .ManagedNetwork = managed
386389 }
387390
388391 if in .DisableExternalNetwork != nil {
@@ -419,10 +422,30 @@ func Convert_v1beta1_OpenStackClusterSpec_To_v1beta2_OpenStackClusterSpec(
419422 if in .DisableAPIServerFloatingIP != nil {
420423 out .APIServer .EnableFloatingIP = ptr .To (! * in .DisableAPIServerFloatingIP )
421424 }
422- // APIServerLoadBalancer is structurally identical between versions,
423- // so an unsafe cast is safe here (same field layout) .
425+ // APIServerLoadBalancer fields are converted field-by-field to handle
426+ // the int → int32 type changes in AdditionalPorts and Monitor fields .
424427 if in .APIServerLoadBalancer != nil {
425- out .APIServer .ManagedLoadBalancer = (* infrav1 .APIServerLoadBalancer )(unsafe .Pointer (in .APIServerLoadBalancer ))
428+ lb := in .APIServerLoadBalancer
429+ out .APIServer .ManagedLoadBalancer = & infrav1.APIServerLoadBalancer {
430+ Enabled : lb .Enabled ,
431+ AllowedCIDRs : lb .AllowedCIDRs ,
432+ Provider : lb .Provider ,
433+ Network : (* infrav1 .NetworkParam )(unsafe .Pointer (lb .Network )),
434+ Subnets : * (* []infrav1.SubnetParam )(unsafe .Pointer (& lb .Subnets )),
435+ AvailabilityZone : lb .AvailabilityZone ,
436+ Flavor : lb .Flavor ,
437+ }
438+ for _ , p := range lb .AdditionalPorts {
439+ out .APIServer .ManagedLoadBalancer .AdditionalPorts = append (out .APIServer .ManagedLoadBalancer .AdditionalPorts , int32 (p )) //nolint:gosec // Port values are always within int32 range
440+ }
441+ if lb .Monitor != nil {
442+ out .APIServer .ManagedLoadBalancer .Monitor = & infrav1.APIServerLoadBalancerMonitor {
443+ Delay : int32 (lb .Monitor .Delay ), //nolint:gosec // Monitor values are always within int32 range
444+ Timeout : int32 (lb .Monitor .Timeout ), //nolint:gosec // Monitor values are always within int32 range
445+ MaxRetries : int32 (lb .Monitor .MaxRetries ), //nolint:gosec // Monitor values are always within int32 range
446+ MaxRetriesDown : int32 (lb .Monitor .MaxRetriesDown ), //nolint:gosec // Monitor values are always within int32 range
447+ }
448+ }
426449 }
427450 }
428451
@@ -439,7 +462,10 @@ func Convert_v1beta2_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec(
439462 }
440463
441464 if in .ManagedNetwork != nil {
442- out .NetworkMTU = in .ManagedNetwork .MTU
465+ if in .ManagedNetwork .MTU != nil {
466+ mtu := int (* in .ManagedNetwork .MTU )
467+ out .NetworkMTU = & mtu
468+ }
443469 if in .ManagedNetwork .EnablePortSecurity != nil {
444470 out .DisablePortSecurity = ptr .To (! * in .ManagedNetwork .EnablePortSecurity )
445471 }
@@ -472,7 +498,27 @@ func Convert_v1beta2_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec(
472498 }
473499
474500 if in .APIServer .ManagedLoadBalancer != nil {
475- out .APIServerLoadBalancer = (* APIServerLoadBalancer )(unsafe .Pointer (in .APIServer .ManagedLoadBalancer ))
501+ lb := in .APIServer .ManagedLoadBalancer
502+ out .APIServerLoadBalancer = & APIServerLoadBalancer {
503+ Enabled : lb .Enabled ,
504+ AllowedCIDRs : lb .AllowedCIDRs ,
505+ Provider : lb .Provider ,
506+ Network : (* NetworkParam )(unsafe .Pointer (lb .Network )),
507+ Subnets : * (* []SubnetParam )(unsafe .Pointer (& lb .Subnets )),
508+ AvailabilityZone : lb .AvailabilityZone ,
509+ Flavor : lb .Flavor ,
510+ }
511+ for _ , p := range lb .AdditionalPorts {
512+ out .APIServerLoadBalancer .AdditionalPorts = append (out .APIServerLoadBalancer .AdditionalPorts , int (p ))
513+ }
514+ if lb .Monitor != nil {
515+ out .APIServerLoadBalancer .Monitor = & APIServerLoadBalancerMonitor {
516+ Delay : int (lb .Monitor .Delay ),
517+ Timeout : int (lb .Monitor .Timeout ),
518+ MaxRetries : int (lb .Monitor .MaxRetries ),
519+ MaxRetriesDown : int (lb .Monitor .MaxRetriesDown ),
520+ }
521+ }
476522 }
477523 }
478524
0 commit comments