From 5ae6e8ee513ada922efd1461f913511269e33866 Mon Sep 17 00:00:00 2001 From: sbalineni Date: Tue, 9 Aug 2016 16:47:52 -0700 Subject: [PATCH] [DM]: routing instance config parameters need to be passed in a bettwer way Currently implementation does not scale well if we add more or more parameters to routing instance configuration. New implementaion allows to add more parameters without changing function prototype. Params are passed as an object. Change-Id: I035c4b25dd3f6f2a5b108fcd77e93fb5809c578f Closes-Bug: #1611561 --- .../device-manager/device_manager/db.py | 75 +++++++++---------- .../device_manager/physical_router_config.py | 23 ++++-- 2 files changed, 50 insertions(+), 48 deletions(-) diff --git a/src/config/device-manager/device_manager/db.py b/src/config/device-manager/device_manager/db.py index f28aab646a9..d59b8d4c608 100644 --- a/src/config/device-manager/device_manager/db.py +++ b/src/config/device-manager/device_manager/db.py @@ -548,10 +548,13 @@ def add_pnf_vrfs(self, first_vrf, pnf_dict, pnf_ris): vrf_name = self.get_pnf_vrf_name( si_obj, if_type, is_left_first_vrf) vrf_interfaces = pnf_inters - self.config_manager.add_routing_instance( - vrf_name, False, False, import_set, - export_set, [], [], False, vrf_interfaces, - None, None, None, static_routes, True) + ri_conf = { 'ri_name': vrf_name } + ri_conf['import_targets'] = import_set + ri_conf['export_targets'] = export_set + ri_conf['interfaces'] = vrf_interfaces + ri_conf['static_routes'] = static_routes + ri_conf['no_vrf_table_label'] = True + self.config_manager.add_routing_instance(ri_conf) def push_config(self): if self.delete_config() or not self.is_vnc_managed(): @@ -623,19 +626,19 @@ def push_config(self): irb_ips = None if vn_obj.get_forwarding_mode() == 'l2_l3': irb_ips = vn_irb_ip_map.get(vn_id, []) - self.config_manager.add_routing_instance( - vrf_name_l2, - True, - vn_obj.get_forwarding_mode() == 'l2_l3', - import_set, - export_set, - vn_obj.get_prefixes(), - irb_ips, - vn_obj.router_external, - interfaces, - vn_obj.get_vxlan_vni(), - None, - vn_obj.vn_network_id) + + ri_conf = { 'ri_name': vrf_name_l2 } + ri_conf['is_l2'] = True + ri_conf['is_l2_l3'] = (vn_obj.get_forwarding_mode() == 'l2_l3') + ri_conf['import_targets'] = import_set + ri_conf['export_targets'] = export_set + ri_conf['prefixes'] = vn_obj.get_prefixes() + ri_conf['gateways'] = irb_ips + ri_conf['router_external'] = vn_obj.router_external + ri_conf['interfaces'] = interfaces + ri_conf['vni'] = vn_obj.get_vxlan_vni() + ri_conf['network_id'] = vn_obj.vn_network_id + self.config_manager.add_routing_instance(ri_conf) if vn_obj.get_forwarding_mode() in ['l3', 'l2_l3']: interfaces = [] @@ -644,17 +647,14 @@ def push_config(self): JunosInterface( 'irb.' + str(vn_obj.vn_network_id), 'l3', 0)] - self.config_manager.add_routing_instance( - vrf_name_l3, - False, - vn_obj.get_forwarding_mode() == 'l2_l3', - import_set, - export_set, - vn_obj.get_prefixes(), - None, - vn_obj.router_external, - interfaces) - + ri_conf = { 'ri_name': vrf_name_l3 } + ri_conf['is_l2_l3'] = (vn_obj.get_forwarding_mode() == 'l2_l3') + ri_conf['import_targets'] = import_set + ri_conf['export_targets'] = export_set + ri_conf['prefixes'] = vn_obj.get_prefixes() + ri_conf['router_external'] = vn_obj.router_external + ri_conf['interfaces'] = interfaces + self.config_manager.add_routing_instance(ri_conf) break if (export_set is not None and @@ -679,19 +679,12 @@ def push_config(self): JunosInterface( service_ports[0] + "." + str(service_port_id + 1), 'l3', 0)) - self.config_manager.add_routing_instance( - vrf_name, - False, - False, - import_set, - set(), - None, - None, - False, - interfaces, - None, - vn_obj.instance_ip_map, - vn_obj.vn_network_id) + ri_conf = { 'ri_name': vrf_name } + ri_conf['import_targets'] = import_set + ri_conf['interfaces'] = interfaces + ri_conf['fip_map'] = vn_obj.instance_ip_map + ri_conf['network_id'] = vn_obj.vn_network_id + self.config_manager.add_routing_instance(ri_conf) # Add PNF ri configuration self.add_pnf_vrfs(first_vrf, pnf_dict, pnf_ris) 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 60828f7f5c2..719c11cc1ab 100644 --- a/src/config/device-manager/device_manager/physical_router_config.py +++ b/src/config/device-manager/device_manager/physical_router_config.py @@ -303,13 +303,22 @@ def add_inet_filter_term(self, ri_name, prefixes, inet_type): no_vrf_table_label: if this is set to True will not generate vrf table label knob ''' - def add_routing_instance(self, ri_name, is_l2, is_l2_l3, - import_targets, export_targets, - prefixes=[], gateways=[], - router_external=False, - interfaces=[], vni=None, - fip_map=None, network_id=None, - static_routes={}, no_vrf_table_label=False): + def add_routing_instance(self, ri_conf): + ri_name = ri_conf.get("ri_name") + is_l2 = ri_conf.get("is_l2", False) + is_l2_l3 = ri_conf.get("is_l2_l3", False) + import_targets = ri_conf.get("import_targets", set()) + export_targets = ri_conf.get("export_targets", set()) + prefixes = ri_conf.get("prefixes", []) + gateways = ri_conf.get("gateways", []) + router_external = ri_conf.get("router_external", False) + interfaces = ri_conf.get("interfaces", []) + vni = ri_conf.get("vni", None) + fip_map = ri_conf.get("fip_map", None) + network_id = ri_conf.get("network_id", None) + static_routes = ri_conf.get("static_routes", {}) + no_vrf_table_label = ri_conf.get("no_vrf_table_label", False) + self.routing_instances[ri_name] = {'import_targets': import_targets, 'export_targets': export_targets, 'prefixes': prefixes,