diff --git a/tools/run_tests/run_xds_tests.py b/tools/run_tests/run_xds_tests.py index 9b193abdb41..9fbdacef9d0 100755 --- a/tools/run_tests/run_xds_tests.py +++ b/tools/run_tests/run_xds_tests.py @@ -2537,62 +2537,96 @@ def create_global_forwarding_rule(gcp, def get_health_check(gcp, health_check_name): - result = gcp.compute.healthChecks().get( - project=gcp.project, healthCheck=health_check_name).execute() - gcp.health_check = GcpResource(health_check_name, result['selfLink']) + try: + result = gcp.compute.healthChecks().get( + project=gcp.project, healthCheck=health_check_name).execute() + gcp.health_check = GcpResource(health_check_name, result['selfLink']) + except Exception as e: + gcp.errors.append(e) + gcp.health_check = GcpResource(health_check_name, None) def get_health_check_firewall_rule(gcp, firewall_name): - result = gcp.compute.firewalls().get(project=gcp.project, - firewall=firewall_name).execute() - gcp.health_check_firewall_rule = GcpResource(firewall_name, - result['selfLink']) + try: + result = gcp.compute.firewalls().get(project=gcp.project, + firewall=firewall_name).execute() + gcp.health_check_firewall_rule = GcpResource(firewall_name, + result['selfLink']) + except Exception as e: + gcp.errors.append(e) + gcp.health_check_firewall_rule = GcpResource(firewall_name, None) def get_backend_service(gcp, backend_service_name): - result = gcp.compute.backendServices().get( - project=gcp.project, backendService=backend_service_name).execute() - backend_service = GcpResource(backend_service_name, result['selfLink']) + try: + result = gcp.compute.backendServices().get( + project=gcp.project, backendService=backend_service_name).execute() + backend_service = GcpResource(backend_service_name, result['selfLink']) + except Exception as e: + gcp.errors.append(e) + backend_service = GcpResource(backend_service_name, None) gcp.backend_services.append(backend_service) return backend_service def get_url_map(gcp, url_map_name): - result = gcp.compute.urlMaps().get(project=gcp.project, - urlMap=url_map_name).execute() - gcp.url_map = GcpResource(url_map_name, result['selfLink']) + try: + result = gcp.compute.urlMaps().get(project=gcp.project, + urlMap=url_map_name).execute() + gcp.url_map = GcpResource(url_map_name, result['selfLink']) + except Exception as e: + gcp.errors.append(e) + gcp.url_map = GcpResource(url_map_name, None) def get_target_proxy(gcp, target_proxy_name): - if gcp.alpha_compute: - result = gcp.alpha_compute.targetGrpcProxies().get( - project=gcp.project, targetGrpcProxy=target_proxy_name).execute() - else: - result = gcp.compute.targetHttpProxies().get( - project=gcp.project, targetHttpProxy=target_proxy_name).execute() - gcp.target_proxy = GcpResource(target_proxy_name, result['selfLink']) + try: + if gcp.alpha_compute: + result = gcp.alpha_compute.targetGrpcProxies().get( + project=gcp.project, + targetGrpcProxy=target_proxy_name).execute() + else: + result = gcp.compute.targetHttpProxies().get( + project=gcp.project, + targetHttpProxy=target_proxy_name).execute() + gcp.target_proxy = GcpResource(target_proxy_name, result['selfLink']) + except Exception as e: + gcp.errors.append(e) + gcp.target_proxy = GcpResource(target_proxy_name, None) def get_global_forwarding_rule(gcp, forwarding_rule_name): - result = gcp.compute.globalForwardingRules().get( - project=gcp.project, forwardingRule=forwarding_rule_name).execute() - gcp.global_forwarding_rule = GcpResource(forwarding_rule_name, - result['selfLink']) + try: + result = gcp.compute.globalForwardingRules().get( + project=gcp.project, forwardingRule=forwarding_rule_name).execute() + gcp.global_forwarding_rule = GcpResource(forwarding_rule_name, + result['selfLink']) + except Exception as e: + gcp.errors.append(e) + gcp.global_forwarding_rule = GcpResource(forwarding_rule_name, None) def get_instance_template(gcp, template_name): - result = gcp.compute.instanceTemplates().get( - project=gcp.project, instanceTemplate=template_name).execute() - gcp.instance_template = GcpResource(template_name, result['selfLink']) + try: + result = gcp.compute.instanceTemplates().get( + project=gcp.project, instanceTemplate=template_name).execute() + gcp.instance_template = GcpResource(template_name, result['selfLink']) + except Exception as e: + gcp.errors.append(e) + gcp.instance_template = GcpResource(template_name, None) def get_instance_group(gcp, zone, instance_group_name): - result = gcp.compute.instanceGroups().get( - project=gcp.project, zone=zone, - instanceGroup=instance_group_name).execute() - gcp.service_port = result['namedPorts'][0]['port'] - instance_group = InstanceGroup(instance_group_name, result['selfLink'], - zone) + try: + result = gcp.compute.instanceGroups().get( + project=gcp.project, zone=zone, + instanceGroup=instance_group_name).execute() + gcp.service_port = result['namedPorts'][0]['port'] + instance_group = InstanceGroup(instance_group_name, result['selfLink'], + zone) + except Exception as e: + gcp.errors.append(e) + instance_group = InstanceGroup(instance_group_name, None, zone) gcp.instance_groups.append(instance_group) return instance_group @@ -2603,6 +2637,7 @@ def delete_global_forwarding_rule(gcp, name=None): else: forwarding_rule_to_delete = gcp.global_forwarding_rule.name try: + logger.debug('Deleting forwarding rule %s', forwarding_rule_to_delete) result = gcp.compute.globalForwardingRules().delete( project=gcp.project, forwardingRule=forwarding_rule_to_delete).execute( @@ -2619,10 +2654,12 @@ def delete_target_proxy(gcp, name=None): proxy_to_delete = gcp.target_proxy.name try: if gcp.alpha_compute: + logger.debug('Deleting grpc proxy %s', proxy_to_delete) result = gcp.alpha_compute.targetGrpcProxies().delete( project=gcp.project, targetGrpcProxy=proxy_to_delete).execute( num_retries=_GCP_API_RETRIES) else: + logger.debug('Deleting http proxy %s', proxy_to_delete) result = gcp.compute.targetHttpProxies().delete( project=gcp.project, targetHttpProxy=proxy_to_delete).execute( num_retries=_GCP_API_RETRIES) @@ -2637,6 +2674,7 @@ def delete_url_map(gcp, name=None): else: url_map_to_delete = gcp.url_map.name try: + logger.debug('Deleting url map %s', url_map_to_delete) result = gcp.compute.urlMaps().delete( project=gcp.project, urlMap=url_map_to_delete).execute(num_retries=_GCP_API_RETRIES) @@ -2647,6 +2685,7 @@ def delete_url_map(gcp, name=None): def delete_backend_service(gcp, backend_service): try: + logger.debug('Deleting backend service %s', backend_service.name) result = gcp.compute.backendServices().delete( project=gcp.project, backendService=backend_service.name).execute( num_retries=_GCP_API_RETRIES) @@ -2662,6 +2701,8 @@ def delete_backend_services(gcp): def delete_firewall(gcp): try: + logger.debug('Deleting firewall %s', + gcp.health_check_firewall_rule.name) result = gcp.compute.firewalls().delete( project=gcp.project, firewall=gcp.health_check_firewall_rule.name).execute( @@ -2673,6 +2714,7 @@ def delete_firewall(gcp): def delete_health_check(gcp): try: + logger.debug('Deleting health check %s', gcp.health_check.name) result = gcp.compute.healthChecks().delete( project=gcp.project, healthCheck=gcp.health_check.name).execute( num_retries=_GCP_API_RETRIES) @@ -2684,6 +2726,8 @@ def delete_health_check(gcp): def delete_instance_groups(gcp): for instance_group in gcp.instance_groups: try: + logger.debug('Deleting instance group %s %s', instance_group.name, + instance_group.zone) result = gcp.compute.instanceGroupManagers().delete( project=gcp.project, zone=instance_group.zone, @@ -2699,6 +2743,8 @@ def delete_instance_groups(gcp): def delete_instance_template(gcp): try: + logger.debug('Deleting instance template %s', + gcp.instance_template.name) result = gcp.compute.instanceTemplates().delete( project=gcp.project, instanceTemplate=gcp.instance_template.name).execute( @@ -2948,6 +2994,7 @@ class GcpState(object): self.service_port = None self.instance_template = None self.instance_groups = [] + self.errors = [] alpha_compute = None @@ -3005,13 +3052,7 @@ try: if args.use_existing_gcp_resources: logger.info('Reusing existing GCP resources') get_health_check(gcp, health_check_name) - try: - get_health_check_firewall_rule(gcp, firewall_name) - except googleapiclient.errors.HttpError as http_error: - # Firewall rule may be auto-deleted periodically depending on GCP - # project settings. - logger.exception('Failed to find firewall rule, recreating') - create_health_check_firewall_rule(gcp, firewall_name) + get_health_check_firewall_rule(gcp, firewall_name) backend_service = get_backend_service(gcp, backend_service_name) alternate_backend_service = get_backend_service( gcp, alternate_backend_service_name) @@ -3024,6 +3065,8 @@ try: gcp, args.zone, same_zone_instance_group_name) secondary_zone_instance_group = get_instance_group( gcp, args.secondary_zone, secondary_zone_instance_group_name) + if gcp.errors: + raise Exception(gcp.errors) else: create_health_check_firewall_rule(gcp, firewall_name) backend_service = add_backend_service(gcp, backend_service_name)