diff --git a/src/config/schema-transformer/to_bgp.py b/src/config/schema-transformer/to_bgp.py index cecf34707e0..bc5ec36eaba 100644 --- a/src/config/schema-transformer/to_bgp.py +++ b/src/config/schema-transformer/to_bgp.py @@ -238,7 +238,13 @@ def __init__(self, name): self.ipams = {} self.extend = False - self.rt_list = set() + rt_list = self.obj.get_route_target_list() + if rt_list: + self.rt_list = set(rt_list.get_route_target()) + for rt in self.rt_list: + RouteTargetST.locate(rt) + else: + self.rt_list = set() self._route_target = 0 self.route_table_refs = set() self.route_table = {} @@ -548,6 +554,7 @@ def locate_routing_instance(self, rinst_name, service_chain=None): if rinst_name in self.rinst: return self.rinst[rinst_name] + is_default = (rinst_name == self._default_ri_name) alloc_new = False rinst_fq_name_str = '%s:%s' % (self.obj.get_fq_name_str(), rinst_name) try: @@ -579,12 +586,29 @@ def locate_routing_instance(self, rinst_name, service_chain=None): rinst_obj = None else: rinst_obj.set_route_target(rtgt_obj, inst_tgt_data) + for rt in self.rt_list: + rtgt_obj = RouteTarget(rt) + if is_default: + inst_tgt_data = InstanceTargetType() + else: + inst_tgt_data = InstanceTargetType( + import_export="export") + rinst_obj.add_route_target(rtgt_obj, inst_tgt_data) + _vnc_lib.routing_instance_update(rinst_obj) except NoIdError: rinst_obj = None if rinst_obj is None: rinst_obj = RoutingInstance(rinst_name, self.obj) rinst_obj.set_route_target(rtgt_obj, inst_tgt_data) + for rt in self.rt_list: + rtgt_obj = RouteTarget(rt) + if is_default: + inst_tgt_data = InstanceTargetType() + else: + inst_tgt_data = InstanceTargetType( + import_export="export") + rinst_obj.add_route_target(rtgt_obj, inst_tgt_data) _vnc_lib.routing_instance_create(rinst_obj) except HttpError as he: _sandesh._logger.debug(