github.com/nginxinc/kubernetes-ingress@v1.12.5/tests/suite/test_v_s_route.py (about) 1 import requests 2 import pytest 3 from kubernetes.client.rest import ApiException 4 5 from settings import TEST_DATA 6 from suite.custom_assertions import assert_event_and_count, assert_event_and_get_count, \ 7 assert_event_with_full_equality_and_count 8 from suite.custom_resources_utils import create_virtual_server_from_yaml, \ 9 delete_virtual_server, create_v_s_route_from_yaml, delete_v_s_route, get_vs_nginx_template_conf, \ 10 patch_v_s_route_from_yaml 11 from suite.resources_utils import delete_service, get_first_pod_name, get_events, \ 12 wait_before_test, read_service, replace_service, create_service_with_name 13 from suite.yaml_utils import get_paths_from_vsr_yaml 14 15 16 def assert_responses_and_server_name(resp_1, resp_2, resp_3): 17 assert resp_1.status_code == 200 18 assert "Server name: backend1-" in resp_1.text 19 assert resp_2.status_code == 200 20 assert "Server name: backend3-" in resp_2.text 21 assert resp_3.status_code == 200 22 assert "Server name: backend2-" in resp_3.text 23 24 25 def assert_locations_in_config(config, paths): 26 for path in paths: 27 assert f"location {path}" in config 28 29 30 def assert_locations_not_in_config(config, paths): 31 assert "No such file or directory" not in config 32 for path in paths: 33 assert f"location {path}" not in config 34 35 36 @pytest.mark.smoke 37 @pytest.mark.vsr 38 @pytest.mark.parametrize('crd_ingress_controller, v_s_route_setup', 39 [({"type": "complete", "extra_args": [f"-enable-custom-resources"]}, 40 {"example": "virtual-server-route"})], 41 indirect=True) 42 class TestVirtualServerRoute: 43 def test_responses_and_events_in_flow(self, kube_apis, 44 ingress_controller_prerequisites, 45 crd_ingress_controller, 46 v_s_route_setup, 47 v_s_route_app_setup): 48 req_url = f"http://{v_s_route_setup.public_endpoint.public_ip}:{v_s_route_setup.public_endpoint.port}" 49 ic_pod_name = get_first_pod_name(kube_apis.v1, ingress_controller_prerequisites.namespace) 50 vs_name = f"{v_s_route_setup.namespace}/{v_s_route_setup.vs_name}" 51 vsr_1_name = f"{v_s_route_setup.namespace}/{v_s_route_setup.route_m.name}" 52 vsr_2_name = f"{v_s_route_setup.route_s.namespace}/{v_s_route_setup.route_s.name}" 53 vsr_1_event_text = f"Configuration for {vsr_1_name} was added or updated" 54 vs_event_text = f"Configuration for {vs_name} was added or updated" 55 vs_warning_event_text = f"Configuration for {vs_name} was added or updated with warning(s): VirtualServerRoute {vsr_1_name} doesn't exist or invalid" 56 vsr_2_event_text = f"Configuration for {vsr_2_name} was added or updated" 57 initial_config = get_vs_nginx_template_conf(kube_apis.v1, 58 v_s_route_setup.namespace, 59 v_s_route_setup.vs_name, 60 ic_pod_name, 61 ingress_controller_prerequisites.namespace) 62 63 print("\nStep 1: initial check") 64 resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}", 65 headers={"host": v_s_route_setup.vs_host}) 66 resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[1]}", 67 headers={"host": v_s_route_setup.vs_host}) 68 resp_3 = requests.get(f"{req_url}{v_s_route_setup.route_s.paths[0]}", 69 headers={"host": v_s_route_setup.vs_host}) 70 events_ns_1 = get_events(kube_apis.v1, v_s_route_setup.route_m.namespace) 71 events_ns_2 = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 72 assert_responses_and_server_name(resp_1, resp_2, resp_3) 73 assert_locations_in_config(initial_config, v_s_route_setup.route_m.paths) 74 assert_locations_in_config(initial_config, v_s_route_setup.route_s.paths) 75 initial_count_vsr_1 = assert_event_and_get_count(vsr_1_event_text, events_ns_1) 76 initial_count_vs = assert_event_and_get_count(vs_event_text, events_ns_1) 77 initial_count_vsr_2 = assert_event_and_get_count(vsr_2_event_text, events_ns_2) 78 79 print("\nStep 2: update multiple VSRoute and check") 80 patch_v_s_route_from_yaml(kube_apis.custom_objects, 81 v_s_route_setup.route_m.name, 82 f"{TEST_DATA}/virtual-server-route/route-multiple-updated.yaml", 83 v_s_route_setup.route_m.namespace) 84 new_vsr_paths = get_paths_from_vsr_yaml(f"{TEST_DATA}/virtual-server-route/route-multiple-updated.yaml") 85 wait_before_test(1) 86 resp_1 = requests.get(f"{req_url}{new_vsr_paths[0]}", 87 headers={"host": v_s_route_setup.vs_host}) 88 resp_2 = requests.get(f"{req_url}{new_vsr_paths[1]}", 89 headers={"host": v_s_route_setup.vs_host}) 90 resp_3 = requests.get(f"{req_url}{v_s_route_setup.route_s.paths[0]}", 91 headers={"host": v_s_route_setup.vs_host}) 92 assert_responses_and_server_name(resp_1, resp_2, resp_3) 93 events_ns_1 = get_events(kube_apis.v1, v_s_route_setup.route_m.namespace) 94 events_ns_2 = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 95 assert_event_and_count(vsr_1_event_text, initial_count_vsr_1 + 1, events_ns_1) 96 assert_event_with_full_equality_and_count(vs_event_text, initial_count_vs + 1, events_ns_1) 97 # 2nd VSRoute gets an event about update too 98 assert_event_and_count(vsr_2_event_text, initial_count_vsr_2 + 1, events_ns_2) 99 100 print("\nStep 3: restore VSRoute and check") 101 patch_v_s_route_from_yaml(kube_apis.custom_objects, 102 v_s_route_setup.route_m.name, 103 f"{TEST_DATA}/virtual-server-route/route-multiple.yaml", 104 v_s_route_setup.route_m.namespace) 105 wait_before_test(1) 106 resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}", 107 headers={"host": v_s_route_setup.vs_host}) 108 resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[1]}", 109 headers={"host": v_s_route_setup.vs_host}) 110 resp_3 = requests.get(f"{req_url}{v_s_route_setup.route_s.paths[0]}", 111 headers={"host": v_s_route_setup.vs_host}) 112 assert_responses_and_server_name(resp_1, resp_2, resp_3) 113 events_ns_1 = get_events(kube_apis.v1, v_s_route_setup.route_m.namespace) 114 events_ns_2 = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 115 assert_event_and_count(vsr_1_event_text, initial_count_vsr_1 + 2, events_ns_1) 116 assert_event_with_full_equality_and_count(vs_event_text, initial_count_vs + 2, events_ns_1) 117 assert_event_and_count(vsr_2_event_text, initial_count_vsr_2 + 2, events_ns_2) 118 119 print("\nStep 4: update one backend service port and check") 120 svc_1 = read_service(kube_apis.v1, "backend1-svc", v_s_route_setup.route_m.namespace) 121 svc_1.spec.ports[0].port = 8080 122 replace_service(kube_apis.v1, "backend1-svc", v_s_route_setup.route_m.namespace, svc_1) 123 wait_before_test(1) 124 resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}", 125 headers={"host": v_s_route_setup.vs_host}) 126 resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[1]}", 127 headers={"host": v_s_route_setup.vs_host}) 128 assert resp_1.status_code == 502 129 assert resp_2.status_code == 200 130 events_ns_1 = get_events(kube_apis.v1, v_s_route_setup.route_m.namespace) 131 events_ns_2 = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 132 assert_event_and_count(vsr_1_event_text, initial_count_vsr_1 + 3, events_ns_1) 133 assert_event_with_full_equality_and_count(vs_event_text, initial_count_vs + 3, events_ns_1) 134 assert_event_and_count(vsr_2_event_text, initial_count_vsr_2 + 3, events_ns_2) 135 136 print("\nStep 5: restore backend service and check") 137 svc_1 = read_service(kube_apis.v1, "backend1-svc", v_s_route_setup.route_m.namespace) 138 svc_1.spec.ports[0].port = 80 139 replace_service(kube_apis.v1, "backend1-svc", v_s_route_setup.route_m.namespace, svc_1) 140 wait_before_test(1) 141 resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}", 142 headers={"host": v_s_route_setup.vs_host}) 143 resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[1]}", 144 headers={"host": v_s_route_setup.vs_host}) 145 assert resp_1.status_code == 200 146 assert resp_2.status_code == 200 147 events_ns_1 = get_events(kube_apis.v1, v_s_route_setup.route_m.namespace) 148 events_ns_2 = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 149 assert_event_and_count(vsr_1_event_text, initial_count_vsr_1 + 4, events_ns_1) 150 assert_event_with_full_equality_and_count(vs_event_text, initial_count_vs + 4, events_ns_1) 151 assert_event_and_count(vsr_2_event_text, initial_count_vsr_2 + 4, events_ns_2) 152 153 print("\nStep 6: remove VSRoute and check") 154 delete_v_s_route(kube_apis.custom_objects, v_s_route_setup.route_m.name, v_s_route_setup.namespace) 155 wait_before_test(1) 156 new_config = get_vs_nginx_template_conf(kube_apis.v1, 157 v_s_route_setup.namespace, 158 v_s_route_setup.vs_name, 159 ic_pod_name, 160 ingress_controller_prerequisites.namespace) 161 resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}", 162 headers={"host": v_s_route_setup.vs_host}) 163 resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[1]}", 164 headers={"host": v_s_route_setup.vs_host}) 165 resp_3 = requests.get(f"{req_url}{v_s_route_setup.route_s.paths[0]}", 166 headers={"host": v_s_route_setup.vs_host}) 167 assert resp_1.status_code == 404 168 assert resp_2.status_code == 404 169 assert resp_3.status_code == 200 170 events_ns_1 = get_events(kube_apis.v1, v_s_route_setup.route_m.namespace) 171 events_ns_2 = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 172 assert_locations_not_in_config(new_config, v_s_route_setup.route_m.paths) 173 assert_event_and_count(vsr_1_event_text, initial_count_vsr_1 + 4, events_ns_1) 174 assert_event_with_full_equality_and_count(vs_event_text, initial_count_vs + 4, events_ns_1) 175 # a warning event because the VS references a non-existing VSR 176 assert_event_with_full_equality_and_count(vs_warning_event_text, 1, events_ns_1) 177 assert_event_and_count(vsr_2_event_text, initial_count_vsr_2 + 5, events_ns_2) 178 179 print("\nStep 7: restore VSRoute and check") 180 create_v_s_route_from_yaml(kube_apis.custom_objects, 181 f"{TEST_DATA}/virtual-server-route/route-multiple.yaml", 182 v_s_route_setup.namespace) 183 wait_before_test(1) 184 new_config = get_vs_nginx_template_conf(kube_apis.v1, 185 v_s_route_setup.namespace, 186 v_s_route_setup.vs_name, 187 ic_pod_name, 188 ingress_controller_prerequisites.namespace) 189 resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}", 190 headers={"host": v_s_route_setup.vs_host}) 191 resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[1]}", 192 headers={"host": v_s_route_setup.vs_host}) 193 resp_3 = requests.get(f"{req_url}{v_s_route_setup.route_s.paths[0]}", 194 headers={"host": v_s_route_setup.vs_host}) 195 assert_responses_and_server_name(resp_1, resp_2, resp_3) 196 events_ns_1 = get_events(kube_apis.v1, v_s_route_setup.route_m.namespace) 197 events_ns_2 = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 198 assert_locations_in_config(new_config, v_s_route_setup.route_m.paths) 199 assert_event_and_count(vsr_1_event_text, 1, events_ns_1) 200 assert_event_with_full_equality_and_count(vs_event_text, initial_count_vs + 5, events_ns_1) 201 assert_event_and_count(vsr_2_event_text, initial_count_vsr_2 + 6, events_ns_2) 202 203 print("\nStep 8: remove one backend service and check") 204 delete_service(kube_apis.v1, "backend1-svc", v_s_route_setup.route_m.namespace) 205 wait_before_test(1) 206 resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}", 207 headers={"host": v_s_route_setup.vs_host}) 208 resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[1]}", 209 headers={"host": v_s_route_setup.vs_host}) 210 resp_3 = requests.get(f"{req_url}{v_s_route_setup.route_s.paths[0]}", 211 headers={"host": v_s_route_setup.vs_host}) 212 assert resp_1.status_code == 502 213 assert resp_2.status_code == 200 214 assert resp_3.status_code == 200 215 events_ns_1 = get_events(kube_apis.v1, v_s_route_setup.route_m.namespace) 216 events_ns_2 = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 217 assert_event_and_count(vsr_1_event_text, 2, events_ns_1) 218 assert_event_with_full_equality_and_count(vs_event_text, initial_count_vs + 6, events_ns_1) 219 assert_event_and_count(vsr_2_event_text, initial_count_vsr_2 + 7, events_ns_2) 220 221 print("\nStep 9: restore backend service and check") 222 create_service_with_name(kube_apis.v1, v_s_route_setup.route_m.namespace, "backend1-svc") 223 wait_before_test(1) 224 resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}", 225 headers={"host": v_s_route_setup.vs_host}) 226 resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[1]}", 227 headers={"host": v_s_route_setup.vs_host}) 228 resp_3 = requests.get(f"{req_url}{v_s_route_setup.route_s.paths[0]}", 229 headers={"host": v_s_route_setup.vs_host}) 230 assert_responses_and_server_name(resp_1, resp_2, resp_3) 231 events_ns_1 = get_events(kube_apis.v1, v_s_route_setup.route_m.namespace) 232 events_ns_2 = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 233 assert_event_and_count(vsr_1_event_text, 3, events_ns_1) 234 assert_event_with_full_equality_and_count(vs_event_text, initial_count_vs + 7, events_ns_1) 235 assert_event_and_count(vsr_2_event_text, initial_count_vsr_2 + 8, events_ns_2) 236 237 print("\nStep 10: remove VS and check") 238 delete_virtual_server(kube_apis.custom_objects, v_s_route_setup.vs_name, v_s_route_setup.namespace) 239 wait_before_test(1) 240 resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}", 241 headers={"host": v_s_route_setup.vs_host}) 242 resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[1]}", 243 headers={"host": v_s_route_setup.vs_host}) 244 resp_3 = requests.get(f"{req_url}{v_s_route_setup.route_s.paths[0]}", 245 headers={"host": v_s_route_setup.vs_host}) 246 assert resp_1.status_code == 404 247 assert resp_2.status_code == 404 248 assert resp_3.status_code == 404 249 list0_list_ns_1 = get_events(kube_apis.v1, v_s_route_setup.route_m.namespace) 250 list0_list_ns_2 = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 251 assert_event_and_count(vsr_1_event_text, 3, list0_list_ns_1) 252 assert_event_with_full_equality_and_count(vs_event_text, initial_count_vs + 7, list0_list_ns_1) 253 assert_event_and_count(vsr_2_event_text, initial_count_vsr_2 + 8, list0_list_ns_2) 254 255 print("\nStep 11: restore VS and check") 256 create_virtual_server_from_yaml(kube_apis.custom_objects, 257 f"{TEST_DATA}/virtual-server-route/standard/virtual-server.yaml", 258 v_s_route_setup.namespace) 259 wait_before_test(1) 260 resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}", 261 headers={"host": v_s_route_setup.vs_host}) 262 resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[1]}", 263 headers={"host": v_s_route_setup.vs_host}) 264 resp_3 = requests.get(f"{req_url}{v_s_route_setup.route_s.paths[0]}", 265 headers={"host": v_s_route_setup.vs_host}) 266 assert_responses_and_server_name(resp_1, resp_2, resp_3) 267 list1_list_ns_1 = get_events(kube_apis.v1, v_s_route_setup.route_m.namespace) 268 list1_list_ns_2 = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 269 assert_event_and_count(vsr_1_event_text, 4, list1_list_ns_1) 270 assert_event_with_full_equality_and_count(vs_event_text, 1, list1_list_ns_1) 271 assert_event_and_count(vsr_2_event_text, initial_count_vsr_2 + 9, list1_list_ns_2) 272 273 274 @pytest.mark.vsr 275 @pytest.mark.parametrize('crd_ingress_controller, v_s_route_setup', 276 [({"type": "complete", "extra_args": [f"-enable-custom-resources"]}, 277 {"example": "virtual-server-route"})], 278 indirect=True) 279 class TestVirtualServerRouteValidation: 280 def test_vsr_without_vs(self, kube_apis, 281 ingress_controller_prerequisites, 282 crd_ingress_controller, 283 v_s_route_setup, 284 test_namespace): 285 ic_pod_name = get_first_pod_name(kube_apis.v1, ingress_controller_prerequisites.namespace) 286 vsr_name = create_v_s_route_from_yaml(kube_apis.custom_objects, 287 f"{TEST_DATA}/virtual-server-route/route-orphan.yaml", 288 test_namespace) 289 vsr_paths = get_paths_from_vsr_yaml(f"{TEST_DATA}/virtual-server-route/route-orphan.yaml") 290 wait_before_test(1) 291 new_config = get_vs_nginx_template_conf(kube_apis.v1, 292 v_s_route_setup.namespace, 293 v_s_route_setup.vs_name, 294 ic_pod_name, 295 ingress_controller_prerequisites.namespace) 296 new_list_ns_3 = get_events(kube_apis.v1, test_namespace) 297 assert_locations_not_in_config(new_config, vsr_paths) 298 assert_event_and_count(f"VirtualServer {v_s_route_setup.namespace}/{v_s_route_setup.vs_name} ignores VirtualServerRoute", 1, new_list_ns_3) 299 300 @pytest.mark.parametrize("route_yaml", [f"{TEST_DATA}/virtual-server-route/route-single-invalid-host.yaml", 301 f"{TEST_DATA}/virtual-server-route/route-single-duplicate-path.yaml"]) 302 def test_make_existing_vsr_invalid(self, kube_apis, 303 ingress_controller_prerequisites, 304 crd_ingress_controller, 305 v_s_route_setup, 306 route_yaml): 307 ic_pod_name = get_first_pod_name(kube_apis.v1, ingress_controller_prerequisites.namespace) 308 patch_v_s_route_from_yaml(kube_apis.custom_objects, 309 v_s_route_setup.route_s.name, 310 route_yaml, 311 v_s_route_setup.route_s.namespace) 312 wait_before_test(1) 313 new_config = get_vs_nginx_template_conf(kube_apis.v1, 314 v_s_route_setup.namespace, 315 v_s_route_setup.vs_name, 316 ic_pod_name, 317 ingress_controller_prerequisites.namespace) 318 new_vs_events = get_events(kube_apis.v1, v_s_route_setup.namespace) 319 new_vsr_events = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 320 assert_locations_not_in_config(new_config, v_s_route_setup.route_s.paths) 321 text = f"{v_s_route_setup.route_s.namespace}/{v_s_route_setup.route_s.name}" 322 assert_event_and_count(f"Configuration for {v_s_route_setup.namespace}/{v_s_route_setup.vs_name} was added or updated with warning(s)", 323 1, 324 new_vs_events) 325 326 if route_yaml == f"{TEST_DATA}/virtual-server-route/route-single-invalid-host.yaml": 327 assert_event_and_count(f"VirtualServer is invalid or doesn't exist", 328 1, 329 new_vsr_events) 330 else: 331 assert_event_and_count(f"VirtualServerRoute {text} was rejected with error", 332 1, 333 new_vsr_events) 334 335 336 def test_openapi_validation_flow(self, kube_apis, ingress_controller_prerequisites, 337 crd_ingress_controller, v_s_route_setup): 338 ic_pod_name = get_first_pod_name(kube_apis.v1, ingress_controller_prerequisites.namespace) 339 config_old = get_vs_nginx_template_conf(kube_apis.v1, 340 v_s_route_setup.namespace, 341 v_s_route_setup.vs_name, 342 ic_pod_name, 343 ingress_controller_prerequisites.namespace) 344 route_yaml = f"{TEST_DATA}/virtual-server-route/route-single-invalid-openapi.yaml" 345 try: 346 patch_v_s_route_from_yaml(kube_apis.custom_objects, 347 v_s_route_setup.route_s.name, 348 route_yaml, 349 v_s_route_setup.route_s.namespace) 350 except ApiException as ex: 351 assert ex.status == 422 and "spec.subroutes.action.pass" in ex.body 352 except Exception as ex: 353 pytest.fail(f"An unexpected exception is raised: {ex}") 354 else: 355 pytest.fail("Expected an exception but there was none") 356 357 wait_before_test(1) 358 config_new = get_vs_nginx_template_conf(kube_apis.v1, 359 v_s_route_setup.namespace, 360 v_s_route_setup.vs_name, 361 ic_pod_name, 362 ingress_controller_prerequisites.namespace) 363 assert config_old == config_new, "Expected: config doesn't change" 364 365 366 @pytest.mark.vsr 367 @pytest.mark.parametrize('crd_ingress_controller, v_s_route_setup', 368 [({"type": "complete", "extra_args": [f"-enable-custom-resources"]}, 369 {"example": "virtual-server-route"})], 370 indirect=True) 371 class TestCreateInvalidVirtualServerRoute: 372 def test_create_invalid_vsr(self, kube_apis, 373 ingress_controller_prerequisites, 374 crd_ingress_controller, 375 v_s_route_setup): 376 route_yaml = f"{TEST_DATA}/virtual-server-route/route-single-duplicate-path.yaml" 377 ic_pod_name = get_first_pod_name(kube_apis.v1, ingress_controller_prerequisites.namespace) 378 text = f"{v_s_route_setup.route_s.namespace}/{v_s_route_setup.route_s.name}" 379 vs_event_text = f"Configuration for {v_s_route_setup.namespace}/{v_s_route_setup.vs_name} was added or updated with warning(s)" 380 vsr_event_text = f"VirtualServerRoute {text} was rejected with error: spec.subroutes[1].path: Duplicate value: \"/backend2\"" 381 delete_v_s_route(kube_apis.custom_objects, 382 v_s_route_setup.route_s.name, 383 v_s_route_setup.route_s.namespace) 384 385 create_v_s_route_from_yaml(kube_apis.custom_objects, 386 route_yaml, 387 v_s_route_setup.route_s.namespace) 388 wait_before_test(1) 389 new_config = get_vs_nginx_template_conf(kube_apis.v1, 390 v_s_route_setup.namespace, 391 v_s_route_setup.vs_name, 392 ic_pod_name, 393 ingress_controller_prerequisites.namespace) 394 new_vs_events = get_events(kube_apis.v1, v_s_route_setup.namespace) 395 new_vsr_events = get_events(kube_apis.v1, v_s_route_setup.route_s.namespace) 396 assert_locations_not_in_config(new_config, v_s_route_setup.route_s.paths) 397 assert_event_and_count(vs_event_text, 398 1, 399 new_vs_events) 400 assert_event_and_count(vsr_event_text, 401 1, 402 new_vsr_events)