← Back to team overview

curtin-dev team mailing list archive

[Merge] ~mwhudson/curtin:dead-code into curtin:master

 

Michael Hudson-Doyle has proposed merging ~mwhudson/curtin:dead-code into curtin:master.

Commit message:
remove some unused code

Requested reviews:
  curtin developers (curtin-dev)

For more details, see:
https://code.launchpad.net/~mwhudson/curtin/+git/curtin/+merge/396115

My other ongoing curtin changes seem to be heading off into the weeds sadly, so here's something a little bit simpler, hopefully.
-- 
Your team curtin developers is requested to review the proposed merge of ~mwhudson/curtin:dead-code into curtin:master.
diff --git a/curtin/block/__init__.py b/curtin/block/__init__.py
index 0cf0866..2c1cc7c 100644
--- a/curtin/block/__init__.py
+++ b/curtin/block/__init__.py
@@ -2,7 +2,6 @@
 import re
 from contextlib import contextmanager
 import errno
-import itertools
 import os
 import stat
 import sys
@@ -692,28 +691,6 @@ def get_scsi_wwid(device, replace_whitespace=False):
         return None
 
 
-def get_multipath_wwids():
-    """
-    Get WWIDs of all multipath devices available in the system.
-    """
-    multipath_devices = set()
-    multipath_wwids = set()
-    devuuids = [(d, i['UUID']) for d, i in blkid().items() if 'UUID' in i]
-    # Looking for two disks which contain filesystems with the same UUID.
-    for (dev1, uuid1), (dev2, uuid2) in itertools.combinations(devuuids, 2):
-        if uuid1 == uuid2:
-            multipath_devices.add(get_blockdev_for_partition(dev1)[0])
-    for device in multipath_devices:
-        wwid = get_scsi_wwid(device)
-        # Function get_scsi_wwid() may return None in case of errors or
-        # WWID field may be empty for some buggy disk. We don't want to
-        # propagate both of these value further to avoid generation of
-        # incorrect /etc/multipath/bindings file.
-        if wwid:
-            multipath_wwids.add(wwid)
-    return multipath_wwids
-
-
 def get_root_device(dev, paths=None):
     """
     Get root partition for specified device, based on presence of any
@@ -812,20 +789,6 @@ def get_volume_uuid(path):
     return ''
 
 
-def get_mountpoints():
-    """
-    Returns a list of all mountpoints where filesystems are currently mounted.
-    """
-    info = _lsblock()
-    proc_mounts = [mp for (dev, mp, vfs, opts, freq, passno) in
-                   get_proc_mounts()]
-    lsblock_mounts = list(i.get("MOUNTPOINT") for name, i in info.items() if
-                          i.get("MOUNTPOINT") is not None and
-                          i.get("MOUNTPOINT") != "")
-
-    return list(set(proc_mounts + lsblock_mounts))
-
-
 def get_proc_mounts():
     """
     Returns a list of tuples for each entry in /proc/mounts
@@ -885,15 +848,6 @@ def disk_to_byid_path(kname):
     return mapping.get(dev_path(kname))
 
 
-def disk_to_bypath_path(kname):
-    """"
-    Return a /dev/disk/by-path path to kname if present.
-    """
-
-    mapping = _get_dev_disk_by_prefix('/dev/disk/by-path')
-    return mapping.get(dev_path(kname))
-
-
 def get_device_mapper_links(devpath, first=False):
     """ Return the best devlink to device at devpath. """
     info = udevadm_info(devpath)
@@ -946,30 +900,6 @@ def lookup_disk(serial):
     return path
 
 
-def lookup_dasd(bus_id):
-    """
-    Search for a dasd by its bus_id.
-
-    :param bus_id: s390x ccw bus_id 0.0.NNNN specifying the dasd
-    :returns: dasd kernel device path (/dev/dasda)
-    """
-
-    LOG.info('Processing ccw bus_id %s', bus_id)
-    sys_ccw_dev = '/sys/bus/ccw/devices/%s/block' % bus_id
-    if not os.path.exists(sys_ccw_dev):
-        raise ValueError('Failed to find a block device at %s' % sys_ccw_dev)
-
-    dasds = os.listdir(sys_ccw_dev)
-    if not dasds or len(dasds) < 1:
-        raise ValueError("no dasd with device_id '%s' found" % bus_id)
-
-    path = '/dev/%s' % dasds[0]
-    if not os.path.exists(path):
-        raise ValueError("path '%s' to block device for dasd with bus_id '%s' \
-            does not exist" % (path, bus_id))
-    return path
-
-
 def sysfs_partition_data(blockdev=None, sysfs_path=None):
     # given block device or sysfs_path, return a list of tuples
     # of (kernel_name, number, offset, size)
