Skip to main content

proxmox_api/generated/
pools.rs

1pub mod poolid;
2#[derive(Debug, Clone)]
3pub struct PoolsClient<T> {
4    client: T,
5    path: String,
6}
7impl<T> PoolsClient<T>
8where
9    T: crate::client::Client,
10{
11    pub fn new(client: T) -> Self {
12        Self {
13            client,
14            path: "/pools".to_string(),
15        }
16    }
17}
18impl<T> PoolsClient<T>
19where
20    T: crate::client::Client,
21{
22    #[doc = "Delete pool."]
23    #[doc = ""]
24    #[doc = "Permission check: perm(\"/pool/{poolid}\", [\"Pool.Allocate\"])"]
25    #[doc = "You can only delete empty pools (no members)."]
26    pub async fn delete(&self, params: DeleteParams) -> Result<(), T::Error> {
27        let path = self.path.to_string();
28        self.client.delete(&path, &params).await
29    }
30}
31impl<T> PoolsClient<T>
32where
33    T: crate::client::Client,
34{
35    #[doc = "List pools or get pool configuration."]
36    #[doc = ""]
37    #[doc = "List all pools where you have Pool.Audit permissions on /pool/\\<pool\\>, or the pool specific with {poolid}"]
38    pub async fn get(&self, params: GetParams) -> Result<Vec<GetOutputItems>, T::Error> {
39        let path = self.path.to_string();
40        let optional_vec: Option<Vec<GetOutputItems>> = self.client.get(&path, &params).await?;
41        Ok(optional_vec.unwrap_or_default())
42    }
43}
44impl<T> PoolsClient<T>
45where
46    T: crate::client::Client,
47{
48    #[doc = "Create new pool."]
49    #[doc = ""]
50    #[doc = "Permission check: perm(\"/pool/{poolid}\", [\"Pool.Allocate\"])"]
51    pub async fn post(&self, params: PostParams) -> Result<(), T::Error> {
52        let path = self.path.to_string();
53        self.client.post(&path, &params).await
54    }
55}
56impl<T> PoolsClient<T>
57where
58    T: crate::client::Client,
59{
60    #[doc = "Update pool."]
61    #[doc = ""]
62    #[doc = "Permission check: perm(\"/pool/{poolid}\", [\"Pool.Allocate\"])"]
63    #[doc = "You also need the right to modify permissions on any object you add/delete."]
64    pub async fn put(&self, params: PutParams) -> Result<(), T::Error> {
65        let path = self.path.to_string();
66        self.client.put(&path, &params).await
67    }
68}
69impl DeleteParams {
70    pub fn new(poolid: String) -> Self {
71        Self {
72            poolid,
73            additional_properties: ::std::default::Default::default(),
74        }
75    }
76}
77#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
78pub struct DeleteParams {
79    pub poolid: String,
80    #[serde(
81        flatten,
82        default,
83        skip_serializing_if = "::std::collections::HashMap::is_empty"
84    )]
85    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
86}
87impl GetOutputItems {
88    pub fn new(poolid: String) -> Self {
89        Self {
90            poolid,
91            comment: ::std::default::Default::default(),
92            members: ::std::default::Default::default(),
93            additional_properties: ::std::default::Default::default(),
94        }
95    }
96}
97#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
98pub struct GetOutputItems {
99    #[serde(skip_serializing_if = "Option::is_none", default)]
100    pub comment: Option<String>,
101    #[serde(skip_serializing_if = "::std::vec::Vec::is_empty", default)]
102    pub members: Vec<MembersGetOutputItemsMembersItems>,
103    pub poolid: String,
104    #[serde(
105        flatten,
106        default,
107        skip_serializing_if = "::std::collections::HashMap::is_empty"
108    )]
109    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
110}
111#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, Default)]
112pub struct GetParams {
113    #[serde(skip_serializing_if = "Option::is_none", default)]
114    pub poolid: Option<String>,
115    #[serde(rename = "type")]
116    #[serde(skip_serializing_if = "Option::is_none", default)]
117    pub ty: Option<Type>,
118    #[serde(
119        flatten,
120        default,
121        skip_serializing_if = "::std::collections::HashMap::is_empty"
122    )]
123    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
124}
125impl MembersGetOutputItemsMembersItems {
126    pub fn new(id: String, node: String, ty: Type2) -> Self {
127        Self {
128            id,
129            node,
130            ty,
131            storage: ::std::default::Default::default(),
132            vmid: ::std::default::Default::default(),
133            additional_properties: ::std::default::Default::default(),
134        }
135    }
136}
137#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
138pub struct MembersGetOutputItemsMembersItems {
139    pub id: String,
140    pub node: String,
141    #[serde(skip_serializing_if = "Option::is_none", default)]
142    pub storage: Option<String>,
143    #[serde(rename = "type")]
144    pub ty: Type2,
145    #[serde(
146        serialize_with = "crate::types::serialize_int_optional",
147        deserialize_with = "crate::types::deserialize_int_optional"
148    )]
149    #[serde(skip_serializing_if = "Option::is_none", default)]
150    pub vmid: Option<i64>,
151    #[serde(
152        flatten,
153        default,
154        skip_serializing_if = "::std::collections::HashMap::is_empty"
155    )]
156    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
157}
158impl PostParams {
159    pub fn new(poolid: String) -> Self {
160        Self {
161            poolid,
162            comment: ::std::default::Default::default(),
163            additional_properties: ::std::default::Default::default(),
164        }
165    }
166}
167#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
168pub struct PostParams {
169    #[serde(skip_serializing_if = "Option::is_none", default)]
170    pub comment: Option<String>,
171    pub poolid: String,
172    #[serde(
173        flatten,
174        default,
175        skip_serializing_if = "::std::collections::HashMap::is_empty"
176    )]
177    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
178}
179impl PutParams {
180    pub fn new(poolid: String) -> Self {
181        Self {
182            poolid,
183            allow_move: ::std::default::Default::default(),
184            comment: ::std::default::Default::default(),
185            delete: ::std::default::Default::default(),
186            storage: ::std::default::Default::default(),
187            vms: ::std::default::Default::default(),
188            additional_properties: ::std::default::Default::default(),
189        }
190    }
191}
192#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
193pub struct PutParams {
194    #[serde(rename = "allow-move")]
195    #[serde(
196        serialize_with = "crate::types::serialize_bool_optional",
197        deserialize_with = "crate::types::deserialize_bool_optional"
198    )]
199    #[serde(skip_serializing_if = "Option::is_none", default)]
200    #[doc = "Allow adding a guest even if already in another pool. The guest will be removed from its current pool and added to this one."]
201    #[doc = ""]
202    pub allow_move: Option<bool>,
203    #[serde(skip_serializing_if = "Option::is_none", default)]
204    pub comment: Option<String>,
205    #[serde(
206        serialize_with = "crate::types::serialize_bool_optional",
207        deserialize_with = "crate::types::deserialize_bool_optional"
208    )]
209    #[serde(skip_serializing_if = "Option::is_none", default)]
210    #[doc = "Remove the passed VMIDs and/or storage IDs instead of adding them."]
211    #[doc = ""]
212    pub delete: Option<bool>,
213    pub poolid: String,
214    #[serde(skip_serializing_if = "Option::is_none", default)]
215    #[doc = "List of storage IDs to add or remove from this pool."]
216    #[doc = ""]
217    pub storage: Option<String>,
218    #[serde(skip_serializing_if = "Option::is_none", default)]
219    #[doc = "List of guest VMIDs to add or remove from this pool."]
220    #[doc = ""]
221    pub vms: Option<String>,
222    #[serde(
223        flatten,
224        default,
225        skip_serializing_if = "::std::collections::HashMap::is_empty"
226    )]
227    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
228}
229#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
230pub enum Type {
231    #[serde(rename = "lxc")]
232    Lxc,
233    #[serde(rename = "qemu")]
234    Qemu,
235    #[serde(rename = "storage")]
236    Storage,
237}
238impl TryFrom<&str> for Type {
239    type Error = String;
240    fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
241        match value {
242            "lxc" => Ok(Self::Lxc),
243            "qemu" => Ok(Self::Qemu),
244            "storage" => Ok(Self::Storage),
245            v => Err(format!("Unknown variant {v}")),
246        }
247    }
248}
249#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
250pub enum Type2 {
251    #[serde(rename = "lxc")]
252    Lxc,
253    #[serde(rename = "openvz")]
254    Openvz,
255    #[serde(rename = "qemu")]
256    Qemu,
257    #[serde(rename = "storage")]
258    Storage,
259}
260impl TryFrom<&str> for Type2 {
261    type Error = String;
262    fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
263        match value {
264            "lxc" => Ok(Self::Lxc),
265            "openvz" => Ok(Self::Openvz),
266            "qemu" => Ok(Self::Qemu),
267            "storage" => Ok(Self::Storage),
268            v => Err(format!("Unknown variant {v}")),
269        }
270    }
271}
272impl<T> PoolsClient<T>
273where
274    T: crate::client::Client,
275{
276    pub fn poolid(&self, poolid: &str) -> poolid::PoolidClient<T> {
277        poolid::PoolidClient::<T>::new(self.client.clone(), &self.path, poolid)
278    }
279}