From 65baa5fa6dbe55da06411f7e0c17af5dacfce68e Mon Sep 17 00:00:00 2001 From: Ivan Kolodyazhny Date: Wed, 23 Aug 2017 15:57:21 +0300 Subject: [PATCH] Do not fail on AdminUpdateRow if tenant is not found We still can show instance info on admin/instances page even if tenant is deleted or we can't retrieve tenant's information. Change-Id: Idb1a5ffbb4103cce5258657d559bf4fe784b98d6 Closes-Bug: #1712565 --- openstack_dashboard/api/keystone.py | 6 +++++- .../dashboards/admin/instances/tables.py | 13 +++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/openstack_dashboard/api/keystone.py b/openstack_dashboard/api/keystone.py index 34105af40e..e6894ee41b 100644 --- a/openstack_dashboard/api/keystone.py +++ b/openstack_dashboard/api/keystone.py @@ -338,7 +338,11 @@ def is_domain_admin(request): @profiler.trace def tenant_get(request, project, admin=True): manager = VERSIONS.get_project_manager(request, admin=admin) - return manager.get(project) + try: + return manager.get(project) + except keystone_exceptions.NotFound: + LOG.info("Tenant '%s' not found.", project) + raise @profiler.trace diff --git a/openstack_dashboard/dashboards/admin/instances/tables.py b/openstack_dashboard/dashboards/admin/instances/tables.py index ecdcba973b..b0dc7235a9 100644 --- a/openstack_dashboard/dashboards/admin/instances/tables.py +++ b/openstack_dashboard/dashboards/admin/instances/tables.py @@ -17,6 +17,7 @@ from django.core import urlresolvers from django.template.defaultfilters import title from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ungettext_lazy +from keystoneclient import exceptions as keystone_exceptions from horizon import tables from horizon.utils import filters @@ -89,10 +90,14 @@ class LiveMigrateInstance(policy.PolicyTargetMixin, class AdminUpdateRow(project_tables.UpdateRow): def get_data(self, request, instance_id): instance = super(AdminUpdateRow, self).get_data(request, instance_id) - tenant = api.keystone.tenant_get(request, - instance.tenant_id, - admin=True) - instance.tenant_name = getattr(tenant, "name", None) + try: + tenant = api.keystone.tenant_get(request, + instance.tenant_id, + admin=True) + instance.tenant_name = getattr(tenant, "name", instance.tenant_id) + except keystone_exceptions.NotFound: + instance.tenant_name = None + return instance