diff --git a/src/config/device-manager/device_manager/db.py b/src/config/device-manager/device_manager/db.py index 4dd10ba64ce..d238559ecf9 100644 --- a/src/config/device-manager/device_manager/db.py +++ b/src/config/device-manager/device_manager/db.py @@ -172,14 +172,14 @@ def push_config(self): self.config_manager.reset_bgp_config() bgp_router = BgpRouterDM.get(self.bgp_router) if bgp_router: - for peer_uuid, params in bgp_router.bgp_routers.items(): + for peer_uuid, attr in bgp_router.bgp_routers.items(): peer = BgpRouterDM.get(peer_uuid) if peer is None: continue external = (bgp_router.params['autonomous_system'] != peer.params['autonomous_system']) self.config_manager.add_bgp_peer(peer.params['address'], - params, external) + peer.params, attr, external) self.config_manager.set_bgp_config(bgp_router.params) self.config_manager.set_global_routing_options(bgp_router.params) bgp_router_ips = bgp_router.get_all_bgp_router_ips() @@ -623,7 +623,9 @@ def update(self, obj=None): self.prefixes.add('%s/%d' % (subnet['subnet']['ip_prefix'], subnet['subnet']['ip_prefix_len']) ) - self.gateways.add(subnet['default_gateway']) + self.gateways.add('%s/%d' % (subnet['default_gateway'], + subnet['subnet']['ip_prefix_len']) + ) # end update def get_vrf_name(self, vrf_type): diff --git a/src/config/device-manager/device_manager/physical_router_config.py b/src/config/device-manager/device_manager/physical_router_config.py index ddc14cf3550..4285ee74aed 100644 --- a/src/config/device-manager/device_manager/physical_router_config.py +++ b/src/config/device-manager/device_manager/physical_router_config.py @@ -343,7 +343,7 @@ def add_routing_instance(self, ri_name, import_targets, export_targets, inet = etree.SubElement(family, "inet") for gateway in gateways: addr = etree.SubElement(inet, "address") - etree.SubElement(addr, "name").text = gateway + "/24" + etree.SubElement(addr, "name").text = gateway lo_intf = etree.SubElement(interfaces_config, "interface") etree.SubElement(lo_intf, "name").text = "lo0" @@ -541,11 +541,14 @@ def delete_bgp_config(self): self.bgp_config_sent = False # end delete_config - def add_bgp_peer(self, router, params, external): + def add_bgp_peer(self, router, params, attr, external): + peer_data = {} + peer_data['params'] = params + peer_data['attr'] = attr if external: - self.external_peers[router] = params + self.external_peers[router] = peer_data else: - self.bgp_peers[router] = params + self.bgp_peers[router] = peer_data self.send_bgp_config() # end add_peer @@ -560,19 +563,21 @@ def delete_bgp_peer(self, router): # end delete_bgp_peer def _get_neighbor_config_xml(self, bgp_config, peers): - for peer, params in peers.items(): + for peer, peer_data in peers.items(): + params = peer_data.get('params', {}) + attr = peer_data.get('attr', {}) nbr = etree.SubElement(bgp_config, "neighbor") etree.SubElement(nbr, "name").text = peer - bgp_sessions = params.get('session') + bgp_sessions = attr.get('session') if bgp_sessions: # for now assume only one session session_attrs = bgp_sessions[0].get('attributes', []) - for attr in session_attrs: + for session_attr in session_attrs: # For not, only consider the attribute if bgp-router is # not specified - if attr.get('bgp_router') is None: - self._add_family_etree(nbr, attr) - self.add_bgp_auth_config(nbr, attr) + if session_attr.get('bgp_router') is None: + self._add_family_etree(nbr, session_attr) + self.add_bgp_auth_config(nbr, session_attr) break if params.get('autonomous_system') is not None: etree.SubElement(nbr, "peer-as").text = str(params.get('autonomous_system'))