Skip to content

Commit 31804c4

Browse files
committed
KAL: Enable intergers linter
Enable the linter and fix the issues. Note: The APIServer.Port is an optional.UInt16. This is something we may want to adjust separately. Signed-off-by: Lennart Jern <lennart.jern@est.tech>
1 parent 8d545b2 commit 31804c4

35 files changed

Lines changed: 557 additions & 193 deletions

.golangci-kal.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ linters:
1919
# - "conflictingmarkers" # Ensure there are no conflicting markers.
2020
- "duplicatemarkers" # Ensure there are no exact duplicate markers for types and fields.
2121
# - "forbiddenmarkers" # Ensure that types and fields do not contain any markers that are forbidden.
22-
# - "integers" # Ensure only int32 and int64 are used for integers.
22+
- "integers" # Ensure only int32 and int64 are used for integers.
2323
- "jsontags" # Ensure every field has a json tag.
2424
# - "maxlength" # Ensure all strings and arrays have maximum lengths/maximum items.
2525
# - "nobools" # Bools do not evolve over time, should use enums instead.

api/v1beta1/conversion.go

Lines changed: 54 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

api/v1beta1/conversion_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1031,7 +1031,13 @@ func TestOpenStackCluster_RoundTrip_ManagedNetwork(t *testing.T) {
10311031
g.Expect(hub.Spec.ManagedNetwork).To(BeNil())
10321032
} else {
10331033
g.Expect(hub.Spec.ManagedNetwork).NotTo(BeNil())
1034-
g.Expect(hub.Spec.ManagedNetwork.MTU).To(Equal(tt.in.Spec.NetworkMTU))
1034+
// hub.Spec.ManagedNetwork.MTU is *int32 while NetworkMTU is *int; compare values
1035+
if tt.in.Spec.NetworkMTU != nil {
1036+
g.Expect(hub.Spec.ManagedNetwork.MTU).NotTo(BeNil())
1037+
g.Expect(int(*hub.Spec.ManagedNetwork.MTU)).To(Equal(*tt.in.Spec.NetworkMTU))
1038+
} else {
1039+
g.Expect(hub.Spec.ManagedNetwork.MTU).To(BeNil())
1040+
}
10351041
g.Expect(hub.Spec.ManagedNetwork.EnablePortSecurity).To(Equal(tt.expectedEnablePS))
10361042
}
10371043

0 commit comments

Comments
 (0)