1#[derive(Debug, Clone)]
2pub struct ResizeClient<T> {
3 client: T,
4 path: String,
5}
6impl<T> ResizeClient<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, "/resize"),
14 }
15 }
16}
17impl<T> ResizeClient<T>
18where
19 T: crate::client::Client,
20{
21 #[doc = "Extend volume size."]
22 #[doc = ""]
23 #[doc = "Permission check: perm(\"/vms/{vmid}\", [\"VM.Config.Disk\"])"]
24 pub async fn put(&self, params: PutParams) -> Result<String, T::Error> {
25 let path = self.path.to_string();
26 self.client.put(&path, ¶ms).await
27 }
28}
29impl PutParams {
30 pub fn new(disk: Disk, size: SizeStr) -> Self {
31 Self {
32 disk,
33 size,
34 digest: ::std::default::Default::default(),
35 skiplock: ::std::default::Default::default(),
36 additional_properties: ::std::default::Default::default(),
37 }
38 }
39}
40#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
41pub struct PutParams {
42 #[serde(skip_serializing_if = "Option::is_none", default)]
43 #[doc = "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications."]
44 #[doc = ""]
45 pub digest: Option<DigestStr>,
46 #[doc = "The disk you want to resize."]
47 #[doc = ""]
48 pub disk: Disk,
49 #[doc = "The new size. With the `+` sign the value is added to the actual size of the volume and without it, the value is taken as an absolute one. Shrinking disk size is not supported."]
50 #[doc = ""]
51 pub size: SizeStr,
52 #[serde(
53 serialize_with = "crate::types::serialize_bool_optional",
54 deserialize_with = "crate::types::deserialize_bool_optional"
55 )]
56 #[serde(skip_serializing_if = "Option::is_none", default)]
57 #[doc = "Ignore locks - only root is allowed to use this option."]
58 #[doc = ""]
59 pub skiplock: Option<bool>,
60 #[serde(
61 flatten,
62 default,
63 skip_serializing_if = "::std::collections::HashMap::is_empty"
64 )]
65 pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
66}
67#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
68#[doc = "The disk you want to resize."]
69#[doc = ""]
70pub enum Disk {
71 #[serde(rename = "efidisk0")]
72 Efidisk0,
73 #[serde(rename = "ide0")]
74 Ide0,
75 #[serde(rename = "ide1")]
76 Ide1,
77 #[serde(rename = "ide2")]
78 Ide2,
79 #[serde(rename = "ide3")]
80 Ide3,
81 #[serde(rename = "sata0")]
82 Sata0,
83 #[serde(rename = "sata1")]
84 Sata1,
85 #[serde(rename = "sata2")]
86 Sata2,
87 #[serde(rename = "sata3")]
88 Sata3,
89 #[serde(rename = "sata4")]
90 Sata4,
91 #[serde(rename = "sata5")]
92 Sata5,
93 #[serde(rename = "scsi0")]
94 Scsi0,
95 #[serde(rename = "scsi1")]
96 Scsi1,
97 #[serde(rename = "scsi10")]
98 Scsi10,
99 #[serde(rename = "scsi11")]
100 Scsi11,
101 #[serde(rename = "scsi12")]
102 Scsi12,
103 #[serde(rename = "scsi13")]
104 Scsi13,
105 #[serde(rename = "scsi14")]
106 Scsi14,
107 #[serde(rename = "scsi15")]
108 Scsi15,
109 #[serde(rename = "scsi16")]
110 Scsi16,
111 #[serde(rename = "scsi17")]
112 Scsi17,
113 #[serde(rename = "scsi18")]
114 Scsi18,
115 #[serde(rename = "scsi19")]
116 Scsi19,
117 #[serde(rename = "scsi2")]
118 Scsi2,
119 #[serde(rename = "scsi20")]
120 Scsi20,
121 #[serde(rename = "scsi21")]
122 Scsi21,
123 #[serde(rename = "scsi22")]
124 Scsi22,
125 #[serde(rename = "scsi23")]
126 Scsi23,
127 #[serde(rename = "scsi24")]
128 Scsi24,
129 #[serde(rename = "scsi25")]
130 Scsi25,
131 #[serde(rename = "scsi26")]
132 Scsi26,
133 #[serde(rename = "scsi27")]
134 Scsi27,
135 #[serde(rename = "scsi28")]
136 Scsi28,
137 #[serde(rename = "scsi29")]
138 Scsi29,
139 #[serde(rename = "scsi3")]
140 Scsi3,
141 #[serde(rename = "scsi30")]
142 Scsi30,
143 #[serde(rename = "scsi4")]
144 Scsi4,
145 #[serde(rename = "scsi5")]
146 Scsi5,
147 #[serde(rename = "scsi6")]
148 Scsi6,
149 #[serde(rename = "scsi7")]
150 Scsi7,
151 #[serde(rename = "scsi8")]
152 Scsi8,
153 #[serde(rename = "scsi9")]
154 Scsi9,
155 #[serde(rename = "tpmstate0")]
156 Tpmstate0,
157 #[serde(rename = "virtio0")]
158 Virtio0,
159 #[serde(rename = "virtio1")]
160 Virtio1,
161 #[serde(rename = "virtio10")]
162 Virtio10,
163 #[serde(rename = "virtio11")]
164 Virtio11,
165 #[serde(rename = "virtio12")]
166 Virtio12,
167 #[serde(rename = "virtio13")]
168 Virtio13,
169 #[serde(rename = "virtio14")]
170 Virtio14,
171 #[serde(rename = "virtio15")]
172 Virtio15,
173 #[serde(rename = "virtio2")]
174 Virtio2,
175 #[serde(rename = "virtio3")]
176 Virtio3,
177 #[serde(rename = "virtio4")]
178 Virtio4,
179 #[serde(rename = "virtio5")]
180 Virtio5,
181 #[serde(rename = "virtio6")]
182 Virtio6,
183 #[serde(rename = "virtio7")]
184 Virtio7,
185 #[serde(rename = "virtio8")]
186 Virtio8,
187 #[serde(rename = "virtio9")]
188 Virtio9,
189}
190impl TryFrom<&str> for Disk {
191 type Error = String;
192 fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
193 match value {
194 "efidisk0" => Ok(Self::Efidisk0),
195 "ide0" => Ok(Self::Ide0),
196 "ide1" => Ok(Self::Ide1),
197 "ide2" => Ok(Self::Ide2),
198 "ide3" => Ok(Self::Ide3),
199 "sata0" => Ok(Self::Sata0),
200 "sata1" => Ok(Self::Sata1),
201 "sata2" => Ok(Self::Sata2),
202 "sata3" => Ok(Self::Sata3),
203 "sata4" => Ok(Self::Sata4),
204 "sata5" => Ok(Self::Sata5),
205 "scsi0" => Ok(Self::Scsi0),
206 "scsi1" => Ok(Self::Scsi1),
207 "scsi10" => Ok(Self::Scsi10),
208 "scsi11" => Ok(Self::Scsi11),
209 "scsi12" => Ok(Self::Scsi12),
210 "scsi13" => Ok(Self::Scsi13),
211 "scsi14" => Ok(Self::Scsi14),
212 "scsi15" => Ok(Self::Scsi15),
213 "scsi16" => Ok(Self::Scsi16),
214 "scsi17" => Ok(Self::Scsi17),
215 "scsi18" => Ok(Self::Scsi18),
216 "scsi19" => Ok(Self::Scsi19),
217 "scsi2" => Ok(Self::Scsi2),
218 "scsi20" => Ok(Self::Scsi20),
219 "scsi21" => Ok(Self::Scsi21),
220 "scsi22" => Ok(Self::Scsi22),
221 "scsi23" => Ok(Self::Scsi23),
222 "scsi24" => Ok(Self::Scsi24),
223 "scsi25" => Ok(Self::Scsi25),
224 "scsi26" => Ok(Self::Scsi26),
225 "scsi27" => Ok(Self::Scsi27),
226 "scsi28" => Ok(Self::Scsi28),
227 "scsi29" => Ok(Self::Scsi29),
228 "scsi3" => Ok(Self::Scsi3),
229 "scsi30" => Ok(Self::Scsi30),
230 "scsi4" => Ok(Self::Scsi4),
231 "scsi5" => Ok(Self::Scsi5),
232 "scsi6" => Ok(Self::Scsi6),
233 "scsi7" => Ok(Self::Scsi7),
234 "scsi8" => Ok(Self::Scsi8),
235 "scsi9" => Ok(Self::Scsi9),
236 "tpmstate0" => Ok(Self::Tpmstate0),
237 "virtio0" => Ok(Self::Virtio0),
238 "virtio1" => Ok(Self::Virtio1),
239 "virtio10" => Ok(Self::Virtio10),
240 "virtio11" => Ok(Self::Virtio11),
241 "virtio12" => Ok(Self::Virtio12),
242 "virtio13" => Ok(Self::Virtio13),
243 "virtio14" => Ok(Self::Virtio14),
244 "virtio15" => Ok(Self::Virtio15),
245 "virtio2" => Ok(Self::Virtio2),
246 "virtio3" => Ok(Self::Virtio3),
247 "virtio4" => Ok(Self::Virtio4),
248 "virtio5" => Ok(Self::Virtio5),
249 "virtio6" => Ok(Self::Virtio6),
250 "virtio7" => Ok(Self::Virtio7),
251 "virtio8" => Ok(Self::Virtio8),
252 "virtio9" => Ok(Self::Virtio9),
253 v => Err(format!("Unknown variant {v}")),
254 }
255 }
256}
257#[derive(Debug, Clone, PartialEq, PartialOrd)]
258pub struct DigestStr {
259 value: String,
260}
261impl crate::types::bounded_string::BoundedString for DigestStr {
262 const MIN_LENGTH: Option<usize> = None::<usize>;
263 const MAX_LENGTH: Option<usize> = Some(40usize);
264 const DEFAULT: Option<&'static str> = None::<&'static str>;
265 const PATTERN: Option<&'static str> = None::<&'static str>;
266 const TYPE_DESCRIPTION: &'static str = "a string with length at most 40";
267 fn get_value(&self) -> &str {
268 &self.value
269 }
270 fn new(value: String) -> Result<Self, crate::types::bounded_string::BoundedStringError> {
271 Self::validate(&value)?;
272 Ok(Self { value })
273 }
274}
275impl std::convert::TryFrom<String> for DigestStr {
276 type Error = crate::types::bounded_string::BoundedStringError;
277 fn try_from(value: String) -> Result<Self, Self::Error> {
278 crate::types::bounded_string::BoundedString::new(value)
279 }
280}
281impl ::serde::Serialize for DigestStr {
282 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
283 where
284 S: ::serde::Serializer,
285 {
286 crate::types::bounded_string::serialize_bounded_string(self, serializer)
287 }
288}
289impl<'de> ::serde::Deserialize<'de> for DigestStr {
290 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
291 where
292 D: ::serde::Deserializer<'de>,
293 {
294 crate::types::bounded_string::deserialize_bounded_string(deserializer)
295 }
296}
297#[derive(Debug, Clone, PartialEq, PartialOrd)]
298pub struct SizeStr {
299 value: String,
300}
301impl crate::types::bounded_string::BoundedString for SizeStr {
302 const MIN_LENGTH: Option<usize> = None::<usize>;
303 const MAX_LENGTH: Option<usize> = None::<usize>;
304 const DEFAULT: Option<&'static str> = None::<&'static str>;
305 const PATTERN: Option<&'static str> = Some("\\+?\\d+(\\.\\d+)?[KMGT]?");
306 const TYPE_DESCRIPTION: &'static str =
307 "a string with pattern r\"\\+?\\d+(\\.\\d+)?[KMGT]?\" and no length constraints";
308 fn get_value(&self) -> &str {
309 &self.value
310 }
311 fn new(value: String) -> Result<Self, crate::types::bounded_string::BoundedStringError> {
312 Self::validate(&value)?;
313 Ok(Self { value })
314 }
315}
316impl std::convert::TryFrom<String> for SizeStr {
317 type Error = crate::types::bounded_string::BoundedStringError;
318 fn try_from(value: String) -> Result<Self, Self::Error> {
319 crate::types::bounded_string::BoundedString::new(value)
320 }
321}
322impl ::serde::Serialize for SizeStr {
323 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
324 where
325 S: ::serde::Serializer,
326 {
327 crate::types::bounded_string::serialize_bounded_string(self, serializer)
328 }
329}
330impl<'de> ::serde::Deserialize<'de> for SizeStr {
331 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
332 where
333 D: ::serde::Deserializer<'de>,
334 {
335 crate::types::bounded_string::deserialize_bounded_string(deserializer)
336 }
337}