Skip to content

Commit 531fd52

Browse files
authored
Refactor IsPowerVSZoneSupportsPER() code to use interface (#1775)
* Refactor IsPowerVSZoneSupportsPER() code to use interface * Addressed review comments to sort import order * Rename the function name
1 parent bfb33f1 commit 531fd52

File tree

4 files changed

+35
-9
lines changed

4 files changed

+35
-9
lines changed

cloud/scope/powervs_cluster.go

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"github.com/go-logr/logr"
2626

2727
"github.com/IBM-Cloud/power-go-client/ibmpisession"
28-
"github.com/IBM-Cloud/power-go-client/power/client/datacenters"
2928
"github.com/IBM-Cloud/power-go-client/power/models"
3029
"github.com/IBM/go-sdk-core/v5/core"
3130
"github.com/IBM/ibm-cos-sdk-go/aws"
@@ -593,17 +592,12 @@ func (s *PowerVSClusterScope) IsPowerVSZoneSupportsPER() error {
593592
return fmt.Errorf("powervs zone is not set")
594593
}
595594
// fetch the datacenter capabilities for zone.
596-
// though the function name is WithDatacenterRegion it takes zone as parameter
597-
params := datacenters.NewV1DatacentersGetParamsWithContext(context.TODO()).WithDatacenterRegion(*zone)
598-
datacenter, err := s.session.Power.Datacenters.V1DatacentersGet(params)
595+
datacenterCapabilities, err := s.IBMPowerVSClient.GetDatacenterCapabilities(*zone)
599596
if err != nil {
600-
return fmt.Errorf("failed to get datacenter details for zone: %s err:%w", *zone, err)
601-
}
602-
if datacenter == nil || datacenter.Payload == nil || datacenter.Payload.Capabilities == nil {
603-
return fmt.Errorf("failed to get datacenter capabilities for zone: %s", *zone)
597+
return err
604598
}
605599
// check for the PER support in datacenter capabilities.
606-
perAvailable, ok := datacenter.Payload.Capabilities[powerEdgeRouter]
600+
perAvailable, ok := datacenterCapabilities[powerEdgeRouter]
607601
if !ok {
608602
return fmt.Errorf("%s capability unknown for zone: %s", powerEdgeRouter, *zone)
609603
}

pkg/cloud/services/powervs/mock/powervs_generated.go

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

pkg/cloud/services/powervs/powervs.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,5 @@ type PowerVS interface {
4444
DeleteDHCPServer(id string) error
4545
WithClients(options ServiceOptions) *Service
4646
GetNetworkByName(networkName string) (*models.NetworkReference, error)
47+
GetDatacenterCapabilities(zone string) (map[string]bool, error)
4748
}

pkg/cloud/services/powervs/service.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@ package powervs
1818

1919
import (
2020
"context"
21+
"fmt"
2122

2223
"github.com/IBM-Cloud/power-go-client/clients/instance"
2324
"github.com/IBM-Cloud/power-go-client/ibmpisession"
25+
"github.com/IBM-Cloud/power-go-client/power/client/datacenters"
2426
"github.com/IBM-Cloud/power-go-client/power/client/p_cloud_images"
2527
"github.com/IBM-Cloud/power-go-client/power/models"
2628

@@ -185,3 +187,17 @@ func (s *Service) GetNetworkByName(networkName string) (*models.NetworkReference
185187

186188
return network, nil
187189
}
190+
191+
// GetDatacenterCapabilities fetches the datacenter capabilities for the given zone.
192+
func (s *Service) GetDatacenterCapabilities(zone string) (map[string]bool, error) {
193+
// though the function name is WithDatacenterRegion it takes zone as parameter
194+
params := datacenters.NewV1DatacentersGetParamsWithContext(context.TODO()).WithDatacenterRegion(zone)
195+
datacenter, err := s.session.Power.Datacenters.V1DatacentersGet(params)
196+
if err != nil {
197+
return nil, fmt.Errorf("failed to get datacenter details for zone: %s err:%w", zone, err)
198+
}
199+
if datacenter == nil || datacenter.Payload == nil || datacenter.Payload.Capabilities == nil {
200+
return nil, fmt.Errorf("failed to get datacenter capabilities for zone: %s", zone)
201+
}
202+
return datacenter.Payload.Capabilities, nil
203+
}

0 commit comments

Comments
 (0)