@@ -102,11 +102,36 @@ func (r *IBMPowerVSCluster) validateIBMPowerVSClusterNetwork() *field.Error {
102
102
return nil
103
103
}
104
104
105
+ func (r * IBMPowerVSCluster ) validateIBMPowerVSClusterLoadBalancers () (allErrs field.ErrorList ) {
106
+ if err := r .validateIBMPowerVSClusterLoadBalancerNames (); err != nil {
107
+ allErrs = append (allErrs , err ... )
108
+ }
109
+
110
+ isPublic := false
111
+ for _ , loadbalancer := range r .Spec .LoadBalancers {
112
+ if * loadbalancer .Public {
113
+ isPublic = true
114
+ break
115
+ }
116
+ }
117
+
118
+ if ! isPublic {
119
+ allErrs = append (allErrs , field .Invalid (field .NewPath ("spec.LoadBalancers" ), r .Spec .LoadBalancers , "Expect atleast one of the load balancer to be public" ))
120
+ }
121
+
122
+ return allErrs
123
+ }
124
+
105
125
func (r * IBMPowerVSCluster ) validateIBMPowerVSClusterLoadBalancerNames () (allErrs field.ErrorList ) {
106
126
found := make (map [string ]bool )
107
127
for i , loadbalancer := range r .Spec .LoadBalancers {
128
+ if loadbalancer .Name == "" {
129
+ continue
130
+ }
131
+
108
132
if found [loadbalancer .Name ] {
109
133
allErrs = append (allErrs , field .Duplicate (field .NewPath ("spec" , fmt .Sprintf ("loadbalancers[%d]" , i )), map [string ]interface {}{"Name" : loadbalancer .Name }))
134
+ continue
110
135
}
111
136
found [loadbalancer .Name ] = true
112
137
}
@@ -117,8 +142,12 @@ func (r *IBMPowerVSCluster) validateIBMPowerVSClusterLoadBalancerNames() (allErr
117
142
func (r * IBMPowerVSCluster ) validateIBMPowerVSClusterVPCSubnetNames () (allErrs field.ErrorList ) {
118
143
found := make (map [string ]bool )
119
144
for i , subnet := range r .Spec .VPCSubnets {
145
+ if subnet .Name == nil {
146
+ continue
147
+ }
120
148
if found [* subnet .Name ] {
121
149
allErrs = append (allErrs , field .Duplicate (field .NewPath ("spec" , fmt .Sprintf ("vpcSubnets[%d]" , i )), map [string ]interface {}{"Name" : * subnet .Name }))
150
+ continue
122
151
}
123
152
found [* subnet .Name ] = true
124
153
}
@@ -130,6 +159,9 @@ func (r *IBMPowerVSCluster) validateIBMPowerVSClusterTransitGateway() *field.Err
130
159
if r .Spec .Zone == nil && r .Spec .VPC == nil {
131
160
return nil
132
161
}
162
+ if r .Spec .TransitGateway == nil {
163
+ return nil
164
+ }
133
165
if _ , globalRouting , _ := genUtil .GetTransitGatewayLocationAndRouting (r .Spec .Zone , r .Spec .VPC .Region ); r .Spec .TransitGateway .GlobalRouting != nil && ! * r .Spec .TransitGateway .GlobalRouting && globalRouting != nil && * globalRouting {
134
166
return field .Invalid (field .NewPath ("spec.transitGateway.globalRouting" ), r .Spec .TransitGateway .GlobalRouting , "global routing is required since PowerVS and VPC region are from different region" )
135
167
}
@@ -183,7 +215,7 @@ func (r *IBMPowerVSCluster) validateIBMPowerVSClusterCreateInfraPrereq() (allErr
183
215
allErrs = append (allErrs , err ... )
184
216
}
185
217
186
- if err := r .validateIBMPowerVSClusterLoadBalancerNames (); err != nil {
218
+ if err := r .validateIBMPowerVSClusterLoadBalancers (); err != nil {
187
219
allErrs = append (allErrs , err ... )
188
220
}
189
221
0 commit comments