self._name = device_name
self._path_name = path_name
+ self._base_dev = Disk.get_base_dev(device_name)
self.osd_id = osd_id
self.rotational = self._get_rota()
self.refresh()
def _get_size(self):
- return int(fread("/sys/block/{}/size".format(self._name))) * 512
+ return int(fread("/sys/block/{}/size".format(self._base_dev))) * 512
def _get_rota(self):
- return int(fread("/sys/block/{}/queue/rotational".format(self._name)))
+ return int(fread("/sys/block/{}/queue/rotational".format(self._base_dev)))
def _get_fssize(self):
s = statvfs("{}/whoami".format(self._path_name))
self.fs_size, self.fs_used, self.fs_percent_used = self._get_fssize()
@staticmethod
- def get_real_dev(dev_name):
- # for nvme and intelcas devices, just use the device name as is, but
- # for sdX type devices, strip of the partition id
- if dev_name.startswith(('nvme', 'intelcas')):
+ def get_base_dev(dev_name):
+
+ # for intelcas devices, just use the device name as is
+ if dev_name.startswith('intelcas'):
device = dev_name
+ elif dev_name.startswith('nvme'):
+ if 'p' in dev_name:
+ device = dev_name[:(dev_name.index('p'))]
+ else:
+ device = dev_name
else:
# default strip any numeric ie. sdaa1 -> sdaa
device = filter(lambda ch: ch.isalpha(), dev_name)
+
return device
if dirs.issuperset(osd_indicators):
osd_id = path_name.split('-')[-1]
- osd_device = Disk.get_real_dev(dev_path.split('/')[-1])
+ osd_device = dev_path.split('/')[-1]
if osd_device not in self.osd:
self.osd[osd_device] = Disk(osd_device,
- path_name,
- osd_id)
+ path_name=path_name,
+ osd_id=osd_id)
self.dev_lookup[osd_device] = 'osd'
if osd_id not in self.osd:
if os.path.exists(journal_link):
# this is a filestore based OSD
jrnl_path = os.path.realpath(journal_link)
- jrnl_dev = Disk.get_real_dev(jrnl_path.split('/')[-1])
+ jrnl_dev = jrnl_path.split('/')[-1]
if jrnl_dev not in self.osd:
- self.jrnl[jrnl_dev] = Disk(jrnl_dev, osd_id=osd_id)
+ self.jrnl[jrnl_dev] = Disk(jrnl_dev,
+ osd_id=osd_id)
+
self.dev_lookup[jrnl_dev] = 'jrnl'
else: