37
37
# Status.Conditions contains a True ResourceSynced condition.
38
38
CHECK_STATUS_WAIT_SECONDS = 60
39
39
40
+ # It can take a LONG time for the domain's endpoint/endpoints field to be
41
+ # returned, even after Processing=False and the ResourceSynced condition is set
42
+ # to True on a domain. Domain resources are requeued on success which means the
43
+ # controller will poll for latest status, including endpoint/endpoints, every
44
+ # 30 seconds, so 2 minutes *should* be enough here.
45
+ CHECK_ENDPOINT_WAIT_SECONDS = 60 * 2
46
+
40
47
41
48
@dataclass
42
49
class Domain :
@@ -93,7 +100,7 @@ def es_7_9_domain(os_client):
93
100
time .sleep (CHECK_STATUS_WAIT_SECONDS )
94
101
condition .assert_synced (ref )
95
102
96
- yield resource
103
+ yield ref , resource
97
104
98
105
# Delete the k8s resource on teardown of the module
99
106
k8s .delete_custom_resource (ref )
@@ -135,7 +142,7 @@ def es_2d3m_multi_az_no_vpc_7_9_domain(os_client):
135
142
time .sleep (CHECK_STATUS_WAIT_SECONDS )
136
143
condition .assert_synced (ref )
137
144
138
- yield resource
145
+ yield ref , resource
139
146
140
147
# Delete the k8s resource on teardown of the module
141
148
k8s .delete_custom_resource (ref )
@@ -187,7 +194,7 @@ def es_2d3m_multi_az_vpc_2_subnet7_9_domain(os_client, resources: BootstrapResou
187
194
time .sleep (CHECK_STATUS_WAIT_SECONDS )
188
195
condition .assert_synced (ref )
189
196
190
- yield resource
197
+ yield ref , resource
191
198
192
199
# Delete the k8s resource on teardown of the module
193
200
k8s .delete_custom_resource (ref )
@@ -203,35 +210,56 @@ def es_2d3m_multi_az_vpc_2_subnet7_9_domain(os_client, resources: BootstrapResou
203
210
@pytest .mark .canary
204
211
class TestDomain :
205
212
def test_create_delete_es_7_9 (self , es_7_9_domain ):
206
- resource = es_7_9_domain
213
+ ref , resource = es_7_9_domain
214
+
215
+ latest = domain .get (resource .name )
207
216
208
- aws_res = domain .get (resource .name )
217
+ assert latest ['DomainStatus' ]['EngineVersion' ] == 'Elasticsearch_7.9'
218
+ assert latest ['DomainStatus' ]['Created' ] == True
219
+ assert latest ['DomainStatus' ]['ClusterConfig' ]['InstanceCount' ] == resource .data_node_count
220
+ assert latest ['DomainStatus' ]['ClusterConfig' ]['ZoneAwarenessEnabled' ] == resource .is_zone_aware
209
221
210
- assert aws_res ['DomainStatus' ]['EngineVersion' ] == 'Elasticsearch_7.9'
211
- assert aws_res ['DomainStatus' ]['Created' ] == True
212
- assert aws_res ['DomainStatus' ]['ClusterConfig' ]['InstanceCount' ] == resource .data_node_count
213
- assert aws_res ['DomainStatus' ]['ClusterConfig' ]['ZoneAwarenessEnabled' ] == resource .is_zone_aware
222
+ time .sleep (CHECK_ENDPOINT_WAIT_SECONDS )
223
+
224
+ cr = k8s .get_resource (ref )
225
+ assert cr is not None
226
+ assert 'status' in cr
227
+ domain .assert_endpoint (cr )
214
228
215
229
def test_create_delete_es_2d3m_multi_az_no_vpc_7_9 (self , es_2d3m_multi_az_no_vpc_7_9_domain ):
216
- resource = es_2d3m_multi_az_no_vpc_7_9_domain
230
+ ref , resource = es_2d3m_multi_az_no_vpc_7_9_domain
231
+
232
+ latest = domain .get (resource .name )
217
233
218
- aws_res = domain .get (resource .name )
234
+ assert latest ['DomainStatus' ]['EngineVersion' ] == 'Elasticsearch_7.9'
235
+ assert latest ['DomainStatus' ]['Created' ] == True
236
+ assert latest ['DomainStatus' ]['ClusterConfig' ]['InstanceCount' ] == resource .data_node_count
237
+ assert latest ['DomainStatus' ]['ClusterConfig' ]['DedicatedMasterCount' ] == resource .master_node_count
238
+ assert latest ['DomainStatus' ]['ClusterConfig' ]['ZoneAwarenessEnabled' ] == resource .is_zone_aware
219
239
220
- assert aws_res ['DomainStatus' ]['EngineVersion' ] == 'Elasticsearch_7.9'
221
- assert aws_res ['DomainStatus' ]['Created' ] == True
222
- assert aws_res ['DomainStatus' ]['ClusterConfig' ]['InstanceCount' ] == resource .data_node_count
223
- assert aws_res ['DomainStatus' ]['ClusterConfig' ]['DedicatedMasterCount' ] == resource .master_node_count
224
- assert aws_res ['DomainStatus' ]['ClusterConfig' ]['ZoneAwarenessEnabled' ] == resource .is_zone_aware
240
+ time .sleep (CHECK_ENDPOINT_WAIT_SECONDS )
241
+
242
+ cr = k8s .get_resource (ref )
243
+ assert cr is not None
244
+ assert 'status' in cr
245
+ domain .assert_endpoint (cr )
225
246
226
247
def test_create_delete_es_2d3m_multi_az_vpc_2_subnet7_9 (self , es_2d3m_multi_az_vpc_2_subnet7_9_domain ):
227
- resource = es_2d3m_multi_az_vpc_2_subnet7_9_domain
248
+ ref , resource = es_2d3m_multi_az_vpc_2_subnet7_9_domain
249
+
250
+ latest = domain .get (resource .name )
251
+
252
+ assert latest ['DomainStatus' ]['EngineVersion' ] == 'Elasticsearch_7.9'
253
+ assert latest ['DomainStatus' ]['Created' ] == True
254
+ assert latest ['DomainStatus' ]['ClusterConfig' ]['InstanceCount' ] == resource .data_node_count
255
+ assert latest ['DomainStatus' ]['ClusterConfig' ]['DedicatedMasterCount' ] == resource .master_node_count
256
+ assert latest ['DomainStatus' ]['ClusterConfig' ]['ZoneAwarenessEnabled' ] == resource .is_zone_aware
257
+ assert latest ['DomainStatus' ]['VPCOptions' ]['VPCId' ] == resource .vpc_id
258
+ assert set (latest ['DomainStatus' ]['VPCOptions' ]['SubnetIds' ]) == set (resource .vpc_subnets )
228
259
229
- aws_res = domain . get ( resource . name )
260
+ time . sleep ( CHECK_ENDPOINT_WAIT_SECONDS )
230
261
231
- assert aws_res ['DomainStatus' ]['EngineVersion' ] == 'Elasticsearch_7.9'
232
- assert aws_res ['DomainStatus' ]['Created' ] == True
233
- assert aws_res ['DomainStatus' ]['ClusterConfig' ]['InstanceCount' ] == resource .data_node_count
234
- assert aws_res ['DomainStatus' ]['ClusterConfig' ]['DedicatedMasterCount' ] == resource .master_node_count
235
- assert aws_res ['DomainStatus' ]['ClusterConfig' ]['ZoneAwarenessEnabled' ] == resource .is_zone_aware
236
- assert aws_res ['DomainStatus' ]['VPCOptions' ]['VPCId' ] == resource .vpc_id
237
- assert set (aws_res ['DomainStatus' ]['VPCOptions' ]['SubnetIds' ]) == set (resource .vpc_subnets )
262
+ cr = k8s .get_resource (ref )
263
+ assert cr is not None
264
+ assert 'status' in cr
265
+ domain .assert_endpoints (cr )
0 commit comments