in selftest/selftest.py [0:0]
def validate_dev_disk_azure_links_data(self) -> None:
"""Validate /dev/disk/azure/data links.
All data disks should have by-lun if azure-vm-utils is installed.
Future variants of remote disks will include by-name.
"""
imds_data_disks = (
self.imds_metadata.get("compute", {})
.get("storageProfile", {})
.get("dataDisks", [])
)
expected_data_disks = len(imds_data_disks)
data_disks = [
link
for link in self.disk_info.dev_disk_azure_links
if link.startswith("/dev/disk/azure/data/by-lun")
]
if self.disk_info.nvme_remote_disks:
assert len(data_disks) == len(
self.disk_info.nvme_remote_data_disks
), f"unexpected number of data disks: {data_disks} configured={self.disk_info.nvme_remote_data_disks}"
assert (
len(data_disks) == expected_data_disks
), f"unexpected number of data disks: {data_disks} IMDS configured={imds_data_disks} (note that IMDS may not be accurate)"
# Verify disk sizes match up with IMDS configuration.
for imds_disk in imds_data_disks:
lun = imds_disk.get("lun")
# Disk size is actually reported in GiB not GB.
expected_size_gib = int(imds_disk.get("diskSizeGB"))
disk_path = f"/dev/disk/azure/data/by-lun/{lun}"
actual_size_gib = get_disk_size_gib(disk_path)
assert (
actual_size_gib == expected_size_gib
), f"disk size mismatch for {disk_path}: expected {expected_size_gib} GiB, found {actual_size_gib} GiB"
logger.info("validate_dev_disk_azure_links_data OK: %r", data_disks)