Skip to content

Commit

Permalink
Reauthenicate nova token and cleanup service vm
Browse files Browse the repository at this point in the history
Nova reauthenticate needs to be done when Unauthorized
exception is raised. This exception needs to be raised
to the caller.

Cleanup of service VM objet from VNC database in case
of nova error conditions.

Change-Id: I6030b48441eee0a511f61839af913a5d63893d81
Closes-Bug: #1463745
  • Loading branch information
rrugge committed Jun 10, 2015
1 parent 4c660d5 commit 4073bd0
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 5 deletions.
6 changes: 5 additions & 1 deletion src/config/svc-monitor/svc_monitor/instance_manager.py
Expand Up @@ -175,7 +175,11 @@ def create_service_vn(self, vn_name, vn_subnet,
subnet_info = IpamSubnetType(subnet=SubnetType(pfx, pfx_len))
subnet_data = VnSubnetsType([subnet_info])
vn_obj.add_network_ipam(ipam_obj, subnet_data)
self._vnc_lib.virtual_network_create(vn_obj)
try:
self._vnc_lib.virtual_network_create(vn_obj)
except RefsExistError:
vn_obj = self._vnc_lib.virtual_network_read(
fq_name=vn_obj.get_fq_name())
VirtualNetworkSM.locate(vn_obj.uuid)

return vn_obj.uuid
Expand Down
3 changes: 3 additions & 0 deletions src/config/svc-monitor/svc_monitor/nova_client.py
Expand Up @@ -46,6 +46,8 @@ def _novaclient_exec(self, resource, oper, proj_name,
"Multiple %s %s=%s found in project %s"
% (resource, kwargs.keys()[0], kwargs.values()[0], proj_name))
return None
except nc_exc.Unauthorized:
raise
except Exception as e:
self.logger.log_error("nova error %s" % str(e))
return None
Expand All @@ -56,6 +58,7 @@ def oper(self, resource, oper, proj_name, **kwargs):
proj_name, False, **kwargs)
except nc_exc.Unauthorized:
try:
self.logger.log_notice("nova refresh token")
return self._novaclient_exec(resource, oper,
proj_name, True, **kwargs)
except nc_exc.Unauthorized:
Expand Down
16 changes: 12 additions & 4 deletions src/config/svc-monitor/svc_monitor/virtual_machine_manager.py
Expand Up @@ -152,12 +152,20 @@ def delete_service(self, vm):

# nova vm delete
proj_name = vm.proj_fq_name[-1]
vm = self._nc.oper('servers', 'get', proj_name, id=vm.uuid)
if vm:
nova_vm = self._nc.oper('servers', 'get', proj_name, id=vm.uuid)
if nova_vm:
try:
vm.delete()
except Exception:
nova_vm.delete()
except Exception as e:
self.logger.log_error("%s nova delete failed with error %s" %
(vm.uuid, str(e)))
else:
try:
self._vnc_lib.virtual_machine_delete(id=vm.uuid)
except NoIdError:
pass
except RefsExistError:
self.logger.log_error("%s vm delete RefsExist" % (vm.uuid))

def check_service(self, si):
vm_id_list = list(si.virtual_machines)
Expand Down

0 comments on commit 4073bd0

Please sign in to comment.