|
|
|
@ -224,27 +224,40 @@ class VariableClBuilderDiskDev(Variable):
|
|
|
|
|
_("Destination '%s' is already in use") % value)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClBuilderDiskSize(ReadonlyVariable):
|
|
|
|
|
class DiskFreeHelper(ReadonlyVariable):
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
Переменные содержащие свободное место на дисках
|
|
|
|
|
"""
|
|
|
|
|
type = "int"
|
|
|
|
|
|
|
|
|
|
def init(self):
|
|
|
|
|
self.label = _("Free disk space")
|
|
|
|
|
|
|
|
|
|
def get_free_for(self, dn):
|
|
|
|
|
try:
|
|
|
|
|
for dfdn in (dn, path.dirname(dn)):
|
|
|
|
|
dfdn = dn
|
|
|
|
|
while True:
|
|
|
|
|
dfProcess = process("/bin/df", "--output=avail", dfdn)
|
|
|
|
|
data = dfProcess.readlines()
|
|
|
|
|
if len(data) > 1:
|
|
|
|
|
return int(data[1].strip()) * 1024
|
|
|
|
|
if dfdn == '/':
|
|
|
|
|
return 0
|
|
|
|
|
dfdn = path.dirname(dfdn)
|
|
|
|
|
except ValueError:
|
|
|
|
|
return 0
|
|
|
|
|
return 0
|
|
|
|
|
|
|
|
|
|
def get_create(self):
|
|
|
|
|
def humanReadable(self):
|
|
|
|
|
return humanreadableSize(int(self.Get()))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClBuilderDiskSize(DiskFreeHelper):
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
def init(self):
|
|
|
|
|
self.label = _("Free disk space")
|
|
|
|
|
|
|
|
|
|
@is_action(Actions.NewAssemble)
|
|
|
|
|
def get(self):
|
|
|
|
|
device = self.Get('cl_builder_disk_dev')
|
|
|
|
|
if device:
|
|
|
|
|
if device.startswith('/dev/'):
|
|
|
|
@ -255,16 +268,29 @@ class VariableClBuilderDiskSize(ReadonlyVariable):
|
|
|
|
|
return str(self.get_free_for(device))
|
|
|
|
|
return "0"
|
|
|
|
|
|
|
|
|
|
class VariableClBuilderPrepareFreeSize(DiskFreeHelper):
|
|
|
|
|
"""
|
|
|
|
|
Свободное место используемое для подготовки образа
|
|
|
|
|
"""
|
|
|
|
|
def init(self):
|
|
|
|
|
self.label = _("Free disk space for iso building")
|
|
|
|
|
|
|
|
|
|
@is_action(Actions.Image)
|
|
|
|
|
def get(self):
|
|
|
|
|
action = self.Get('cl_action')
|
|
|
|
|
if action in Actions.NewAssemble:
|
|
|
|
|
return self.get_create()
|
|
|
|
|
elif action in (Actions.Break, Actions.Restore):
|
|
|
|
|
# TODO: disk size для остальных
|
|
|
|
|
return
|
|
|
|
|
dn = self.Get('cl_builder_iso_base_path')
|
|
|
|
|
return str(self.get_free_for(dn))
|
|
|
|
|
|
|
|
|
|
def humanReadable(self):
|
|
|
|
|
return humanreadableSize(int(self.Get()))
|
|
|
|
|
class VariableClBuilderImageFreeSize(DiskFreeHelper):
|
|
|
|
|
"""
|
|
|
|
|
Свободное место на диске, где создается iso образ
|
|
|
|
|
"""
|
|
|
|
|
def init(self):
|
|
|
|
|
self.label = _("Free disk space for iso image")
|
|
|
|
|
|
|
|
|
|
@is_action(Actions.Image)
|
|
|
|
|
def get(self):
|
|
|
|
|
dn = self.Get('cl_builder_image_filename')
|
|
|
|
|
return str(self.get_free_for(dn))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClBuilderLayeredSet(Variable):
|
|
|
|
@ -623,10 +649,10 @@ class VariableClBuilderImageFilename(Variable):
|
|
|
|
|
untrusted = True
|
|
|
|
|
|
|
|
|
|
def init(self):
|
|
|
|
|
self.label = _("Image name")
|
|
|
|
|
self.help = _("set image name")
|
|
|
|
|
self.label = _("Image path")
|
|
|
|
|
self.help = _("set image path")
|
|
|
|
|
|
|
|
|
|
def check(self,value):
|
|
|
|
|
def check(self, value):
|
|
|
|
|
if not value:
|
|
|
|
|
raise VariableError(_("You must specify image filename"))
|
|
|
|
|
|
|
|
|
|