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, ¶ms).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, ¶ms).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, ¶ms).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, ¶ms).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}