Skip to content

Commit

Permalink
ceph-volume: look for rotational data in lsblk
Browse files Browse the repository at this point in the history
Also ask lsblk if a device is rotational if no information
is found in /sys/block, default to True if nothing is found.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1666822

Signed-off-by: Andrew Schoen <aschoen@redhat.com>
(cherry picked from commit de748f9)
  • Loading branch information
andrewschoen committed Mar 15, 2019
1 parent 4b5d995 commit b38b672
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
36 changes: 36 additions & 0 deletions src/ceph-volume/ceph_volume/tests/util/test_device.py
Expand Up @@ -43,6 +43,42 @@ def test_device_is_device(self, device_info, pvolumes):
disk = device.Device("/dev/sda")
assert disk.is_device is True

def test_device_is_rotational(self, device_info, pvolumes):
data = {"/dev/sda": {"rotational": "1"}}
lsblk = {"TYPE": "device"}
device_info(devices=data, lsblk=lsblk)
disk = device.Device("/dev/sda")
assert disk.rotational

def test_device_is_not_rotational(self, device_info, pvolumes):
data = {"/dev/sda": {"rotational": "0"}}
lsblk = {"TYPE": "device"}
device_info(devices=data, lsblk=lsblk)
disk = device.Device("/dev/sda")
assert not disk.rotational

def test_device_is_rotational_lsblk(self, device_info, pvolumes):
data = {"/dev/sda": {"foo": "bar"}}
lsblk = {"TYPE": "device", "ROTA": "1"}
device_info(devices=data, lsblk=lsblk)
disk = device.Device("/dev/sda")
assert disk.rotational

def test_device_is_not_rotational_lsblk(self, device_info, pvolumes):
data = {"/dev/sda": {"rotational": "0"}}
lsblk = {"TYPE": "device", "ROTA": "0"}
device_info(devices=data, lsblk=lsblk)
disk = device.Device("/dev/sda")
assert not disk.rotational

def test_device_is_rotational_defaults_true(self, device_info, pvolumes):
# rotational will default true if no info from sys_api or lsblk is found
data = {"/dev/sda": {"foo": "bar"}}
lsblk = {"TYPE": "device", "foo": "bar"}
device_info(devices=data, lsblk=lsblk)
disk = device.Device("/dev/sda")
assert disk.rotational

def test_disk_is_device(self, device_info, pvolumes):
data = {"/dev/sda": {"foo": "bar"}}
lsblk = {"TYPE": "disk"}
Expand Down
7 changes: 6 additions & 1 deletion src/ceph-volume/ceph_volume/util/device.py
Expand Up @@ -265,7 +265,12 @@ def has_gpt_headers(self):

@property
def rotational(self):
return self.sys_api['rotational'] == '1'
rotational = self.sys_api.get('rotational')
if rotational is None:
# fall back to lsblk if not found in sys_api
# default to '1' if no value is found with lsblk either
rotational = self.disk_api.get('ROTA', '1')
return rotational == '1'

@property
def model(self):
Expand Down

0 comments on commit b38b672

Please sign in to comment.