Skip to content

Commit 222b50b

Browse files
committed
Set osc lb status when default networks are used
When apiServerLoadbalancer network is undefined set the apiServerLoadbalancer network status based on the cluster defaults
1 parent cb572a9 commit 222b50b

File tree

1 file changed

+53
-45
lines changed

1 file changed

+53
-45
lines changed

controllers/openstackcluster_controller.go

Lines changed: 53 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -623,60 +623,68 @@ func getBastionSecurityGroupID(openStackCluster *infrav1.OpenStackCluster) *stri
623623

624624
func resolveLoadBalancerNetwork(openStackCluster *infrav1.OpenStackCluster, networkingService *networking.Service) error {
625625
lbSpec := openStackCluster.Spec.APIServerLoadBalancer
626-
if lbSpec.IsEnabled() {
627-
lbStatus := openStackCluster.Status.APIServerLoadBalancer
628-
if lbStatus == nil {
629-
lbStatus = &infrav1.LoadBalancer{}
630-
openStackCluster.Status.APIServerLoadBalancer = lbStatus
631-
}
632626

633-
lbNetStatus := lbStatus.LoadBalancerNetwork
634-
if lbNetStatus == nil {
635-
lbNetStatus = &infrav1.NetworkStatusWithSubnets{
636-
NetworkStatus: infrav1.NetworkStatus{},
637-
}
627+
// if lb is not enabled, return early
628+
if !lbSpec.IsEnabled() {
629+
return nil
630+
}
631+
632+
lbStatus := openStackCluster.Status.APIServerLoadBalancer
633+
if lbStatus == nil {
634+
lbStatus = &infrav1.LoadBalancer{}
635+
openStackCluster.Status.APIServerLoadBalancer = lbStatus
636+
}
637+
638+
lbNetStatus := lbStatus.LoadBalancerNetwork
639+
if lbNetStatus == nil {
640+
lbNetStatus = &infrav1.NetworkStatusWithSubnets{
641+
NetworkStatus: infrav1.NetworkStatus{},
638642
}
643+
}
639644

640-
if lbSpec.Network != nil {
641-
lbNet, err := networkingService.GetNetworkByParam(lbSpec.Network)
642-
if err != nil {
643-
if errors.Is(err, capoerrors.ErrFilterMatch) {
644-
handleUpdateOSCError(openStackCluster, fmt.Errorf("failed to find loadbalancer network: %w", err), true)
645-
}
646-
return fmt.Errorf("failed to find network: %w", err)
645+
if lbSpec.Network != nil {
646+
lbNet, err := networkingService.GetNetworkByParam(lbSpec.Network)
647+
if err != nil {
648+
if errors.Is(err, capoerrors.ErrFilterMatch) {
649+
handleUpdateOSCError(openStackCluster, fmt.Errorf("failed to find loadbalancer network: %w", err), true)
647650
}
648-
649-
lbNetStatus.Name = lbNet.Name
650-
lbNetStatus.ID = lbNet.ID
651-
lbNetStatus.Tags = lbNet.Tags
652-
653-
// Filter out only relevant subnets specified by the spec
654-
lbNetStatus.Subnets = []infrav1.Subnet{}
655-
for _, s := range lbSpec.Subnets {
656-
matchFound := false
657-
for _, subnetID := range lbNet.Subnets {
658-
subnet, err := networkingService.GetSubnetByParam(&s)
659-
if s.ID != nil && subnetID == *s.ID && err == nil {
660-
matchFound = true
661-
lbNetStatus.Subnets = append(
662-
lbNetStatus.Subnets, infrav1.Subnet{
663-
ID: subnet.ID,
664-
Name: subnet.Name,
665-
CIDR: subnet.CIDR,
666-
Tags: subnet.Tags,
667-
})
668-
}
669-
}
670-
if !matchFound {
671-
handleUpdateOSCError(openStackCluster, fmt.Errorf("no subnet match was found in the specified network (specified subnet: %v, available subnets: %v)", s, lbNet.Subnets), false)
672-
return fmt.Errorf("no subnet match was found in the specified network (specified subnet: %v, available subnets: %v)", s, lbNet.Subnets)
651+
return fmt.Errorf("failed to find network: %w", err)
652+
}
653+
654+
lbNetStatus.Name = lbNet.Name
655+
lbNetStatus.ID = lbNet.ID
656+
lbNetStatus.Tags = lbNet.Tags
657+
658+
// Filter out only relevant subnets specified by the spec
659+
lbNetStatus.Subnets = []infrav1.Subnet{}
660+
for _, s := range lbSpec.Subnets {
661+
matchFound := false
662+
for _, subnetID := range lbNet.Subnets {
663+
subnet, err := networkingService.GetSubnetByParam(&s)
664+
if s.ID != nil && subnetID == *s.ID && err == nil {
665+
matchFound = true
666+
lbNetStatus.Subnets = append(
667+
lbNetStatus.Subnets, infrav1.Subnet{
668+
ID: subnet.ID,
669+
Name: subnet.Name,
670+
CIDR: subnet.CIDR,
671+
Tags: subnet.Tags,
672+
})
673673
}
674674
}
675-
676-
openStackCluster.Status.APIServerLoadBalancer.LoadBalancerNetwork = lbNetStatus
675+
if !matchFound {
676+
handleUpdateOSCError(openStackCluster, fmt.Errorf("no subnet match was found in the specified network (specified subnet: %v, available subnets: %v)", s, lbNet.Subnets), false)
677+
return fmt.Errorf("no subnet match was found in the specified network (specified subnet: %v, available subnets: %v)", s, lbNet.Subnets)
678+
}
677679
}
680+
} else {
681+
lbNetStatus.ID = openStackCluster.Status.Network.ID
682+
lbNetStatus.Name = openStackCluster.Status.Network.Name
683+
lbNetStatus.Subnets = openStackCluster.Status.Network.Subnets
678684
}
679685

686+
openStackCluster.Status.APIServerLoadBalancer.LoadBalancerNetwork = lbNetStatus
687+
680688
return nil
681689
}
682690

0 commit comments

Comments
 (0)