in selftest/selftest.py [0:0]
def gather(cls) -> "DiskInfo":
"""Gather disk information and return an instance of DiskInfo."""
dev_disk_azure_links = device_sort(
[
link
for link in glob.glob(
os.path.join("/dev/disk/azure", "**"), recursive=True
)
if os.path.islink(link)
]
)
dev_disk_azure_resource_disk = None
dev_disk_azure_resource_disk_size_gib = 0
if os.path.exists(DEV_DISK_AZURE_RESOURCE):
dev_disk_azure_resource_disk = os.path.realpath(DEV_DISK_AZURE_RESOURCE)
dev_disk_azure_resource_disk_size_gib = get_disk_size_gib(
dev_disk_azure_resource_disk
)
nvme_local_disks_v1 = get_nvme_namespace_devices_with_model(
"Microsoft NVMe Direct Disk"
)
nvme_local_disks_v2 = get_nvme_namespace_devices_with_model(
"Microsoft NVMe Direct Disk v2"
)
nvme_local_disks = device_sort(nvme_local_disks_v1 + nvme_local_disks_v2)
nvme_local_disk_size_gib = 0
if nvme_local_disks:
nvme_local_disk_size_gib = min(
get_disk_size_gib(f"/dev/{disk}") for disk in nvme_local_disks
)
local_disk_max_size = max(
get_disk_size_gib(f"/dev/{disk}") for disk in nvme_local_disks
)
assert (
nvme_local_disk_size_gib == local_disk_max_size
), f"local disk size mismatch: {nvme_local_disk_size_gib} != {local_disk_max_size} for {nvme_local_disks}"
nvme_remote_disks = get_remote_nvme_disks()
if nvme_remote_disks:
nvme_remote_os_disk = nvme_remote_disks.pop(0)
nvme_remote_data_disks = nvme_remote_disks
else:
nvme_remote_os_disk = None
nvme_remote_data_disks = []
root_device = get_root_block_device()
root_device_is_nvme = root_device.startswith("/dev/nvme")
root_device = root_device.split("/")[-1]
scsi_resource_disk = get_scsi_resource_disk()
scsi_resource_disk_size_gib = (
get_disk_size_gib(f"/dev/{scsi_resource_disk}") if scsi_resource_disk else 0
)
disk_info = cls(
dev_disk_azure_links=dev_disk_azure_links,
dev_disk_azure_resource_disk=dev_disk_azure_resource_disk,
dev_disk_azure_resource_disk_size_gib=dev_disk_azure_resource_disk_size_gib,
nvme_local_disk_size_gib=nvme_local_disk_size_gib,
nvme_local_disks_v1=nvme_local_disks_v1,
nvme_local_disks_v2=nvme_local_disks_v2,
nvme_local_disks=nvme_local_disks,
nvme_remote_os_disk=nvme_remote_os_disk,
nvme_remote_data_disks=nvme_remote_data_disks,
nvme_remote_disks=nvme_remote_disks,
root_device=root_device,
root_device_is_nvme=root_device_is_nvme,
scsi_resource_disk=scsi_resource_disk,
scsi_resource_disk_size_gib=scsi_resource_disk_size_gib,
)
logger.info("disks info: %r", disk_info)
return disk_info