Skip to content

Commit 0e0a178

Browse files
nguyenhuukhoidulek
authored andcommitted
Add opt to use AZ for APISeverLoadBalancer
1 parent b7a6685 commit 0e0a178

13 files changed

+92
-30
lines changed

api/v1alpha5/zz_generated.conversion.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1alpha6/openstackcluster_conversion.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,8 @@ func restorev1beta1ClusterSpec(previous *infrav1.OpenStackClusterSpec, dst *infr
225225
optional.RestoreBool(&previous.DisableAPIServerFloatingIP, &dst.DisableAPIServerFloatingIP)
226226
optional.RestoreBool(&previous.ControlPlaneOmitAvailabilityZone, &dst.ControlPlaneOmitAvailabilityZone)
227227
optional.RestoreBool(&previous.DisablePortSecurity, &dst.DisablePortSecurity)
228+
229+
restorev1beta1APIServerLoadBalancer(previous.APIServerLoadBalancer, dst.APIServerLoadBalancer)
228230
}
229231

230232
func Convert_v1alpha6_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec(in *OpenStackClusterSpec, out *infrav1.OpenStackClusterSpec, s apiconversion.Scope) error {

api/v1alpha6/types_conversion.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,6 @@ func Convert_v1alpha6_SecurityGroup_To_v1beta1_SecurityGroupStatus(in *SecurityG
497497
}
498498

499499
/* SecurityGroupRule */
500-
/* APIServerLoadBalancer */
501500
/* ValueSpec */
502501
/* OpenStackIdentityReference */
503502

@@ -510,6 +509,21 @@ func Convert_v1beta1_OpenStackIdentityReference_To_v1alpha6_OpenStackIdentityRef
510509
return nil
511510
}
512511

512+
/* APIServerLoadBalancer */
513+
514+
func Convert_v1beta1_APIServerLoadBalancer_To_v1alpha6_APIServerLoadBalancer(in *infrav1.APIServerLoadBalancer, out *APIServerLoadBalancer, s apiconversion.Scope) error {
515+
return autoConvert_v1beta1_APIServerLoadBalancer_To_v1alpha6_APIServerLoadBalancer(in, out, s)
516+
}
517+
518+
func restorev1beta1APIServerLoadBalancer(previous *infrav1.APIServerLoadBalancer, dst *infrav1.APIServerLoadBalancer) {
519+
if dst == nil || previous == nil {
520+
return
521+
}
522+
523+
// AZ doesn't exist in v1alpha6, so always restore.
524+
dst.AvailabilityZone = previous.AvailabilityZone
525+
}
526+
513527
/* Placeholders */
514528

515529
// conversion-gen registers these functions so we must provider stubs, but

api/v1alpha6/zz_generated.conversion.go

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

api/v1alpha7/openstackcluster_conversion.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@ func restorev1beta1ClusterSpec(previous *infrav1.OpenStackClusterSpec, dst *infr
231231
optional.RestoreBool(&previous.DisableAPIServerFloatingIP, &dst.DisableAPIServerFloatingIP)
232232
optional.RestoreBool(&previous.ControlPlaneOmitAvailabilityZone, &dst.ControlPlaneOmitAvailabilityZone)
233233
optional.RestoreBool(&previous.DisablePortSecurity, &dst.DisablePortSecurity)
234+
235+
restorev1beta1APIServerLoadBalancer(previous.APIServerLoadBalancer, dst.APIServerLoadBalancer)
234236
}
235237

236238
func Convert_v1alpha7_OpenStackClusterSpec_To_v1beta1_OpenStackClusterSpec(in *OpenStackClusterSpec, out *infrav1.OpenStackClusterSpec, s apiconversion.Scope) error {

api/v1alpha7/types_conversion.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,21 @@ func Convert_v1beta1_OpenStackIdentityReference_To_v1alpha7_OpenStackIdentityRef
510510
return nil
511511
}
512512

