]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: don't use api.lvm.get_lv_from_argument
authorRishabh Dave <ridave@redhat.com>
Mon, 30 Dec 2019 14:05:56 +0000 (19:35 +0530)
committerAndrew Schoen <aschoen@redhat.com>
Tue, 4 Aug 2020 20:03:59 +0000 (15:03 -0500)
Use api.lvm.get_lvs() and api.lvm.get_first_lv() instead and update
tests.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit 5301c4959e5169b10cc92716de6222f7516770e6)

src/ceph-volume/ceph_volume/devices/simple/scan.py
src/ceph-volume/ceph_volume/tests/conftest.py
src/ceph-volume/ceph_volume/tests/util/test_device.py
src/ceph-volume/ceph_volume/util/device.py

index 1e3deae4ce1ec8c14d566109c6ef9079cc35bc57..0f83b37ef440ee489376740674c55172ab1dfb23 100644 (file)
@@ -80,7 +80,7 @@ class Scan(object):
             device = os.readlink(path)
         else:
             device = path
-        lvm_device = lvm.get_lv_from_argument(device)
+        lvm_device = lvm.get_first_lv(filters={'lv_path': device})
         if lvm_device:
             device_uuid = lvm_device.lv_uuid
         else:
index 74985e253a1a67642a977a63d0344a73094dfe8d..088b2cf357fa785c1907a9de34a5c84c0a3ba88f 100644 (file)
@@ -290,7 +290,7 @@ def device_info(monkeypatch, patch_bluestore_label):
         monkeypatch.setattr("ceph_volume.sys_info.devices", {})
         monkeypatch.setattr("ceph_volume.util.device.disk.get_devices", lambda: devices)
         if not devices:
-            monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv_from_argument", lambda path: lv)
+            monkeypatch.setattr("ceph_volume.util.device.lvm.get_first_lv", lambda filters: lv)
         else:
             monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv_from_argument", lambda path: None)
             monkeypatch.setattr("ceph_volume.util.device.lvm.get_device_lvs",
index cbae68782a032ebf9593eef6957b3727ebb28ae6..af29390d9314f8c2b009abe6afd50928b3bf888c 100644 (file)
@@ -1,25 +1,38 @@
 import pytest
+from copy import deepcopy
 from ceph_volume.util import device
 from ceph_volume.api import lvm as api
 
 
 class TestDevice(object):
 
-    def test_sys_api(self, device_info):
+    def test_sys_api(self, volumes, monkeypatch, device_info):
+        volume = api.Volume(lv_name='lv', lv_uuid='y', vg_name='vg',
+                            lv_tags={}, lv_path='/dev/VolGroup/lv')
+        volumes.append(volume)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs:
+                            deepcopy(volumes))
+
         data = {"/dev/sda": {"foo": "bar"}}
         device_info(devices=data)
         disk = device.Device("/dev/sda")
         assert disk.sys_api
         assert "foo" in disk.sys_api
 
-    def test_lvm_size(self, device_info):
+    def test_lvm_size(self, volumes, monkeypatch, device_info):
+        volume = api.Volume(lv_name='lv', lv_uuid='y', vg_name='vg',
+                            lv_tags={}, lv_path='/dev/VolGroup/lv')
+        volumes.append(volume)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs:
+                            deepcopy(volumes))
+
         # 5GB in size
         data = {"/dev/sda": {"size": "5368709120"}}
         device_info(devices=data)
         disk = device.Device("/dev/sda")
         assert disk.lvm_size.gb == 4
 
-    def test_lvm_size_rounds_down(self, device_info):
+    def test_lvm_size_rounds_down(self, device_info, volumes):
         # 5.5GB in size
         data = {"/dev/sda": {"size": "5905580032"}}
         device_info(devices=data)
index 4527c11b211ca673061f4a13c6080464261a3732..b338b58bed46663dc4ae735d3989702a4002d0aa 100644 (file)
@@ -130,8 +130,14 @@ class Device(object):
                     self.sys_api = part
                     break
 
-        # start with lvm since it can use an absolute or relative path
-        lv = lvm.get_lv_from_argument(self.path)
+        # if the path is not absolute, we have 'vg/lv', let's use LV name
+        # to get the LV.
+        if self.path[0] == '/':
+            lv = lvm.get_first_lv(filters={'lv_path': self.path})
+        else:
+            vgname, lvname = self.path.split('/')
+            lv = lvm.get_first_lv(filters={'lv_name': lvname,
+                                           'vg_name': vgname})
         if lv:
             self.lv_api = lv
             self.lvs = [lv]