proxmox_api/generated/cluster/bulk_action/guest/
shutdown.rs1#[derive(Debug, Clone)]
2pub struct ShutdownClient<T> {
3 client: T,
4 path: String,
5}
6impl<T> ShutdownClient<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, "/shutdown"),
14 }
15 }
16}
17impl<T> ShutdownClient<T>
18where
19 T: crate::client::Client,
20{
21 #[doc = "Bulk shutdown all guests on the cluster."]
22 #[doc = ""]
23 #[doc = "The 'VM.PowerMgmt' permission is required on '/' or on '/vms/\\<ID\\>' for each ID passed via the 'vms' parameter."]
24 pub async fn post(&self, params: PostParams) -> Result<String, T::Error> {
25 let path = self.path.to_string();
26 self.client.post(&path, ¶ms).await
27 }
28}
29#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, Default)]
30pub struct PostParams {
31 #[serde(rename = "force-stop")]
32 #[serde(
33 serialize_with = "crate::types::serialize_bool_optional",
34 deserialize_with = "crate::types::deserialize_bool_optional"
35 )]
36 #[serde(skip_serializing_if = "Option::is_none", default)]
37 #[doc = "Makes sure the Guest stops after the timeout."]
38 #[doc = ""]
39 pub force_stop: Option<bool>,
40 #[serde(skip_serializing_if = "Option::is_none", default)]
41 #[doc = "How many parallel tasks at maximum should be started."]
42 #[doc = ""]
43 pub maxworkers: Option<MaxworkersInt>,
44 #[serde(skip_serializing_if = "Option::is_none", default)]
45 #[doc = "Default shutdown timeout in seconds if none is configured for the guest."]
46 #[doc = ""]
47 pub timeout: Option<TimeoutInt>,
48 #[serde(skip_serializing_if = "::std::vec::Vec::is_empty", default)]
49 #[doc = "Only consider guests from this list of VMIDs."]
50 #[doc = ""]
51 pub vms: Vec<VmsInt>,
52 #[serde(
53 flatten,
54 default,
55 skip_serializing_if = "::std::collections::HashMap::is_empty"
56 )]
57 pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
58}
59#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
60pub struct MaxworkersInt(i128);
61impl crate::types::bounded_integer::BoundedInteger for MaxworkersInt {
62 const MIN: Option<i128> = None::<i128>;
63 const MAX: Option<i128> = None::<i128>;
64 const DEFAULT: Option<i128> = Some(1i128);
65 const TYPE_DESCRIPTION: &'static str = "a valid integer";
66 fn get(&self) -> i128 {
67 self.0
68 }
69 fn new(value: i128) -> Result<Self, crate::types::bounded_integer::BoundedIntegerError> {
70 Self::validate(value)?;
71 Ok(Self(value))
72 }
73}
74impl std::convert::TryFrom<i128> for MaxworkersInt {
75 type Error = crate::types::bounded_integer::BoundedIntegerError;
76 fn try_from(value: i128) -> Result<Self, Self::Error> {
77 crate::types::bounded_integer::BoundedInteger::new(value)
78 }
79}
80impl ::serde::Serialize for MaxworkersInt {
81 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
82 where
83 S: ::serde::Serializer,
84 {
85 crate::types::bounded_integer::serialize_bounded_integer(self, serializer)
86 }
87}
88impl<'de> ::serde::Deserialize<'de> for MaxworkersInt {
89 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
90 where
91 D: ::serde::Deserializer<'de>,
92 {
93 crate::types::bounded_integer::deserialize_bounded_integer(deserializer)
94 }
95}
96#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
97pub struct TimeoutInt(i128);
98impl crate::types::bounded_integer::BoundedInteger for TimeoutInt {
99 const MIN: Option<i128> = None::<i128>;
100 const MAX: Option<i128> = None::<i128>;
101 const DEFAULT: Option<i128> = Some(180i128);
102 const TYPE_DESCRIPTION: &'static str = "a valid integer";
103 fn get(&self) -> i128 {
104 self.0
105 }
106 fn new(value: i128) -> Result<Self, crate::types::bounded_integer::BoundedIntegerError> {
107 Self::validate(value)?;
108 Ok(Self(value))
109 }
110}
111impl std::convert::TryFrom<i128> for TimeoutInt {
112 type Error = crate::types::bounded_integer::BoundedIntegerError;
113 fn try_from(value: i128) -> Result<Self, Self::Error> {
114 crate::types::bounded_integer::BoundedInteger::new(value)
115 }
116}
117impl ::serde::Serialize for TimeoutInt {
118 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
119 where
120 S: ::serde::Serializer,
121 {
122 crate::types::bounded_integer::serialize_bounded_integer(self, serializer)
123 }
124}
125impl<'de> ::serde::Deserialize<'de> for TimeoutInt {
126 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
127 where
128 D: ::serde::Deserializer<'de>,
129 {
130 crate::types::bounded_integer::deserialize_bounded_integer(deserializer)
131 }
132}
133#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
134pub struct VmsInt(i128);
135impl crate::types::bounded_integer::BoundedInteger for VmsInt {
136 const MIN: Option<i128> = Some(100i128);
137 const MAX: Option<i128> = Some(999999999i128);
138 const DEFAULT: Option<i128> = None::<i128>;
139 const TYPE_DESCRIPTION: &'static str = "an integer between 100 and 999999999";
140 fn get(&self) -> i128 {
141 self.0
142 }
143 fn new(value: i128) -> Result<Self, crate::types::bounded_integer::BoundedIntegerError> {
144 Self::validate(value)?;
145 Ok(Self(value))
146 }
147}
148impl std::convert::TryFrom<i128> for VmsInt {
149 type Error = crate::types::bounded_integer::BoundedIntegerError;
150 fn try_from(value: i128) -> Result<Self, Self::Error> {
151 crate::types::bounded_integer::BoundedInteger::new(value)
152 }
153}
154impl ::serde::Serialize for VmsInt {
155 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
156 where
157 S: ::serde::Serializer,
158 {
159 crate::types::bounded_integer::serialize_bounded_integer(self, serializer)
160 }
161}
162impl<'de> ::serde::Deserialize<'de> for VmsInt {
163 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
164 where
165 D: ::serde::Deserializer<'de>,
166 {
167 crate::types::bounded_integer::deserialize_bounded_integer(deserializer)
168 }
169}