proxmox_api/generated/nodes/node/qemu/vmid/
agent.rs1pub 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, ¶ms).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}