X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=inline;f=src%2Fnepi%2Futil%2Fenviron.py;h=0f2e4550dc2f3ac0fb52b3e4cc62ea81ee248dc0;hb=e4750fb2ceaa2117c93c6722674add32f8160cff;hp=ced1239b356e495ce012d398e31911bb546a84a7;hpb=17c85d161444f91bc5a34eea4c4a150fe3927f4b;p=nepi.git diff --git a/src/nepi/util/environ.py b/src/nepi/util/environ.py index ced1239b..0f2e4550 100644 --- a/src/nepi/util/environ.py +++ b/src/nepi/util/environ.py @@ -1,6 +1,5 @@ -# vim:ts=4:sw=4:et:ai:sts=4 -import os, subprocess +import os, subprocess, os.path __all__ = ["python", "ssh_path"] __all__ += ["rsh", "tcpdump_path", "sshd_path"] @@ -57,3 +56,44 @@ def backticks(cmd): raise RuntimeError("Error executing `%s': %s" % (" ".join(cmd), err)) return out +def homepath(path, app='.nepi', mode = 0500, directory = False): + home = os.environ.get('HOME') + if home is None: + home = os.path.join(os.sep, 'home', os.getlogin()) + + path = os.path.join(home, app, path) + if directory: + dirname = path + else: + dirname = os.path.dirname(path) + if not os.path.exists(dirname): + os.makedirs(dirname) + + return path + +def find_testbed(testbed_id): + mod_name = None + + # look for environment-specified testbeds + if 'NEPI_TESTBEDS' in os.environ: + try: + # parse testbed map + # split space-separated items, filter empty items + testbed_map = filter(bool,os.environ['NEPI_TESTBEDS'].strip().split(' ')) + # split items, keep pairs only, build map + testbed_map = dict([map(str.strip,i.split(':',1)) for i in testbed_map if ':' in i]) + except: + import traceback, sys + traceback.print_exc(file=sys.stderr) + + # ignore malformed environment + testbed_map = {} + + mod_name = testbed_map.get(testbed_id) + + if mod_name is None: + # no explicit map, load built-in testbeds + mod_name = "nepi.testbeds.%s" % (testbed_id.lower()) + + return mod_name +