Skip to content

Commit

Permalink
Route targets of the connected logical routers
Browse files Browse the repository at this point in the history
are not added to routing instances during reinit,
when schema transformer restarts. They are added later
during the Logical Router objects are evaluated.

Fix is to add them during reinit of routing instances.
Closed-Bug: 1588204

Change-Id: Id321a12e6c4a3aacb05f63b6ea0f6a2d5e9793fa
  • Loading branch information
cijohnson committed Jun 24, 2016
1 parent 803886a commit 2c07117
Showing 1 changed file with 43 additions and 18 deletions.
61 changes: 43 additions & 18 deletions src/config/schema-transformer/to_bgp.py
Expand Up @@ -507,24 +507,33 @@ def locate_routing_instance(self, rinst_name, service_chain=None,
_vnc_lib.routing_instance_delete(id=rinst_obj.uuid)
rinst_obj = None
else:
need_update = False
update_ri = False
stale_rt_list = [':'.join(rt_ref['to']) for rt_ref in
rinst_obj.get_route_target_refs()]
if rt_key in stale_rt_list:
stale_rt_list.remove(rt_key)
if (rinst_obj.get_routing_instance_is_default() !=
is_default):
rinst_obj.set_routing_instance_is_default(is_default)
need_update = True
old_rt_refs = copy.deepcopy(rinst_obj.get_route_target_refs())
rinst_obj.set_route_target(rtgt_obj, InstanceTargetType())
update_ri = True
if inst_tgt_data:
for rt in self.rt_list:
rtgt_obj = RouteTarget(rt)
rinst_obj.add_route_target(rtgt_obj, inst_tgt_data)
if rt not in stale_rt_list:
rtgt_obj = RouteTarget(rt)
rinst_obj.add_route_target(rtgt_obj,
inst_tgt_data)
update_ri = True
else:
stale_rt_list.remove(rt)
if not is_default and self.allow_transit:
rtgt_obj = RouteTarget(self.get_route_target())
rinst_obj.add_route_target(rtgt_obj, inst_tgt_data)
if (not compare_refs(rinst_obj.get_route_target_refs(),
old_rt_refs)):
need_update = True
if need_update:
rt = self.get_route_target()
if rt not in stale_rt_list:
rtgt_obj = RouteTarget(rt)
rinst_obj.add_route_target(rtgt_obj, inst_tgt_data)
update_ri = True
else:
stale_rt_list.remove(rt)
if update_ri:
_vnc_lib.routing_instance_update(rinst_obj)
except (NoIdError, KeyError):
rinst_obj = None
Expand All @@ -550,6 +559,7 @@ def locate_routing_instance(self, rinst_name, service_chain=None,

rinst = RoutingInstanceST(rinst_obj, service_chain, rt_key)
self.rinst[rinst_name] = rinst
rinst.stale_route_targets = stale_rt_list

if 0 < old_rtgt < common.BGP_RTGT_MIN_ID:
rt_key = "target:%s:%d" % (self.get_autonomous_system(), old_rtgt)
Expand Down Expand Up @@ -1349,6 +1359,7 @@ def __init__(self, ri_obj, service_chain=None, route_target=None):
self.connections = set()
for ri_ref in self.obj.get_routing_instance_refs() or []:
self.connections.add(':'.join(ri_ref['to']))
self.stale_route_targets = []
# end __init__

def get_fq_name(self):
Expand Down Expand Up @@ -1413,14 +1424,23 @@ def add_service_info(self, remote_vn, service_instance=None,

def update_route_target_list(self, rt_add, rt_del=None,
import_export=None):
update = False
for rt in rt_add:
rtgt_obj = RouteTarget(rt)
inst_tgt_data = InstanceTargetType(import_export=import_export)
self.obj.add_route_target(rtgt_obj, inst_tgt_data)
if rt not in self.stale_route_targets:
rtgt_obj = RouteTarget(rt)
inst_tgt_data = InstanceTargetType(import_export=import_export)
self.obj.add_route_target(rtgt_obj, inst_tgt_data)
update = True
else:
self.stale_route_targets.remove(rt)
for rt in rt_del or set():
rtgt_obj = RouteTarget(rt)
self.obj.del_route_target(rtgt_obj)
if len(rt_add) or len(rt_del or set()):
if rt in self.stale_route_targets:
rtgt_obj = RouteTarget(rt)
self.obj.del_route_target(rtgt_obj)
self.stale_route_targets.remove(rt)
update = True

if update:
_vnc_lib.routing_instance_update(self.obj)
# end update_route_target_list

Expand Down Expand Up @@ -3211,6 +3231,11 @@ def process_stale_objects(self):
sc.destroy()
if sc.present_stale:
sc.delete()
for vn in VirtualNetworkST.values():
for rinst in vn.rinst.values():
if rinst.stale_route_targets:
rinst.update_route_target_list(rt_add=set(),
rt_del=rinst.stale_route_targets)
# end process_stale_objects

def process_poll_result(self, poll_result_str):
Expand Down

0 comments on commit 2c07117

Please sign in to comment.