Add working directory option
refs: #3266
Change-Id: Ifd953b242c99f75c68eb3c63ef5e51ef46195b8b
diff --git a/bin/minindn b/bin/minindn
index e1d241d..bf5a525 100755
--- a/bin/minindn
+++ b/bin/minindn
@@ -104,6 +104,7 @@
self.isCliEnabled = True
self.nPings = 300
self.testbed = False
+ self.workDir = "/tmp"
def parse_args():
usage = """Usage: minindn [template_file] [ -t | --testbed ]
@@ -138,6 +139,9 @@
parser.add_option("-t", "--testbed", action="store_true", dest="testbed", default=False,
help="instantiates NDN Testbed")
+ parser.add_option("--work-dir", action="store", dest="workDir", default="/tmp",
+ help="Specify the working directory; default is /tmp")
+
parser.add_option('--version', '-V', action='callback', callback=printVersion,
help='Displays version information')
@@ -151,6 +155,7 @@
options.isCliEnabled = args.isCliEnabled
options.nPings = args.nPings
options.testbed = args.testbed
+ options.workDir = args.workDir
if options.experimentName is not None and options.experimentName not in ExperimentManager.getExperimentNames():
print("No experiment named %s" % options.experimentName)
@@ -164,7 +169,7 @@
return options
class NdnTopo(Topo):
- def __init__(self, conf_arq, **opts):
+ def __init__(self, conf_arq, workDir, **opts):
Topo.__init__(self, **opts)
global hosts_conf
@@ -178,7 +183,7 @@
for host in hosts_conf:
if host.cpu != None and self.isLimited != True:
self.isLimited = True
- self.addHost(host.name, app=host.app, params=host.uri_tuples, cpu=host.cpu,cores=host.cores,cache=host.cache)
+ self.addHost(host.name, app=host.app, params=host.uri_tuples, cpu=host.cpu,cores=host.cores,cache=host.cache, workdir=workDir)
for link in links_conf:
if len(link.linkDict) == 0:
@@ -210,7 +215,7 @@
os.system("sudo cp /usr/local/etc/ndn/nfd.conf.sample %s" % nfdConfFile)
os.system("sudo sed -i \'s|default_level [A-Z]*$|default_level $LOG_LEVEL|g\' %s" % nfdConfFile)
- topo = NdnTopo(template_file)
+ topo = NdnTopo(template_file, options.workDir)
t = datetime.datetime.now()
diff --git a/ndn/ndn_host.py b/ndn/ndn_host.py
index bc820c2..0bed247 100644
--- a/ndn/ndn_host.py
+++ b/ndn/ndn_host.py
@@ -93,6 +93,11 @@
if not NdnHost.inited:
NdnHostCommon.init()
+ # Create home directory for a node
+ self.homeFolder = "%s/%s" % (self.params['workdir'], self.name)
+ self.cmd("mkdir -p %s" % self.homeFolder)
+ self.cmd("cd %s" % self.homeFolder)
+
self.nfd = Nfd(self)
self.nfd.start()
@@ -123,6 +128,11 @@
if not NdnHost.inited:
NdnHostCommon.init()
+ # Create home directory for a node
+ self.homeFolder = "%s/%s" % (self.params['workdir'], self.name)
+ self.cmd("mkdir -p %s" % self.homeFolder)
+ self.cmd("cd %s" % self.homeFolder)
+
self.nfd = Nfd(self)
self.nfd.start()
diff --git a/ndn/nfd.py b/ndn/nfd.py
index a56115b..36dcf96 100644
--- a/ndn/nfd.py
+++ b/ndn/nfd.py
@@ -33,15 +33,10 @@
self.logLevel = node.params["params"].get("nfd-log-level", "NONE")
- # Create home directory for a node
- node.cmd("cd /tmp && mkdir %s" % node.name)
- node.cmd("cd %s" % node.name)
-
- self.homeFolder = "/tmp/%s" % node.name
- self.confFile = "%s/%s.conf" % (self.homeFolder, node.name)
- self.logFile = "%s/%s.log" % (self.homeFolder, node.name)
+ self.confFile = "%s/%s.conf" % (node.homeFolder, node.name)
+ self.logFile = "%s/%s.log" % (node.homeFolder, node.name)
self.sockFile = "/var/run/%s.sock" % node.name
- self.ndnFolder = "%s/.ndn" % self.homeFolder
+ self.ndnFolder = "%s/.ndn" % node.homeFolder
self.clientConf = "%s/client.conf" % self.ndnFolder
# Copy nfd.conf file from /usr/local/etc/mini-ndn to the node's home
@@ -61,7 +56,7 @@
node.cmd("sudo sed -i 's|nfd.sock|%s.sock|g' %s" % (node.name, self.clientConf))
# Change home folder
- node.cmd("export HOME=%s" % self.homeFolder)
+ node.cmd("export HOME=%s" % node.homeFolder)
def start(self):
NdnApplication.start(self, "sudo nfd --config %s 2>> %s &" % (self.confFile, self.logFile))
diff --git a/ndn/nlsr.py b/ndn/nlsr.py
index 4a90e30..2da0894 100644
--- a/ndn/nlsr.py
+++ b/ndn/nlsr.py
@@ -27,10 +27,10 @@
def __init__(self, node):
NdnApplication.__init__(self, node)
self.routerName = "/%sC1.Router/cs/%s" % ('%', node.name)
- self.confFile = "/tmp/%s/nlsr.conf" % node.name
+ self.confFile = "%s/nlsr.conf" % node.homeFolder
# Make directory for log file
- self.logDir = "/tmp/%s/log" % node.name
+ self.logDir = "%s/log" % node.homeFolder
node.cmd("mkdir %s" % self.logDir)
# Configure basic router information in nlsr.conf based on host name
@@ -61,7 +61,7 @@
def createConfigFile(self):
- filePath = "/tmp/%s/nlsr.conf" % self.node.name
+ filePath = "%s/nlsr.conf" % self.node.homeFolder
configFile = open(filePath, 'r')
oldContent = configFile.read()
@@ -96,8 +96,8 @@
general += " site /edu\n"
general += " router /%C1.Router/cs/" + self.node.name + "\n"
general += " log-level " + self.logLevel + "\n"
- general += " log-dir /tmp/" + self.node.name + "/log\n"
- general += " seq-dir /tmp/" + self.node.name + "/log\n"
+ general += " log-dir " + self.node.homeFolder + "/log\n"
+ general += " seq-dir " + self.node.homeFolder + "/log\n"
general += "}\n"
return general