diff --git a/pym/install/variables/autopartition.py b/pym/install/variables/autopartition.py index f3928d0..56f767f 100644 --- a/pym/install/variables/autopartition.py +++ b/pym/install/variables/autopartition.py @@ -279,14 +279,17 @@ class VariableClAutopartitionDevice(AutopartitionHelper, Variable): if not valuelist: raise VariableError( _("For autopartition, please select the device")) + useDisks = set(traverse(x.split(',') for x in self.Select( 'os_disk_parent', where='os_disk_mount', ne=''))) - selected_raid_devices = self.Get('cl_autopartition_raid_parent') - for value in chain(valuelist, selected_raid_devices): - if value in useDisks: - raise VariableError( - _("Device %s is already in use by the current " - "system") % value) + for value in chain(valuelist): + for disk in set(chain(self.select( + 'os_device_parent', os_device_dev=value, + limit=1).split(","), [value])): + if disk in useDisks: + raise VariableError( + _("Device %s is already in use by the current " + "system") % value) self.checkSelectedRaid(valuelist) self.checkOnSelectParentAndChild(valuelist) self.checkOnLvm(valuelist) diff --git a/pym/install/wsdl_install.py b/pym/install/wsdl_install.py index 96501e4..b161bd9 100644 --- a/pym/install/wsdl_install.py +++ b/pym/install/wsdl_install.py @@ -26,6 +26,7 @@ setLocalTranslate('cl_install3', sys.modules[__name__]) __ = getLazyLocalTranslate(_) from calculate.core.server.func import WsdlBase +from calculate.lib.utils.partition import VolumesError from calculate.install.utils.cl_install import ClInstallAction from calculate.install.utils.cl_setup import ( ClSetupLocaleAction, ClSetupVideoAction, ClSetupSystemAction, @@ -56,7 +57,7 @@ class Wsdl(WsdlBase): 'action': ClInstallAction, # объект переменных 'datavars': "install", - 'native_error': (VariableError, DistributiveError, + 'native_error': (VariableError, DistributiveError, VolumesError, DataVarsError, install.InstallError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': 'system', 'cl_install_type': 'hdd', @@ -148,7 +149,7 @@ class Wsdl(WsdlBase): 'logic': {'Install': install.Install}, 'action': ClInstallAction, 'datavars': "install", - 'native_error': (VariableError, DistributiveError, + 'native_error': (VariableError, DistributiveError, VolumesError, DataVarsError, install.InstallError), 'setvars': {'cl_action!': 'system', 'cl_install_type': 'flash', 'cl_protect_use_set!': 'off',