Fix neutron V2 No valid authentication is available problem

neutron v2 client need admin context, or it will cause the failure

Change-Id: I3a7d1eee60dd513756755f1da29c131e543cebb0
Closes-Bug: #1469625
This commit is contained in:
Jerry Cai 2015-06-29 16:03:43 +08:00
parent 6d39c193f7
commit b8cc4d3065
1 changed files with 11 additions and 7 deletions

View File

@ -95,6 +95,7 @@ class PowerVCCloudManager(manager.Manager):
orig_ctx = nova.context.get_admin_context()
orig_ctx.project_id = keystone.tenant_id
orig_ctx.user_id = keystone.user_id
self.admin_context = orig_ctx
ctx = ctx_delegate.context_dynamic_auth_token(orig_ctx, keystone)
self.project_id = CONF.powervc.admin_tenant_name
@ -669,7 +670,8 @@ class PowerVCCloudManager(manager.Manager):
objects.Instance(),
local_instance)
try:
self.network_api.deallocate_for_instance(ctx, local_instance)
self.network_api.deallocate_for_instance(self.admin_context,
local_instance)
except Exception:
LOG.warning(_("Deallocate_for_instance failed."))
@ -2003,18 +2005,19 @@ class PowerVCCloudManager(manager.Manager):
search_opts = {'device_id': instance['uuid'],
'tenant_id': instance['project_id']}
try:
data = self.network_api.list_ports(context, **search_opts)
data = self.network_api.list_ports(self.admin_context,
**search_opts)
except Exception, e:
LOG.error(_("_fix_instance_nw_info failed: %s") %
LOG.warning(_("_fix_instance_nw_info failed: %s") %
(e))
return
ports = data.get('ports', [])
# If ports is not empty, should put that into network_info.
if ports:
try:
nets = self.network_api.get_all(context)
nets = self.network_api.get_all(self.admin_context)
except Exception, e:
LOG.error(_("_fix_instance_nw_info failed: %s") %
LOG.warning(_("_fix_instance_nw_info failed: %s") %
(e))
return
# Call this will trigger info_cache update,
@ -2025,14 +2028,15 @@ class PowerVCCloudManager(manager.Manager):
inst = instance_obj.Instance.get_by_uuid(context,
instance['uuid'])
try:
admin_ctx = self.admin_context
nw_info = \
self.network_api.get_instance_nw_info(context,
self.network_api.get_instance_nw_info(admin_ctx,
inst,
nets,
port_ids)
LOG.info("_fix_instance_nw_info suc:" + str(nw_info))
except Exception, e:
LOG.error(_("_fix_instance_nw_info failed: %s") %
LOG.warning(_("_fix_instance_nw_info failed: %s") %
(e))
def _get_instance_root_device_name(self, pvc_instance, db_instance):