summaryrefslogtreecommitdiff
path: root/tests/topotests/lib/common_config.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/topotests/lib/common_config.py')
-rw-r--r--tests/topotests/lib/common_config.py80
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
)