in selftest/selftest.py [0:0]
def parse_azure_nvme_id_output(output: str) -> Dict[str, AzureNvmeIdDevice]:
"""Parse azure-nvme-id output.
Example output:
/dev/nvme0n1: type=os
/dev/nvme0n2: type=data,lun=0
/dev/nvme0n3: type=data,lun=1
/dev/nvme1n1: type=local,index=1,name=nvme-440G-1
/dev/nvme2n1: type=local,index=2,name=nvme-440G-2
/dev/nvme3n1:
"""
devices = {}
for line in output.splitlines():
parts = line.strip().split(":", 1)
if parts[-1] == "":
parts.pop()
device = parts[0].strip()
if len(parts) == 2:
nvme_id = parts[1].strip()
properties = dict(kv.split("=", 1) for kv in nvme_id.split(","))
elif len(parts) == 1:
nvme_id = ""
properties = {}
else:
raise ValueError(f"unexpected azure-nvme-id output: {line}")
device_type = properties.pop("type", None)
device_index = (
int(properties.pop("index")) if "index" in properties else None
)
device_lun = int(properties.pop("lun")) if "lun" in properties else None
device_name = properties.pop("name", None)
azure_nvme_id_device = AzureNvmeIdDevice(
device=device,
model=None,
nvme_id=nvme_id,
type=device_type,
index=device_index,
lun=device_lun,
name=device_name,
extra=properties,
)
key = device.split("/")[-1]
devices[key] = azure_nvme_id_device
return devices