Skip to content

Commit

Permalink
OCM-6592 | fix: filter out local-zone and wave-length zone associated…
Browse files Browse the repository at this point in the history
… subnets during 'rosa create machinepool (HCP)'
  • Loading branch information
davidleerh committed Apr 23, 2024
1 parent e0fd2b9 commit 9b5633d
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 25 deletions.
13 changes: 6 additions & 7 deletions pkg/aws/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@ type Client interface {
GetVPCSubnets(subnetID string) ([]ec2types.Subnet, error)
GetVPCPrivateSubnets(isHostedCp bool, subnetID string) ([]ec2types.Subnet, error)
FilterVPCsPrivateSubnets(isHostedCp bool, subnets []ec2types.Subnet) ([]ec2types.Subnet, error)
FilterSubnetsWithStandardAvailabilityZones(subnets []ec2types.Subnet) ([]ec2types.Subnet, error)
ValidateQuota() (bool, error)
TagUserRegion(username string, region string) error
GetClusterRegionTagForUser(username string) (string, error)
Expand Down Expand Up @@ -616,7 +615,7 @@ func (c *awsClient) FilterVPCsPrivateSubnets(isHostedCp bool, subnets []ec2types

// Temporary filter until local-zone and wave-length zones are supported by HCP
if isHostedCp {
privateSubnets, err = c.FilterSubnetsWithStandardAvailabilityZones(privateSubnets)
privateSubnets, err = c.filterSubnetsWithStandardAvailabilityZones(privateSubnets)
if err != nil {
return nil, err
}
Expand All @@ -629,14 +628,14 @@ func (c *awsClient) FilterVPCsPrivateSubnets(isHostedCp bool, subnets []ec2types
return privateSubnets, nil
}

func (c *awsClient) FilterSubnetsWithStandardAvailabilityZones(subnets []ec2types.Subnet) ([]ec2types.Subnet, error) {
func (c *awsClient) filterSubnetsWithStandardAvailabilityZones(subnets []ec2types.Subnet) ([]ec2types.Subnet, error) {
filteredSubnets := []ec2types.Subnet{}
subnetAvailabilityZonesList := []string{}
standardAvailabilityZonesMap := map[string]bool{}

// list of availability zones to pass as input
for _, subnet := range subnets {
subnetAvailabilityZonesList = append(subnetAvailabilityZonesList, *subnet.AvailabilityZone)
subnetAvailabilityZonesList = append(subnetAvailabilityZonesList, aws.ToString(subnet.AvailabilityZone))
}

describeAvailabilityZonesOutput, err := c.ec2Client.DescribeAvailabilityZones(
Expand All @@ -647,13 +646,13 @@ func (c *awsClient) FilterSubnetsWithStandardAvailabilityZones(subnets []ec2type
}

for _, availabilityZone := range describeAvailabilityZonesOutput.AvailabilityZones {
if *availabilityZone.ZoneType == standardZone {
standardAvailabilityZonesMap[*availabilityZone.ZoneName] = true
if aws.ToString(availabilityZone.ZoneType) == standardZone {
standardAvailabilityZonesMap[aws.ToString(availabilityZone.ZoneName)] = true
}
}

for _, subnet := range subnets {
_, exists := standardAvailabilityZonesMap[*subnet.AvailabilityZone]
_, exists := standardAvailabilityZonesMap[aws.ToString(subnet.AvailabilityZone)]
if exists {
filteredSubnets = append(filteredSubnets, subnet)
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/aws/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -800,13 +800,13 @@ var _ = Describe("Client", func() {
},
}

Context("FilterSubnetsWithStandardAvailabilityZones", func() {
Context("filterSubnetsWithStandardAvailabilityZones", func() {
It("Filters out subnets with local-zone, wavelength-zone availability zones", func() {

mockEC2API.EXPECT().DescribeAvailabilityZones(gomock.Any(), gomock.Any()).Return(
mockDescribeAvailabilityZoneOutput, nil)

filteredSubnets, err := client.FilterSubnetsWithStandardAvailabilityZones(mockSubnets)
mockClient := awsClient{ec2Client: mockEC2API}
filteredSubnets, err := mockClient.filterSubnetsWithStandardAvailabilityZones(mockSubnets)
Expect(err).NotTo(HaveOccurred())

Expect(len(filteredSubnets)).To(Equal(1))
Expand Down
15 changes: 0 additions & 15 deletions pkg/aws/mock_client.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 9b5633d

Please sign in to comment.