proxmox-api 0.2.0

Rust bindings for the Proxmox VE HTTP API
Documentation
#[derive(Debug, Clone)]
pub struct ResizeClient<T> {
    client: T,
    path: String,
}
impl<T> ResizeClient<T>
where
    T: crate::client::Client,
{
    pub fn new(client: T, parent_path: &str) -> Self {
        Self {
            client,
            path: format!("{}{}", parent_path, "/resize"),
        }
    }
}
impl<T> ResizeClient<T>
where
    T: crate::client::Client,
{
    #[doc = "Extend volume size."]
    #[doc = ""]
    #[doc = "Permission check: perm(\"/vms/{vmid}\", [\"VM.Config.Disk\"])"]
    pub async fn put(&self, params: PutParams) -> Result<String, T::Error> {
        let path = self.path.to_string();
        self.client.put(&path, &params).await
    }
}
impl PutParams {
    pub fn new(disk: Disk, size: SizeStr) -> Self {
        Self {
            disk,
            size,
            digest: ::std::default::Default::default(),
            skiplock: ::std::default::Default::default(),
            additional_properties: ::std::default::Default::default(),
        }
    }
}
#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
pub struct PutParams {
    #[serde(skip_serializing_if = "Option::is_none", default)]
    #[doc = "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications."]
    #[doc = ""]
    pub digest: Option<DigestStr>,
    #[doc = "The disk you want to resize."]
    #[doc = ""]
    pub disk: Disk,
    #[doc = "The new size. With the `+` sign the value is added to the actual size of the volume and without it, the value is taken as an absolute one. Shrinking disk size is not supported."]
    #[doc = ""]
    pub size: SizeStr,
    #[serde(
        serialize_with = "crate::types::serialize_bool_optional",
        deserialize_with = "crate::types::deserialize_bool_optional"
    )]
    #[serde(skip_serializing_if = "Option::is_none", default)]
    #[doc = "Ignore locks - only root is allowed to use this option."]
    #[doc = ""]
    pub skiplock: Option<bool>,
    #[serde(
        flatten,
        default,
        skip_serializing_if = "::std::collections::HashMap::is_empty"
    )]
    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
}
#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
#[doc = "The disk you want to resize."]
#[doc = ""]
pub enum Disk {
    #[serde(rename = "efidisk0")]
    Efidisk0,
    #[serde(rename = "ide0")]
    Ide0,
    #[serde(rename = "ide1")]
    Ide1,
    #[serde(rename = "ide2")]
    Ide2,
    #[serde(rename = "ide3")]
    Ide3,
    #[serde(rename = "sata0")]
    Sata0,
    #[serde(rename = "sata1")]
    Sata1,
    #[serde(rename = "sata2")]
    Sata2,
    #[serde(rename = "sata3")]
    Sata3,
    #[serde(rename = "sata4")]
    Sata4,
    #[serde(rename = "sata5")]
    Sata5,
    #[serde(rename = "scsi0")]
    Scsi0,
    #[serde(rename = "scsi1")]
    Scsi1,
    #[serde(rename = "scsi10")]
    Scsi10,
    #[serde(rename = "scsi11")]
    Scsi11,
    #[serde(rename = "scsi12")]
    Scsi12,
    #[serde(rename = "scsi13")]
    Scsi13,
    #[serde(rename = "scsi14")]
    Scsi14,
    #[serde(rename = "scsi15")]
    Scsi15,
    #[serde(rename = "scsi16")]
    Scsi16,
    #[serde(rename = "scsi17")]
    Scsi17,
    #[serde(rename = "scsi18")]
    Scsi18,
    #[serde(rename = "scsi19")]
    Scsi19,
    #[serde(rename = "scsi2")]
    Scsi2,
    #[serde(rename = "scsi20")]
    Scsi20,
    #[serde(rename = "scsi21")]
    Scsi21,
    #[serde(rename = "scsi22")]
    Scsi22,
    #[serde(rename = "scsi23")]
    Scsi23,
    #[serde(rename = "scsi24")]
    Scsi24,
    #[serde(rename = "scsi25")]
    Scsi25,
    #[serde(rename = "scsi26")]
    Scsi26,
    #[serde(rename = "scsi27")]
    Scsi27,
    #[serde(rename = "scsi28")]
    Scsi28,
    #[serde(rename = "scsi29")]
    Scsi29,
    #[serde(rename = "scsi3")]
    Scsi3,
    #[serde(rename = "scsi30")]
    Scsi30,
    #[serde(rename = "scsi4")]
    Scsi4,
    #[serde(rename = "scsi5")]
    Scsi5,
    #[serde(rename = "scsi6")]
    Scsi6,
    #[serde(rename = "scsi7")]
    Scsi7,
    #[serde(rename = "scsi8")]
    Scsi8,
    #[serde(rename = "scsi9")]
    Scsi9,
    #[serde(rename = "tpmstate0")]
    Tpmstate0,
    #[serde(rename = "virtio0")]
    Virtio0,
    #[serde(rename = "virtio1")]
    Virtio1,
    #[serde(rename = "virtio10")]
    Virtio10,
    #[serde(rename = "virtio11")]
    Virtio11,
    #[serde(rename = "virtio12")]
    Virtio12,
    #[serde(rename = "virtio13")]
    Virtio13,
    #[serde(rename = "virtio14")]
    Virtio14,
    #[serde(rename = "virtio15")]
    Virtio15,
    #[serde(rename = "virtio2")]
    Virtio2,
    #[serde(rename = "virtio3")]
    Virtio3,
    #[serde(rename = "virtio4")]
    Virtio4,
    #[serde(rename = "virtio5")]
    Virtio5,
    #[serde(rename = "virtio6")]
    Virtio6,
    #[serde(rename = "virtio7")]
    Virtio7,
    #[serde(rename = "virtio8")]
    Virtio8,
    #[serde(rename = "virtio9")]
    Virtio9,
}
impl TryFrom<&str> for Disk {
    type Error = String;
    fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
        match value {
            "efidisk0" => Ok(Self::Efidisk0),
            "ide0" => Ok(Self::Ide0),
            "ide1" => Ok(Self::Ide1),
            "ide2" => Ok(Self::Ide2),
            "ide3" => Ok(Self::Ide3),
            "sata0" => Ok(Self::Sata0),
            "sata1" => Ok(Self::Sata1),
            "sata2" => Ok(Self::Sata2),
            "sata3" => Ok(Self::Sata3),
            "sata4" => Ok(Self::Sata4),
            "sata5" => Ok(Self::Sata5),
            "scsi0" => Ok(Self::Scsi0),
            "scsi1" => Ok(Self::Scsi1),
            "scsi10" => Ok(Self::Scsi10),
            "scsi11" => Ok(Self::Scsi11),
            "scsi12" => Ok(Self::Scsi12),
            "scsi13" => Ok(Self::Scsi13),
            "scsi14" => Ok(Self::Scsi14),
            "scsi15" => Ok(Self::Scsi15),
            "scsi16" => Ok(Self::Scsi16),
            "scsi17" => Ok(Self::Scsi17),
            "scsi18" => Ok(Self::Scsi18),
            "scsi19" => Ok(Self::Scsi19),
            "scsi2" => Ok(Self::Scsi2),
            "scsi20" => Ok(Self::Scsi20),
            "scsi21" => Ok(Self::Scsi21),
            "scsi22" => Ok(Self::Scsi22),
            "scsi23" => Ok(Self::Scsi23),
            "scsi24" => Ok(Self::Scsi24),
            "scsi25" => Ok(Self::Scsi25),
            "scsi26" => Ok(Self::Scsi26),
            "scsi27" => Ok(Self::Scsi27),
            "scsi28" => Ok(Self::Scsi28),
            "scsi29" => Ok(Self::Scsi29),
            "scsi3" => Ok(Self::Scsi3),
            "scsi30" => Ok(Self::Scsi30),
            "scsi4" => Ok(Self::Scsi4),
            "scsi5" => Ok(Self::Scsi5),
            "scsi6" => Ok(Self::Scsi6),
            "scsi7" => Ok(Self::Scsi7),
            "scsi8" => Ok(Self::Scsi8),
            "scsi9" => Ok(Self::Scsi9),
            "tpmstate0" => Ok(Self::Tpmstate0),
            "virtio0" => Ok(Self::Virtio0),
            "virtio1" => Ok(Self::Virtio1),
            "virtio10" => Ok(Self::Virtio10),
            "virtio11" => Ok(Self::Virtio11),
            "virtio12" => Ok(Self::Virtio12),
            "virtio13" => Ok(Self::Virtio13),
            "virtio14" => Ok(Self::Virtio14),
            "virtio15" => Ok(Self::Virtio15),
            "virtio2" => Ok(Self::Virtio2),
            "virtio3" => Ok(Self::Virtio3),
            "virtio4" => Ok(Self::Virtio4),
            "virtio5" => Ok(Self::Virtio5),
            "virtio6" => Ok(Self::Virtio6),
            "virtio7" => Ok(Self::Virtio7),
            "virtio8" => Ok(Self::Virtio8),
            "virtio9" => Ok(Self::Virtio9),
            v => Err(format!("Unknown variant {v}")),
        }
    }
}
#[derive(Debug, Clone, PartialEq, PartialOrd)]
pub struct DigestStr {
    value: String,
}
impl crate::types::bounded_string::BoundedString for DigestStr {
    const MIN_LENGTH: Option<usize> = None::<usize>;
    const MAX_LENGTH: Option<usize> = Some(40usize);
    const DEFAULT: Option<&'static str> = None::<&'static str>;
    const PATTERN: Option<&'static str> = None::<&'static str>;
    const TYPE_DESCRIPTION: &'static str = "a string with length at most 40";
    fn get_value(&self) -> &str {
        &self.value
    }
    fn new(value: String) -> Result<Self, crate::types::bounded_string::BoundedStringError> {
        Self::validate(&value)?;
        Ok(Self { value })
    }
}
impl std::convert::TryFrom<String> for DigestStr {
    type Error = crate::types::bounded_string::BoundedStringError;
    fn try_from(value: String) -> Result<Self, Self::Error> {
        crate::types::bounded_string::BoundedString::new(value)
    }
}
impl ::serde::Serialize for DigestStr {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: ::serde::Serializer,
    {
        crate::types::bounded_string::serialize_bounded_string(self, serializer)
    }
}
impl<'de> ::serde::Deserialize<'de> for DigestStr {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where
        D: ::serde::Deserializer<'de>,
    {
        crate::types::bounded_string::deserialize_bounded_string(deserializer)
    }
}
#[derive(Debug, Clone, PartialEq, PartialOrd)]
pub struct SizeStr {
    value: String,
}
impl crate::types::bounded_string::BoundedString for SizeStr {
    const MIN_LENGTH: Option<usize> = None::<usize>;
    const MAX_LENGTH: Option<usize> = None::<usize>;
    const DEFAULT: Option<&'static str> = None::<&'static str>;
    const PATTERN: Option<&'static str> = Some("\\+?\\d+(\\.\\d+)?[KMGT]?");
    const TYPE_DESCRIPTION: &'static str =
        "a string with pattern r\"\\+?\\d+(\\.\\d+)?[KMGT]?\" and no length constraints";
    fn get_value(&self) -> &str {
        &self.value
    }
    fn new(value: String) -> Result<Self, crate::types::bounded_string::BoundedStringError> {
        Self::validate(&value)?;
        Ok(Self { value })
    }
}
impl std::convert::TryFrom<String> for SizeStr {
    type Error = crate::types::bounded_string::BoundedStringError;
    fn try_from(value: String) -> Result<Self, Self::Error> {
        crate::types::bounded_string::BoundedString::new(value)
    }
}
impl ::serde::Serialize for SizeStr {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: ::serde::Serializer,
    {
        crate::types::bounded_string::serialize_bounded_string(self, serializer)
    }
}
impl<'de> ::serde::Deserialize<'de> for SizeStr {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where
        D: ::serde::Deserializer<'de>,
    {
        crate::types::bounded_string::deserialize_bounded_string(deserializer)
    }
}