23
23
from e2e import service_marker , CRD_GROUP , CRD_VERSION , load_ec2_resource
24
24
from e2e .replacement_values import REPLACEMENT_VALUES
25
25
from e2e .bootstrap_resources import get_bootstrap_resources
26
+ from e2e .tests .helper import EC2Validator
26
27
27
28
RESOURCE_PLURAL = "routetables"
28
29
29
30
DEFAULT_WAIT_AFTER_SECONDS = 5
30
31
CREATE_WAIT_AFTER_SECONDS = 10
31
32
DELETE_WAIT_AFTER_SECONDS = 10
32
33
33
-
34
- def get_route_table (ec2_client , route_table_id : str ) -> dict :
35
- try :
36
- resp = ec2_client .describe_route_tables (
37
- Filters = [{"Name" : "route-table-id" , "Values" : [route_table_id ]}]
38
- )
39
- except Exception as e :
40
- logging .debug (e )
41
- return None
42
-
43
- if len (resp ["RouteTables" ]) == 0 :
44
- return None
45
- return resp ["RouteTables" ][0 ]
46
-
47
-
48
- def route_table_exists (ec2_client , route_table_id : str ) -> bool :
49
- return get_route_table (ec2_client , route_table_id ) is not None
50
-
51
- def get_routes (ec2_client , route_table_id : str ) -> list :
52
- try :
53
- resp = ec2_client .describe_route_tables (
54
- Filters = [{"Name" : "route-table-id" , "Values" : [route_table_id ]}]
55
- )
56
- except Exception as e :
57
- logging .debug (e )
58
- return None
59
-
60
- if len (resp ["RouteTables" ]) == 0 :
61
- return None
62
- return resp ["RouteTables" ][0 ]["Routes" ]
63
-
64
- def route_exists (ec2_client , route_table_id : str , gateway_id : str , origin : str ) -> bool :
65
- routes = get_routes (ec2_client , route_table_id )
66
- for route in routes :
67
- if route ["Origin" ] == origin and route ["GatewayId" ] == gateway_id :
68
- return True
69
- return False
70
-
71
34
@service_marker
72
35
@pytest .mark .canary
73
36
class TestRouteTable :
@@ -107,18 +70,18 @@ def test_create_delete(self, ec2_client):
107
70
108
71
time .sleep (CREATE_WAIT_AFTER_SECONDS )
109
72
110
- # Check Route Table exists
111
- assert route_table_exists (ec2_client , resource_id )
73
+ # Check Route Table exists in AWS
74
+ ec2_validator = EC2Validator (ec2_client )
75
+ ec2_validator .assert_route_table (resource_id )
112
76
113
77
# Delete k8s resource
114
78
_ , deleted = k8s .delete_custom_resource (ref )
115
79
assert deleted is True
116
80
117
81
time .sleep (DELETE_WAIT_AFTER_SECONDS )
118
82
119
- # Check Route Table doesn't exist
120
- exists = route_table_exists (ec2_client , resource_id )
121
- assert not exists
83
+ # Check Route Table no longer exists in AWS
84
+ ec2_validator .assert_route_table (resource_id , exists = False )
122
85
123
86
124
87
def test_terminal_condition (self ):
@@ -189,21 +152,16 @@ def test_crud_route(self, ec2_client):
189
152
190
153
time .sleep (CREATE_WAIT_AFTER_SECONDS )
191
154
192
- # Check Route Table exists
193
- assert route_table_exists (ec2_client , resource_id )
194
-
195
- # Check Routes exist (default and desired)
196
- routes = get_routes (ec2_client , resource_id )
197
- for route in routes :
198
- if route ["GatewayId" ] == "local" :
199
- default_cidr = route ["DestinationCidrBlock" ]
200
- assert route ["Origin" ] == "CreateRouteTable"
201
- elif route ["GatewayId" ] == igw_id :
202
- assert route ["Origin" ] == "CreateRoute"
203
- else :
204
- assert False
155
+ # Check Route Table exists in AWS
156
+ ec2_validator = EC2Validator (ec2_client )
157
+ ec2_validator .assert_route_table (resource_id )
158
+
159
+ # Check Routes exist (default and desired) in AWS
160
+ ec2_validator .assert_route (resource_id , "local" , "CreateRouteTable" )
161
+ ec2_validator .assert_route (resource_id , igw_id , "CreateRoute" )
205
162
206
163
# Update Route
164
+ default_cidr = "10.0.0.0/16"
207
165
updated_cidr = "192.168.1.0/24"
208
166
patch = {"spec" : {"routes" : [
209
167
{
@@ -224,15 +182,6 @@ def test_crud_route(self, ec2_client):
224
182
# assert patched state
225
183
resource = k8s .get_resource (ref )
226
184
assert len (resource ['status' ]['routeStatuses' ]) == 2
227
- for route in resource ['status' ]['routeStatuses' ]:
228
- if route ["gatewayID" ] == "local" :
229
- assert route_exists (ec2_client , resource_id , "local" , "CreateRouteTable" )
230
- elif route ["gatewayID" ] == igw_id :
231
- # origin and state are set server-side
232
- assert route_exists (ec2_client , resource_id , igw_id , "CreateRoute" )
233
- assert route ["state" ] == "active"
234
- else :
235
- assert False
236
185
237
186
# Delete Route
238
187
patch = {"spec" : {"routes" : [
@@ -248,12 +197,10 @@ def test_crud_route(self, ec2_client):
248
197
249
198
resource = k8s .get_resource (ref )
250
199
assert len (resource ['spec' ]['routes' ]) == 1
251
- for route in resource ['spec' ]['routes' ]:
252
- if route ["gatewayID" ] == "local" :
253
- assert route_exists (ec2_client , resource_id , "local" , "CreateRouteTable" )
254
- else :
255
- assert False
256
200
201
+ # Route should no longer exist in AWS (default will remain)
202
+ ec2_validator .assert_route (resource_id , "local" , "CreateRouteTable" )
203
+ ec2_validator .assert_route (resource_id , igw_id , "CreateRoute" , exists = False )
257
204
258
205
# Should not be able to delete default route
259
206
patch = {"spec" : {"routes" : [
@@ -273,6 +220,5 @@ def test_crud_route(self, ec2_client):
273
220
274
221
time .sleep (DELETE_WAIT_AFTER_SECONDS )
275
222
276
- # Check Route Table doesn't exist
277
- exists = route_table_exists (ec2_client , resource_id )
278
- assert not exists
223
+ # Check Route Table no longer exists in AWS
224
+ ec2_validator .assert_route_table (resource_id , exists = False )
0 commit comments