From ceec022f5dd5c30b8b5fd43248167201aaa3076b Mon Sep 17 00:00:00 2001 From: Andrew Schoen Date: Thu, 16 Aug 2018 15:10:30 -0500 Subject: [PATCH] ceph-volume: adds sys_info constant to hold system information This is only currently used to hold information about devices from /sys/block in the util.Device class in the sys_api property. Signed-off-by: Andrew Schoen (cherry picked from commit 035f1a4092bba44cce95cabc1e5a12e3938e1150) --- src/ceph-volume/ceph_volume/__init__.py | 4 ++++ src/ceph-volume/ceph_volume/util/device.py | 14 ++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/ceph-volume/ceph_volume/__init__.py b/src/ceph-volume/ceph_volume/__init__.py index dbf197b5706cc..7652f181c5894 100644 --- a/src/ceph-volume/ceph_volume/__init__.py +++ b/src/ceph-volume/ceph_volume/__init__.py @@ -1,6 +1,10 @@ from collections import namedtuple +sys_info = namedtuple('sys_info', ['devices']) +sys_info.devices = dict() + + class UnloadedConfig(object): """ This class is used as the default value for conf.ceph so that if diff --git a/src/ceph-volume/ceph_volume/util/device.py b/src/ceph-volume/ceph_volume/util/device.py index 1836bc5f4ab40..2c85c56b897d6 100644 --- a/src/ceph-volume/ceph_volume/util/device.py +++ b/src/ceph-volume/ceph_volume/util/device.py @@ -1,4 +1,5 @@ import os +from ceph_volume import sys_info from ceph_volume.api import lvm from ceph_volume.util import disk @@ -12,6 +13,7 @@ class Device(object): self.lv_api = None self.pvs_api = [] self.disk_api = {} + self.sys_api = {} self._exists = None self._is_lvm_member = None self._parse() @@ -30,6 +32,10 @@ class Device(object): if device_type in ['part', 'disk']: self._set_lvm_membership() + if not sys_info.devices: + sys_info.devices = disk.get_devices() + self.sys_api = sys_info.devices.get(self.abspath, {}) + def __repr__(self): prefix = 'Unknown' if self.is_lv: @@ -63,9 +69,7 @@ class Device(object): @property def exists(self): - if self._exists is None: - self._exists = os.path.exists(self.abspath) - return self._exists + return os.path.exists(self.abspath) @property def is_lvm_member(self): @@ -75,9 +79,7 @@ class Device(object): @property def is_mapper(self): - if self._is_mapper is None: - self._is_mapper = self.path.startswith('/dev/mapper') - return self._is_mapper + return self.path.startswith('/dev/mapper') @property def is_lv(self): -- 2.39.5