Skip to content

Commit

Permalink
Fixes: schema crash with RT delete
Browse files Browse the repository at this point in the history
When a RT is deleted, we call a RT delete
on the object again. Providing a new helper
function so that the RT can be deleted without
calling the delete method.

Closes-Bug 1635048

Change-Id: Ie438341f51c350989bcafcc58fb07650480e191c
(cherry picked from commit 9652760)
  • Loading branch information
Ranjeet R committed Mar 9, 2017
1 parent 139a481 commit b8e431d
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions src/config/schema-transformer/config_db.py
Expand Up @@ -225,7 +225,7 @@ def update_autonomous_system(cls, new_asn):
logical_router.add_route_target(new_rtgt_obj.obj)
cls._vnc_lib.logical_router_update(logical_router)

RouteTargetST.delete(old_rtgt_obj.get_fq_name()[0])
RouteTargetST.delete_vnc_obj(old_rtgt_obj.get_fq_name()[0])

cls._autonomous_system = int(new_asn)
# end update_autonomous_system
Expand Down Expand Up @@ -783,7 +783,7 @@ def set_route_target_list(self, obj):

for rt in rt_del - (rt_add | rt_add_export | rt_add_import):
try:
RouteTargetST.delete(rt)
RouteTargetST.delete_vnc_obj(rt)
except RefsExistError:
# if other routing instances are referring to this target,
# it will be deleted when those instances are deleted
Expand Down Expand Up @@ -1328,10 +1328,11 @@ def __init__(self, rt_key, obj=None):

def update(self, obj=None):
pass

def delete_obj(self):
self._vnc_lib.route_target_delete(fq_name=[self.name])
# end delete_obj
@classmethod
def delete_vnc_obj(cls, key):
cls._vnc_lib.route_target_delete(fq_name=[key])
del cls._dict[key]
# end delete_vnc_obj
# end RoutTargetST

# a struct to store attributes related to Network Policy needed by schema
Expand Down Expand Up @@ -2046,7 +2047,7 @@ def locate_route_target(self):
if 0 < old_rtgt < common.BGP_RTGT_MIN_ID:
rt_key = "target:%s:%d" % (
GlobalSystemConfigST.get_autonomous_system(), old_rtgt)
RouteTargetST.delete(rt_key)
RouteTargetST.delete_vnc_obj(rt_key)
# end locate_route_target

def get_fq_name(self):
Expand Down Expand Up @@ -2304,7 +2305,7 @@ def delete_obj(self):

for rtgt in rtgt_list or []:
try:
RouteTargetST.delete(rtgt['to'][0])
RouteTargetST.delete_vnc_obj(rtgt['to'][0])
except RefsExistError:
# if other routing instances are referring to this target,
# it will be deleted when those instances are deleted
Expand Down Expand Up @@ -3626,7 +3627,7 @@ def __init__(self, name, obj=None):
self._vnc_lib.logical_router_update(self.obj)

if old_rt_key:
RouteTargetST.delete(old_rt_key)
RouteTargetST.delete_vnc_obj(old_rt_key)
self.route_target = rt_key

self.update(self.obj)
Expand All @@ -3645,7 +3646,7 @@ def delete_obj(self):
self.update_virtual_networks()
rtgt_num = int(self.route_target.split(':')[-1])
self._cassandra.free_route_target_by_number(rtgt_num)
RouteTargetST.delete(self.route_target)
RouteTargetST.delete_vnc_obj(self.route_target)
# end delete_obj

def update_virtual_networks(self):
Expand Down Expand Up @@ -3696,7 +3697,7 @@ def update_autonomous_system(self, asn):
ri_obj = vn_obj.get_primary_routing_instance()
ri_obj.update_route_target_list(rt_del=[old_rt],
rt_add=[rt_key])
RouteTargetST.delete(old_rt)
RouteTargetST.delete_vnc_obj(old_rt)
self.route_target = rt_key
# end update_autonomous_system

Expand Down

0 comments on commit b8e431d

Please sign in to comment.