Skip to content

Commit

Permalink
Merge "Scaled service delete issue with static routes"
Browse files Browse the repository at this point in the history
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Nov 3, 2015
2 parents 77f34b1 + e140bdb commit 6a00d9c
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 15 deletions.
18 changes: 12 additions & 6 deletions src/config/svc-monitor/svc_monitor/instance_manager.py
Expand Up @@ -322,11 +322,11 @@ def validate_network_config(self, st, si):

return config_complete

def cleanup_svc_vm_ports(self, vmi_list, port_delete=True):
def cleanup_svc_vm_ports(self, vmi_list):
for vmi_id in vmi_list:
try:
vmi_obj = self._vnc_lib.virtual_machine_interface_read(
id=vmi_id, fields=['instance_ip_back_refs'])
id=vmi_id, fields = ['instance_ip_back_refs', 'interface_route_table_refs'])
except NoIdError:
continue

Expand All @@ -337,11 +337,17 @@ def cleanup_svc_vm_ports(self, vmi_list, port_delete=True):
except NoIdError:
pass

if port_delete:
try:
self._vnc_lib.virtual_machine_interface_delete(id=vmi_id)
VirtualMachineInterfaceSM.delete(vmi_id)
except (NoIdError, RefsExistError) as e:
pass

for irt in vmi_obj.get_interface_route_table_refs() or []:
try:
self._vnc_lib.virtual_machine_interface_delete(id=vmi_id)
VirtualMachineInterfaceSM.delete(vmi_id)
except (NoIdError, RefsExistError):
self._vnc_lib.interface_route_table_delete(id=irt['uuid'])
InterfaceRouteTableSM.delete(irt['uuid'])
except (NoIdError, RefsExistError) as e:
pass

def _check_create_service_vn(self, itf_type, si):
Expand Down
14 changes: 7 additions & 7 deletions src/config/svc-monitor/svc_monitor/virtual_machine_manager.py
Expand Up @@ -140,13 +140,13 @@ def delete_service(self, vm):
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))

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
4 changes: 2 additions & 2 deletions src/config/vnc_openstack/vnc_openstack/neutron_plugin_db.py
Expand Up @@ -2242,7 +2242,7 @@ def _port_remove_iface_route_table(self, ipobj, subnet_id):
port_obj.del_interface_route_table(intf_route_table_obj)
self._vnc_lib.virtual_machine_interface_update(port_obj)
self._vnc_lib.interface_route_table_delete(id=rt_ref['uuid'])
except vnc_exc.NoIdError:
except (NoIdError, RefsExistError) as e:
pass

def wait_for_api_server_connection(func):
Expand Down Expand Up @@ -3595,7 +3595,7 @@ def port_delete(self, port_id):
for rt_ref in port_obj.get_interface_route_table_refs() or []:
try:
self._vnc_lib.interface_route_table_delete(id=rt_ref['uuid'])
except vnc_exc.NoIdError:
except (NoIdError, RefsExistError) as e:
pass

# delete instance if this was the last port
Expand Down

0 comments on commit 6a00d9c

Please sign in to comment.