Skip to content

Commit f5391ab

Browse files
committed
♻️ refacto(v1beta2/OscCluster): change disable from list to object
1 parent 4330de0 commit f5391ab

12 files changed

Lines changed: 75 additions & 64 deletions

api/v1beta1/osccluster_conversion.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ func (src *OscClusterSpec) ConvertTo(dst *infrastructurev1beta2.OscClusterSpec)
1313

1414
Credentials: infrastructurev1beta2.OscCredentials(src.Credentials),
1515
UseExisting: infrastructurev1beta2.OscReuse(srcNet.UseExisting),
16-
Disable: lo.Map(srcNet.Disable, func(src OscDisable, _ int) infrastructurev1beta2.OscDisable {
17-
return infrastructurev1beta2.OscDisable(src)
18-
}),
16+
Disable: infrastructurev1beta2.OscDisable{
17+
Internet: lo.Contains(srcNet.Disable, DisableInternet),
18+
Loadbalancer: lo.Contains(srcNet.Disable, DisableLB),
19+
},
1920
LoadBalancer: infrastructurev1beta2.OscLoadBalancer{
2021
LoadBalancerName: srcNet.LoadBalancer.LoadBalancerName,
2122
LoadBalancerType: srcNet.LoadBalancer.LoadBalancerType,
@@ -138,9 +139,6 @@ func (dst *OscClusterSpec) ConvertFrom(src *infrastructurev1beta2.OscClusterSpec
138139
dst.Credentials = OscCredentials(src.Credentials)
139140
dst.Network = OscNetwork{
140141
UseExisting: OscReuse(src.UseExisting),
141-
Disable: lo.Map(src.Disable, func(src infrastructurev1beta2.OscDisable, _ int) OscDisable {
142-
return OscDisable(src)
143-
}),
144142
LoadBalancer: OscLoadBalancer{
145143
LoadBalancerName: src.LoadBalancer.LoadBalancerName,
146144
LoadBalancerType: src.LoadBalancer.LoadBalancerType,
@@ -255,6 +253,12 @@ func (dst *OscClusterSpec) ConvertFrom(src *infrastructurev1beta2.OscClusterSpec
255253
}
256254
}),
257255
}
256+
if src.Disable.Internet {
257+
dst.Network.Disable = append(dst.Network.Disable, DisableInternet)
258+
}
259+
if src.Disable.Loadbalancer {
260+
dst.Network.Disable = append(dst.Network.Disable, DisableLB)
261+
}
258262
return nil
259263
}
260264

api/v1beta2/osccluster_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ type OscClusterSpec struct {
2929
UseExisting OscReuse `json:"useExisting,omitempty,omitzero"`
3030
// List of disabled features (internet = no internet service, no nat services)
3131
// +optional
32-
Disable []OscDisable `json:"disable,omitempty"`
32+
Disable OscDisable `json:"disable,omitempty"`
3333
// The Load Balancer configuration
3434
// +optional
3535
LoadBalancer OscLoadBalancer `json:"loadBalancer,omitempty,omitzero"`

api/v1beta2/types.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,11 @@ type OscReuse struct {
4343
SecurityGroups bool `json:"securityGroups,omitempty"`
4444
}
4545

46-
// +kubebuilder:validation:Enum:=internet;loadbalancer
47-
type OscDisable string
48-
49-
const (
50-
DisableInternet OscDisable = "internet"
51-
DisableLB OscDisable = "loadbalancer"
52-
)
46+
type OscDisable struct {
47+
// If set, net, subnets, internet service, nat services and route tables are externally managed
48+
Internet bool `json:"internet,omitempty"`
49+
Loadbalancer bool `json:"loadbalancer,omitempty"`
50+
}
5351

5452
type OscLoadBalancer struct {
5553
// The Load Balancer unique name

api/v1beta2/zz_generated.deepcopy.go

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

capm.yaml

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,12 +1132,14 @@ spec:
11321132
disable:
11331133
description: List of disabled features (internet = no internet service,
11341134
no nat services)
1135-
items:
1136-
enum:
1137-
- internet
1138-
- loadbalancer
1139-
type: string
1140-
type: array
1135+
properties:
1136+
internet:
1137+
description: If set, net, subnets, internet service, nat services
1138+
and route tables are externally managed
1139+
type: boolean
1140+
loadbalancer:
1141+
type: boolean
1142+
type: object
11411143
internetService:
11421144
description: The Internet Service configuration
11431145
properties:
@@ -2664,12 +2666,14 @@ spec:
26642666
disable:
26652667
description: List of disabled features (internet = no internet
26662668
service, no nat services)
2667-
items:
2668-
enum:
2669-
- internet
2670-
- loadbalancer
2671-
type: string
2672-
type: array
2669+
properties:
2670+
internet:
2671+
description: If set, net, subnets, internet service, nat
2672+
services and route tables are externally managed
2673+
type: boolean
2674+
loadbalancer:
2675+
type: boolean
2676+
type: object
26732677
internetService:
26742678
description: The Internet Service configuration
26752679
properties:

cloud/scope/cluster.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -232,16 +232,6 @@ func (s *ClusterScope) GetSubnetName(spec infrastructurev1beta2.OscSubnet) strin
232232
}
233233
}
234234

