diff --git a/pym/cl_utils.py b/pym/cl_utils.py index 736979d..b84d6e6 100644 --- a/pym/cl_utils.py +++ b/pym/cl_utils.py @@ -762,3 +762,36 @@ def getFilesCount(directory): return len(reduce(lambda x,y:x+y,map(lambda x:x[1]+x[2], os.walk(directory)),[])) return 0 + +def detectDeviceForPartition(dev): + """Detect parent device for partition by /sys/block (sysfs)""" + reDeviceSplit = re.compile("^(.*/)?(.*?)(\d+)$") + device = map(lambda x:filter(lambda x:x in dev, + x[1]), + os.walk('/sys/block')) + if device: + device = device[0] + parentdevices = \ + filter(lambda x: os.path.split(dev)[-1] in \ + reduce(lambda y,z:y+z[1], + os.walk(os.path.join('/sys/block',x)),[]), device) + if parentdevices: + return parentdevices[0] + res = reDeviceSplit.search(dev) + if res: + return res.groups()[1] + return None + +def getProgPath(progname): + """Get full path of program or False""" + baseprogname = os.path.basename(progname) + env = {"LANG":"C"} + env.update(os.environ.items() + [("PATH",getpathenv())] +\ + env.items()) + res = runOsCommand("which %s"%progname,env_dict=env) + if res[0] == 0: + return res[1][0].strip() + elif os.path.isabs(progname) and os.path.exists(progname): + return progname + else: + return False diff --git a/pym/cl_vars_share.py b/pym/cl_vars_share.py index 7c25103..f54f15d 100644 --- a/pym/cl_vars_share.py +++ b/pym/cl_vars_share.py @@ -520,3 +520,17 @@ class varsShare: return False return open('/proc/1/mountinfo','r').read() != \ open('/proc/self/mountinfo','r').read() + + def getProgPath(self,progname): + """Get full path of program or False""" + baseprogname = os.path.basename(progname) + env = {"LANG":"C"} + env.update(os.environ.items() + [("PATH",getpathenv())] +\ + env.items()) + res = self._runos("which %s"%progname,env=env) + if res: + return res[0].strip() + elif os.path.isabs(progname) and os.path.exists(progname): + return progname + else: + return False