diff --git a/src/config/svc-monitor/svc_monitor/instance_manager.py b/src/config/svc-monitor/svc_monitor/instance_manager.py index 7b32ca6188a..9f76963030a 100644 --- a/src/config/svc-monitor/svc_monitor/instance_manager.py +++ b/src/config/svc-monitor/svc_monitor/instance_manager.py @@ -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 diff --git a/src/config/svc-monitor/svc_monitor/nova_client.py b/src/config/svc-monitor/svc_monitor/nova_client.py index 96bc460cd1a..85f2b7e5bf4 100644 --- a/src/config/svc-monitor/svc_monitor/nova_client.py +++ b/src/config/svc-monitor/svc_monitor/nova_client.py @@ -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 @@ -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: diff --git a/src/config/svc-monitor/svc_monitor/virtual_machine_manager.py b/src/config/svc-monitor/svc_monitor/virtual_machine_manager.py index 3a92d573697..30809361377 100644 --- a/src/config/svc-monitor/svc_monitor/virtual_machine_manager.py +++ b/src/config/svc-monitor/svc_monitor/virtual_machine_manager.py @@ -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)