@@ -139,6 +139,37 @@ def simple_cluster_version_minus_2(eks_client):
139
139
except :
140
140
pass
141
141
142
+ @pytest .fixture
143
+ def adoption_cluster (eks_client ):
144
+ adopted_cluster = get_bootstrap_resources ().AdoptionCluster
145
+ cluster_name = adopted_cluster .name
146
+ replacements = REPLACEMENT_VALUES .copy ()
147
+ replacements ["CLUSTER_ADOPTION_NAME" ] = cluster_name
148
+ replacements ["ADOPTION_POLICY" ] = "adopt"
149
+ replacements ["ADOPTION_FIELDS" ] = f"{{\\ \" name\\ \" : \\ \" { cluster_name } \\ \" }}"
150
+
151
+ resource_data = load_eks_resource (
152
+ "cluster_adoption" ,
153
+ additional_replacements = replacements ,
154
+ )
155
+ logging .debug (resource_data )
156
+
157
+ # Create the k8s resource
158
+ ref = k8s .CustomResourceReference (
159
+ CRD_GROUP , CRD_VERSION , CLUSTER_RESOURCE_PLURAL ,
160
+ cluster_name , namespace = "default" ,
161
+ )
162
+ k8s .create_custom_resource (ref , resource_data )
163
+ cr = k8s .wait_resource_consumed_by_controller (ref , wait_periods = 15 )
164
+ assert cr is not None
165
+ assert k8s .get_resource_exists (ref )
166
+
167
+ yield (ref , cr )
168
+
169
+ _ , deleted = k8s .delete_custom_resource (ref , 3 , 10 )
170
+ assert deleted
171
+
172
+
142
173
@service_marker
143
174
@pytest .mark .canary
144
175
class TestCluster :
@@ -380,3 +411,41 @@ def test_update_cluster_update_policy(self, eks_client, simple_cluster):
380
411
# At this point, the cluster should be active again at version 1.28
381
412
aws_res = eks_client .describe_cluster (name = cluster_name )
382
413
assert aws_res ["cluster" ]["upgradePolicy" ]["supportType" ] == "STANDARD"
414
+
415
+ def test_cluster_adopt_update (self , eks_client , adoption_cluster ):
416
+ (ref , cr ) = adoption_cluster
417
+
418
+ assert 'spec' in cr
419
+ assert 'name' in cr ['spec' ]
420
+ cluster_name = cr ["spec" ]["name" ]
421
+
422
+ wait_for_cluster_active (eks_client , cluster_name )
423
+
424
+ assert 'upgradePolicy' in cr ['spec' ]
425
+ assert 'supportType' in cr ['spec' ]['upgradePolicy' ]
426
+ support_type = cr ['spec' ]['upgradePolicy' ]['supportType' ]
427
+ if support_type == 'STANDARD' :
428
+ support_type = 'EXTENDED'
429
+ else :
430
+ support_type = 'STANDARD'
431
+
432
+ # Update the cluster name
433
+ updates = {
434
+ "spec" : {
435
+ "upgradePolicy" : {
436
+ "supportType" : support_type
437
+ }
438
+ }
439
+ }
440
+
441
+ k8s .patch_custom_resource (ref , updates )
442
+ time .sleep (MODIFY_WAIT_AFTER_SECONDS * 2 )
443
+
444
+ # Wait for the updating to become active again
445
+ wait_for_cluster_active (eks_client , cluster_name )
446
+
447
+ # At this point, the cluster should be active again at version 1.28
448
+ aws_res = eks_client .describe_cluster (name = cluster_name )
449
+ assert aws_res
450
+ assert aws_res ["cluster" ]["upgradePolicy" ]["supportType" ] == support_type
451
+
0 commit comments