diff options
Diffstat (limited to 'tests/topotests/lib/common_config.py')
| -rw-r--r-- | tests/topotests/lib/common_config.py | 80 |
1 files changed, 79 insertions, 1 deletions
diff --git a/tests/topotests/lib/common_config.py b/tests/topotests/lib/common_config.py index 79f34435d3..6dd8d646f3 100644 --- a/tests/topotests/lib/common_config.py +++ b/tests/topotests/lib/common_config.py @@ -258,6 +258,7 @@ def create_common_configuration( "route_maps": "! Route Maps Config\n", "bgp": "! BGP Config\n", "vrf": "! VRF Config\n", + "ospf": "! OSPF Config\n", } ) @@ -684,7 +685,7 @@ def generate_support_bundle(): return True -def start_topology(tgen): +def start_topology(tgen, daemon=None): """ Starting topology, create tmp files which are loaded to routers to start deamons and then start routers @@ -736,9 +737,16 @@ def start_topology(tgen): router.load_config( TopoRouter.RD_ZEBRA, "{}/{}/zebra.conf".format(TMPDIR, rname) ) + # Loading empty bgpd.conf file to router, to start the bgp deamon router.load_config(TopoRouter.RD_BGP, "{}/{}/bgpd.conf".format(TMPDIR, rname)) + if daemon and 'ospfd' in daemon: + # Loading empty ospf.conf file to router, to start the bgp deamon + router.load_config( + TopoRouter.RD_OSPF, + '{}/{}/ospfd.conf'.format(TMPDIR, rname) + ) # Starting routers logger.info("Starting all routers once topology is created") tgen.start_router() @@ -811,6 +819,24 @@ def number_to_column(routerName): return ord(routerName[0]) - 97 +def topo_daemons(tgen, topo): + """ + Returns daemon list required for the suite based on topojson. + """ + daemon_list = [] + + router_list = tgen.routers() + ROUTER_LIST = sorted( + router_list.keys(), key=lambda x: int(re_search("\d+", x).group(0)) + ) + + for rtr in ROUTER_LIST: + if 'ospf' in topo['routers'][rtr] and 'ospfd' not in daemon_list: + daemon_list.append('ospfd') + + return daemon_list + + ############################################# # Common APIs, will be used by all protocols ############################################# @@ -1394,6 +1420,58 @@ def create_interfaces_cfg(tgen, topo, build=False): else: interface_data.append("ipv6 address {}\n".format(intf_addr)) + if 'ospf' in data: + ospf_data = data['ospf'] + if 'area' in ospf_data: + intf_ospf_area = c_data["links"][destRouterLink][ + "ospf"]["area"] + if "delete" in data and data["delete"]: + interface_data.append("no ip ospf area") + else: + interface_data.append("ip ospf area {}".format( + intf_ospf_area + )) + + if "hello_interval" in ospf_data: + intf_ospf_hello = c_data["links"][destRouterLink][ + "ospf"]["hello_interval"] + if "delete" in data and data["delete"]: + interface_data.append("no ip ospf "\ + " hello-interval") + else: + interface_data.append("ip ospf "\ + " hello-interval {}".format(intf_ospf_hello)) + + if "dead_interval" in ospf_data: + intf_ospf_dead = c_data["links"][destRouterLink][ + "ospf"]["dead_interval"] + if "delete" in data and data["delete"]: + interface_data.append("no ip ospf"\ + " dead-interval") + else: + interface_data.append("ip ospf "\ + " dead-interval {}".format(intf_ospf_dead)) + + if "network" in ospf_data: + intf_ospf_nw = c_data["links"][destRouterLink][ + "ospf"]["network"] + if "delete" in data and data["delete"]: + interface_data.append("no ip ospf"\ + " network {}".format(intf_ospf_nw)) + else: + interface_data.append("ip ospf"\ + " network {}".format(intf_ospf_nw)) + + if "priority" in ospf_data: + intf_ospf_nw = c_data["links"][destRouterLink][ + "ospf"]["priority"] + + if "delete" in data and data["delete"]: + interface_data.append("no ip ospf"\ + " priority") + else: + interface_data.append("ip ospf"\ + " priority {}".format(intf_ospf_nw)) result = create_common_configuration( tgen, c_router, interface_data, "interface_config", build=build ) |
