@@ -85,6 +85,7 @@ var _ = BeforeEach(func() {
85
85
{Key : aws .String ("Name" ), Value : aws .String (amd64AMI )},
86
86
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
87
87
},
88
+ State : ec2types .ImageStateAvailable ,
88
89
},
89
90
{
90
91
Name : aws .String (arm64AMI ),
@@ -95,6 +96,7 @@ var _ = BeforeEach(func() {
95
96
{Key : aws .String ("Name" ), Value : aws .String (arm64AMI )},
96
97
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
97
98
},
99
+ State : ec2types .ImageStateAvailable ,
98
100
},
99
101
{
100
102
Name : aws .String (amd64NvidiaAMI ),
@@ -105,6 +107,7 @@ var _ = BeforeEach(func() {
105
107
{Key : aws .String ("Name" ), Value : aws .String (amd64NvidiaAMI )},
106
108
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
107
109
},
110
+ State : ec2types .ImageStateAvailable ,
108
111
},
109
112
{
110
113
Name : aws .String (arm64NvidiaAMI ),
@@ -115,6 +118,7 @@ var _ = BeforeEach(func() {
115
118
{Key : aws .String ("Name" ), Value : aws .String (arm64NvidiaAMI )},
116
119
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
117
120
},
121
+ State : ec2types .ImageStateAvailable ,
118
122
},
119
123
},
120
124
})
@@ -228,6 +232,45 @@ var _ = Describe("AMIProvider", func() {
228
232
}
229
233
wg .Wait ()
230
234
})
235
+ DescribeTable (
236
+ "should ignore images when image.state != available" ,
237
+ func (state ec2types.ImageState ) {
238
+ awsEnv .EC2API .DescribeImagesOutput .Set (& ec2.DescribeImagesOutput {Images : []ec2types.Image {
239
+ {
240
+ Name : aws .String (coretest .RandomName ()),
241
+ ImageId : aws .String ("ami-123" ),
242
+ Architecture : "x86_64" ,
243
+ Tags : []ec2types.Tag {{Key : lo .ToPtr ("test" ), Value : lo .ToPtr ("test" )}},
244
+ CreationDate : aws .String ("2022-08-15T12:00:00Z" ),
245
+ State : ec2types .ImageStateAvailable ,
246
+ },
247
+ {
248
+ Name : aws .String (coretest .RandomName ()),
249
+ ImageId : aws .String ("ami-456" ),
250
+ Architecture : "arm64" ,
251
+ Tags : []ec2types.Tag {{Key : lo .ToPtr ("test" ), Value : lo .ToPtr ("test" )}},
252
+ CreationDate : aws .String ("2022-08-15T12:00:00Z" ),
253
+ State : state ,
254
+ },
255
+ }})
256
+ nodeClass .Spec .AMISelectorTerms = []v1.AMISelectorTerm {{
257
+ Tags : map [string ]string {
258
+ "test" : "test" ,
259
+ },
260
+ }}
261
+ amis , err := awsEnv .AMIProvider .List (ctx , nodeClass )
262
+ Expect (err ).ToNot (HaveOccurred ())
263
+ Expect (amis ).To (HaveLen (1 ))
264
+ Expect (amis [0 ].AmiID ).To (Equal ("ami-123" ))
265
+ },
266
+ lo .FilterMap (ec2types .ImageState ("" ).Values (), func (state ec2types.ImageState , _ int ) (TableEntry , bool ) {
267
+ if state == ec2types .ImageStateAvailable {
268
+ return TableEntry {}, false
269
+ }
270
+ return Entry (string (state ), state ), true
271
+ }),
272
+ )
273
+
231
274
Context ("SSM Alias Missing" , func () {
232
275
It ("should succeed to partially resolve AMIs if all SSM aliases don't exist (Al2)" , func () {
233
276
nodeClass .Spec .AMISelectorTerms = []v1.AMISelectorTerm {{Alias : "al2@latest" }}
@@ -278,6 +321,7 @@ var _ = Describe("AMIProvider", func() {
278
321
{Key : aws .String (corev1 .LabelInstanceTypeStable ), Value : aws .String ("m5.large" )},
279
322
{Key : aws .String (corev1 .LabelTopologyZone ), Value : aws .String ("test-zone-1a" )},
280
323
},
324
+ State : ec2types .ImageStateAvailable ,
281
325
}
282
326
awsEnv .EC2API .DescribeImagesOutput .Set (& ec2.DescribeImagesOutput {
283
327
Images : []ec2types.Image {
@@ -329,6 +373,7 @@ var _ = Describe("AMIProvider", func() {
329
373
{Key : aws .String ("Name" ), Value : aws .String (amd64AMI )},
330
374
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
331
375
},
376
+ State : ec2types .ImageStateAvailable ,
332
377
},
333
378
{
334
379
Name : aws .String (amd64AMI ),
@@ -339,6 +384,7 @@ var _ = Describe("AMIProvider", func() {
339
384
{Key : aws .String ("Name" ), Value : aws .String (amd64AMI )},
340
385
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
341
386
},
387
+ State : ec2types .ImageStateAvailable ,
342
388
},
343
389
},
344
390
})
@@ -369,6 +415,7 @@ var _ = Describe("AMIProvider", func() {
369
415
{Key : aws .String ("Name" ), Value : aws .String (amd64AMI )},
370
416
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
371
417
},
418
+ State : ec2types .ImageStateAvailable ,
372
419
},
373
420
{
374
421
Name : aws .String (amd64AMI ),
@@ -380,6 +427,7 @@ var _ = Describe("AMIProvider", func() {
380
427
{Key : aws .String ("Name" ), Value : aws .String (amd64AMI )},
381
428
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
382
429
},
430
+ State : ec2types .ImageStateAvailable ,
383
431
},
384
432
},
385
433
})
@@ -411,6 +459,7 @@ var _ = Describe("AMIProvider", func() {
411
459
{Key : aws .String ("Name" ), Value : aws .String ("test-ami-2" )},
412
460
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
413
461
},
462
+ State : ec2types .ImageStateAvailable ,
414
463
},
415
464
{
416
465
Name : aws .String ("test-ami-1" ),
@@ -422,6 +471,7 @@ var _ = Describe("AMIProvider", func() {
422
471
{Key : aws .String ("Name" ), Value : aws .String ("test-ami-1" )},
423
472
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
424
473
},
474
+ State : ec2types .ImageStateAvailable ,
425
475
},
426
476
},
427
477
})
@@ -452,6 +502,7 @@ var _ = Describe("AMIProvider", func() {
452
502
{Key : aws .String ("Name" ), Value : aws .String (amd64AMI )},
453
503
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
454
504
},
505
+ State : ec2types .ImageStateAvailable ,
455
506
},
456
507
{
457
508
Name : aws .String (amd64AMI ),
@@ -463,6 +514,7 @@ var _ = Describe("AMIProvider", func() {
463
514
{Key : aws .String ("Name" ), Value : aws .String (amd64AMI )},
464
515
{Key : aws .String ("foo" ), Value : aws .String ("bar" )},
465
516
},
517
+ State : ec2types .ImageStateAvailable ,
466
518
},
467
519
},
468
520
})
@@ -498,7 +550,7 @@ var _ = Describe("AMIProvider", func() {
498
550
{
499
551
Filters : []ec2types.Filter {
500
552
{
501
- Name : aws . String ("tag:Name" ),
553
+ Name : lo . ToPtr ("tag:Name" ),
502
554
Values : []string {"my-ami" },
503
555
},
504
556
},
@@ -519,7 +571,7 @@ var _ = Describe("AMIProvider", func() {
519
571
{
520
572
Filters : []ec2types.Filter {
521
573
{
522
- Name : aws . String ("name" ),
574
+ Name : lo . ToPtr ("name" ),
523
575
Values : []string {"my-ami" },
524
576
},
525
577
},
@@ -548,7 +600,7 @@ var _ = Describe("AMIProvider", func() {
548
600
{
549
601
Filters : []ec2types.Filter {
550
602
{
551
- Name : aws . String ("image-id" ),
603
+ Name : lo . ToPtr ("image-id" ),
552
604
Values : []string {"ami-abcd1234" , "ami-cafeaced" },
553
605
},
554
606
},
@@ -599,7 +651,7 @@ var _ = Describe("AMIProvider", func() {
599
651
Owners : []string {"0123456789" },
600
652
Filters : []ec2types.Filter {
601
653
{
602
- Name : aws . String ("name" ),
654
+ Name : lo . ToPtr ("name" ),
603
655
Values : []string {"my-name" },
604
656
},
605
657
},
@@ -608,7 +660,7 @@ var _ = Describe("AMIProvider", func() {
608
660
Owners : []string {"self" },
609
661
Filters : []ec2types.Filter {
610
662
{
611
- Name : aws . String ("name" ),
663
+ Name : lo . ToPtr ("name" ),
612
664
Values : []string {"my-name" },
613
665
},
614
666
},
0 commit comments