From 6ae475fb80cdf1dd7f527ed0b952c613a5825ec3 Mon Sep 17 00:00:00 2001 From: Vojtech Trefny Date: Wed, 7 Feb 2018 14:58:12 +0100 Subject: [PATCH 4/7] Add 'NVDIMMNamespaceDevice' device representing NVDIMM namespaces --- blivet/devices/__init__.py | 2 +- blivet/devices/disk.py | 51 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/blivet/devices/__init__.py b/blivet/devices/__init__.py index 5bae1cbe..aaad30c3 100644 --- a/blivet/devices/__init__.py +++ b/blivet/devices/__init__.py @@ -22,7 +22,7 @@ from .lib import device_path_to_name, device_name_to_disk_by_path, ParentList from .device import Device from .storage import StorageDevice -from .disk import DiskDevice, DiskFile, DMRaidArrayDevice, MultipathDevice, iScsiDiskDevice, FcoeDiskDevice, DASDDevice, ZFCPDiskDevice +from .disk import DiskDevice, DiskFile, DMRaidArrayDevice, MultipathDevice, iScsiDiskDevice, FcoeDiskDevice, DASDDevice, ZFCPDiskDevice, NVDIMMNamespaceDevice from .partition import PartitionDevice from .dm import DMDevice, DMLinearDevice, DMCryptDevice, DM_MAJORS from .luks import LUKSDevice diff --git a/blivet/devices/disk.py b/blivet/devices/disk.py index 26448640..dc796cf0 100644 --- a/blivet/devices/disk.py +++ b/blivet/devices/disk.py @@ -63,7 +63,7 @@ class DiskDevice(StorageDevice): def __init__(self, name, fmt=None, size=None, major=None, minor=None, sysfs_path='', parents=None, serial=None, vendor="", model="", bus="", wwn=None, - exists=True): + uuid=None, exists=True): """ :param name: the device name (generally a device node's basename) :type name: str @@ -96,7 +96,7 @@ class DiskDevice(StorageDevice): major=major, minor=minor, exists=exists, sysfs_path=sysfs_path, parents=parents, serial=serial, model=model, - vendor=vendor, bus=bus) + vendor=vendor, bus=bus, uuid=uuid) self.wwn = wwn or None @@ -660,3 +660,50 @@ class DASDDevice(DiskDevice): ":".join(opts))]) else: return set(["rd.dasd=%s" % self.busid]) + + +class NVDIMMNamespaceDevice(DiskDevice): + + """ Non-volatile memory namespace """ + _type = "nvdimm" + + def __init__(self, device, **kwargs): + """ + :param name: the device name (generally a device node's basename) + :type name: str + :keyword exists: does this device exist? + :type exists: bool + :keyword size: the device's size + :type size: :class:`~.size.Size` + :keyword parents: a list of parent devices + :type parents: list of :class:`StorageDevice` + :keyword format: this device's formatting + :type format: :class:`~.formats.DeviceFormat` or a subclass of it + :keyword mode: mode of the namespace + :type mode: str + :keyword devname: name of the namespace (e.g. 'namespace0.0') + :type devname: str + :keyword sector_size: sector size of the namespace in sector mode + :type sector_size: str + """ + self.mode = kwargs.pop("mode") + self.devname = kwargs.pop("devname") + self.sector_size = kwargs.pop("sector_size") + + DiskDevice.__init__(self, device, **kwargs) + + def __repr__(self): + s = DiskDevice.__repr__(self) + s += (" mode = %(mode)s devname = %(devname)s" % + {"mode": self.mode, + "devname": self.devname}) + if self.sector_size: + s += (" sector size = %(sector_size)s" % {"sector_size": self.sector_size}) + return s + + @property + def description(self): + return "NVDIMM namespace %(devname)s in %(mode)s mode exported as %(path)s" \ + % {'devname': self.devname, + 'mode': self.mode, + 'path': self.path} -- 2.14.3