From 1ea37f1bfd13056fe65a8a1bb73f9750b4b2870c Mon Sep 17 00:00:00 2001 From: cpu1 Date: Mon, 16 May 2022 18:20:21 +0530 Subject: [PATCH] Fix selecting subnet IDs from subnet names --- pkg/cfn/builder/nodegroup_subnets_test.go | 58 +++++++++++++++++++++++ pkg/vpc/vpc.go | 2 +- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/pkg/cfn/builder/nodegroup_subnets_test.go b/pkg/cfn/builder/nodegroup_subnets_test.go index 0c0daa9ee96..99bf4d617a8 100644 --- a/pkg/cfn/builder/nodegroup_subnets_test.go +++ b/pkg/cfn/builder/nodegroup_subnets_test.go @@ -367,6 +367,13 @@ var _ = Describe("AssignSubnets", func() { }, }, + setSubnetMapping: func(clusterConfig *api.ClusterConfig) { + clusterConfig.VPC.Subnets = &api.ClusterSubnets{ + Public: api.NewAZSubnetMapping(), + Private: api.NewAZSubnetMapping(), + } + }, + expectedErr: `subnet with ID "subnet-1" is not in the attached VPC with ID "vpc-1"`, mockEC2: func(ec2Mock *mocksv2.EC2) { @@ -426,6 +433,13 @@ var _ = Describe("AssignSubnets", func() { }, }, + setSubnetMapping: func(clusterConfig *api.ClusterConfig) { + clusterConfig.VPC.Subnets = &api.ClusterSubnets{ + Public: api.NewAZSubnetMapping(), + Private: api.NewAZSubnetMapping(), + } + }, + mockEC2: func(ec2Mock *mocksv2.EC2) { mockDescribeSubnets(ec2Mock, "us-west-2d", vpcID) mockDescribeAZs(ec2Mock, []ec2types.AvailabilityZone{ @@ -446,6 +460,50 @@ var _ = Describe("AssignSubnets", func() { expectedSubnetIDs: []string{"subnet-1"}, }), + + Entry("nodegroup with subnet names", assignSubnetsEntry{ + np: &api.NodeGroup{ + NodeGroupBase: &api.NodeGroupBase{ + Subnets: []string{"subnet-1", "subnet-2", "subnet-3"}, + }, + }, + mockEC2: func(ec2Mock *mocksv2.EC2) { + mockDescribeAZs(ec2Mock, []ec2types.AvailabilityZone{ + { + ZoneType: aws.String("availability-zone"), + ZoneName: aws.String("us-west-2a"), + }, + { + ZoneType: aws.String("availability-zone"), + ZoneName: aws.String("us-west-2d"), + }, + { + ZoneType: aws.String("availability-zone"), + ZoneName: aws.String("us-west-2b"), + }, + }) + }, + setSubnetMapping: func(clusterConfig *api.ClusterConfig) { + clusterConfig.VPC.Subnets = &api.ClusterSubnets{ + Public: api.AZSubnetMapping{ + "subnet-1": api.AZSubnetSpec{ + ID: "subnet-1a", + AZ: "us-west-1a", + }, + "subnet-2": api.AZSubnetSpec{ + ID: "subnet-1b", + AZ: "us-west-1b", + }, + "subnet-3": api.AZSubnetSpec{ + ID: "subnet-1c", + AZ: "us-west-1c", + }, + }, + Private: api.NewAZSubnetMapping(), + } + }, + expectedSubnetIDs: []string{"subnet-1a", "subnet-1b", "subnet-1c"}, + }), ) }) diff --git a/pkg/vpc/vpc.go b/pkg/vpc/vpc.go index 27bbd25acf7..692c8feb871 100644 --- a/pkg/vpc/vpc.go +++ b/pkg/vpc/vpc.go @@ -604,7 +604,7 @@ func SelectNodeGroupSubnets(ctx context.Context, np api.NodePool, clusterConfig } else { subnetMapping = clusterConfig.VPC.LocalZoneSubnets.Public } - } else if len(ng.AvailabilityZones) > 0 { + } else { zones = ng.AvailabilityZones if ng.PrivateNetworking { subnetMapping = clusterConfig.VPC.Subnets.Private