diff --git a/curtin/block/bcache.py b/curtin/block/bcache.py
index c1a8d26..581379f 100644
--- a/curtin/block/bcache.py
+++ b/curtin/block/bcache.py
@@ -155,17 +155,6 @@ def get_cacheset_members(cset_uuid):
     return members
 
 
-def get_cacheset_cachedev(cset_uuid):
-    """ Return a sysfs path to a cacheset cache device's bcache dir."""
-
-    # XXX: bcache cachesets only have a single cache0 entry
-    cachedev = '/sys/fs/bcache/%s/cache0' % cset_uuid
-    if os.path.exists(cachedev):
-        return os.path.realpath(cachedev)
-
-    return None
-
-
 def attach_backing_to_cacheset(backing_device, cache_device, cset_uuid):
     LOG.info("Attaching backing device to cacheset: "
              "{} -> {} cset.uuid: {}".format(backing_device, cache_device,
diff --git a/curtin/block/iscsi.py b/curtin/block/iscsi.py
index 3c46500..0e4ee17 100644
--- a/curtin/block/iscsi.py
+++ b/curtin/block/iscsi.py
@@ -225,11 +225,6 @@ def ensure_disk_connected(rfc4173, write_config=True):
     return iscsi_disk
 
 
-def connected_disks():
-    global _ISCSI_DISKS
-    return _ISCSI_DISKS
-
-
 def get_iscsi_volumes_from_config(cfg):
     """Parse a curtin storage config and return a list
        of iscsi disk rfc4173 uris for each configuration present.
@@ -267,33 +262,6 @@ def get_iscsi_ports_from_config(cfg):
     return ports
 
 
-def disconnect_target_disks(target_root_path=None):
-    target_nodes_path = paths.target_path(target_root_path, '/etc/iscsi/nodes')
-    fails = []
-    if os.path.isdir(target_nodes_path):
-        for target in os.listdir(target_nodes_path):
-            if target not in iscsiadm_sessions():
-                LOG.debug('iscsi target %s not active, skipping', target)
-                continue
-            # conn is "host,port,lun"
-            for conn in os.listdir(
-                            os.path.sep.join([target_nodes_path, target])):
-                host, port, _ = conn.split(',')
-                try:
-                    util.subp(['sync'])
-                    iscsiadm_logout(target, '%s:%s' % (host, port))
-                except util.ProcessExecutionError as e:
-                    fails.append(target)
-                    LOG.warn("Unable to logout of iSCSI target %s: %s",
-                             target, e)
-    else:
-        LOG.warning('Skipping disconnect: failed to find iscsi nodes path: %s',
-                    target_nodes_path)
-    if fails:
-        raise RuntimeError(
-            "Unable to logout of iSCSI targets: %s" % ', '.join(fails))
-
-
 # Determines if a /dev/disk/by-path symlink matching the udev pattern
 # for iSCSI disks is pointing at @kname
 def kname_is_iscsi(kname):
diff --git a/curtin/block/mdadm.py b/curtin/block/mdadm.py
index a6ac970..fd26752 100644
--- a/curtin/block/mdadm.py
+++ b/curtin/block/mdadm.py
@@ -92,11 +92,6 @@ READWRITE_RAID_STATES = [
     'write-pending',
 ]
 
-VALID_RAID_ARRAY_STATES = (
-    ERROR_RAID_STATES +
-    READONLY_RAID_STATES +
-    READWRITE_RAID_STATES
-)
 
 # need a on-import check of version and set the value for later reference
 ''' mdadm version < 3.3 doesn't include enough info when using --export
@@ -353,15 +348,6 @@ def mdadm_stop(devpath, retries=None):
     raise OSError('Failed to stop mdadm device %s', devpath)
 
 
-def mdadm_remove(devpath):
-    assert_valid_devpath(devpath)
-
-    LOG.info("mdadm removing: %s" % devpath)
-    out, err = util.subp(["mdadm", "--remove", devpath],
-                         rcs=[0], capture=True)
-    LOG.debug("mdadm remove:\n%s\n%s", out, err)
-
-
 def fail_device(mddev, arraydev):
     assert_valid_devpath(mddev)
 
@@ -559,14 +545,6 @@ def md_check_array_state_rw(md_devname):
     return __md_check_array_state(md_devname, mode='READWRITE')
 
 
-def md_check_array_state_ro(md_devname):
-    return __md_check_array_state(md_devname, mode='READONLY')
-
-
-def md_check_array_state_error(md_devname):
-    return __md_check_array_state(md_devname, mode='ERROR')
-
-
 def __mdadm_export_to_dict(output):
     ''' convert Key=Value text output into dictionary '''
     return dict(tok.split('=', 1) for tok in shlex.split(output))
@@ -633,81 +611,6 @@ def __mdadm_detail_to_dict(input):
     return data
 
 
-def md_device_key_role(devname):
-    if not devname:
-        raise ValueError('Missing parameter devname')
-    return 'MD_DEVICE_' + dev_short(devname) + '_ROLE'
-
-
-def md_device_key_dev(devname):
-    if not devname:
-        raise ValueError('Missing parameter devname')
-    return 'MD_DEVICE_' + dev_short(devname) + '_DEV'
-
-
-def __upgrade_detail_dict(detail):
-    ''' This method attempts to convert mdadm --detail output into
-        a KEY=VALUE output the same as mdadm --detail --export from mdadm v3.3
-    '''
-    # if the input already has MD_UUID, it's already been converted
-    if 'MD_UUID' in detail:
-        return detail
-
-    md_detail = {
-        'MD_LEVEL': detail['raid_level'],
-        'MD_DEVICES': detail['raid_devices'],
-        'MD_METADATA': detail['version'],
-        'MD_NAME': detail['name'].split()[0],
-    }
-
-    # exmaine has ARRAY UUID
-    if 'array_uuid' in detail:
-        md_detail.update({'MD_UUID': detail['array_uuid']})
-    # query,detail has UUID
-    elif 'uuid' in detail:
-        md_detail.update({'MD_UUID': detail['uuid']})
-
-    device = detail['device']
-
-    #  MD_DEVICE_vdc1_DEV=/dev/vdc1
-    md_detail.update({md_device_key_dev(device): device})
-
-    if 'device_role' in detail:
-        role = detail['device_role']
-        if role != 'spare':
-            # device_role = Active device 1
-            role = role.split()[-1]
-
-        # MD_DEVICE_vdc1_ROLE=spare
-        md_detail.update({md_device_key_role(device): role})
-
-    return md_detail
-
-
-def md_read_run_mdadm_map():
-    '''
-        md1 1.2 59beb40f:4c202f67:088e702b:efdf577a /dev/md1
-        md0 0.90 077e6a9e:edf92012:e2a6e712:b193f786 /dev/md0
-
-        return
-        # md_shortname = (metaversion, md_uuid, md_devpath)
-        data = {
-            'md1': (1.2, 59beb40f:4c202f67:088e702b:efdf577a, /dev/md1)
-            'md0': (0.90, 077e6a9e:edf92012:e2a6e712:b193f786, /dev/md0)
-    '''
-
-    mdadm_map = {}
-    run_mdadm_map = '/run/mdadm/map'
-    if os.path.exists(run_mdadm_map):
-        with open(run_mdadm_map, 'r') as fp:
-            data = fp.read().strip()
-        for entry in data.split('\n'):
-            (key, meta, md_uuid, dev) = entry.split()
-            mdadm_map.update({key: (meta, md_uuid, dev)})
-
-    return mdadm_map
-
-
 def md_check_array_uuid(md_devname, md_uuid):
     valid_mdname(md_devname)
 
@@ -750,22 +653,6 @@ def md_check_raidlevel(raidlevel):
     return True
 
 
-def md_block_until_in_sync(md_devname):
-    '''
-    sync_completed
-    This shows the number of sectors that have been completed of
-    whatever the current sync_action is, followed by the number of
-    sectors in total that could need to be processed.  The two
-    numbers are separated by a '/'  thus effectively showing one
-    value, a fraction of the process that is complete.
-    A 'select' on this attribute will return when resync completes,
-    when it reaches the current sync_max (below) and possibly at
-    other times.
-    '''
-    # FIXME: use selectors to block on: /sys/class/block/mdX/md/sync_completed
-    pass
-
-
 def md_check_array_state(md_devname):
     # check array state
 
diff --git a/curtin/block/multipath.py b/curtin/block/multipath.py
index 7ad1791..8010f29 100644
--- a/curtin/block/multipath.py
+++ b/curtin/block/multipath.py
@@ -88,15 +88,6 @@ def is_mpath_partition(devpath, info=None):
     return result
 
 
-def mpath_partition_to_mpath_id(devpath):
-    """ Return the mpath id of a multipath partition. """
-    info = udev.udevadm_info(devpath)
-    if 'DM_MPATH' in info:
-        return info['DM_MPATH']
-
-    return None
-
-
 def remove_partition(devpath, retries=10):
     """ Remove a multipath partition mapping. """
     LOG.debug('multipath: removing multipath partition: %s', devpath)
@@ -109,36 +100,6 @@ def remove_partition(devpath, retries=10):
     util.wait_for_removal(devpath)
 
 
-def remove_map(map_id, retries=10):
-    """ Remove a multipath device mapping. """
-    LOG.debug('multipath: removing multipath map: %s', map_id)
-    devpath = '/dev/mapper/%s' % map_id
-    for _ in range(0, retries):
-        util.subp(['multipath', '-v3', '-R3', '-f', map_id], rcs=[0, 1])
-        udev.udevadm_settle()
-        if not os.path.exists(devpath):
-            return
-
-    util.wait_for_removal(devpath)
-
-
-def find_mpath_members(multipath_id, paths=None):
-    """ Return a list of device path for each member of aspecified mpath_id."""
-    if not paths:
-        paths = show_paths()
-        for retry in range(0, 5):
-            orphans = [path for path in paths if 'orphan' in path['multipath']]
-            if len(orphans):
-                udev.udevadm_settle()
-                paths = show_paths()
-            else:
-                break
-
-    members = ['/dev/' + path['device']
-               for path in paths if path['multipath'] == multipath_id]
-    return members
-
-
 def find_mpath_id(devpath, maps=None):
     """ Return the mpath_id associated with a specified device path. """
     if not maps:
@@ -170,17 +131,6 @@ def find_mpath_id_by_path(devpath, paths=None):
     return None
 
 
-def find_mpath_id_by_parent(multipath_id, partnum=None):
-    """ Return the mpath_id associated with a specified device path. """
-    devmap = dmname_to_blkdev_mapping()
-    LOG.debug('multipath: dm_name blk map: %s', devmap)
-    dm_name = multipath_id
-    if partnum:
-        dm_name += "-part%d" % int(partnum)
-
-    return (dm_name, devmap.get(dm_name))
-
-
 def find_mpath_partitions(mpath_id):
     """
     Return a generator of multipath ids which are partitions of 'mpath-id'
diff --git a/curtin/commands/curthooks.py b/curtin/commands/curthooks.py
index 4cf7301..46af022 100644
--- a/curtin/commands/curthooks.py
+++ b/curtin/commands/curthooks.py
@@ -905,16 +905,6 @@ def copy_iscsi_conf(nodes_dir, target, target_nodes_dir='etc/iscsi/nodes'):
             shutil.copytree(source_dir, target_dir)
 
 
-def copy_mdadm_conf(mdadm_conf, target):
-    if not mdadm_conf:
-        LOG.warn("mdadm config must be specified, not copying")
-        return
-
-    LOG.info("copying mdadm.conf into target")
-    shutil.copy(mdadm_conf, os.path.sep.join([target,
-                'etc/mdadm/mdadm.conf']))
-
-
 def copy_zpool_cache(zpool_cache, target):
     if not zpool_cache:
         LOG.warn("zpool_cache path must be specified, not copying")
diff --git a/curtin/net/__init__.py b/curtin/net/__init__.py
index 3b02f9d..2b56f17 100644
--- a/curtin/net/__init__.py
+++ b/curtin/net/__init__.py
@@ -94,10 +94,6 @@ def is_physical(devname):
     return os.path.exists(sys_dev_path(devname, "device"))
 
 
-def is_present(devname):
-    return os.path.exists(sys_dev_path(devname))
-
-
 def get_devicelist():
     return os.listdir(SYS_CLASS_NET)
 
diff --git a/tests/unittests/test_block.py b/tests/unittests/test_block.py
index 78e331d..985700f 100644
--- a/tests/unittests/test_block.py
+++ b/tests/unittests/test_block.py
@@ -29,22 +29,6 @@ class TestBlock(CiTestCase):
         mock_util.subp.assert_called_with(expected_call, capture=True)
         self.assertEqual(uuid, "182e8e23-5322-46c9-a1b8-cf2c6a88f9f7")
 
-    @mock.patch("curtin.block.get_proc_mounts")
-    @mock.patch("curtin.block._lsblock")
-    def test_get_mountpoints(self, mock_lsblk, mock_proc_mounts):
-        mock_lsblk.return_value = {"sda1": {"MOUNTPOINT": None},
-                                   "sda2": {"MOUNTPOINT": ""},
-                                   "sda3": {"MOUNTPOINT": "/mnt"}}
-        mock_proc_mounts.return_value = [
-            ('sysfs', '/sys', 'sysfs', 'sysfs_opts', '0', '0'),
-        ]
-
-        mountpoints = block.get_mountpoints()
-
-        self.assertTrue(mock_lsblk.called)
-        self.assertEqual(sorted(mountpoints),
-                         sorted(["/mnt", "/sys"]))
-
     @mock.patch('curtin.block._lsblock')
     def test_get_blockdev_sector_size(self, mock_lsblk):
         mock_lsblk.return_value = {
diff --git a/tests/unittests/test_block_bcache.py b/tests/unittests/test_block_bcache.py
index 7936522..ecb8046 100644
--- a/tests/unittests/test_block_bcache.py
+++ b/tests/unittests/test_block_bcache.py
@@ -271,19 +271,6 @@ class TestBlockBcache(CiTestCase):
         self.assertEqual([bdev_target], results)
         m_listdir.assert_called_with(cset_path)
 
-    @mock.patch('curtin.block.bcache.os.path.exists')
-    @mock.patch('curtin.block.bcache.os.path.realpath')
-    def test_get_cacheset_cachedev(self, m_real, m_exists):
-        """ get_cacheset_cachedev finds cacheset device path."""
-        cset_uuid = self.random_string()
-        cachedev_target = self.random_string()
-        cset_path = '/sys/fs/bcache/%s/cache0' % cset_uuid
-        m_exists.return_value = True
-        m_real.side_effect = iter([cachedev_target])
-        results = bcache.get_cacheset_cachedev(cset_uuid)
-        self.assertEqual(cachedev_target, results)
-        m_real.assert_called_with(cset_path)
-
     @mock.patch('curtin.block.bcache.is_backing')
     @mock.patch('curtin.block.bcache.sysfs_path')
     @mock.patch('curtin.block.bcache.os.listdir')
diff --git a/tests/unittests/test_block_iscsi.py b/tests/unittests/test_block_iscsi.py
index f8ef5d8..c5b5121 100644
--- a/tests/unittests/test_block_iscsi.py
+++ b/tests/unittests/test_block_iscsi.py
@@ -647,104 +647,4 @@ class TestBlockIscsiDiskFromConfig(CiTestCase):
         self.assertEqual(expected_iscsi_disks, iscsi_disks)
 
 
-class TestBlockIscsiDisconnect(CiTestCase):
-    # test that when disconnecting iscsi targets we
-    # check that the target has an active session before
-    # issuing a disconnect command
-
-    def setUp(self):
-        super(TestBlockIscsiDisconnect, self).setUp()
-        self.add_patch('curtin.block.iscsi.util.subp', 'mock_subp')
-        self.add_patch('curtin.block.iscsi.iscsiadm_sessions',
-                       'mock_iscsi_sessions')
-        # fake target_root + iscsi nodes dir
-        self.target_path = self.tmp_dir()
-        self.iscsi_nodes = os.path.join(self.target_path, 'etc/iscsi/nodes')
-        util.ensure_dir(self.iscsi_nodes)
-
-    def _fmt_disconnect(self, target, portal):
-        return ['iscsiadm', '--mode=node', '--targetname=%s' % target,
-                '--portal=%s' % portal, '--logout']
-
-    def _setup_nodes(self, sessions, connection):
-        # setup iscsi_nodes dir (<fakeroot>/etc/iscsi/nodes) with content
-        for s in sessions:
-            sdir = os.path.join(self.iscsi_nodes, s)
-            connpath = os.path.join(sdir, connection)
-            util.ensure_dir(sdir)
-            util.write_file(connpath, content="")
-
-    def test_disconnect_target_disk(self):
-        """Test iscsi disconnecting multiple sessions, all present"""
-
-        sessions = [
-            'curtin-53ab23ff-a887-449a-80a8-288151208091',
-            'curtin-94b62de1-c579-42c0-879e-8a28178e64c5',
-            'curtin-556aeecd-a227-41b7-83d7-2bb471c574b4',
-            'curtin-fd0f644b-7858-420f-9997-3ea2aefe87b9'
-        ]
-        connection = '10.245.168.20,16395,1'
-        self._setup_nodes(sessions, connection)
-
-        self.mock_iscsi_sessions.return_value = "\n".join(sessions)
-
-        iscsi.disconnect_target_disks(self.target_path)
-
-        expected_calls = []
-        for session in sessions:
-            (host, port, _) = connection.split(',')
-            disconnect = self._fmt_disconnect(session, "%s:%s" % (host, port))
-            calls = [
-                mock.call(['sync']),
-                mock.call(disconnect, capture=True, log_captured=True),
-                mock.call(['udevadm', 'settle']),
-            ]
-            expected_calls.extend(calls)
-
-        self.mock_subp.assert_has_calls(expected_calls, any_order=True)
-
-    def test_disconnect_target_disk_skip_disconnected(self):
-        """Test iscsi does not attempt to disconnect already closed sessions"""
-        sessions = [
-            'curtin-53ab23ff-a887-449a-80a8-288151208091',
-            'curtin-94b62de1-c579-42c0-879e-8a28178e64c5',
-            'curtin-556aeecd-a227-41b7-83d7-2bb471c574b4',
-            'curtin-fd0f644b-7858-420f-9997-3ea2aefe87b9'
-        ]
-        connection = '10.245.168.20,16395,1'
-        self._setup_nodes(sessions, connection)
-        # Test with all sessions are already disconnected
-        self.mock_iscsi_sessions.return_value = ""
-
-        iscsi.disconnect_target_disks(self.target_path)
-
-        self.mock_subp.assert_has_calls([], any_order=True)
-
-    @mock.patch('curtin.block.iscsi.iscsiadm_logout')
-    def test_disconnect_target_disk_raises_runtime_error(self, mock_logout):
-        """Test iscsi raises RuntimeError if we fail to logout"""
-        sessions = [
-            'curtin-53ab23ff-a887-449a-80a8-288151208091',
-        ]
-        connection = '10.245.168.20,16395,1'
-        self._setup_nodes(sessions, connection)
-        self.mock_iscsi_sessions.return_value = "\n".join(sessions)
-        mock_logout.side_effect = util.ProcessExecutionError()
-
-        with self.assertRaises(RuntimeError):
-            iscsi.disconnect_target_disks(self.target_path)
-
-        expected_calls = []
-        for session in sessions:
-            (host, port, _) = connection.split(',')
-            disconnect = self._fmt_disconnect(session, "%s:%s" % (host, port))
-            calls = [
-                mock.call(['sync']),
-                mock.call(disconnect, capture=True, log_captured=True),
-                mock.call(['udevadm', 'settle']),
-            ]
-            expected_calls.extend(calls)
-
-        self.mock_subp.assert_has_calls([], any_order=True)
-
 # vi: ts=4 expandtab syntax=python
diff --git a/tests/unittests/test_block_mdadm.py b/tests/unittests/test_block_mdadm.py
index b04cf82..a6654ce 100644
--- a/tests/unittests/test_block_mdadm.py
+++ b/tests/unittests/test_block_mdadm.py
@@ -594,33 +594,6 @@ class TestBlockMdadmStop(CiTestCase):
         self.mock_util_write_file.assert_has_calls(expected_writes)
 
 
-class TestBlockMdadmRemove(CiTestCase):
-    def setUp(self):
-        super(TestBlockMdadmRemove, self).setUp()
-        self.add_patch('curtin.block.mdadm.util', 'mock_util')
-        self.add_patch('curtin.block.mdadm.lsb_release', 'mock_lsb_release')
-        self.add_patch('curtin.block.mdadm.is_valid_device', 'mock_valid')
-
-        # Common mock settings
-        self.mock_valid.return_value = True
-        self.mock_lsb_release.return_value = {'codename': 'xenial'}
-        self.mock_util.subp.side_effect = [
-            ("", ""),  # mdadm remove device
-        ]
-
-    def test_mdadm_remove_no_devpath(self):
-        with self.assertRaises(ValueError):
-            mdadm.mdadm_remove(None)
-
-    def test_mdadm_remove(self):
-        device = "/dev/vdc"
-        mdadm.mdadm_remove(device)
-        expected_calls = [
-            call(["mdadm", "--remove", device], rcs=[0], capture=True),
-        ]
-        self.mock_util.subp.assert_has_calls(expected_calls)
-
-
 class TestBlockMdadmQueryDetail(CiTestCase):
     def setUp(self):
         super(TestBlockMdadmQueryDetail, self).setUp()
@@ -716,7 +689,7 @@ class TestBlockMdadmDetailScan(CiTestCase):
             (self.scan_output, ""),  # mdadm --detail --scan
         ]
 
-    def test_mdadm_remove(self):
+    def test_mdadm_detail_scan(self):
         data = mdadm.mdadm_detail_scan()
         expected_calls = [
             call(["mdadm", "--detail", "--scan"], capture=True),
@@ -724,7 +697,7 @@ class TestBlockMdadmDetailScan(CiTestCase):
         self.mock_util.subp.assert_has_calls(expected_calls)
         self.assertEqual(self.scan_output, data)
 
-    def test_mdadm_remove_error(self):
+    def test_mdadm_detail_scan_error(self):
         self.mock_util.subp.side_effect = [
             ("wark", "error"),  # mdadm --detail --scan
         ]
@@ -825,50 +798,6 @@ class TestBlockMdadmMdHelpers(CiTestCase):
         mock_attr.return_value = 'inactive'
         self.assertFalse(mdadm.md_check_array_state_rw(mdname))
 
-    @patch('curtin.block.mdadm.md_sysfs_attr')
-    def test_md_check_array_state_ro(self, mock_attr):
-        mdname = '/dev/md0'
-        mock_attr.return_value = 'readonly'
-        self.assertTrue(mdadm.md_check_array_state_ro(mdname))
-
-    @patch('curtin.block.mdadm.md_sysfs_attr')
-    def test_md_check_array_state_ro_false(self, mock_attr):
-        mdname = '/dev/md0'
-        mock_attr.return_value = 'inactive'
-        self.assertFalse(mdadm.md_check_array_state_ro(mdname))
-
-    @patch('curtin.block.mdadm.md_sysfs_attr')
-    def test_md_check_array_state_error(self, mock_attr):
-        mdname = '/dev/md0'
-        mock_attr.return_value = 'inactive'
-        self.assertTrue(mdadm.md_check_array_state_error(mdname))
-
-    @patch('curtin.block.mdadm.md_sysfs_attr')
-    def test_md_check_array_state_error_false(self, mock_attr):
-        mdname = '/dev/md0'
-        mock_attr.return_value = 'active'
-        self.assertFalse(mdadm.md_check_array_state_error(mdname))
-
-    def test_md_device_key_role(self):
-        devname = '/dev/vda'
-        rolekey = mdadm.md_device_key_role(devname)
-        self.assertEqual('MD_DEVICE_vda_ROLE', rolekey)
-
-    def test_md_device_key_role_no_dev(self):
-        devname = None
-        with self.assertRaises(ValueError):
-            mdadm.md_device_key_role(devname)
-
-    def test_md_device_key_dev(self):
-        devname = '/dev/vda'
-        devkey = mdadm.md_device_key_dev(devname)
-        self.assertEqual('MD_DEVICE_vda_DEV', devkey)
-
-    def test_md_device_key_dev_no_dev(self):
-        devname = None
-        with self.assertRaises(ValueError):
-            mdadm.md_device_key_dev(devname)
-
     @patch('curtin.block.util.load_file')
     @patch('curtin.block.get_blockdev_for_partition')
     @patch('curtin.block.mdadm.os.path.exists')
diff --git a/tests/unittests/test_block_multipath.py b/tests/unittests/test_block_multipath.py
index 96cbcba..a729936 100644
--- a/tests/unittests/test_block_multipath.py
+++ b/tests/unittests/test_block_multipath.py
@@ -82,20 +82,6 @@ class TestMultipath(CiTestCase):
         """is_mpath_member returns false if DM_PART is not present for dev."""
         self.assertFalse(multipath.is_mpath_partition(self.random_string()))
 
-    def test_mpath_partition_to_mpath_id(self):
-        """mpath_part_to_mpath_id extracts MD_MPATH value from mp partition."""
-        dev = self.random_string()
-        mpath_id = self.random_string()
-        self.m_udev.udevadm_info.return_value = {'DM_MPATH': mpath_id}
-        self.assertEqual(mpath_id,
-                         multipath.mpath_partition_to_mpath_id(dev))
-
-    def test_mpath_partition_to_mpath_id_none(self):
-        """mpath_part_to_mpath_id returns none if DM_MPATH missing."""
-        dev = self.random_string()
-        self.m_udev.udevadm_info.return_value = {}
-        self.assertIsNone(multipath.mpath_partition_to_mpath_id(dev))
-
     @mock.patch('curtin.block.multipath.os.path.exists')
     @mock.patch('curtin.block.multipath.util.wait_for_removal')
     def test_remove_partition(self, m_wait, m_exists):
@@ -122,52 +108,6 @@ class TestMultipath(CiTestCase):
         self.assertEqual(3, self.m_udev.udevadm_settle.call_count)
         self.assertEqual(1, m_wait.call_count)
 
-    @mock.patch('curtin.block.multipath.os.path.exists')
-    @mock.patch('curtin.block.multipath.util.wait_for_removal')
-    def test_remove_map(self, m_wait, m_exists):
-        """multipath.remove_map runs multipath -f skips wait if map gone."""
-        map_id = self.random_string()
-        devpath = '/dev/mapper/%s' % map_id
-        m_exists.side_effect = iter([True, True, False])
-        multipath.remove_map(devpath)
-        expected = mock.call(
-            ['multipath', '-v3', '-R3', '-f', devpath], rcs=[0, 1])
-        self.m_subp.assert_has_calls([expected] * 3)
-        m_wait.assert_not_called()
-        self.assertEqual(3, self.m_udev.udevadm_settle.call_count)
-
-    @mock.patch('curtin.block.multipath.os.path.exists')
-    @mock.patch('curtin.block.multipath.util.wait_for_removal')
-    def test_remove_map_wait(self, m_wait, m_exists):
-        """multipath.remove_map runs multipath -f  wait if map remains."""
-        map_id = self.random_string()
-        devpath = '/dev/mapper/%s' % map_id
-        m_exists.side_effect = iter([True, True, True])
-        multipath.remove_map(devpath, retries=3)
-        expected = mock.call(
-            ['multipath', '-v3', '-R3', '-f', devpath], rcs=[0, 1])
-        self.m_subp.assert_has_calls([expected] * 3)
-        self.assertEqual(3, self.m_udev.udevadm_settle.call_count)
-        self.assertEqual(1, m_wait.call_count)
-
-    def test_find_mpath_members(self):
-        """find_mpath_members enumerates kernel block devs of a mpath_id."""
-        mp_id = 'mpatha'
-        paths = ['device=bar multipath=mpatha',
-                 'device=wark multipath=mpatha']
-        self.m_subp.return_value = ("\n".join(paths), "")
-        self.assertEqual(sorted(['/dev/bar', '/dev/wark']),
-                         sorted(multipath.find_mpath_members(mp_id)))
-
-    def test_find_mpath_members_empty(self):
-        """find_mpath_members returns empty list if mpath_id not found."""
-        mp_id = self.random_string()
-        paths = ['device=bar multipath=mpatha',
-                 'device=wark multipath=mpatha']
-        self.m_subp.return_value = ("\n".join(paths), "")
-
-        self.assertEqual([], multipath.find_mpath_members(mp_id))
-
     def test_find_mpath_id(self):
         """find_mpath_id returns mpath_id if device is part of mpath group."""
         mp_id = 'mpatha'
@@ -209,18 +149,6 @@ class TestMultipath(CiTestCase):
         self.assertEqual(expected_mapping,
                          multipath.dmname_to_blkdev_mapping())
 
-    @mock.patch('curtin.block.multipath.dmname_to_blkdev_mapping')
-    def test_find_mpath_id_by_parent(self, m_dmmap):
-        """find_mpath_id_by_parent returns device mapper blk for given DM_NAME.
-        """
-        m_dmmap.return_value = {
-            'mpatha': '/dev/dm-0', 'mpatha-part1': '/dev/dm-1'}
-        mpath_id = 'mpatha'
-        expected_result = ('mpatha-part1', '/dev/dm-1')
-        self.assertEqual(
-            expected_result,
-            multipath.find_mpath_id_by_parent(mpath_id, partnum=1))
-
     def test_find_mpath_id_by_path(self):
         """find_mpath_id_by_path returns the mp_id if specified device is
            member.

Follow ups