in libazureinit/src/status.rs [133:183]
fn private_get_vm_id(
product_uuid_path: Option<&str>,
sysfs_efi_path: Option<&str>,
dev_efi_path: Option<&str>,
) -> Option<String> {
let path = product_uuid_path.unwrap_or("/sys/class/dmi/id/product_uuid");
let system_uuid = match fs::read_to_string(path) {
Ok(s) => s.trim().to_lowercase(),
Err(err) => {
tracing::error!("Failed to read VM ID from {}: {}", path, err);
return None;
}
};
if system_uuid.is_empty() {
tracing::info!(target: "libazureinit::status::retrieved_vm_id", "VM ID file is empty at path: {}", path);
return None;
}
if is_vm_gen1(sysfs_efi_path, dev_efi_path) {
match Uuid::parse_str(&system_uuid) {
Ok(uuid_parsed) => {
let swapped_uuid =
swap_uuid_to_little_endian(*uuid_parsed.as_bytes());
let final_id = swapped_uuid.to_string();
tracing::info!(
target: "libazureinit::status::retrieved_vm_id",
"VM ID (Gen1, swapped): {}",
final_id
);
Some(final_id)
}
Err(e) => {
tracing::error!(
"Failed to parse system UUID '{}': {}",
system_uuid,
e
);
Some(system_uuid)
}
}
} else {
tracing::info!(
target: "libazureinit::status::retrieved_vm_id",
"VM ID (Gen2, no swap): {}",
system_uuid
);
Some(system_uuid)
}
}