@ -266,13 +266,14 @@ class VariableClAutopartitionDevice(AutopartitionHelper, Variable):
def checkNeeded ( self , valuelist , usedDevices , agregationType ) :
needDevices = list ( set ( usedDevices ) - set ( valuelist ) )
if needDevices :
raise VariableError ( _ ( " Disks {selecteddisk} are part of "
" {agrtype} \n You need to use {needdisk} as well or "
" clear {agrtype} manually " )
. format ( selecteddisk = " , " . join (
list ( set ( usedDevices ) & set ( valuelist ) ) ) ,
needdisk = " , " . join ( needDevices ) ,
agrtype = agregationType ) )
raise VariableError (
_ ( " Disks {selecteddisk} are part of "
" {agrtype} \n You need to use {needdisk} as well or "
" clear {agrtype} manually " ) . format (
selecteddisk = " , " . join (
list ( set ( usedDevices ) & set ( valuelist ) ) ) ,
needdisk = " , " . join ( needDevices ) ,
agrtype = agregationType ) )
def checkOnLvm ( self , valuelist ) :
disks = self . Select ( ' os_disk_dev ' ,
@ -317,18 +318,31 @@ class VariableClAutopartitionDevice(AutopartitionHelper, Variable):
device = " , " . join ( common ) ,
selected = device ) )
def checkSelectedRaid ( self , valuelist ) :
"""
Проверить схемы RAID , чтобы исключить базирование их на lvm
"""
typecheck = re . compile ( " lvm.*raid " )
for dev , fulltype in self . ZipVars ( " os_device_dev " ,
" os_device_fulltype " ) :
if dev in valuelist :
if typecheck . search ( fulltype ) :
raise VariableError ( _ ( " RAID %s is wrong " ) % dev )
def check ( self , valuelist ) :
if self . Get ( ' cl_autopartition_set ' ) == " on " :
if not valuelist :
raise VariableError (
_ ( " For autopartition, please select the device " ) )
useDisks = self . Select ( ' os_disk_parent ' ,
where = ' os_disk_mount ' , ne = ' ' )
for value in valuelist :
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 )
self . checkSelectedRaid ( valuelist )
self . checkOnSelectParentAndChild ( valuelist )
self . checkOnLvm ( valuelist )
self . checkOnRaid ( valuelist )
@ -781,7 +795,7 @@ class VariableClAutopartitionDiskSizeFull(ReadonlyVariable):
class VariableClAutopartitionRaid ( ReadonlyVariable ) :
"""
Список выбранных устройств для разметки , которые являются RAID
Список выбранных для разметки RAID устройств
"""
type = " list "
@ -789,9 +803,22 @@ class VariableClAutopartitionRaid(ReadonlyVariable):
selected_dev = self . Get ( ' cl_autopartition_device ' )
return [
dev for dev , _type in self . ZipVars (
" cl_autopartition_device_dev " , " cl_autopartition_device_type " )
" cl_autopartition_device_dev " , " cl_autopartition_device_type " )
if dev in selected_dev and _type == " raid " ]
class VariableClAutopartitionRaidParent ( ReadonlyVariable ) :
"""
Список физических устройств , из которых построены выбранные RAID
"""
type = " list "
def get ( self ) :
selected_raid = set ( self . Get ( ' cl_autopartition_raid ' ) )
return list ( set ( traverse (
parents . split ( ' , ' )
for parents in self . select ( ' os_device_parent ' ,
os_device_dev__in = selected_raid ) ) ) )
class VariableClAutopartitionMbr ( ReadonlyVariable ) :
"""
Диски на которые будет установлен загрузчик
@ -802,12 +829,7 @@ class VariableClAutopartitionMbr(ReadonlyVariable):
if self . GetBool ( ' cl_autopartition_uefi_set ' ) :
return [ ]
selected_raid = self . Get ( ' cl_autopartition_raid ' )
selected_raid_devices = set ( traverse (
parents . split ( ' , ' )
for parents in self . select ( ' os_device_parent ' ,
os_device_dev__in = selected_raid ) ) )
selected_raid_devices = self . Get ( ' cl_autopartition_raid_parent ' )
mbr = ( mbr for mbr in self . select (
' os_device_mbr ' , os_device_dev__in = selected_raid_devices )
@ -827,12 +849,7 @@ class VariableClAutopartitionEfi(ReadonlyVariable):
if not self . GetBool ( ' cl_autopartition_uefi_set ' ) :
return [ ]
selected_raid = self . Get ( ' cl_autopartition_raid ' )
selected_raid_devices = set ( traverse (
parents . split ( ' , ' )
for parents in self . select ( ' os_device_parent ' ,
os_device_dev__in = selected_raid ) ) )
selected_raid_devices = self . Get ( ' cl_autopartition_raid_parent ' )
efi = ( efi for efi in self . select (
' os_device_efi ' , os_device_dev__in = selected_raid_devices )