Skip to content

Commit a4f71fb

Browse files
committed
Add configuration adoption test
1 parent 85ed515 commit a4f71fb

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: kafka.services.k8s.aws/v1alpha1
2+
kind: Configuration
3+
metadata:
4+
name: $CONFIG_NAME
5+
annotations:
6+
services.k8s.aws/adoption-policy: adopt
7+
services.k8s.aws/adoption-fields: "$ADOPTION_FIELDS"
8+
9+

test/e2e/resources/configuration_simple.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ apiVersion: kafka.services.k8s.aws/v1alpha1
22
kind: Configuration
33
metadata:
44
name: $CONFIG_NAME
5+
annotations:
6+
services.k8s.aws/delition-policy: $DELETION_POLICY
57
spec:
68
name: $CONFIG_NAME
79
kafkaVersions:

test/e2e/tests/test_configuration.py

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def simple_config():
3535
resource_name = random_suffix_name("my-config", 24)
3636
replacements = REPLACEMENT_VALUES.copy()
3737
replacements["CONFIG_NAME"] = resource_name
38+
replacements["DELETION_POLICY"] = "delete"
3839

3940
resource_data = load_resource(
4041
"configuration_simple", additional_replacements=replacements
@@ -61,6 +62,66 @@ def simple_config():
6162
except:
6263
pass
6364

65+
@pytest.fixture(scope="module")
66+
def adoption_config():
67+
resource_name = random_suffix_name("my-config", 24)
68+
replacements = REPLACEMENT_VALUES.copy()
69+
replacements["CONFIG_NAME"] = resource_name
70+
replacements["DELETION_POLICY"] = "retain"
71+
72+
resource_data = load_resource(
73+
"configuration_simple", additional_replacements=replacements
74+
)
75+
76+
ref = k8s.CustomResourceReference(
77+
CRD_GROUP,
78+
CRD_VERSION,
79+
CONFIG_RESOURCE_PLURAL,
80+
resource_name,
81+
namespace="default",
82+
)
83+
k8s.create_custom_resource(ref, resource_data)
84+
cr = k8s.wait_resource_consumed_by_controller(ref)
85+
86+
assert cr is not None
87+
assert k8s.get_resource_exists(ref)
88+
time.sleep(CREATE_WAIT_SECONDS)
89+
90+
assert "status" in cr
91+
assert "ackResourceMetadata" in cr["status"]
92+
assert "arn" in cr["status"]["ackResourceMetadata"]
93+
arn = cr["status"]["ackResourceMetadata"]["arn"]
94+
95+
#Delete with retain policy allows us to adopt same resource
96+
_, deleted = k8s.delete_custom_resource(ref, 3, 10)
97+
assert deleted
98+
99+
replacements["ADOPTION_FIELDS"] = f'{{\\\"arn\\\": \\\"{arn}\\\"}}'
100+
resource_data = load_resource(
101+
"configuration_adopt", additional_replacements=replacements
102+
)
103+
104+
ref = k8s.CustomResourceReference(
105+
CRD_GROUP,
106+
CRD_VERSION,
107+
CONFIG_RESOURCE_PLURAL,
108+
resource_name,
109+
namespace="default",
110+
)
111+
k8s.create_custom_resource(ref, resource_data)
112+
cr = k8s.wait_resource_consumed_by_controller(ref)
113+
114+
assert cr is not None
115+
assert k8s.get_resource_exists(ref)
116+
117+
yield (ref, cr)
118+
119+
try:
120+
_, deleted = k8s.delete_custom_resource(ref, DELETE_WAIT_SECONDS)
121+
assert deleted
122+
except:
123+
pass
124+
64125

65126
@service_marker
66127
@pytest.mark.canary
@@ -101,3 +162,15 @@ def test_crud(self, simple_config):
101162

102163
latest = get_by_arn(config_arn)
103164
assert latest is None
165+
166+
def test_adopt(seld, adoption_config):
167+
ref, cr = adoption_config
168+
time.sleep(CREATE_WAIT_SECONDS)
169+
170+
assert "status" in cr
171+
assert "ackResourceMetadata" in cr["status"]
172+
assert "arn" in cr["status"]["ackResourceMetadata"]
173+
174+
assert "spec" in cr
175+
assert "serverProperties" in cr["spec"]
176+

0 commit comments

Comments
 (0)