Skip to main content

proxmox_api/generated/nodes/node/
config.rs

1#[derive(Debug, Clone)]
2pub struct ConfigClient<T> {
3    client: T,
4    path: String,
5}
6impl<T> ConfigClient<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, "/config"),
14        }
15    }
16}
17impl<T> ConfigClient<T>
18where
19    T: crate::client::Client,
20{
21    #[doc = "Get node configuration options."]
22    #[doc = ""]
23    #[doc = "Permission check: perm(\"/\", [\"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<T> ConfigClient<T>
30where
31    T: crate::client::Client,
32{
33    #[doc = "Set node configuration options."]
34    #[doc = ""]
35    #[doc = "Permission check: perm(\"/\", [\"Sys.Modify\"])"]
36    pub async fn put(&self, params: PutParams) -> Result<(), T::Error> {
37        let path = self.path.to_string();
38        self.client.put(&path, &params).await
39    }
40}
41#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, Default)]
42pub struct GetOutput {
43    #[serde(skip_serializing_if = "Option::is_none", default)]
44    #[doc = "Node specific ACME settings."]
45    #[doc = ""]
46    pub acme: Option<String>,
47    #[serde(rename = "acmedomain[n]")]
48    #[serde(
49        serialize_with = "crate::types::serialize_multi::<NumberedAcmedomains, _>",
50        deserialize_with = "crate::types::deserialize_multi::<NumberedAcmedomains, _>"
51    )]
52    #[serde(skip_serializing_if = "::std::collections::HashMap::is_empty", default)]
53    #[serde(flatten)]
54    #[doc = "ACME domain and validation plugin"]
55    #[doc = ""]
56    pub acmedomains: ::std::collections::HashMap<u32, String>,
57    #[serde(rename = "ballooning-target")]
58    #[serde(skip_serializing_if = "Option::is_none", default)]
59    #[doc = "RAM usage target for ballooning (in percent of total memory)"]
60    #[doc = ""]
61    pub ballooning_target: Option<BallooningTargetInt>,
62    #[serde(skip_serializing_if = "Option::is_none", default)]
63    #[doc = "Description for the Node. Shown in the web-interface node notes panel. This is saved as comment inside the configuration file."]
64    #[doc = ""]
65    pub description: Option<DescriptionStr>,
66    #[serde(skip_serializing_if = "Option::is_none", default)]
67    #[doc = "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications."]
68    #[doc = ""]
69    pub digest: Option<DigestStr>,
70    #[serde(rename = "startall-onboot-delay")]
71    #[serde(skip_serializing_if = "Option::is_none", default)]
72    #[doc = "Initial delay in seconds, before starting all the Virtual Guests with on-boot enabled."]
73    #[doc = ""]
74    pub startall_onboot_delay: Option<StartallOnbootDelayInt>,
75    #[serde(skip_serializing_if = "Option::is_none", default)]
76    #[doc = "Node specific wake on LAN settings."]
77    #[doc = ""]
78    pub wakeonlan: Option<String>,
79    #[serde(
80        flatten,
81        deserialize_with = "crate::types::multi::deserialize_additional_data::<'_, GetOutput, _, _>"
82    )]
83    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
84}
85impl crate::types::multi::Test for GetOutput {
86    fn test_fn() -> fn(&str) -> bool {
87        fn the_test(input: &str) -> bool {
88            let array = [
89                <NumberedAcmedomains as crate::types::multi::NumberedItems>::key_matches
90                    as fn(&str) -> bool,
91            ];
92            array.iter().any(|f| f(input))
93        }
94        the_test as _
95    }
96}
97#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, Default)]
98pub struct GetParams {
99    #[serde(skip_serializing_if = "Option::is_none", default)]
100    #[doc = "Return only a specific property from the node configuration."]
101    #[doc = ""]
102    pub property: Option<Property>,
103    #[serde(
104        flatten,
105        default,
106        skip_serializing_if = "::std::collections::HashMap::is_empty"
107    )]
108    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
109}
110#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, Default)]
111pub struct PutParams {
112    #[serde(skip_serializing_if = "Option::is_none", default)]
113    #[doc = "Node specific ACME settings."]
114    #[doc = ""]
115    pub acme: Option<String>,
116    #[serde(rename = "acmedomain[n]")]
117    #[serde(
118        serialize_with = "crate::types::serialize_multi::<NumberedAcmedomains, _>",
119        deserialize_with = "crate::types::deserialize_multi::<NumberedAcmedomains, _>"
120    )]
121    #[serde(skip_serializing_if = "::std::collections::HashMap::is_empty", default)]
122    #[serde(flatten)]
123    #[doc = "ACME domain and validation plugin"]
124    #[doc = ""]
125    pub acmedomains: ::std::collections::HashMap<u32, String>,
126    #[serde(rename = "ballooning-target")]
127    #[serde(skip_serializing_if = "Option::is_none", default)]
128    #[doc = "RAM usage target for ballooning (in percent of total memory)"]
129    #[doc = ""]
130    pub ballooning_target: Option<BallooningTargetInt>,
131    #[serde(skip_serializing_if = "Option::is_none", default)]
132    #[doc = "A list of settings you want to delete."]
133    #[doc = ""]
134    pub delete: Option<String>,
135    #[serde(skip_serializing_if = "Option::is_none", default)]
136    #[doc = "Description for the Node. Shown in the web-interface node notes panel. This is saved as comment inside the configuration file."]
137    #[doc = ""]
138    pub description: Option<DescriptionStr>,
139    #[serde(skip_serializing_if = "Option::is_none", default)]
140    #[doc = "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications."]
141    #[doc = ""]
142    pub digest: Option<DigestStr>,
143    #[serde(rename = "startall-onboot-delay")]
144    #[serde(skip_serializing_if = "Option::is_none", default)]
145    #[doc = "Initial delay in seconds, before starting all the Virtual Guests with on-boot enabled."]
146    #[doc = ""]
147    pub startall_onboot_delay: Option<StartallOnbootDelayInt>,
148    #[serde(skip_serializing_if = "Option::is_none", default)]
149    #[doc = "Node specific wake on LAN settings."]
150    #[doc = ""]
151    pub wakeonlan: Option<String>,
152    #[serde(
153        flatten,
154        deserialize_with = "crate::types::multi::deserialize_additional_data::<'_, PutParams, _, _>"
155    )]
156    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
157}
158impl crate::types::multi::Test for PutParams {
159    fn test_fn() -> fn(&str) -> bool {
160        fn the_test(input: &str) -> bool {
161            let array = [
162                <NumberedAcmedomains as crate::types::multi::NumberedItems>::key_matches
163                    as fn(&str) -> bool,
164            ];
165            array.iter().any(|f| f(input))
166        }
167        the_test as _
168    }
169}
170#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
171#[doc = "Return only a specific property from the node configuration."]
172#[doc = ""]
173pub enum Property {
174    #[serde(rename = "acme")]
175    Acme,
176    #[serde(rename = "acmedomain0")]
177    Acmedomain0,
178    #[serde(rename = "acmedomain1")]
179    Acmedomain1,
180    #[serde(rename = "acmedomain2")]
181    Acmedomain2,
182    #[serde(rename = "acmedomain3")]
183    Acmedomain3,
184    #[serde(rename = "acmedomain4")]
185    Acmedomain4,
186    #[serde(rename = "acmedomain5")]
187    Acmedomain5,
188    #[serde(rename = "ballooning-target")]
189    BallooningTarget,
190    #[serde(rename = "description")]
191    Description,
192    #[serde(rename = "startall-onboot-delay")]
193    StartallOnbootDelay,
194    #[serde(rename = "wakeonlan")]
195    Wakeonlan,
196}
197impl TryFrom<&str> for Property {
198    type Error = String;
199    fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
200        match value {
201            "acme" => Ok(Self::Acme),
202            "acmedomain0" => Ok(Self::Acmedomain0),
203            "acmedomain1" => Ok(Self::Acmedomain1),
204            "acmedomain2" => Ok(Self::Acmedomain2),
205            "acmedomain3" => Ok(Self::Acmedomain3),
206            "acmedomain4" => Ok(Self::Acmedomain4),
207            "acmedomain5" => Ok(Self::Acmedomain5),
208            "ballooning-target" => Ok(Self::BallooningTarget),
209            "description" => Ok(Self::Description),
210            "startall-onboot-delay" => Ok(Self::StartallOnbootDelay),
211            "wakeonlan" => Ok(Self::Wakeonlan),
212            v => Err(format!("Unknown variant {v}")),
213        }
214    }
215}
216#[derive(Default)]
217struct NumberedAcmedomains;
218impl crate::types::multi::NumberedItems for NumberedAcmedomains {
219    type Item = String;
220    const PREFIX: &'static str = "acmedomain";
221}
222#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
223pub struct BallooningTargetInt(i128);
224impl crate::types::bounded_integer::BoundedInteger for BallooningTargetInt {
225    const MIN: Option<i128> = Some(0i128);
226    const MAX: Option<i128> = Some(100i128);
227    const DEFAULT: Option<i128> = Some(80i128);
228    const TYPE_DESCRIPTION: &'static str = "an integer between 0 and 100";
229    fn get(&self) -> i128 {
230        self.0
231    }
232    fn new(value: i128) -> Result<Self, crate::types::bounded_integer::BoundedIntegerError> {
233        Self::validate(value)?;
234        Ok(Self(value))
235    }
236}
237impl std::convert::TryFrom<i128> for BallooningTargetInt {
238    type Error = crate::types::bounded_integer::BoundedIntegerError;
239    fn try_from(value: i128) -> Result<Self, Self::Error> {
240        crate::types::bounded_integer::BoundedInteger::new(value)
241    }
242}
243impl ::serde::Serialize for BallooningTargetInt {
244    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
245    where
246        S: ::serde::Serializer,
247    {
248        crate::types::bounded_integer::serialize_bounded_integer(self, serializer)
249    }
250}
251impl<'de> ::serde::Deserialize<'de> for BallooningTargetInt {
252    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
253    where
254        D: ::serde::Deserializer<'de>,
255    {
256        crate::types::bounded_integer::deserialize_bounded_integer(deserializer)
257    }
258}
259#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
260pub struct StartallOnbootDelayInt(i128);
261impl crate::types::bounded_integer::BoundedInteger for StartallOnbootDelayInt {
262    const MIN: Option<i128> = Some(0i128);
263    const MAX: Option<i128> = Some(300i128);
264    const DEFAULT: Option<i128> = Some(0i128);
265    const TYPE_DESCRIPTION: &'static str = "an integer between 0 and 300";
266    fn get(&self) -> i128 {
267        self.0
268    }
269    fn new(value: i128) -> Result<Self, crate::types::bounded_integer::BoundedIntegerError> {
270        Self::validate(value)?;
271        Ok(Self(value))
272    }
273}
274impl std::convert::TryFrom<i128> for StartallOnbootDelayInt {
275    type Error = crate::types::bounded_integer::BoundedIntegerError;
276    fn try_from(value: i128) -> Result<Self, Self::Error> {
277        crate::types::bounded_integer::BoundedInteger::new(value)
278    }
279}
280impl ::serde::Serialize for StartallOnbootDelayInt {
281    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
282    where
283        S: ::serde::Serializer,
284    {
285        crate::types::bounded_integer::serialize_bounded_integer(self, serializer)
286    }
287}
288impl<'de> ::serde::Deserialize<'de> for StartallOnbootDelayInt {
289    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
290    where
291        D: ::serde::Deserializer<'de>,
292    {
293        crate::types::bounded_integer::deserialize_bounded_integer(deserializer)
294    }
295}
296#[derive(Debug, Clone, PartialEq, PartialOrd)]
297pub struct DescriptionStr {
298    value: String,
299}
300impl crate::types::bounded_string::BoundedString for DescriptionStr {
301    const MIN_LENGTH: Option<usize> = None::<usize>;
302    const MAX_LENGTH: Option<usize> = Some(65536usize);
303    const DEFAULT: Option<&'static str> = None::<&'static str>;
304    const PATTERN: Option<&'static str> = None::<&'static str>;
305    const TYPE_DESCRIPTION: &'static str = "a string with length at most 65536";
306    fn get_value(&self) -> &str {
307        &self.value
308    }
309    fn new(value: String) -> Result<Self, crate::types::bounded_string::BoundedStringError> {
310        Self::validate(&value)?;
311        Ok(Self { value })
312    }
313}
314impl std::convert::TryFrom<String> for DescriptionStr {
315    type Error = crate::types::bounded_string::BoundedStringError;
316    fn try_from(value: String) -> Result<Self, Self::Error> {
317        crate::types::bounded_string::BoundedString::new(value)
318    }
319}
320impl ::serde::Serialize for DescriptionStr {
321    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
322    where
323        S: ::serde::Serializer,
324    {
325        crate::types::bounded_string::serialize_bounded_string(self, serializer)
326    }
327}
328impl<'de> ::serde::Deserialize<'de> for DescriptionStr {
329    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
330    where
331        D: ::serde::Deserializer<'de>,
332    {
333        crate::types::bounded_string::deserialize_bounded_string(deserializer)
334    }
335}
336#[derive(Debug, Clone, PartialEq, PartialOrd)]
337pub struct DigestStr {
338    value: String,
339}
340impl crate::types::bounded_string::BoundedString for DigestStr {
341    const MIN_LENGTH: Option<usize> = None::<usize>;
342    const MAX_LENGTH: Option<usize> = Some(40usize);
343    const DEFAULT: Option<&'static str> = None::<&'static str>;
344    const PATTERN: Option<&'static str> = None::<&'static str>;
345    const TYPE_DESCRIPTION: &'static str = "a string with length at most 40";
346    fn get_value(&self) -> &str {
347        &self.value
348    }
349    fn new(value: String) -> Result<Self, crate::types::bounded_string::BoundedStringError> {
350        Self::validate(&value)?;
351        Ok(Self { value })
352    }
353}
354impl std::convert::TryFrom<String> for DigestStr {
355    type Error = crate::types::bounded_string::BoundedStringError;
356    fn try_from(value: String) -> Result<Self, Self::Error> {
357        crate::types::bounded_string::BoundedString::new(value)
358    }
359}
360impl ::serde::Serialize for DigestStr {
361    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
362    where
363        S: ::serde::Serializer,
364    {
365        crate::types::bounded_string::serialize_bounded_string(self, serializer)
366    }
367}
368impl<'de> ::serde::Deserialize<'de> for DigestStr {
369    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
370    where
371        D: ::serde::Deserializer<'de>,
372    {
373        crate::types::bounded_string::deserialize_bounded_string(deserializer)
374    }
375}