|
|
|
@ -591,6 +591,7 @@ def check_rw(dn):
|
|
|
|
|
:param dn:
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
def _random_string(l=10):
|
|
|
|
|
return "".join(
|
|
|
|
|
random.choice(string.ascii_letters) for i in xrange(0, l))
|
|
|
|
@ -1316,3 +1317,30 @@ class scanDirectory(object):
|
|
|
|
|
if ret is False:
|
|
|
|
|
return False
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DiskSpaceError(Exception):
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DiskSpace(object):
|
|
|
|
|
def __init__(self):
|
|
|
|
|
self.df_cmd = getProgPath('/bin/df')
|
|
|
|
|
|
|
|
|
|
def get_free(self, dev=None, dn=None):
|
|
|
|
|
if dev:
|
|
|
|
|
mp = isMount(dev)
|
|
|
|
|
if not mp:
|
|
|
|
|
raise DiskSpaceError(_("Device %s must be mounted") % dev)
|
|
|
|
|
dn = dev
|
|
|
|
|
p = process(self.df_cmd, dn, "-B1")
|
|
|
|
|
if p.success():
|
|
|
|
|
data = p.read().strip()
|
|
|
|
|
lines = data.split('\n')
|
|
|
|
|
if len(lines) >= 2:
|
|
|
|
|
cols = filter(None, lines[1].split())
|
|
|
|
|
if len(cols) == 6:
|
|
|
|
|
return int(cols[3])
|
|
|
|
|
raise DiskSpaceError(_("Wrong df output:\n%s") % data)
|
|
|
|
|
else:
|
|
|
|
|
raise DiskSpaceError(str(p.readerr()))
|
|
|
|
|