2
0
mirror of https://github.com/xcat2/confluent.git synced 2026-09-02 07:26:04 +00:00

Make m.2 form factor drives a high priority as a matter of course for OS install

This commit is contained in:
Jarrod Johnson
2026-08-27 15:41:49 -04:00
parent 0c89f041e1
commit 116d4aeb04
@@ -23,7 +23,7 @@ PRIORITY_MODELS = ('m.2 nvme 2-bay raid kit',
'raid b550p-2hs')
class DiskInfo(object):
def __init__(self, devname):
def __init__(self, devname, slotinfo=None):
if devname.startswith('nvme') and 'c' in devname:
raise Exception("Skipping multipath devname")
self.name = devname
@@ -35,6 +35,7 @@ class DiskInfo(object):
self.mdcontainer = ''
self.subsystype = ''
self.kernnames = []
self.is_m2 = False
devnode = '/dev/{0}'.format(devname)
qprop = subprocess.check_output(
['udevadm', 'info', '--query=property', devnode])
@@ -81,6 +82,13 @@ class DiskInfo(object):
self.busaddr = v.replace('"', '')
elif k == 'KERNELS':
self.kernnames.append(v.replace('"', ''))
if not getattr(self, 'busaddr', None):
for kernname in getattr(self, 'kernnames', []):
if kernname in slotinfo:
self.is_m2 = True
break
if getattr(self, 'busaddr', None) and disk.busaddr in slotinfo:
self.is_m2 = True
if not self.driver and 'imsm' not in self.mdcontainer and self.subsystype != 'nvm':
raise Exception("No driver detected")
if self.driver == 'sr':
@@ -93,6 +101,8 @@ class DiskInfo(object):
@property
def priority(self):
if self.is_m2:
return 0
if self.model.lower() in PRIORITY_MODELS:
return 0
if 'imsm' in self.mdcontainer:
@@ -229,15 +239,15 @@ def filter_deployment_storage(disks, storagespec, slotinfo=None):
def main():
disks = []
slotinfo = get_m2_slot_info()
for disk in sorted(os.listdir('/sys/class/block')):
try:
disk = DiskInfo(disk)
disk = DiskInfo(disk, slotinfo=slotinfo)
disks.append(disk)
except SilentException:
pass
except Exception as e:
print("Skipping {0}: {1}".format(disk, str(e)))
slotinfo = get_m2_slot_info()
disks = filter_deployment_storage(disks, get_deployment_storage(), slotinfo=slotinfo)
nd = [x.name for x in sorted(disks, key=lambda x: [x.priority, x.size])]
if nd: