[PATCH 8/20] Use the BlockDev's DM plugin instead of devicelibs/dm.py
vpodzime
installerbot-noreply at redhat.com
Fri Feb 27 15:31:52 UTC 2015
From: Vratislav Podzimek <vpodzime at redhat.com>
---
blivet/devicelibs/dm.py | 75 ---------------------------------------------
blivet/devices/dm.py | 13 ++++----
blivet/devices/lvm.py | 4 +--
blivet/devices/partition.py | 8 ++---
blivet/devicetree.py | 9 +++---
blivet/formats/__init__.py | 7 ++---
blivet/osinstall.py | 3 +-
7 files changed, 20 insertions(+), 99 deletions(-)
delete mode 100644 blivet/devicelibs/dm.py
diff --git a/blivet/devicelibs/dm.py b/blivet/devicelibs/dm.py
deleted file mode 100644
index ca5497a..0000000
--- a/blivet/devicelibs/dm.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#
-# dm.py
-# device-mapper functions
-#
-# Copyright (C) 2009 Red Hat, Inc. All rights reserved.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-# Author(s): Dave Lehman <dlehman at redhat.com>
-#
-
-import os
-
-import block
-from .. import util
-from ..errors import DMError
-
-import logging
-log = logging.getLogger("blivet")
-
-def dm_setup(args):
- ret = util.run_program(["dmsetup"] + args)
- if ret:
- raise DMError("Failed to run dmsetup %s" % " ".join(args))
-
-def dm_create_linear(map_name, device, length, uuid):
- table = "0 %d linear %s 0" % (length, device)
- args = ["create", map_name, "--uuid", uuid, "--table", "%s" % table]
- dm_setup(args)
-
-def dm_remove(map_name):
- args = ["remove", map_name]
- dm_setup(args)
-
-def name_from_dm_node(dm_node):
- # first, try sysfs
- name_file = "/sys/class/block/%s/dm/name" % dm_node
- try:
- name = open(name_file).read().strip()
- except IOError:
- # next, try pyblock
- name = block.getNameFromDmNode(dm_node)
-
- return name
-
-def dm_node_from_name(map_name):
- named_path = "/dev/mapper/%s" % map_name
- try:
- # /dev/mapper/ nodes are usually symlinks to /dev/dm-N
- node = os.path.basename(os.readlink(named_path))
- except OSError:
- try:
- # dm devices' names are based on the block device minor
- st = os.stat(named_path)
- minor = os.minor(st.st_rdev)
- node = "dm-%d" % minor
- except OSError:
- # try pyblock
- node = block.getDmNodeFromName(map_name)
-
- if not node:
- raise DMError("dm_node_from_name(%s) has failed." % node)
-
- return node
diff --git a/blivet/devices/dm.py b/blivet/devices/dm.py
index 9234c6e..041cae2 100644
--- a/blivet/devices/dm.py
+++ b/blivet/devices/dm.py
@@ -21,8 +21,7 @@
#
import os
-
-from ..devicelibs import dm
+from gi.repository import BlockDev as blockdev
import block
from .. import errors
@@ -110,7 +109,7 @@ def getDMNode(self):
if not self.exists:
raise errors.DeviceError("device has not been created", self.name)
- return dm.dm_node_from_name(self.name)
+ return blockdev.dm_node_from_name(self.name)
def setupPartitions(self):
log_method_call(self, name=self.name, kids=self.kids)
@@ -128,7 +127,7 @@ def teardownPartitions(self):
for dev in os.listdir("/dev/mapper/"):
prefix = self.name + "p"
if dev.startswith(prefix) and dev[len(prefix):].isdigit():
- dm.dm_remove(dev)
+ blockdev.dm_remove(dev)
def _setName(self, value):
""" Set the device's map name. """
@@ -183,8 +182,8 @@ def _setup(self, orig=False):
log_method_call(self, self.name, orig=orig, status=self.status,
controllable=self.controllable)
slave_length = self.slave.partedDevice.length
- dm.dm_create_linear(self.name, self.slave.path, slave_length,
- self.dmUuid)
+ blockdev.dm_create_linear(self.name, self.slave.path, slave_length,
+ self.dmUuid)
def _postSetup(self):
StorageDevice._postSetup(self)
@@ -194,7 +193,7 @@ def _postSetup(self):
def _teardown(self, recursive=False):
self.teardownPartitions()
udev.settle()
- dm.dm_remove(self.name)
+ blockdev.dm_remove(self.name)
udev.settle()
def deactivate(self, recursive=False):
diff --git a/blivet/devices/lvm.py b/blivet/devices/lvm.py
index 1c72c86..cb39b07 100644
--- a/blivet/devices/lvm.py
+++ b/blivet/devices/lvm.py
@@ -24,10 +24,10 @@
import abc
import pprint
import re
+from gi.repository import BlockDev as blockdev
# device backend modules
from ..devicelibs import lvm
-from ..devicelibs import dm
from .. import errors
from .. import util
@@ -598,7 +598,7 @@ def getDMNode(self):
if not self.exists:
raise errors.DeviceError("device has not been created", self.name)
- return dm.dm_node_from_name(self.mapName)
+ return blockdev.dm_node_from_name(self.mapName)
def _getName(self):
""" This device's name. """
diff --git a/blivet/devices/partition.py b/blivet/devices/partition.py
index d77d9bf..504d7e1 100644
--- a/blivet/devices/partition.py
+++ b/blivet/devices/partition.py
@@ -22,6 +22,8 @@
import os
import parted
import _ped
+from gi.repository import BlockDev as blockdev
+from gi.repository import GLib
from .. import errors
from .. import util
@@ -32,8 +34,6 @@
from ..formats import DeviceFormat, getFormat
from ..size import Size, MiB
-from ..devicelibs import dm
-
import logging
log = logging.getLogger("blivet")
@@ -692,8 +692,8 @@ def _postDestroy(self):
# self.exists has been unset, so don't use self.status
if os.path.exists(self.path):
try:
- dm.dm_remove(self.name)
- except (errors.DMError, OSError):
+ blockdev.dm_remove(self.name)
+ except GLib.GError:
pass
def _getSize(self):
diff --git a/blivet/devicetree.py b/blivet/devicetree.py
index 76cc7d4..6b84fb9 100644
--- a/blivet/devicetree.py
+++ b/blivet/devicetree.py
@@ -45,7 +45,6 @@
from . import formats
from .formats import getFormat
from .formats.fs import nodev_filesystems
-from .devicelibs import dm
from .devicelibs import lvm
from .devicelibs import edd
from . import udev
@@ -734,7 +733,7 @@ def addUdevDMDevice(self, info):
for slave_name in slave_names:
# if it's a dm-X name, resolve it to a map name first
if slave_name.startswith("dm-"):
- dev_name = dm.name_from_dm_node(slave_name)
+ dev_name = blockdev.dm_name_from_node(slave_name)
else:
dev_name = slave_name.replace("!", "/") # handles cciss
slave_dev = self.getDeviceByName(dev_name)
@@ -804,7 +803,7 @@ def addUdevMultiPathDevice(self, info):
for slave_name in slave_names:
# if it's a dm-X name, resolve it to a map name first
if slave_name.startswith("dm-"):
- dev_name = dm.name_from_dm_node(slave_name)
+ dev_name = blockdev.dm_name_from_node(slave_name)
else:
dev_name = slave_name.replace("!", "/") # handles cciss
slave_dev = self.getDeviceByName(dev_name)
@@ -847,7 +846,7 @@ def addUdevMDDevice(self, info):
for slave_name in slave_names:
# if it's a dm-X name, resolve it to a map name
if slave_name.startswith("dm-"):
- dev_name = dm.name_from_dm_node(slave_name)
+ dev_name = blockdev.dm_name_from_node(slave_name)
else:
dev_name = slave_name
slave_dev = self.getDeviceByName(dev_name)
@@ -2552,7 +2551,7 @@ def resolveDevice(self, devspec, blkidTab=None, cryptTab=None, options=None):
if devspec.startswith("/dev/dm-"):
try:
- dm_name = dm.name_from_dm_node(devspec[5:])
+ dm_name = blockdev.dm_name_from_node(devspec[5:])
except StorageError as e:
log.info("failed to resolve %s: %s", devspec, e)
dm_name = None
diff --git a/blivet/formats/__init__.py b/blivet/formats/__init__.py
index e1f0b53..15180d7 100644
--- a/blivet/formats/__init__.py
+++ b/blivet/formats/__init__.py
@@ -30,8 +30,7 @@
from ..util import run_program
from ..util import ObjectID
from ..storage_log import log_method_call
-from ..errors import DeviceFormatError, DMError, FormatCreateError, FormatDestroyError, FormatSetupError
-from ..devicelibs.dm import dm_node_from_name
+from ..errors import DeviceFormatError, FormatCreateError, FormatDestroyError, FormatSetupError
from ..i18n import N_
from ..size import Size
@@ -333,8 +332,8 @@ def notifyKernel(self):
if self.device.startswith("/dev/mapper/"):
try:
- name = dm_node_from_name(os.path.basename(self.device))
- except DMError:
+ name = blockdev.dm_node_from_name(os.path.basename(self.device))
+ except GLib.GError:
log.warning("failed to get dm node for %s", self.device)
return
elif self.device.startswith("/dev/md/"):
diff --git a/blivet/osinstall.py b/blivet/osinstall.py
index 02dca1e..b5f3468 100644
--- a/blivet/osinstall.py
+++ b/blivet/osinstall.py
@@ -33,7 +33,6 @@
from .devices import FileDevice, NFSDevice, NoDevice, OpticalDevice, NetworkStorageDevice, DirectoryDevice
from .errors import FSTabTypeMismatchError, UnrecognizedFSTabEntryError, StorageError, FSResizeError, UnknownSourceDeviceError
from .formats import get_device_format_class
-from .devicelibs.dm import name_from_dm_node
from .formats import getFormat
from .flags import flags
from .platform import platform as _platform
@@ -1036,7 +1035,7 @@ def get_containing_device(path, devicetree):
if device_name.startswith("dm-"):
# have I told you lately that I love you, device-mapper?
- device_name = name_from_dm_node(device_name)
+ device_name = blockdev.dm_name_from_node(device_name)
return devicetree.getDeviceByName(device_name)
--
To view this commit on github, visit https://github.com/rhinstaller/blivet/commit/75accb312b14cb543df7c417975c3d2254940988
More information about the anaconda-patches
mailing list