[blivet:master 3/3] Distinguish among desired MD*Device constructors in newMDArray().
mulhern
amulhern at redhat.com
Fri Dec 12 18:35:08 UTC 2014
Signed-off-by: mulhern <amulhern at redhat.com>
---
blivet/__init__.py | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/blivet/__init__.py b/blivet/__init__.py
index 210d3c6..8cf9351 100644
--- a/blivet/__init__.py
+++ b/blivet/__init__.py
@@ -67,13 +67,14 @@ from pykickstart.constants import AUTOPART_TYPE_LVM, CLEARPART_TYPE_ALL, CLEARPA
from .storage_log import log_exception_info, log_method_call
from .errors import DeviceError, DirtyFSError, FSResizeError, FSTabTypeMismatchError, UnknownSourceDeviceError, StorageError, UnrecognizedFSTabEntryError
-from .devices import BTRFSDevice, BTRFSSubVolumeDevice, BTRFSVolumeDevice, DirectoryDevice, FileDevice, LVMLogicalVolumeDevice, LVMThinLogicalVolumeDevice, LVMThinPoolDevice, LVMVolumeGroupDevice, MDRaidArrayDevice, NetworkStorageDevice, NFSDevice, NoDevice, OpticalDevice, PartitionDevice, TmpFSDevice, devicePathToName
+from .devices import BTRFSDevice, BTRFSSubVolumeDevice, BTRFSVolumeDevice, DirectoryDevice, FileDevice, LVMLogicalVolumeDevice, LVMThinLogicalVolumeDevice, LVMThinPoolDevice, LVMVolumeGroupDevice, MDBiosRaidArrayDevice, MDContainerDevice, MDRaidArrayDevice, NetworkStorageDevice, NFSDevice, NoDevice, OpticalDevice, PartitionDevice, TmpFSDevice, devicePathToName
from .devicetree import DeviceTree
from .deviceaction import ActionCreateDevice, ActionCreateFormat, ActionDestroyDevice, ActionDestroyFormat, ActionResizeDevice, ActionResizeFormat
from .formats import getFormat
from .formats import get_device_format_class
from .formats import get_default_filesystem_type
from . import devicefactory
+from .devicelibs import raid
from .devicelibs.dm import name_from_dm_node
from .devicelibs.crypto import generateBackupPassphrase
from .devicelibs.edd import get_edd_dict
@@ -1063,7 +1064,18 @@ class Blivet(object):
swap=swap,
mountpoint=mountpoint)
- return MDRaidArrayDevice(name, *args, **kwargs)
+
+ device_type = MDRaidArrayDevice
+
+ level = kwargs.get("level", None)
+ if level is not None and raid.getRaidLevel(level) is raid.Container:
+ device_type = MDContainerDevice
+
+ parents = kwargs.get("parents", None)
+ if parents is not None and parents[0].type == "mdcontainer":
+ device_type = MDBiosRaidArrayDevice
+
+ return device_type(name, *args, **kwargs)
def newVG(self, *args, **kwargs):
""" Return a new LVMVolumeGroupDevice instance.
--
1.9.3
More information about the anaconda-patches
mailing list