fn private_get_vm_id()

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)
    }
}