@@ -132,12 +132,43 @@ var _ = AfterSuite(func() {
132132 Expect (env .Stop ()).To (Succeed (), "Failed to stop environment" )
133133})
134134
135+ type MockVersionProvider struct {
136+ version string
137+ }
138+
139+ func (m * MockVersionProvider ) Get (ctx context.Context ) string {
140+ return m .version
141+ }
142+
143+ func amiProviderWithEKSVersionOverride (version string ) * amifamily.DefaultProvider {
144+ mockVersionProvider := & MockVersionProvider {version : version }
145+ return amifamily .NewDefaultProvider (awsEnv .Clock , mockVersionProvider , awsEnv .SSMProvider , awsEnv .EC2API , awsEnv .EC2Cache )
146+ }
147+
135148var _ = Describe ("AMIProvider" , func () {
136149 var version string
137150 BeforeEach (func () {
138151 version = awsEnv .VersionProvider .Get (ctx )
139152 nodeClass = test .EC2NodeClass ()
140153 })
154+ DescribeTable (
155+ "should fail when AL2 is used with Kubernetes version 1.33 or greater" ,
156+ func (k8sVersion string , amiAlias string , expectError bool ) {
157+ amiProvider := amiProviderWithEKSVersionOverride (k8sVersion )
158+ nodeClass .Spec .AMISelectorTerms = []v1.AMISelectorTerm {{Alias : amiAlias }}
159+ _ , err := amiProvider .DescribeImageQueries (ctx , nodeClass )
160+ if expectError {
161+ Expect (err ).To (HaveOccurred ())
162+ } else {
163+ Expect (err ).ToNot (HaveOccurred ())
164+ }
165+ },
166+ Entry ("should fail for AL2 on 1.33.0" , "1.33.0" , "al2@latest" , true ),
167+ Entry ("should fail for AL2 on 1.34.2" , "1.34.2" , "al2@latest" , true ),
168+ Entry ("should succeed for AL2 on 1.32.0" , "1.32.0" , "al2@latest" , false ),
169+ Entry ("should succeed for AL2023 on 1.33.0" , "1.33.0" , "al2023@latest" , false ),
170+ )
171+
141172 It ("should succeed to resolve AMIs (AL2)" , func () {
142173 nodeClass .Spec .AMISelectorTerms = []v1.AMISelectorTerm {{Alias : "al2@latest" }}
143174 awsEnv .SSMAPI .Parameters = map [string ]string {
0 commit comments