do best-effort cleanup even if some resources not found (#26248)

* do best-effort cleanup even if some resources not found

* log deletions

* fix log

* yapf
pull/26326/head
Eric Gribkoff 4 years ago committed by GitHub
parent aaa7f13b17
commit ea4232e04d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 59
      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): def get_health_check(gcp, health_check_name):
try:
result = gcp.compute.healthChecks().get( result = gcp.compute.healthChecks().get(
project=gcp.project, healthCheck=health_check_name).execute() project=gcp.project, healthCheck=health_check_name).execute()
gcp.health_check = GcpResource(health_check_name, result['selfLink']) 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): def get_health_check_firewall_rule(gcp, firewall_name):
try:
result = gcp.compute.firewalls().get(project=gcp.project, result = gcp.compute.firewalls().get(project=gcp.project,
firewall=firewall_name).execute() firewall=firewall_name).execute()
gcp.health_check_firewall_rule = GcpResource(firewall_name, gcp.health_check_firewall_rule = GcpResource(firewall_name,
result['selfLink']) 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): def get_backend_service(gcp, backend_service_name):
try:
result = gcp.compute.backendServices().get( result = gcp.compute.backendServices().get(
project=gcp.project, backendService=backend_service_name).execute() project=gcp.project, backendService=backend_service_name).execute()
backend_service = GcpResource(backend_service_name, result['selfLink']) 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) gcp.backend_services.append(backend_service)
return backend_service return backend_service
def get_url_map(gcp, url_map_name): def get_url_map(gcp, url_map_name):
try:
result = gcp.compute.urlMaps().get(project=gcp.project, result = gcp.compute.urlMaps().get(project=gcp.project,
urlMap=url_map_name).execute() urlMap=url_map_name).execute()
gcp.url_map = GcpResource(url_map_name, result['selfLink']) 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): def get_target_proxy(gcp, target_proxy_name):
try:
if gcp.alpha_compute: if gcp.alpha_compute:
result = gcp.alpha_compute.targetGrpcProxies().get( result = gcp.alpha_compute.targetGrpcProxies().get(
project=gcp.project, targetGrpcProxy=target_proxy_name).execute() project=gcp.project,
targetGrpcProxy=target_proxy_name).execute()
else: else:
result = gcp.compute.targetHttpProxies().get( result = gcp.compute.targetHttpProxies().get(
project=gcp.project, targetHttpProxy=target_proxy_name).execute() project=gcp.project,
targetHttpProxy=target_proxy_name).execute()
gcp.target_proxy = GcpResource(target_proxy_name, result['selfLink']) 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): def get_global_forwarding_rule(gcp, forwarding_rule_name):
try:
result = gcp.compute.globalForwardingRules().get( result = gcp.compute.globalForwardingRules().get(
project=gcp.project, forwardingRule=forwarding_rule_name).execute() project=gcp.project, forwardingRule=forwarding_rule_name).execute()
gcp.global_forwarding_rule = GcpResource(forwarding_rule_name, gcp.global_forwarding_rule = GcpResource(forwarding_rule_name,
result['selfLink']) 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): def get_instance_template(gcp, template_name):
try:
result = gcp.compute.instanceTemplates().get( result = gcp.compute.instanceTemplates().get(
project=gcp.project, instanceTemplate=template_name).execute() project=gcp.project, instanceTemplate=template_name).execute()
gcp.instance_template = GcpResource(template_name, result['selfLink']) 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): def get_instance_group(gcp, zone, instance_group_name):
try:
result = gcp.compute.instanceGroups().get( result = gcp.compute.instanceGroups().get(
project=gcp.project, zone=zone, project=gcp.project, zone=zone,
instanceGroup=instance_group_name).execute() instanceGroup=instance_group_name).execute()
gcp.service_port = result['namedPorts'][0]['port'] gcp.service_port = result['namedPorts'][0]['port']
instance_group = InstanceGroup(instance_group_name, result['selfLink'], instance_group = InstanceGroup(instance_group_name, result['selfLink'],
zone) zone)
except Exception as e:
gcp.errors.append(e)
instance_group = InstanceGroup(instance_group_name, None, zone)
gcp.instance_groups.append(instance_group) gcp.instance_groups.append(instance_group)
return instance_group return instance_group
@ -2603,6 +2637,7 @@ def delete_global_forwarding_rule(gcp, name=None):
else: else:
forwarding_rule_to_delete = gcp.global_forwarding_rule.name forwarding_rule_to_delete = gcp.global_forwarding_rule.name
try: try:
logger.debug('Deleting forwarding rule %s', forwarding_rule_to_delete)
result = gcp.compute.globalForwardingRules().delete( result = gcp.compute.globalForwardingRules().delete(
project=gcp.project, project=gcp.project,
forwardingRule=forwarding_rule_to_delete).execute( forwardingRule=forwarding_rule_to_delete).execute(
@ -2619,10 +2654,12 @@ def delete_target_proxy(gcp, name=None):
proxy_to_delete = gcp.target_proxy.name proxy_to_delete = gcp.target_proxy.name
try: try:
if gcp.alpha_compute: if gcp.alpha_compute:
logger.debug('Deleting grpc proxy %s', proxy_to_delete)
result = gcp.alpha_compute.targetGrpcProxies().delete( result = gcp.alpha_compute.targetGrpcProxies().delete(
project=gcp.project, targetGrpcProxy=proxy_to_delete).execute( project=gcp.project, targetGrpcProxy=proxy_to_delete).execute(
num_retries=_GCP_API_RETRIES) num_retries=_GCP_API_RETRIES)
else: else:
logger.debug('Deleting http proxy %s', proxy_to_delete)
result = gcp.compute.targetHttpProxies().delete( result = gcp.compute.targetHttpProxies().delete(
project=gcp.project, targetHttpProxy=proxy_to_delete).execute( project=gcp.project, targetHttpProxy=proxy_to_delete).execute(
num_retries=_GCP_API_RETRIES) num_retries=_GCP_API_RETRIES)
@ -2637,6 +2674,7 @@ def delete_url_map(gcp, name=None):
else: else:
url_map_to_delete = gcp.url_map.name url_map_to_delete = gcp.url_map.name
try: try:
logger.debug('Deleting url map %s', url_map_to_delete)
result = gcp.compute.urlMaps().delete( result = gcp.compute.urlMaps().delete(
project=gcp.project, project=gcp.project,
urlMap=url_map_to_delete).execute(num_retries=_GCP_API_RETRIES) 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): def delete_backend_service(gcp, backend_service):
try: try:
logger.debug('Deleting backend service %s', backend_service.name)
result = gcp.compute.backendServices().delete( result = gcp.compute.backendServices().delete(
project=gcp.project, backendService=backend_service.name).execute( project=gcp.project, backendService=backend_service.name).execute(
num_retries=_GCP_API_RETRIES) num_retries=_GCP_API_RETRIES)
@ -2662,6 +2701,8 @@ def delete_backend_services(gcp):
def delete_firewall(gcp): def delete_firewall(gcp):
try: try:
logger.debug('Deleting firewall %s',
gcp.health_check_firewall_rule.name)
result = gcp.compute.firewalls().delete( result = gcp.compute.firewalls().delete(
project=gcp.project, project=gcp.project,
firewall=gcp.health_check_firewall_rule.name).execute( firewall=gcp.health_check_firewall_rule.name).execute(
@ -2673,6 +2714,7 @@ def delete_firewall(gcp):
def delete_health_check(gcp): def delete_health_check(gcp):
try: try:
logger.debug('Deleting health check %s', gcp.health_check.name)
result = gcp.compute.healthChecks().delete( result = gcp.compute.healthChecks().delete(
project=gcp.project, healthCheck=gcp.health_check.name).execute( project=gcp.project, healthCheck=gcp.health_check.name).execute(
num_retries=_GCP_API_RETRIES) num_retries=_GCP_API_RETRIES)
@ -2684,6 +2726,8 @@ def delete_health_check(gcp):
def delete_instance_groups(gcp): def delete_instance_groups(gcp):
for instance_group in gcp.instance_groups: for instance_group in gcp.instance_groups:
try: try:
logger.debug('Deleting instance group %s %s', instance_group.name,
instance_group.zone)
result = gcp.compute.instanceGroupManagers().delete( result = gcp.compute.instanceGroupManagers().delete(
project=gcp.project, project=gcp.project,
zone=instance_group.zone, zone=instance_group.zone,
@ -2699,6 +2743,8 @@ def delete_instance_groups(gcp):
def delete_instance_template(gcp): def delete_instance_template(gcp):
try: try:
logger.debug('Deleting instance template %s',
gcp.instance_template.name)
result = gcp.compute.instanceTemplates().delete( result = gcp.compute.instanceTemplates().delete(
project=gcp.project, project=gcp.project,
instanceTemplate=gcp.instance_template.name).execute( instanceTemplate=gcp.instance_template.name).execute(
@ -2948,6 +2994,7 @@ class GcpState(object):
self.service_port = None self.service_port = None
self.instance_template = None self.instance_template = None
self.instance_groups = [] self.instance_groups = []
self.errors = []
alpha_compute = None alpha_compute = None
@ -3005,13 +3052,7 @@ try:
if args.use_existing_gcp_resources: if args.use_existing_gcp_resources:
logger.info('Reusing existing GCP resources') logger.info('Reusing existing GCP resources')
get_health_check(gcp, health_check_name) get_health_check(gcp, health_check_name)
try:
get_health_check_firewall_rule(gcp, firewall_name) 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)
backend_service = get_backend_service(gcp, backend_service_name) backend_service = get_backend_service(gcp, backend_service_name)
alternate_backend_service = get_backend_service( alternate_backend_service = get_backend_service(
gcp, alternate_backend_service_name) gcp, alternate_backend_service_name)
@ -3024,6 +3065,8 @@ try:
gcp, args.zone, same_zone_instance_group_name) gcp, args.zone, same_zone_instance_group_name)
secondary_zone_instance_group = get_instance_group( secondary_zone_instance_group = get_instance_group(
gcp, args.secondary_zone, secondary_zone_instance_group_name) gcp, args.secondary_zone, secondary_zone_instance_group_name)
if gcp.errors:
raise Exception(gcp.errors)
else: else:
create_health_check_firewall_rule(gcp, firewall_name) create_health_check_firewall_rule(gcp, firewall_name)
backend_service = add_backend_service(gcp, backend_service_name) backend_service = add_backend_service(gcp, backend_service_name)

Loading…
Cancel
Save