diff --git a/scripts/wk/hw/diags.py b/scripts/wk/hw/diags.py index 80a28884..edb2d3be 100644 --- a/scripts/wk/hw/diags.py +++ b/scripts/wk/hw/diags.py @@ -1291,6 +1291,8 @@ def ost_build_report(dev, dev_type): report.append(dev.description) if hasattr(dev, 'ram_total'): report.append(f'{dev.ram_total} ({", ".join(dev.ram_dimms)})') + if hasattr(dev, 'serial') and dev.serial: + report.append(f'Serial Number: {dev.serial}') report.append('') # Notes diff --git a/scripts/wk/hw/obj.py b/scripts/wk/hw/obj.py index 0c33296e..4a00fd52 100644 --- a/scripts/wk/hw/obj.py +++ b/scripts/wk/hw/obj.py @@ -35,6 +35,7 @@ NVME_WARNING_KEYS = ( 'reliability_degraded', 'volatile_memory_backup_failed', ) +MAC_SERIAL_REGEX = re.compile(r'Serial Number.*?:\s+(?P.*)\n') WK_LABEL_REGEX = re.compile( fr'{KIT_NAME_SHORT}_(LINUX|UFD)', re.IGNORECASE, @@ -75,11 +76,13 @@ class CpuRam(BaseObj): self.details = {} self.ram_total = 'Unknown' self.ram_dimms = [] + self.serial = '' self.tests = OrderedDict() # Update details self.get_cpu_details() self.get_ram_details() + self.get_serial_number() def generate_report(self): """Generate CPU & RAM report, returns list.""" @@ -146,6 +149,14 @@ class CpuRam(BaseObj): f'{count}x {desc}' for desc, count in sorted(details.items()) ] + def get_serial_number(self): + if PLATFORM == 'Darwin': + cmd = ['system_profiler', 'SPHardwareDataType'] + proc = run_program(cmd, check=False) + match = MAC_SERIAL_REGEX.search(proc.stdout) + if match: + self.serial = match['serial'].strip() + class Disk(BaseObj): """Object for tracking disk specific data."""