]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: delete devices.lvm.prepare.Prepare.get_lv 32493/head
authorRishabh Dave <ridave@redhat.com>
Sat, 4 Jan 2020 08:24:58 +0000 (13:54 +0530)
committerRishabh Dave <ridave@redhat.com>
Tue, 30 Jun 2020 08:51:12 +0000 (14:21 +0530)
Since it calls get_lv_from_argument() internally and use get_first_lv()
instead and update tests.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
src/ceph-volume/ceph_volume/devices/lvm/prepare.py
src/ceph-volume/ceph_volume/tests/devices/lvm/test_prepare.py

index 2e07d15ec0a034cf2a0ad2ac4e48354d03b915fe..e91e6507df5a27b393009b346d4fe777395515da 100644 (file)
@@ -135,23 +135,6 @@ class Prepare(object):
             raise RuntimeError('unable to use device')
         return uuid
 
-    # TODO: get rid of this method?
-    def get_lv(self, argument):
-        """
-        Perform some parsing of the command-line value so that the process
-        can determine correctly if it got a device path or an lv.
-
-        :param argument: The command-line value that will need to be split to
-                         retrieve the actual lv
-        """
-        #TODO is this efficient?
-        try:
-            vg_name, lv_name = argument.split('/')
-        except (ValueError, AttributeError):
-            return None
-        return api.get_first_lv(filters={'lv_name': lv_name, 'vg_name':
-                                         vg_name})
-
     def setup_device(self, device_type, device_name, tags, size):
         """
         Check if ``device`` is an lv, if so, set the tags, making sure to
@@ -165,7 +148,14 @@ class Prepare(object):
             return '', '', tags
         tags['ceph.type'] = device_type
         tags['ceph.vdo'] = api.is_vdo(device_name)
-        lv = self.get_lv(device_name)
+
+        try:
+            vg_name, lv_name = device_name.split('/')
+            lv = api.get_first_lv(filters={'lv_name': lv_name,
+                                           'vg_name': vg_name})
+        except ValueError:
+            lv = None
+
         if lv:
             uuid = lv.lv_uuid
             path = lv.lv_path
@@ -245,7 +235,15 @@ class Prepare(object):
         """
         if args is not None:
             self.args = args
-        if api.is_ceph_device(self.get_lv(self.args.data)):
+
+        try:
+            vgname, lvname = self.args.data.split('/')
+            lv = api.get_first_lv(filters={'lv_name': lvname,
+                                           'vg_name': vgname})
+        except ValueError:
+            lv = None
+
+        if api.is_ceph_device(lv):
             logger.info("device {} is already used".format(self.args.data))
             raise RuntimeError("skipping {}, it is already prepared".format(self.args.data))
         try:
@@ -304,7 +302,13 @@ class Prepare(object):
             if not self.args.journal:
                 raise RuntimeError('--journal is required when using --filestore')
 
-            data_lv = self.get_lv(self.args.data)
+            try:
+                vg_name, lv_name = self.args.data.split('/')
+                data_lv = api.get_first_lv(filters={'lv_name': lv_name,
+                                                    'vg_name': vg_name})
+            except ValueError:
+                data_lv = None
+
             if not data_lv:
                 data_lv = self.prepare_data_device('data', osd_fsid)
 
@@ -329,7 +333,13 @@ class Prepare(object):
                 osd_fsid,
             )
         elif self.args.bluestore:
-            block_lv = self.get_lv(self.args.data)
+            try:
+                vg_name, lv_name = self.args.data.split('/')
+                block_lv = api.get_first_lv(filters={'lv_name': lv_name,
+                                                 'vg_name': vg_name})
+            except ValueError:
+                block_lv = None
+
             if not block_lv:
                 block_lv = self.prepare_data_device('block', osd_fsid)
 
index 6a2c3fc72f8b44f4e9e40393adb8aa392e8b83bd..dd902866884ba2785e12b2acea194191f06eda07 100644 (file)
@@ -1,5 +1,4 @@
 import pytest
-from ceph_volume.api import lvm as api
 from ceph_volume.devices import lvm
 from mock.mock import patch, Mock
 
@@ -116,21 +115,6 @@ class TestPrepare(object):
             expected = 'skipping {}, it is already prepared'.format('/dev/sdfoo')
             assert expected in str(error.value)
 
-class TestGetJournalLV(object):
-
-    @pytest.mark.parametrize('arg', ['', '///', None, '/dev/sda1'])
-    def test_no_journal_on_invalid_path(self, monkeypatch, arg):
-        monkeypatch.setattr(api, '_get_lv', lambda **kw: False)
-        prepare = lvm.prepare.Prepare([])
-        assert prepare.get_lv(arg) is None
-
-    def test_no_journal_lv_found(self, monkeypatch):
-        # patch it with 0 so we know we are getting to get_lv
-        monkeypatch.setattr(api, '_get_lv', lambda **kw: 0)
-        prepare = lvm.prepare.Prepare([])
-        assert prepare.get_lv('vg/lv') == 0
-
-
 class TestActivate(object):
 
     def test_main_spits_help_with_no_arguments(self, capsys):