Skip to main content

proxmox_api/generated/cluster/bulk_action/guest/
migrate.rs

1#[derive(Debug, Clone)]
2pub struct MigrateClient<T> {
3    client: T,
4    path: String,
5}
6impl<T> MigrateClient<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, "/migrate"),
14        }
15    }
16}
17impl<T> MigrateClient<T>
18where
19    T: crate::client::Client,
20{
21    #[doc = "Bulk migrate all guests on the cluster."]
22    #[doc = ""]
23    #[doc = "The 'VM.Migrate' 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, &params).await
27    }
28}
29impl PostParams {
30    pub fn new(target: String) -> Self {
31        Self {
32            target,
33            maxworkers: ::std::default::Default::default(),
34            online: ::std::default::Default::default(),
35            vms: ::std::default::Default::default(),
36            with_local_disks: ::std::default::Default::default(),
37            additional_properties: ::std::default::Default::default(),
38        }
39    }
40}
41#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
42pub struct PostParams {
43    #[serde(skip_serializing_if = "Option::is_none", default)]
44    #[doc = "How many parallel tasks at maximum should be started."]
45    #[doc = ""]
46    pub maxworkers: Option<MaxworkersInt>,
47    #[serde(
48        serialize_with = "crate::types::serialize_bool_optional",
49        deserialize_with = "crate::types::deserialize_bool_optional"
50    )]
51    #[serde(skip_serializing_if = "Option::is_none", default)]
52    #[doc = "Enable live migration for VMs and restart migration for CTs."]
53    #[doc = ""]
54    pub online: Option<bool>,
55    #[doc = "Target node."]
56    #[doc = ""]
57    pub target: String,
58    #[serde(skip_serializing_if = "::std::vec::Vec::is_empty", default)]
59    #[doc = "Only consider guests from this list of VMIDs."]
60    #[doc = ""]
61    pub vms: Vec<VmsInt>,
62    #[serde(rename = "with-local-disks")]
63    #[serde(
64        serialize_with = "crate::types::serialize_bool_optional",
65        deserialize_with = "crate::types::deserialize_bool_optional"
66    )]
67    #[serde(skip_serializing_if = "Option::is_none", default)]
68    #[doc = "Enable live storage migration for local disk"]
69    #[doc = ""]
70    pub with_local_disks: Option<bool>,
71    #[serde(
72        flatten,
73        default,
74        skip_serializing_if = "::std::collections::HashMap::is_empty"
75    )]
76    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
77}
78#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
79pub struct MaxworkersInt(i128);
80impl crate::types::bounded_integer::BoundedInteger for MaxworkersInt {
81    const MIN: Option<i128> = None::<i128>;
82    const MAX: Option<i128> = None::<i128>;
83    const DEFAULT: Option<i128> = Some(1i128);
84    const TYPE_DESCRIPTION: &'static str = "a valid integer";
85    fn get(&self) -> i128 {
86        self.0
87    }
88    fn new(value: i128) -> Result<Self, crate::types::bounded_integer::BoundedIntegerError> {
89        Self::validate(value)?;
90        Ok(Self(value))
91    }
92}
93impl std::convert::TryFrom<i128> for MaxworkersInt {
94    type Error = crate::types::bounded_integer::BoundedIntegerError;
95    fn try_from(value: i128) -> Result<Self, Self::Error> {
96        crate::types::bounded_integer::BoundedInteger::new(value)
97    }
98}
99impl ::serde::Serialize for MaxworkersInt {
100    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
101    where
102        S: ::serde::Serializer,
103    {
104        crate::types::bounded_integer::serialize_bounded_integer(self, serializer)
105    }
106}
107impl<'de> ::serde::Deserialize<'de> for MaxworkersInt {
108    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
109    where
110        D: ::serde::Deserializer<'de>,
111    {
112        crate::types::bounded_integer::deserialize_bounded_integer(deserializer)
113    }
114}
115#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
116pub struct VmsInt(i128);
117impl crate::types::bounded_integer::BoundedInteger for VmsInt {
118    const MIN: Option<i128> = Some(100i128);
119    const MAX: Option<i128> = Some(999999999i128);
120    const DEFAULT: Option<i128> = None::<i128>;
121    const TYPE_DESCRIPTION: &'static str = "an integer between 100 and 999999999";
122    fn get(&self) -> i128 {
123        self.0
124    }
125    fn new(value: i128) -> Result<Self, crate::types::bounded_integer::BoundedIntegerError> {
126        Self::validate(value)?;
127        Ok(Self(value))
128    }
129}
130impl std::convert::TryFrom<i128> for VmsInt {
131    type Error = crate::types::bounded_integer::BoundedIntegerError;
132    fn try_from(value: i128) -> Result<Self, Self::Error> {
133        crate::types::bounded_integer::BoundedInteger::new(value)
134    }
135}
136impl ::serde::Serialize for VmsInt {
137    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
138    where
139        S: ::serde::Serializer,
140    {
141        crate::types::bounded_integer::serialize_bounded_integer(self, serializer)
142    }
143}
144impl<'de> ::serde::Deserialize<'de> for VmsInt {
145    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
146    where
147        D: ::serde::Deserializer<'de>,
148    {
149        crate::types::bounded_integer::deserialize_bounded_integer(deserializer)
150    }
151}