proxmox-api 0.2.0

Rust bindings for the Proxmox VE HTTP API
Documentation
#[derive(Debug, Clone)]
pub struct VersionsClient<T> {
    client: T,
    path: String,
}
impl<T> VersionsClient<T>
where
    T: crate::client::Client,
{
    pub fn new(client: T, parent_path: &str) -> Self {
        Self {
            client,
            path: format!("{}{}", parent_path, "/versions"),
        }
    }
}
impl<T> VersionsClient<T>
where
    T: crate::client::Client,
{
    #[doc = "Get package information for important Proxmox packages."]
    #[doc = ""]
    #[doc = "Permission check: perm(\"/nodes/{node}\", [\"Sys.Audit\"])"]
    pub async fn get(&self) -> Result<Vec<GetOutputItems>, T::Error> {
        let path = self.path.to_string();
        let optional_vec: Option<Vec<GetOutputItems>> = self.client.get(&path, &()).await?;
        Ok(optional_vec.unwrap_or_default())
    }
}
impl GetOutputItems {
    pub fn new(
        arch: Arch,
        currentstate: CurrentState,
        description: String,
        origin: String,
        package: String,
        priority: String,
        section: String,
        title: String,
        version: String,
    ) -> Self {
        Self {
            arch,
            currentstate,
            description,
            origin,
            package,
            priority,
            section,
            title,
            version,
            managerversion: ::std::default::Default::default(),
            notifystatus: ::std::default::Default::default(),
            oldversion: ::std::default::Default::default(),
            runningkernel: ::std::default::Default::default(),
            additional_properties: ::std::default::Default::default(),
        }
    }
}
#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
pub struct GetOutputItems {
    #[serde(rename = "Arch")]
    #[doc = "Package Architecture."]
    #[doc = ""]
    pub arch: Arch,
    #[serde(rename = "CurrentState")]
    #[doc = "Current state of the package installed on the system."]
    #[doc = ""]
    pub currentstate: CurrentState,
    #[serde(rename = "Description")]
    #[doc = "Package description."]
    #[doc = ""]
    pub description: String,
    #[serde(rename = "ManagerVersion")]
    #[serde(skip_serializing_if = "Option::is_none", default)]
    #[doc = "Version of the currently running pve-manager API server."]
    #[doc = ""]
    pub managerversion: Option<String>,
    #[serde(rename = "NotifyStatus")]
    #[serde(skip_serializing_if = "Option::is_none", default)]
    #[doc = "Version for which PVE has already sent an update notification for."]
    #[doc = ""]
    pub notifystatus: Option<String>,
    #[serde(rename = "OldVersion")]
    #[serde(skip_serializing_if = "Option::is_none", default)]
    #[doc = "Old version currently installed."]
    #[doc = ""]
    pub oldversion: Option<String>,
    #[serde(rename = "Origin")]
    #[doc = "Package origin, e.g., 'Proxmox' or 'Debian'."]
    #[doc = ""]
    pub origin: String,
    #[serde(rename = "Package")]
    #[doc = "Package name."]
    #[doc = ""]
    pub package: String,
    #[serde(rename = "Priority")]
    #[doc = "Package priority."]
    #[doc = ""]
    pub priority: String,
    #[serde(rename = "RunningKernel")]
    #[serde(skip_serializing_if = "Option::is_none", default)]
    #[doc = "Kernel release, only for package 'proxmox-ve'."]
    #[doc = ""]
    pub runningkernel: Option<String>,
    #[serde(rename = "Section")]
    #[doc = "Package section."]
    #[doc = ""]
    pub section: String,
    #[serde(rename = "Title")]
    #[doc = "Package title."]
    #[doc = ""]
    pub title: String,
    #[serde(rename = "Version")]
    #[doc = "New version to be updated to."]
    #[doc = ""]
    pub version: String,
    #[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 = "Package Architecture."]
#[doc = ""]
pub enum Arch {
    #[serde(rename = "all")]
    All,
    #[serde(rename = "amd64")]
    Amd64,
    #[serde(rename = "arm64")]
    Arm64,
    #[serde(rename = "armhf")]
    Armhf,
    #[serde(rename = "ppc64el")]
    Ppc64el,
    #[serde(rename = "risc64")]
    Risc64,
    #[serde(rename = "s390x")]
    S390x,
}
impl TryFrom<&str> for Arch {
    type Error = String;
    fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
        match value {
            "all" => Ok(Self::All),
            "amd64" => Ok(Self::Amd64),
            "arm64" => Ok(Self::Arm64),
            "armhf" => Ok(Self::Armhf),
            "ppc64el" => Ok(Self::Ppc64el),
            "risc64" => Ok(Self::Risc64),
            "s390x" => Ok(Self::S390x),
            v => Err(format!("Unknown variant {v}")),
        }
    }
}
#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
#[doc = "Current state of the package installed on the system."]
#[doc = ""]
pub enum CurrentState {
    ConfigFiles,
    HalfConfigured,
    HalfInstalled,
    Installed,
    NotInstalled,
    UnPacked,
}
impl TryFrom<&str> for CurrentState {
    type Error = String;
    fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
        match value {
            "ConfigFiles" => Ok(Self::ConfigFiles),
            "HalfConfigured" => Ok(Self::HalfConfigured),
            "HalfInstalled" => Ok(Self::HalfInstalled),
            "Installed" => Ok(Self::Installed),
            "NotInstalled" => Ok(Self::NotInstalled),
            "UnPacked" => Ok(Self::UnPacked),
            v => Err(format!("Unknown variant {v}")),
        }
    }
}