48 lines
1.6 KiB
Python
Executable File
48 lines
1.6 KiB
Python
Executable File
#
|
|
#
|
|
# Author: Mahmoud Bassiouny <mbassiouny@vmware.com>
|
|
|
|
import subprocess
|
|
import os
|
|
|
|
class Device(object):
|
|
def __init__(self, model, path, size):
|
|
self.model = model
|
|
self.path = path
|
|
self.size = size
|
|
|
|
@staticmethod
|
|
def refresh_devices():
|
|
devices_list = subprocess.check_output(['lsblk', '-d', '-I', '7,8,179,254,259', '-n',
|
|
'--output', 'NAME,SIZE,MODEL'],
|
|
stderr=open(os.devnull, 'w'))
|
|
return Device.wrap_devices_from_list(devices_list)
|
|
|
|
@staticmethod
|
|
def refresh_devices_bytes():
|
|
devices_list = subprocess.check_output(['lsblk', '-d', '--bytes', '-I',
|
|
'7,8,179,254,259', '-n', '--output', 'NAME,SIZE,MODEL'],
|
|
stderr=open(os.devnull, 'w'))
|
|
return Device.wrap_devices_from_list(devices_list)
|
|
|
|
@staticmethod
|
|
def wrap_devices_from_list(list):
|
|
devices = []
|
|
deviceslines = list.splitlines()
|
|
for deviceline in deviceslines:
|
|
cols = deviceline.split(None, 2)
|
|
#skip Virtual NVDIMM from install list
|
|
colstr = cols[0].decode()
|
|
if colstr.startswith("pmem"):
|
|
continue
|
|
model = "Unknown"
|
|
if len(cols) >= 3:
|
|
model = cols[2].decode()
|
|
devices.append(
|
|
Device(model #Model
|
|
, '/dev/' + cols[0].decode() #Path
|
|
, cols[1].decode() #size
|
|
))
|
|
|
|
return devices
|