def __init__(self, name, raidSet=None, format=None, size=None, parents=None, sysfsPath=''): """ Create a DMRaidArray instance. Arguments: name -- the dmraid name also the device node's basename Keyword Arguments: raidSet -- the RaidSet object from block parents -- a list of the member devices sysfsPath -- sysfs device path size -- the device's size format -- a DeviceFormat instance """ if isinstance(parents, list): for parent in parents: if not parent.format or parent.format.type != "dmraidmember": raise ValueError("parent devices must contain dmraidmember format") DeviceMapper.__init__(self, name, format=format, size=size, parents=parents, sysfsPath=sysfsPath, exists=True) self.formatClass = get_device_format("dmraidmember") if not self.formatClass: raise StorageError("cannot find class for 'dmraidmember'") self._raidSet = raidSet
def __init__(self, name, vgdev, size=None, uuid=None, stripes=1, logSize=0, snapshotSpace=0, format=None, exists=None, sysfsPath='', grow=None, maxsize=None, percent=None): """ Create a LogicalVolume instance. Arguments: name -- the device name (generally a device node's basename) vgdev -- volume group (VolumeGroup instance) Keyword Arguments: size -- the device's size (in MB) uuid -- the device's UUID stripes -- number of copies in the vg (>1 for mirrored lvs) logSize -- size of log volume (for mirrored lvs) snapshotSpace -- sum of sizes of snapshots of this lv sysfsPath -- sysfs device path format -- a DeviceFormat instance exists -- indicates whether this is an existing device For new (non-existent) LVs only: grow -- whether to grow this LV maxsize -- maximum size for growable LV (in MB) percent -- percent of VG space to take """ if isinstance(vgdev, list): if len(vgdev) != 1: raise ValueError("constructor requires a single VolumeGroup instance") elif not isinstance(vgdev[0], VolumeGroup): raise ValueError("constructor requires a VolumeGroup instance") elif not isinstance(vgdev, VolumeGroup): raise ValueError("constructor requires a VolumeGroup instance") DeviceMapper.__init__(self, name, size=size, format=format, sysfsPath=sysfsPath, parents=vgdev, exists=exists) self.uuid = uuid self.snapshotSpace = snapshotSpace self.stripes = stripes self.logSize = logSize self.req_grow = None self.req_max_size = 0 self.req_size = 0 self.req_percent = 0 if not self.exists: self.req_grow = grow self.req_max_size = numeric_type(maxsize) # XXX should we enforce that req_size be pe-aligned? self.req_size = self._size self.req_percent = numeric_type(percent) # here we go with the circular references self.vg._addLogicalVolume(self)
def __init__(self, name, raidSet=None, format=None, size=None, parents=None, sysfsPath=''): """ Create a DMRaidArray instance. Arguments: name -- the dmraid name also the device node's basename Keyword Arguments: raidSet -- the RaidSet object from block parents -- a list of the member devices sysfsPath -- sysfs device path size -- the device's size format -- a DeviceFormat instance """ if isinstance(parents, list): for parent in parents: if not parent.format or parent.format.type != "dmraidmember": raise ValueError( "parent devices must contain dmraidmember format") DeviceMapper.__init__(self, name, format=format, size=size, parents=parents, sysfsPath=sysfsPath, exists=True) self.formatClass = get_device_format("dmraidmember") if not self.formatClass: raise DMRaidArrayError("cannot find class for 'dmraidmember'") self._raidSet = raidSet