# OF THIS SOFTWARE.
#
+import os
+
+from lib.topolog import logger, logger_config
+from lib.topogen import TopoRouter
+
+
+# Creating tmp dir with testsuite name to avoid conflict condition when
+# multiple testsuites run together. All temporary files would be created
+# in this dir and this dir would be removed once testsuite run is
+# completed
+LOGDIR = "/tmp/topotests/"
+TMPDIR = None
+
+
+def start_topology(tgen):
+ """
+ Starting topology, create tmp files which are loaded to routers
+ to start deamons and then start routers
+ * `tgen` : topogen object
+ """
+
+ global TMPDIR
+ # Starting topology
+ tgen.start_topology()
+
+ # Starting deamons
+ router_list = tgen.routers()
+ TMPDIR = os.path.join(LOGDIR, tgen.modname)
+
+ # Deleting temporary created dir if exists
+ if os.path.exists("{}".format(TMPDIR)):
+ os.system("rm -rf {}".format(TMPDIR))
+
+ # Create testsuite named temporary dir to save
+ # tmp files
+ os.mkdir("{}".format(TMPDIR))
+
+ for rname, router in router_list.iteritems():
+ try:
+ os.chdir(TMPDIR)
+
+ # Creating rouer named dir and empty zebra.conf bgpd.conf files
+ # inside the current directory
+ os.mkdir("{}".format(rname))
+ os.system("chmod -R go+rw {}".format(rname))
+ os.chdir("{}/{}".format(TMPDIR, rname))
+ os.system("touch zebra.conf bgpd.conf")
+
+ except IOError as (errno, strerror):
+ logger.error("I/O error({0}): {1}".format(errno, strerror))
+
+ # Loading empty zebra.conf file to router, to start the zebra deamon
+ router.load_config(
+ TopoRouter.RD_ZEBRA,
+ "{}/{}/zebra.conf".format(TMPDIR, rname)
+ # os.path.join(TMPDIR, "{}/zebra.conf".format(rname))
+ )
+ # Loading empty bgpd.conf file to router, to start the bgp deamon
+ router.load_config(
+ TopoRouter.RD_BGP,
+ "{}/{}/bgpd.conf".format(TMPDIR, rname)
+ # os.path.join(TMPDIR, "{}/bgpd.conf".format(rname))
+ )
+
+ # Starting routers
+ logger.info("Starting all routers once topology is created")
+ tgen.start_router()
+
+
+def stop_topology(tgen):
+ """
+ It will stop topology and remove temporary dirs and files.
+ * `tgen` : topogen object
+ """
+
+ # This function tears down the whole topology.
+ tgen.stop_topology()
+
+ # Removing tmp dirs and files, once the topology is deleted
+ try:
+ os.system("rm -rf {}".format(TMPDIR))
+ except IOError as (errno, strerror):
+ logger.error("I/O error({0}): {1}".format(errno, strerror))
+
def number_to_row(routerName):
"""
Calculation based on name a0 = columnn 0, a1 = column 0, b2= column 1,
z23 = column 26 etc
"""
- return ord(routerName[0]) - 97
\ No newline at end of file
+ return ord(routerName[0]) - 97
+