Skip to main content

proxmox_api/generated/nodes/node/
rrd.rs

1#[derive(Debug, Clone)]
2pub struct RrdClient<T> {
3    client: T,
4    path: String,
5}
6impl<T> RrdClient<T>
7where
8    T: crate::client::Client,
9{
10    pub fn new(client: T, parent_path: &str) -> Self {
11        Self {
12            client,
13            path: format!("{}{}", parent_path, "/rrd"),
14        }
15    }
16}
17impl<T> RrdClient<T>
18where
19    T: crate::client::Client,
20{
21    #[doc = "Read node RRD statistics (returns PNG)"]
22    #[doc = ""]
23    #[doc = "Permission check: perm(\"/nodes/{node}\", [\"Sys.Audit\"])"]
24    pub async fn get(&self, params: GetParams) -> Result<GetOutput, T::Error> {
25        let path = self.path.to_string();
26        self.client.get(&path, &params).await
27    }
28}
29impl GetOutput {
30    pub fn new(filename: String) -> Self {
31        Self {
32            filename,
33            additional_properties: ::std::default::Default::default(),
34        }
35    }
36}
37#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
38pub struct GetOutput {
39    pub filename: String,
40    #[serde(
41        flatten,
42        default,
43        skip_serializing_if = "::std::collections::HashMap::is_empty"
44    )]
45    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
46}
47impl GetParams {
48    pub fn new(ds: String, timeframe: Timeframe) -> Self {
49        Self {
50            ds,
51            timeframe,
52            cf: ::std::default::Default::default(),
53            additional_properties: ::std::default::Default::default(),
54        }
55    }
56}
57#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
58pub struct GetParams {
59    #[serde(skip_serializing_if = "Option::is_none", default)]
60    #[doc = "The RRD consolidation function"]
61    #[doc = ""]
62    pub cf: Option<Cf>,
63    #[doc = "The list of datasources you want to display."]
64    #[doc = ""]
65    pub ds: String,
66    #[doc = "Specify the time frame you are interested in."]
67    #[doc = ""]
68    pub timeframe: Timeframe,
69    #[serde(
70        flatten,
71        default,
72        skip_serializing_if = "::std::collections::HashMap::is_empty"
73    )]
74    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
75}
76#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
77#[doc = "The RRD consolidation function"]
78#[doc = ""]
79pub enum Cf {
80    AVERAGE,
81    MAX,
82}
83impl TryFrom<&str> for Cf {
84    type Error = String;
85    fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
86        match value {
87            "AVERAGE" => Ok(Self::AVERAGE),
88            "MAX" => Ok(Self::MAX),
89            v => Err(format!("Unknown variant {v}")),
90        }
91    }
92}
93#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
94#[doc = "Specify the time frame you are interested in."]
95#[doc = ""]
96pub enum Timeframe {
97    #[serde(rename = "day")]
98    Day,
99    #[serde(rename = "decade")]
100    Decade,
101    #[serde(rename = "hour")]
102    Hour,
103    #[serde(rename = "month")]
104    Month,
105    #[serde(rename = "week")]
106    Week,
107    #[serde(rename = "year")]
108    Year,
109}
110impl TryFrom<&str> for Timeframe {
111    type Error = String;
112    fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
113        match value {
114            "day" => Ok(Self::Day),
115            "decade" => Ok(Self::Decade),
116            "hour" => Ok(Self::Hour),
117            "month" => Ok(Self::Month),
118            "week" => Ok(Self::Week),
119            "year" => Ok(Self::Year),
120            v => Err(format!("Unknown variant {v}")),
121        }
122    }
123}