clientapi-pve 2026.5.24

Generated from apidoc.js. NOT an official Proxmox specification. See https://pve.proxmox.com/pve-docs/api-viewer/ for the upstream documentation.
Documentation
/*
 * Proxmox Virtual Environment API
 *
 * Generated from apidoc.js. NOT an official Proxmox specification. See https://pve.proxmox.com/pve-docs/api-viewer/ for the upstream documentation.
 *
 * The version of the OpenAPI document: 9.x
 * 
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PveEfidiskConfig {

    /// Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified. Ignored for VMs with arch=aarch64 (ARM).
    #[serde(rename = "efitype", skip_serializing_if = "Option::is_none")]
    pub efitype: Option<models::PveEfitypeEnum>,

    /// The drive's backing volume.
    #[serde(rename = "file")]
    pub file: String,

    /// The drive's backing file's data format.
    #[serde(rename = "format", skip_serializing_if = "Option::is_none")]
    pub format: Option<models::PveFormatEnum>,

    /// Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!
    #[serde(rename = "import-from", skip_serializing_if = "Option::is_none")]
    pub import_from: Option<String>,

    /// Informational marker indicating the version of the latest Microsoft UEFI certificates that have been enrolled by Proxmox VE. The value '2023k' means that the 'Microsoft UEFI CA 2023', the 'Windows UEFI CA 2023' and the 'Microsoft Corporation KEK 2K CA 2023' certificates are included. The values '2023' and '2023w' are deprecated and for compatibility only.
    #[serde(rename = "ms-cert", skip_serializing_if = "Option::is_none")]
    pub ms_cert: Option<models::PveMsCertEnum>,

    /// Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.
    #[serde(rename = "pre-enrolled-keys", skip_serializing_if = "Option::is_none")]
    pub pre_enrolled_keys: Option<models::PveBoolean>,

    /// Disk size. This is purely informational and has no effect.
    #[serde(rename = "size", skip_serializing_if = "Option::is_none")]
    pub size: Option<String>,

    #[serde(rename = "volume", skip_serializing_if = "Option::is_none")]
    pub volume: Option<String>,


}

impl PveEfidiskConfig {
    pub fn new(file: String) -> PveEfidiskConfig {
        PveEfidiskConfig {
            
            efitype: None,
            
            file,
            
            format: None,
            
            import_from: None,
            
            ms_cert: None,
            
            pre_enrolled_keys: None,
            
            size: None,
            
            volume: None,
            
        }
    }
}


impl PveEfidiskConfig {
    /// Serialise this PveEfidiskConfig into Proxmox's CLI-style shorthand
    /// string (`key=value,…`). The property marked `x-pve-default-key`
    /// is emitted positionally without a `key=` prefix; aliases collapse
    /// multiple property names to the same wire key.
    ///
    /// Example: `PveEfidiskConfig `
    /// → `"virtio,bridge=vmbr0"`
    pub fn to_shorthand(&self) -> String {
        let mut parts: Vec<String> = Vec::new();
        
        
        parts.push(format!("{}", self.file));
        
        
        
        
        if let Some(ref v) = self.efitype {
            parts.push(format!("efitype={}", v));
        }
        
        
        if let Some(ref v) = self.format {
            parts.push(format!("format={}", v));
        }
        
        
        if let Some(ref v) = self.import_from {
            parts.push(format!("import-from={}", v));
        }
        
        
        if let Some(ref v) = self.ms_cert {
            parts.push(format!("ms-cert={}", v));
        }
        
        
        if let Some(ref v) = self.pre_enrolled_keys {
            parts.push(format!("pre-enrolled-keys={}", v));
        }
        
        
        if let Some(ref v) = self.size {
            parts.push(format!("size={}", v));
        }
        
        
        if let Some(ref v) = self.volume {
            parts.push(format!("file={}", v));
        }
        
        parts.join(",")
    }
}