@@ -41,6 +41,7 @@ func TestEKSAddonPlan(t *testing.T) {
4141 addonStatusUpdating := string (ekstypes .AddonStatusUpdating )
4242 addonStatusDeleting := string (ekstypes .AddonStatusDeleting )
4343 addonStatusCreating := string (ekstypes .AddonStatusCreating )
44+ addonPreserve := false
4445 created := time .Now ()
4546 maxActiveUpdateDeleteWait := 30 * time .Minute
4647
@@ -176,7 +177,7 @@ func TestEKSAddonPlan(t *testing.T) {
176177 createDesiredAddon (addon1Name , addon1version ),
177178 },
178179 installedAddons : []* EKSAddon {
179- createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusActive ),
180+ createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusActive , false ),
180181 },
181182 expectCreateError : false ,
182183 expectDoError : false ,
@@ -198,7 +199,7 @@ func TestEKSAddonPlan(t *testing.T) {
198199 createDesiredAddon (addon1Name , addon1version ),
199200 },
200201 installedAddons : []* EKSAddon {
201- createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusCreating ),
202+ createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusCreating , addonPreserve ),
202203 },
203204 expectCreateError : false ,
204205 expectDoError : false ,
@@ -236,7 +237,7 @@ func TestEKSAddonPlan(t *testing.T) {
236237 createDesiredAddon (addon1Name , addon1Upgrade ),
237238 },
238239 installedAddons : []* EKSAddon {
239- createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusActive ),
240+ createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusActive , addonPreserve ),
240241 },
241242 expectCreateError : false ,
242243 expectDoError : false ,
@@ -258,7 +259,7 @@ func TestEKSAddonPlan(t *testing.T) {
258259 createDesiredAddon (addon1Name , addon1Upgrade ),
259260 },
260261 installedAddons : []* EKSAddon {
261- createInstalledAddon (addon1Name , addon1Upgrade , addonARN , addonStatusUpdating ),
262+ createInstalledAddon (addon1Name , addon1Upgrade , addonARN , addonStatusUpdating , addonPreserve ),
262263 },
263264 expectCreateError : false ,
264265 expectDoError : false ,
@@ -277,7 +278,7 @@ func TestEKSAddonPlan(t *testing.T) {
277278 createDesiredAddonExtraTag (addon1Name , addon1version ),
278279 },
279280 installedAddons : []* EKSAddon {
280- createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusActive ),
281+ createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusActive , addonPreserve ),
281282 },
282283 expectCreateError : false ,
283284 expectDoError : false ,
@@ -321,7 +322,7 @@ func TestEKSAddonPlan(t *testing.T) {
321322 createDesiredAddonExtraTag (addon1Name , addon1Upgrade ),
322323 },
323324 installedAddons : []* EKSAddon {
324- createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusActive ),
325+ createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusActive , addonPreserve ),
325326 },
326327 expectCreateError : false ,
327328 expectDoError : false ,
@@ -333,6 +334,7 @@ func TestEKSAddonPlan(t *testing.T) {
333334 DeleteAddon (gomock .Eq (context .TODO ()), gomock .Eq (& eks.DeleteAddonInput {
334335 AddonName : & addon1Name ,
335336 ClusterName : & clusterName ,
337+ Preserve : false ,
336338 })).
337339 Return (& eks.DeleteAddonOutput {
338340 Addon : & ekstypes.Addon {
@@ -352,7 +354,39 @@ func TestEKSAddonPlan(t *testing.T) {
352354 }), maxActiveUpdateDeleteWait ).Return (nil )
353355 },
354356 installedAddons : []* EKSAddon {
355- createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusActive ),
357+ createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusActive , addonPreserve ),
358+ },
359+ expectCreateError : false ,
360+ expectDoError : false ,
361+ },
362+ {
363+ name : "1 installed and 0 desired - delete addon & preserve" ,
364+ expect : func (m * mock_eksiface.MockEKSAPIMockRecorder ) {
365+ m .
366+ DeleteAddon (gomock .Eq (context .TODO ()), gomock .Eq (& eks.DeleteAddonInput {
367+ AddonName : & addon1Name ,
368+ ClusterName : & clusterName ,
369+ Preserve : true ,
370+ })).
371+ Return (& eks.DeleteAddonOutput {
372+ Addon : & ekstypes.Addon {
373+ AddonArn : aws .String (addonARN ),
374+ AddonName : aws .String (addon1Name ),
375+ AddonVersion : aws .String (addon1version ),
376+ ClusterName : aws .String (clusterName ),
377+ CreatedAt : & created ,
378+ ModifiedAt : & created ,
379+ Status : ekstypes .AddonStatusDeleting ,
380+ Tags : createTags (),
381+ },
382+ }, nil )
383+ m .WaitUntilAddonDeleted (gomock .Eq (context .TODO ()), gomock .Eq (& eks.DescribeAddonInput {
384+ AddonName : aws .String (addon1Name ),
385+ ClusterName : aws .String (clusterName ),
386+ }), maxActiveUpdateDeleteWait ).Return (nil )
387+ },
388+ installedAddons : []* EKSAddon {
389+ createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusActive , true ),
356390 },
357391 expectCreateError : false ,
358392 expectDoError : false ,
@@ -366,7 +400,7 @@ func TestEKSAddonPlan(t *testing.T) {
366400 }), maxActiveUpdateDeleteWait ).Return (nil )
367401 },
368402 installedAddons : []* EKSAddon {
369- createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusDeleting ),
403+ createInstalledAddon (addon1Name , addon1version , addonARN , addonStatusDeleting , false ),
370404 },
371405 expectCreateError : false ,
372406 expectDoError : false ,
@@ -442,10 +476,11 @@ func createDesiredAddonExtraTag(name, version string) *EKSAddon {
442476 }
443477}
444478
445- func createInstalledAddon (name , version , arn , status string ) * EKSAddon {
479+ func createInstalledAddon (name , version , arn , status string , preserve bool ) * EKSAddon {
446480 desired := createDesiredAddon (name , version )
447481 desired .ARN = & arn
448482 desired .Status = & status
483+ desired .Preserve = preserve
449484
450485 return desired
451486}
0 commit comments