Skip to main content

proxmox_api/generated/nodes/node/qemu/vmid/
agent.rs

1pub mod exec;
2pub mod exec_status;
3pub mod file_read;
4pub mod file_write;
5pub mod fsfreeze_freeze;
6pub mod fsfreeze_status;
7pub mod fsfreeze_thaw;
8pub mod fstrim;
9pub mod get_fsinfo;
10pub mod get_host_name;
11pub mod get_memory_block_info;
12pub mod get_memory_blocks;
13pub mod get_osinfo;
14pub mod get_time;
15pub mod get_timezone;
16pub mod get_users;
17pub mod get_vcpus;
18pub mod info;
19pub mod network_get_interfaces;
20pub mod ping;
21pub mod set_user_password;
22pub mod shutdown;
23pub mod suspend_disk;
24pub mod suspend_hybrid;
25pub mod suspend_ram;
26#[derive(Debug, Clone)]
27pub struct AgentClient<T> {
28    client: T,
29    path: String,
30}
31impl<T> AgentClient<T>
32where
33    T: crate::client::Client,
34{
35    pub fn new(client: T, parent_path: &str) -> Self {
36        Self {
37            client,
38            path: format!("{}{}", parent_path, "/agent"),
39        }
40    }
41}
42impl<T> AgentClient<T>
43where
44    T: crate::client::Client,
45{
46    #[doc = "QEMU Guest Agent command index."]
47    #[doc = ""]
48    pub async fn get(&self) -> Result<Vec<GetOutputItems>, T::Error> {
49        let path = self.path.to_string();
50        let optional_vec: Option<Vec<GetOutputItems>> = self.client.get(&path, &()).await?;
51        Ok(optional_vec.unwrap_or_default())
52    }
53}
54impl<T> AgentClient<T>
55where
56    T: crate::client::Client,
57{
58    #[doc = "Execute QEMU Guest Agent commands."]
59    #[doc = ""]
60    #[doc = "Permission check: perm(\"/vms/{vmid}\", [\"VM.GuestAgent.Unrestricted\", \"VM.GuestAgent.Unrestricted\"], any)"]
61    pub async fn post(&self, params: PostParams) -> Result<PostOutput, T::Error> {
62        let path = self.path.to_string();
63        self.client.post(&path, &params).await
64    }
65}
66#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, Default)]
67pub struct GetOutputItems {
68    #[serde(
69        flatten,
70        default,
71        skip_serializing_if = "::std::collections::HashMap::is_empty"
72    )]
73    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
74}
75#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, Default)]
76pub struct PostOutput {
77    #[serde(
78        flatten,
79        default,
80        skip_serializing_if = "::std::collections::HashMap::is_empty"
81    )]
82    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
83}
84impl PostParams {
85    pub fn new(command: Command) -> Self {
86        Self {
87            command,
88            additional_properties: ::std::default::Default::default(),
89        }
90    }
91}
92#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
93pub struct PostParams {
94    #[doc = "The QGA command."]
95    #[doc = ""]
96    pub command: Command,
97    #[serde(
98        flatten,
99        default,
100        skip_serializing_if = "::std::collections::HashMap::is_empty"
101    )]
102    pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
103}
104#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, PartialEq)]
105#[doc = "The QGA command."]
106#[doc = ""]
107pub enum Command {
108    #[serde(rename = "fsfreeze-freeze")]
109    FsfreezeFreeze,
110    #[serde(rename = "fsfreeze-status")]
111    FsfreezeStatus,
112    #[serde(rename = "fsfreeze-thaw")]
113    FsfreezeThaw,
114    #[serde(rename = "fstrim")]
115    Fstrim,
116    #[serde(rename = "get-fsinfo")]
117    GetFsinfo,
118    #[serde(rename = "get-host-name")]
119    GetHostName,
120    #[serde(rename = "get-memory-block-info")]
121    GetMemoryBlockInfo,
122    #[serde(rename = "get-memory-blocks")]
123    GetMemoryBlocks,
124    #[serde(rename = "get-osinfo")]
125    GetOsinfo,
126    #[serde(rename = "get-time")]
127    GetTime,
128    #[serde(rename = "get-timezone")]
129    GetTimezone,
130    #[serde(rename = "get-users")]
131    GetUsers,
132    #[serde(rename = "get-vcpus")]
133    GetVcpus,
134    #[serde(rename = "info")]
135    Info,
136    #[serde(rename = "network-get-interfaces")]
137    NetworkGetInterfaces,
138    #[serde(rename = "ping")]
139    Ping,
140    #[serde(rename = "shutdown")]
141    Shutdown,
142    #[serde(rename = "suspend-disk")]
143    SuspendDisk,
144    #[serde(rename = "suspend-hybrid")]
145    SuspendHybrid,
146    #[serde(rename = "suspend-ram")]
147    SuspendRam,
148}
149impl TryFrom<&str> for Command {
150    type Error = String;
151    fn try_from(value: &str) -> Result<Self, <Self as TryFrom<&str>>::Error> {
152        match value {
153            "fsfreeze-freeze" => Ok(Self::FsfreezeFreeze),
154            "fsfreeze-status" => Ok(Self::FsfreezeStatus),
155            "fsfreeze-thaw" => Ok(Self::FsfreezeThaw),
156            "fstrim" => Ok(Self::Fstrim),
157            "get-fsinfo" => Ok(Self::GetFsinfo),
158            "get-host-name" => Ok(Self::GetHostName),
159            "get-memory-block-info" => Ok(Self::GetMemoryBlockInfo),
160            "get-memory-blocks" => Ok(Self::GetMemoryBlocks),
161            "get-osinfo" => Ok(Self::GetOsinfo),
162            "get-time" => Ok(Self::GetTime),
163            "get-timezone" => Ok(Self::GetTimezone),
164            "get-users" => Ok(Self::GetUsers),
165            "get-vcpus" => Ok(Self::GetVcpus),
166            "info" => Ok(Self::Info),
167            "network-get-interfaces" => Ok(Self::NetworkGetInterfaces),
168            "ping" => Ok(Self::Ping),
169            "shutdown" => Ok(Self::Shutdown),
170            "suspend-disk" => Ok(Self::SuspendDisk),
171            "suspend-hybrid" => Ok(Self::SuspendHybrid),
172            "suspend-ram" => Ok(Self::SuspendRam),
173            v => Err(format!("Unknown variant {v}")),
174        }
175    }
176}
177impl<T> AgentClient<T>
178where
179    T: crate::client::Client,
180{
181    pub fn fsfreeze_freeze(&self) -> fsfreeze_freeze::FsfreezeFreezeClient<T> {
182        fsfreeze_freeze::FsfreezeFreezeClient::<T>::new(self.client.clone(), &self.path)
183    }
184}
185impl<T> AgentClient<T>
186where
187    T: crate::client::Client,
188{
189    pub fn fsfreeze_status(&self) -> fsfreeze_status::FsfreezeStatusClient<T> {
190        fsfreeze_status::FsfreezeStatusClient::<T>::new(self.client.clone(), &self.path)
191    }
192}
193impl<T> AgentClient<T>
194where
195    T: crate::client::Client,
196{
197    pub fn fsfreeze_thaw(&self) -> fsfreeze_thaw::FsfreezeThawClient<T> {
198        fsfreeze_thaw::FsfreezeThawClient::<T>::new(self.client.clone(), &self.path)
199    }
200}
201impl<T> AgentClient<T>
202where
203    T: crate::client::Client,
204{
205    pub fn fstrim(&self) -> fstrim::FstrimClient<T> {
206        fstrim::FstrimClient::<T>::new(self.client.clone(), &self.path)
207    }
208}
209impl<T> AgentClient<T>
210where
211    T: crate::client::Client,
212{
213    pub fn get_fsinfo(&self) -> get_fsinfo::GetFsinfoClient<T> {
214        get_fsinfo::GetFsinfoClient::<T>::new(self.client.clone(), &self.path)
215    }
216}
217impl<T> AgentClient<T>
218where
219    T: crate::client::Client,
220{
221    pub fn get_host_name(&self) -> get_host_name::GetHostNameClient<T> {
222        get_host_name::GetHostNameClient::<T>::new(self.client.clone(), &self.path)
223    }
224}
225impl<T> AgentClient<T>
226where
227    T: crate::client::Client,
228{
229    pub fn get_memory_block_info(&self) -> get_memory_block_info::GetMemoryBlockInfoClient<T> {
230        get_memory_block_info::GetMemoryBlockInfoClient::<T>::new(self.client.clone(), &self.path)
231    }
232}
233impl<T> AgentClient<T>
234where
235    T: crate::client::Client,
236{
237    pub fn get_memory_blocks(&self) -> get_memory_blocks::GetMemoryBlocksClient<T> {
238        get_memory_blocks::GetMemoryBlocksClient::<T>::new(self.client.clone(), &self.path)
239    }
240}
241impl<T> AgentClient<T>
242where
243    T: crate::client::Client,
244{
245    pub fn get_osinfo(&self) -> get_osinfo::GetOsinfoClient<T> {
246        get_osinfo::GetOsinfoClient::<T>::new(self.client.clone(), &self.path)
247    }
248}
249impl<T> AgentClient<T>
250where
251    T: crate::client::Client,
252{
253    pub fn get_time(&self) -> get_time::GetTimeClient<T> {
254        get_time::GetTimeClient::<T>::new(self.client.clone(), &self.path)
255    }
256}
257impl<T> AgentClient<T>
258where
259    T: crate::client::Client,
260{
261    pub fn get_timezone(&self) -> get_timezone::GetTimezoneClient<T> {
262        get_timezone::GetTimezoneClient::<T>::new(self.client.clone(), &self.path)
263    }
264}
265impl<T> AgentClient<T>
266where
267    T: crate::client::Client,
268{
269    pub fn get_users(&self) -> get_users::GetUsersClient<T> {
270        get_users::GetUsersClient::<T>::new(self.client.clone(), &self.path)
271    }
272}
273impl<T> AgentClient<T>
274where
275    T: crate::client::Client,
276{
277    pub fn get_vcpus(&self) -> get_vcpus::GetVcpusClient<T> {
278        get_vcpus::GetVcpusClient::<T>::new(self.client.clone(), &self.path)
279    }
280}
281impl<T> AgentClient<T>
282where
283    T: crate::client::Client,
284{
285    pub fn info(&self) -> info::InfoClient<T> {
286        info::InfoClient::<T>::new(self.client.clone(), &self.path)
287    }
288}
289impl<T> AgentClient<T>
290where
291    T: crate::client::Client,
292{
293    pub fn network_get_interfaces(&self) -> network_get_interfaces::NetworkGetInterfacesClient<T> {
294        network_get_interfaces::NetworkGetInterfacesClient::<T>::new(
295            self.client.clone(),
296            &self.path,
297        )
298    }
299}
300impl<T> AgentClient<T>
301where
302    T: crate::client::Client,
303{
304    pub fn ping(&self) -> ping::PingClient<T> {
305        ping::PingClient::<T>::new(self.client.clone(), &self.path)
306    }
307}
308impl<T> AgentClient<T>
309where
310    T: crate::client::Client,
311{
312    pub fn shutdown(&self) -> shutdown::ShutdownClient<T> {
313        shutdown::ShutdownClient::<T>::new(self.client.clone(), &self.path)
314    }
315}
316impl<T> AgentClient<T>
317where
318    T: crate::client::Client,
319{
320    pub fn suspend_disk(&self) -> suspend_disk::SuspendDiskClient<T> {
321        suspend_disk::SuspendDiskClient::<T>::new(self.client.clone(), &self.path)
322    }
323}
324impl<T> AgentClient<T>
325where
326    T: crate::client::Client,
327{
328    pub fn suspend_hybrid(&self) -> suspend_hybrid::SuspendHybridClient<T> {
329        suspend_hybrid::SuspendHybridClient::<T>::new(self.client.clone(), &self.path)
330    }
331}
332impl<T> AgentClient<T>
333where
334    T: crate::client::Client,
335{
336    pub fn suspend_ram(&self) -> suspend_ram::SuspendRamClient<T> {
337        suspend_ram::SuspendRamClient::<T>::new(self.client.clone(), &self.path)
338    }
339}
340impl<T> AgentClient<T>
341where
342    T: crate::client::Client,
343{
344    pub fn set_user_password(&self) -> set_user_password::SetUserPasswordClient<T> {
345        set_user_password::SetUserPasswordClient::<T>::new(self.client.clone(), &self.path)
346    }
347}
348impl<T> AgentClient<T>
349where
350    T: crate::client::Client,
351{
352    pub fn exec(&self) -> exec::ExecClient<T> {
353        exec::ExecClient::<T>::new(self.client.clone(), &self.path)
354    }
355}
356impl<T> AgentClient<T>
357where
358    T: crate::client::Client,
359{
360    pub fn exec_status(&self) -> exec_status::ExecStatusClient<T> {
361        exec_status::ExecStatusClient::<T>::new(self.client.clone(), &self.path)
362    }
363}
364impl<T> AgentClient<T>
365where
366    T: crate::client::Client,
367{
368    pub fn file_read(&self) -> file_read::FileReadClient<T> {
369        file_read::FileReadClient::<T>::new(self.client.clone(), &self.path)
370    }
371}
372impl<T> AgentClient<T>
373where
374    T: crate::client::Client,
375{
376    pub fn file_write(&self) -> file_write::FileWriteClient<T> {
377        file_write::FileWriteClient::<T>::new(self.client.clone(), &self.path)
378    }
379}