235-
// IsInternetDisabled checks if internet is disabled.
236-
func (s *ClusterScope) IsInternetDisabled() bool {
237-
return slices.Contains(s.GetSpec().Disable, infrastructurev1beta2.DisableInternet)
238-
}
239-
240-
// IsLBDisabled checks if loadbalancer is disabled.
241-
func (s *ClusterScope) IsLBDisabled() bool {
242-
return slices.Contains(s.GetSpec().Disable, infrastructurev1beta2.DisableLB)
243-
}
244-
245235
// GetInternetServiceName return the name of the net
246236
func (s *ClusterScope) GetInternetServiceName() string {
247237
if s.OscCluster.Spec.InternetService.Name != "" {
@@ -254,7 +244,7 @@ var ErrNoNatFound = errors.New("natService not found")
254244

255245
// GetNatServices return the natServices of the cluster
256246
func (s *ClusterScope) GetNatServices() []infrastructurev1beta2.OscNatService {
257-
if s.IsInternetDisabled() {
247+
if s.GetSpec().Disable.Internet {
258248
return nil
259249
}
260250
switch {
@@ -347,7 +337,7 @@ func (s *ClusterScope) GetRouteTables() []infrastructurev1beta2.OscRouteTable {
347337
rtbl.Role = subnet.Roles[0]
348338
}
349339
switch {
350-
case s.IsInternetDisabled():
340+
case s.GetSpec().Disable.Internet:
351341
case s.SubnetIsPublic(subnet):
352342
rtbl.Routes = []infrastructurev1beta2.OscRoute{{Destination: "0.0.0.0/0", TargetType: "gateway"}}
353343
default:

config/crd/bases/infrastructure.cluster.x-k8s.io_oscclusters.yaml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,12 +1112,14 @@ spec:
11121112
disable:
11131113
description: List of disabled features (internet = no internet service,
11141114
no nat services)
1115-
items:
1116-
enum:
1117-
- internet
1118-
- loadbalancer
1119-
type: string
1120-
type: array
1115+
properties:
1116+
internet:
1117+
description: If set, net, subnets, internet service, nat services
1118+
and route tables are externally managed
1119+
type: boolean
1120+
loadbalancer:
1121+
type: boolean
1122+
type: object
11211123
internetService:
11221124
description: The Internet Service configuration
11231125
properties:

config/crd/bases/infrastructure.cluster.x-k8s.io_oscclustertemplates.yaml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,12 +1006,14 @@ spec:
10061006
disable:
10071007
description: List of disabled features (internet = no internet
10081008
service, no nat services)
1009-
items:
1010-
enum:
1011-
- internet
1012-
- loadbalancer
1013-
type: string
1014-
type: array
1009+
properties:
1010+
internet:
1011+
description: If set, net, subnets, internet service, nat
1012+
services and route tables are externally managed
1013+
type: boolean
1014+
loadbalancer:
1015+
type: boolean
1016+
type: object
10151017
internetService:
10161018
description: The Internet Service configuration
10171019
properties:

controllers/osccluster_controller.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ func (r *OscClusterReconciler) reconcile(ctx context.Context, clusterScope *scop
139139
}
140140
conditions.MarkTrue(osccluster, infrastructurev1beta2.SubnetsReadyCondition)
141141

142-
if !clusterScope.IsInternetDisabled() {
142+
if !clusterScope.GetSpec().Disable.Internet {
143143
_, err = r.reconcileInternetService(ctx, clusterScope)
144144
if err != nil {
145145
conditions.MarkFalse(osccluster, infrastructurev1beta2.InternetServicesReadyCondition, infrastructurev1beta2.InternetServicesFailedReason, clusterv1.ConditionSeverityWarning, "%s", err.Error())
@@ -201,7 +201,7 @@ func (r *OscClusterReconciler) reconcile(ctx context.Context, clusterScope *scop
201201
}
202202
conditions.MarkTrue(osccluster, infrastructurev1beta2.SecurityGroupReadyCondition)
203203

204-
if !clusterScope.IsLBDisabled() {
204+
if !clusterScope.GetSpec().Disable.Loadbalancer {
205205
_, err = r.reconcileLoadBalancer(ctx, clusterScope)
206206
if err != nil {
207207
conditions.MarkFalse(osccluster, infrastructurev1beta2.LoadBalancerReadyCondition, infrastructurev1beta2.LoadBalancerFailedReason, clusterv1.ConditionSeverityWarning, "%s", err.Error())
@@ -253,14 +253,14 @@ func (r *OscClusterReconciler) reconcileDelete(ctx context.Context, clusterScope
253253
}
254254
}
255255

256-
if !clusterScope.IsLBDisabled() {
256+
if !clusterScope.GetSpec().Disable.Loadbalancer {
257257
_, err = r.reconcileDeleteLoadBalancer(ctx, clusterScope)
258258
if err != nil {
259259
return reconcile.Result{}, fmt.Errorf("reconcile delete loadBalancer: %w", err)
260260
}
261261
}
262262

263-
if !clusterScope.IsInternetDisabled() {
263+
if !clusterScope.GetSpec().Disable.Internet {
264264
_, err = r.reconcileDeleteNatService(ctx, clusterScope)
265265
if err != nil {
266266
return reconcile.Result{}, fmt.Errorf("reconcile delete natServices: %w", err)
@@ -295,7 +295,7 @@ func (r *OscClusterReconciler) reconcileDelete(ctx context.Context, clusterScope
295295
if err != nil {
296296
return reconcile.Result{}, fmt.Errorf("reconcile delete securityGroups: %w", err)
297297
}
298-
if !clusterScope.IsInternetDisabled() {
298+
if !clusterScope.GetSpec().Disable.Internet {
299299
_, err = r.reconcileDeleteInternetService(ctx, clusterScope)
300300
if err != nil {
301301
return reconcile.Result{}, fmt.Errorf("reconcile delete internetServices: %w", err)

controllers/osccluster_helpers_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func patchUseCredentials(c infrastructurev1beta2.OscCredentials) patchOSCCluster
112112

113113
func patchDisableLB() patchOSCClusterFunc {
114114
return func(m *infrastructurev1beta2.OscCluster) {
115-
m.Spec.Disable = append(m.Spec.Disable, infrastructurev1beta2.DisableLB)
115+
m.Spec.Disable.Loadbalancer = true
116116
m.Spec.LoadBalancer = infrastructurev1beta2.OscLoadBalancer{}
117117
m.Spec.ControlPlaneEndpoint = v1beta1.APIEndpoint{
118118
Host: "api.example.com",

0 commit comments

Comments
 (0)