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
This commit is contained in:
Ivan Kolodyazhny 2017-08-23 15:57:21 +03:00
parent 01f91bf444
commit 65baa5fa6d
2 changed files with 14 additions and 5 deletions

View File

@ -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

View File

@ -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