Skip to content

Commit

Permalink
Merge "Delete SNAT left vn" into R3.0
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 3df0d7a + c0c2f49 commit 462b714
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 4 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 @@ -389,6 +389,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 @@ -662,6 +662,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 @@ -672,6 +673,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 @@ -681,6 +683,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 @@ -747,6 +750,7 @@ def __init__(self, uuid, obj_dict=None):
self.instance_ip_secondary = None
self.secondary_tracking_ip = None
self.virtual_machine_interfaces = set()
self.virtual_networks = set()
self.update(obj_dict)
# end __init__

Expand All @@ -762,6 +766,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 @@ -772,6 +777,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
40 changes: 38 additions & 2 deletions src/config/svc-monitor/svc_monitor/snat_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,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 @@ -266,9 +297,14 @@ def delete_snat_instance(self, router_obj):
except vnc_exc.NoIdError:
pass

if not si_obj:
return

# Delete left network
self.delete_snat_vn(si_obj)

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

def cleanup_snat_instance(self, lr_id, si_id):
Expand Down
2 changes: 0 additions & 2 deletions src/config/svc-monitor/svc_monitor/svc_monitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -582,8 +582,6 @@ def timer_callback(monitor):
continue
if vn.name in svc_info.get_shared_vn_list():
monitor._delete_shared_vn(vn.uuid)
elif vn.name.startswith(svc_info.get_snat_left_vn_prefix()):
monitor._delete_shared_vn(vn.uuid)


def launch_timer(monitor):
Expand Down

0 comments on commit 462b714

Please sign in to comment.