Skip to content

Commit

Permalink
test updates
Browse files Browse the repository at this point in the history
  • Loading branch information
jmdeal committed Apr 22, 2024
1 parent 806dc95 commit 20c9ee0
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 17 deletions.
11 changes: 8 additions & 3 deletions pkg/cloudprovider/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -750,9 +750,14 @@ var _ = Describe("CloudProvider", func() {
Tags: map[string]string{
"fakeKey": "fakeValue",
},
Context: lo.ToPtr("fake-context"),
DetailedMonitoring: lo.ToPtr(false),
AMIFamily: lo.ToPtr(v1beta1.AMIFamilyAL2023),
Context: lo.ToPtr("fake-context"),
DetailedMonitoring: lo.ToPtr(false),
AMIFamily: lo.ToPtr(v1beta1.AMIFamilyAL2023),
AMISelectorTerms: []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyAL2023,
},
}},
AssociatePublicIPAddress: lo.ToPtr(false),
MetadataOptions: &v1beta1.MetadataOptions{
HTTPEndpoint: lo.ToPtr("disabled"),
Expand Down
13 changes: 10 additions & 3 deletions pkg/controllers/nodeclass/status/ami_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,11 @@ var _ = Describe("NodeClass AMI Status Controller", func() {
},
},
})
nodeClass.Spec.AMISelectorTerms = nil
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyAL2,
},
}}
ExpectApplied(ctx, env.Client, nodeClass)
ExpectReconcileSucceeded(ctx, statusController, client.ObjectKeyFromObject(nodeClass))
nodeClass = ExpectExists(ctx, env.Client, nodeClass)
Expand Down Expand Up @@ -236,8 +240,11 @@ var _ = Describe("NodeClass AMI Status Controller", func() {
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s/x86_64/latest/image_id", version): "ami-id-123",
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s/arm64/latest/image_id", version): "ami-id-456",
}
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket
nodeClass.Spec.AMISelectorTerms = nil
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyBottlerocket,
},
}}
awsEnv.EC2API.DescribeImagesOutput.Set(&ec2.DescribeImagesOutput{
Images: []*ec2.Image{
{
Expand Down
62 changes: 51 additions & 11 deletions pkg/providers/amifamily/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,11 @@ var _ = Describe("AMIProvider", func() {
nodeClass = test.EC2NodeClass()
})
It("should succeed to resolve AMIs (AL2)", func() {
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyAL2
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyAL2,
},
}}
awsEnv.SSMAPI.Parameters = map[string]string{
fmt.Sprintf("/aws/service/eks/optimized-ami/%s/amazon-linux-2/recommended/image_id", version): amd64AMI,
fmt.Sprintf("/aws/service/eks/optimized-ami/%s/amazon-linux-2-gpu/recommended/image_id", version): amd64NvidiaAMI,
Expand All @@ -141,7 +145,11 @@ var _ = Describe("AMIProvider", func() {
Expect(amis).To(HaveLen(4))
})
It("should succeed to resolve AMIs (AL2023)", func() {
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyAL2023
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyAL2023,
},
}}
awsEnv.SSMAPI.Parameters = map[string]string{
fmt.Sprintf("/aws/service/eks/optimized-ami/%s/amazon-linux-2023/x86_64/standard/recommended/image_id", version): amd64AMI,
fmt.Sprintf("/aws/service/eks/optimized-ami/%s/amazon-linux-2023/arm64/standard/recommended/image_id", version): arm64AMI,
Expand All @@ -151,7 +159,11 @@ var _ = Describe("AMIProvider", func() {
Expect(amis).To(HaveLen(2))
})
It("should succeed to resolve AMIs (Bottlerocket)", func() {
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyBottlerocket,
},
}}
awsEnv.SSMAPI.Parameters = map[string]string{
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s/x86_64/latest/image_id", version): amd64AMI,
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-nvidia/x86_64/latest/image_id", version): amd64NvidiaAMI,
Expand All @@ -163,7 +175,11 @@ var _ = Describe("AMIProvider", func() {
Expect(amis).To(HaveLen(6))
})
It("should succeed to resolve AMIs (Ubuntu)", func() {
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyUbuntu
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyUbuntu,
},
}}
awsEnv.SSMAPI.Parameters = map[string]string{
fmt.Sprintf("/aws/service/canonical/ubuntu/eks/20.04/%s/stable/current/amd64/hvm/ebs-gp2/ami-id", version): amd64AMI,
fmt.Sprintf("/aws/service/canonical/ubuntu/eks/20.04/%s/stable/current/arm64/hvm/ebs-gp2/ami-id", version): arm64AMI,
Expand All @@ -173,7 +189,11 @@ var _ = Describe("AMIProvider", func() {
Expect(amis).To(HaveLen(2))
})
It("should succeed to resolve AMIs (Windows2019)", func() {
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyWindows2019
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyWindows2019,
},
}}
awsEnv.SSMAPI.Parameters = map[string]string{
fmt.Sprintf("/aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-%s/image_id", version): amd64AMI,
}
Expand All @@ -182,7 +202,11 @@ var _ = Describe("AMIProvider", func() {
Expect(amis).To(HaveLen(1))
})
It("should succeed to resolve AMIs (Windows2022)", func() {
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyWindows2022
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyWindows2022,
},
}}
awsEnv.SSMAPI.Parameters = map[string]string{
fmt.Sprintf("/aws/service/ami-windows-latest/Windows_Server-2022-English-Core-EKS_Optimized-%s/image_id", version): amd64AMI,
}
Expand All @@ -191,14 +215,18 @@ var _ = Describe("AMIProvider", func() {
Expect(amis).To(HaveLen(1))
})
It("should succeed to resolve AMIs (Custom)", func() {
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyCustom
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{}
amis, err := awsEnv.AMIProvider.Get(ctx, nodeClass, &amifamily.Options{})
Expect(err).ToNot(HaveOccurred())
Expect(amis).To(HaveLen(0))
})
Context("SSM Alias Missing", func() {
It("should succeed to partially resolve AMIs if all SSM aliases don't exist (Al2)", func() {
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyAL2
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyAL2,
},
}}
// No GPU AMI exists here
awsEnv.SSMAPI.Parameters = map[string]string{
fmt.Sprintf("/aws/service/eks/optimized-ami/%s/amazon-linux-2/recommended/image_id", version): amd64AMI,
Expand All @@ -210,7 +238,11 @@ var _ = Describe("AMIProvider", func() {
Expect(amis).To(HaveLen(2))
})
It("should succeed to partially resolve AMIs if all SSM aliases don't exist (AL2023)", func() {
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyAL2023
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyAL2023,
},
}}
awsEnv.SSMAPI.Parameters = map[string]string{
fmt.Sprintf("/aws/service/eks/optimized-ami/%s/amazon-linux-2023/x86_64/standard/recommended/image_id", version): amd64AMI,
}
Expand All @@ -219,7 +251,11 @@ var _ = Describe("AMIProvider", func() {
Expect(amis).To(HaveLen(1))
})
It("should succeed to partially resolve AMIs if all SSM aliases don't exist (Bottlerocket)", func() {
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyBottlerocket,
},
}}
// No GPU AMI exists for AM64 here
awsEnv.SSMAPI.Parameters = map[string]string{
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s/x86_64/latest/image_id", version): amd64AMI,
Expand All @@ -232,7 +268,11 @@ var _ = Describe("AMIProvider", func() {
Expect(amis).To(HaveLen(4))
})
It("should succeed to partially resolve AMIs if all SSM aliases don't exist (Ubuntu)", func() {
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyUbuntu
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyUbuntu,
},
}}
// No AMD64 AMI exists here
awsEnv.SSMAPI.Parameters = map[string]string{
fmt.Sprintf("/aws/service/canonical/ubuntu/eks/20.04/%s/stable/current/arm64/hvm/ebs-gp2/ami-id", version): arm64AMI,
Expand Down
7 changes: 7 additions & 0 deletions pkg/test/nodeclass.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ func EC2NodeClass(overrides ...v1beta1.EC2NodeClass) *v1beta1.EC2NodeClass {
if options.Spec.AMIFamily == nil {
options.Spec.AMIFamily = &v1beta1.AMIFamilyAL2
}
if options.Spec.AMISelectorTerms == nil {
options.Spec.AMISelectorTerms = append(options.Spec.AMISelectorTerms, v1beta1.AMISelectorTerm{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyAL2,
},
})
}
if options.Spec.Role == "" {
options.Spec.Role = "test-role"
options.Status.InstanceProfile = "test-profile"
Expand Down
5 changes: 5 additions & 0 deletions test/pkg/environment/aws/environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,11 @@ func GetTimeStreamAPI(session *session.Session) timestreamwriteiface.TimestreamW
func (env *Environment) DefaultEC2NodeClass() *v1beta1.EC2NodeClass {
nodeClass := test.EC2NodeClass()
nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyAL2023
nodeClass.Spec.AMISelectorTerms = []v1beta1.AMISelectorTerm{{
EKSOptimized: &v1beta1.EKSOptimized{
Family: v1beta1.AMIFamilyAL2023,
},
}}
nodeClass.Spec.Tags = map[string]string{
"testing/cluster": env.ClusterName,
}
Expand Down

0 comments on commit 20c9ee0

Please sign in to comment.