Skip to content

Commit

Permalink
Merge "Delete SNAT left vn"
Browse files Browse the repository at this point in the history
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Aug 12, 2016
2 parents 4ba17f2 + a860ac9 commit 59ee12f
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 9 deletions.
2 changes: 2 additions & 0 deletions src/config/api-server/vnc_cfg_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,8 @@ def pre_dbe_update(cls, id, fq_name, obj_dict, db_conn,
return ok, result
db_iip_dict = result

if 'virtual_network_refs' not in db_iip_dict:
return True, ''
vn_uuid = db_iip_dict['virtual_network_refs'][0]['uuid']
vn_fq_name = db_iip_dict['virtual_network_refs'][0]['to']
if ((vn_fq_name == cfgm_common.IP_FABRIC_VN_FQ_NAME) or
Expand Down
6 changes: 6 additions & 0 deletions src/config/svc-monitor/svc_monitor/config_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -673,6 +673,7 @@ class VirtualNetworkSM(DBBaseSM):
def __init__(self, uuid, obj_dict=None):
self.uuid = uuid
self.virtual_machine_interfaces = set()
self.instance_ips = set()
obj_dict = self.update(obj_dict)
self.add_to_parent(obj_dict)
# end __init__
Expand All @@ -683,6 +684,7 @@ def update(self, obj=None):
self.name = obj['fq_name'][-1]
self.fq_name = obj['fq_name']
self.update_multiple_refs('virtual_machine_interface', obj)
self.update_multiple_refs('instance_ip', obj)
return obj
# end update

Expand All @@ -692,6 +694,7 @@ def delete(cls, uuid):
return
obj = cls._dict[uuid]
obj.update_multiple_refs('virtual_machine_interface', {})
obj.update_multiple_refs('instance_ip', {})
obj.remove_from_parent()
del cls._dict[uuid]
# end delete
Expand Down Expand Up @@ -759,6 +762,7 @@ def __init__(self, uuid, obj_dict=None):
self.secondary_tracking_ip = None
self.service_health_check_ip = None
self.virtual_machine_interfaces = set()
self.virtual_networks = set()
self.update(obj_dict)
# end __init__

Expand All @@ -775,6 +779,7 @@ def update(self, obj=None):
self.family = obj.get('instance_ip_family', 'v4')
self.address = obj.get('instance_ip_address', None)
self.update_multiple_refs('virtual_machine_interface', obj)
self.update_multiple_refs('virtual_network', obj)
self.update_single_ref('service_instance', obj)
# end update

Expand All @@ -785,6 +790,7 @@ def delete(cls, uuid):
obj = cls._dict[uuid]
obj.update_single_ref('service_instance', {})
obj.update_multiple_refs('virtual_machine_interface', {})
obj.update_multiple_refs('virtual_network', {})
del cls._dict[uuid]
# end delete

Expand Down
44 changes: 35 additions & 9 deletions src/config/svc-monitor/svc_monitor/snat_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,37 @@ def _add_snat_instance(self, router_obj):
self._vnc_lib.logical_router_update(vnc_rtr_obj)
# end add_snat_instance

def delete_snat_vn(self, si_obj):
vn_name = '%s_%s' % (svc_info.get_snat_left_vn_prefix(),
si_obj.name)
vn_fq_name = si_obj.fq_name[:-1] + [vn_name]
try:
vn_obj = self._vnc_lib.virtual_network_read(fq_name=vn_fq_name)
except NoIdError:
return

vn = VirtualNetworkSM.get(vn_obj.uuid)
if not vn:
return

for vmi_id in vn.virtual_machine_interfaces:
try:
self._vnc_lib.ref_update('virtual-machine-interface',
vmi_id, 'virtual-network', vn.uuid, None, 'DELETE')
except NoIdError:
pass

for iip_id in vn.instance_ips:
try:
self._vnc_lib.instance_ip_delete(id=iip_id)
except NoIdError:
pass

try:
self._vnc_lib.virtual_network_delete(id=vn.uuid)
except (RefsExistError, NoIdError):
pass

def delete_snat_instance(self, router_obj):
try:
vnc_rtr_obj = self._vnc_lib.logical_router_read(id=router_obj.uuid)
Expand Down Expand Up @@ -219,16 +250,11 @@ def delete_snat_instance(self, router_obj):
if not si_obj:
return

self._vnc_lib.service_instance_delete(id=si_uuid)

# Delete left network
vn_name = '%s_%s' % (svc_info.get_snat_left_vn_prefix(),
si_obj.name)
vn_fq_name = si_obj.fq_name[:-1] + [vn_name]
try:
self._vnc_lib.virtual_network_delete(fq_name=vn_fq_name)
except (RefsExistError, NoIdError):
pass
self.delete_snat_vn(si_obj)

# Delete service instance
self._vnc_lib.service_instance_delete(id=si_uuid)
# end delete_snat_instance

def cleanup_snat_instance(self, lr_id, si_id):
Expand Down

0 comments on commit 59ee12f

Please sign in to comment.