513+
/* APIServerLoadBalancer */
514+
515+
func Convert_v1beta1_APIServerLoadBalancer_To_v1alpha7_APIServerLoadBalancer(in *infrav1.APIServerLoadBalancer, out *APIServerLoadBalancer, s apiconversion.Scope) error {
516+
return autoConvert_v1beta1_APIServerLoadBalancer_To_v1alpha7_APIServerLoadBalancer(in, out, s)
517+
}
518+
519+
func restorev1beta1APIServerLoadBalancer(previous *infrav1.APIServerLoadBalancer, dst *infrav1.APIServerLoadBalancer) {
520+
if dst == nil || previous == nil {
521+
return
522+
}
523+
524+
// AZ doesn't exist in v1alpha6, so always restore.
525+
dst.AvailabilityZone = previous.AvailabilityZone
526+
}
527+
513528
/* Placeholders */
514529

515530
// conversion-gen registers these functions so we must provider stubs, but

api/v1alpha7/zz_generated.conversion.go

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

api/v1beta1/types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -802,6 +802,10 @@ type APIServerLoadBalancer struct {
802802
// specified.
803803
// +optional
804804
Provider optional.String `json:"provider,omitempty"`
805+
806+
// AvailabilityZone is the failure domain that will be used to create the APIServerLoadBalancer Spec.
807+
//+optional
808+
AvailabilityZone optional.String `json:"availabilityZone,omitempty"`
805809
}
806810

807811
func (s *APIServerLoadBalancer) IsZero() bool {

api/v1beta1/zz_generated.deepcopy.go

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

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

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

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

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

docs/book/src/api/v1beta1/api.md

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

pkg/cloud/services/loadbalancer/loadbalancer.go

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -281,17 +281,21 @@ func (s *Service) getOrCreateAPILoadBalancer(openStackCluster *infrav1.OpenStack
281281

282282
// Choose the selected provider if it is set in cluster spec, if not, omit the field and Octavia will use the default provider.
283283
lbProvider := ""
284-
if openStackCluster.Spec.APIServerLoadBalancer != nil && openStackCluster.Spec.APIServerLoadBalancer.Provider != nil {
285-
for _, v := range providers {
286-
if v.Name == *openStackCluster.Spec.APIServerLoadBalancer.Provider {
287-
lbProvider = v.Name
288-
break
284+
var availabilityZone *string
285+
if openStackCluster.Spec.APIServerLoadBalancer != nil {
286+
if openStackCluster.Spec.APIServerLoadBalancer.Provider != nil {
287+
for _, v := range providers {
288+
if v.Name == *openStackCluster.Spec.APIServerLoadBalancer.Provider {
289+
lbProvider = v.Name
290+
break
291+
}
292+
}
293+
if lbProvider == "" {
294+
record.Warnf(openStackCluster, "OctaviaProviderNotFound", "Provider specified for Octavia not found.")
295+
record.Eventf(openStackCluster, "OctaviaProviderNotFound", "Provider %s specified for Octavia not found, using the default provider.", openStackCluster.Spec.APIServerLoadBalancer.Provider)
289296
}
290297
}
291-
if lbProvider == "" {
292-
record.Warnf(openStackCluster, "OctaviaProviderNotFound", "Provider specified for Octavia not found.")
293-
record.Eventf(openStackCluster, "OctaviaProviderNotFound", "Provider %s specified for Octavia not found, using the default provider.", openStackCluster.Spec.APIServerLoadBalancer.Provider)
294-
}
298+
availabilityZone = openStackCluster.Spec.APIServerLoadBalancer.AvailabilityZone
295299
}
296300

297301
vipAddress, err := getAPIServerVIPAddress(openStackCluster)
@@ -306,6 +310,9 @@ func (s *Service) getOrCreateAPILoadBalancer(openStackCluster *infrav1.OpenStack
306310
Provider: lbProvider,
307311
Tags: openStackCluster.Spec.Tags,
308312
}
313+
if availabilityZone != nil {
314+
lbCreateOpts.AvailabilityZone = *availabilityZone
315+
}
309316
if vipAddress != nil {
310317
lbCreateOpts.VipAddress = *vipAddress
311318
}

0 commit comments

Comments
 (0)