|
|
|
@ -23,6 +23,7 @@ import calculate.lib.utils.device as device
|
|
|
|
|
from calculate.lib.utils.device import humanreadableSize
|
|
|
|
|
from calculate.lib.utils import partition
|
|
|
|
|
from calculate.lib.utils.files import (readLinesFile)
|
|
|
|
|
from calculate.lib.utils.mount import isMount
|
|
|
|
|
from calculate.install.fs_manager import FileSystemManager
|
|
|
|
|
from calculate.lib.utils.tools import Sizes, traverse
|
|
|
|
|
from itertools import *
|
|
|
|
@ -302,6 +303,15 @@ class VariableClAutopartitionDevice(AutopartitionHelper, Variable):
|
|
|
|
|
|
|
|
|
|
useDisks = set(traverse(x.split(',') for x in self.Select(
|
|
|
|
|
'os_disk_parent', where='os_disk_mount', ne='')))
|
|
|
|
|
mountedData = [(x,y) for x,y in self.ZipVars(
|
|
|
|
|
"os_disk_parent", "os_disk_dev") if isMount(y)]
|
|
|
|
|
mountedDevices = {}
|
|
|
|
|
for devices, disk in mountedData:
|
|
|
|
|
for _device in traverse(devices.split(',')):
|
|
|
|
|
if _device not in mountedDevices:
|
|
|
|
|
mountedDevices[_device] = set()
|
|
|
|
|
mountedDevices[_device].add(disk)
|
|
|
|
|
|
|
|
|
|
for value in chain(valuelist):
|
|
|
|
|
for disk in set(chain(self.select(
|
|
|
|
|
'os_device_parent', os_device_dev=value,
|
|
|
|
@ -310,6 +320,11 @@ class VariableClAutopartitionDevice(AutopartitionHelper, Variable):
|
|
|
|
|
raise VariableError(
|
|
|
|
|
_("Device %s is already in use by the current "
|
|
|
|
|
"system") % value)
|
|
|
|
|
if disk in mountedDevices:
|
|
|
|
|
disks = ",".join(sorted(mountedDevices[disk]))
|
|
|
|
|
raise VariableError(
|
|
|
|
|
_("Please unmount {disks}, as {device} will be used for "
|
|
|
|
|
"installation").format(device=disk, disks=disks))
|
|
|
|
|
self.checkSelectedRaid(valuelist)
|
|
|
|
|
self.checkOnSelectParentAndChild(valuelist)
|
|
|
|
|
self.checkOnLvm(valuelist)
|
|
|
|
|