1use crate::{
2 Result,
3 client::RequestOptions,
4 types::cvm::{
5 DescribeImagesRequest, DescribeImagesResponse, DescribeInstanceVncUrlRequest,
6 DescribeInstanceVncUrlResponse, DescribeInstancesRequest, DescribeInstancesResponse,
7 GenericActionResponse, ModifyInstancesProjectRequest, RebootInstancesRequest,
8 ResetInstancesPasswordRequest, RunInstancesRequest, RunInstancesResponse,
9 StartInstancesRequest, StopInstancesRequest, TerminateInstancesRequest,
10 },
11};
12
13#[cfg(feature = "async")]
14use crate::client::Client;
15
16#[cfg(feature = "async")]
17#[derive(Clone)]
18pub struct CvmService {
19 client: Client,
20}
21
22#[cfg(feature = "async")]
23impl CvmService {
24 pub(crate) fn new(client: Client) -> Self {
25 Self { client }
26 }
27
28 pub async fn describe_instances(
29 &self,
30 request: &DescribeInstancesRequest,
31 ) -> Result<DescribeInstancesResponse> {
32 self.client.execute(request, None).await
33 }
34
35 pub async fn describe_instances_with_options(
36 &self,
37 request: &DescribeInstancesRequest,
38 options: &RequestOptions,
39 ) -> Result<DescribeInstancesResponse> {
40 self.client.execute(request, Some(options)).await
41 }
42
43 pub async fn reset_instances_password(
44 &self,
45 request: &ResetInstancesPasswordRequest,
46 ) -> Result<GenericActionResponse> {
47 self.client.execute(request, None).await
48 }
49
50 pub async fn reset_instances_password_with_options(
51 &self,
52 request: &ResetInstancesPasswordRequest,
53 options: &RequestOptions,
54 ) -> Result<GenericActionResponse> {
55 self.client.execute(request, Some(options)).await
56 }
57
58 pub async fn describe_instance_vnc_url(
59 &self,
60 request: &DescribeInstanceVncUrlRequest,
61 ) -> Result<DescribeInstanceVncUrlResponse> {
62 self.client.execute(request, None).await
63 }
64
65 pub async fn describe_instance_vnc_url_with_options(
66 &self,
67 request: &DescribeInstanceVncUrlRequest,
68 options: &RequestOptions,
69 ) -> Result<DescribeInstanceVncUrlResponse> {
70 self.client.execute(request, Some(options)).await
71 }
72
73 pub async fn run_instances(
74 &self,
75 request: &RunInstancesRequest,
76 ) -> Result<RunInstancesResponse> {
77 self.client.execute(request, None).await
78 }
79
80 pub async fn run_instances_with_options(
81 &self,
82 request: &RunInstancesRequest,
83 options: &RequestOptions,
84 ) -> Result<RunInstancesResponse> {
85 self.client.execute(request, Some(options)).await
86 }
87
88 pub async fn start_instances(
89 &self,
90 request: &StartInstancesRequest,
91 ) -> Result<GenericActionResponse> {
92 self.client.execute(request, None).await
93 }
94
95 pub async fn start_instances_with_options(
96 &self,
97 request: &StartInstancesRequest,
98 options: &RequestOptions,
99 ) -> Result<GenericActionResponse> {
100 self.client.execute(request, Some(options)).await
101 }
102
103 pub async fn reboot_instances(
104 &self,
105 request: &RebootInstancesRequest,
106 ) -> Result<GenericActionResponse> {
107 self.client.execute(request, None).await
108 }
109
110 pub async fn reboot_instances_with_options(
111 &self,
112 request: &RebootInstancesRequest,
113 options: &RequestOptions,
114 ) -> Result<GenericActionResponse> {
115 self.client.execute(request, Some(options)).await
116 }
117
118 pub async fn stop_instances(
119 &self,
120 request: &StopInstancesRequest,
121 ) -> Result<GenericActionResponse> {
122 self.client.execute(request, None).await
123 }
124
125 pub async fn stop_instances_with_options(
126 &self,
127 request: &StopInstancesRequest,
128 options: &RequestOptions,
129 ) -> Result<GenericActionResponse> {
130 self.client.execute(request, Some(options)).await
131 }
132
133 pub async fn modify_instances_project(
134 &self,
135 request: &ModifyInstancesProjectRequest,
136 ) -> Result<GenericActionResponse> {
137 self.client.execute(request, None).await
138 }
139
140 pub async fn modify_instances_project_with_options(
141 &self,
142 request: &ModifyInstancesProjectRequest,
143 options: &RequestOptions,
144 ) -> Result<GenericActionResponse> {
145 self.client.execute(request, Some(options)).await
146 }
147
148 pub async fn terminate_instances(
149 &self,
150 request: &TerminateInstancesRequest,
151 ) -> Result<GenericActionResponse> {
152 self.client.execute(request, None).await
153 }
154
155 pub async fn terminate_instances_with_options(
156 &self,
157 request: &TerminateInstancesRequest,
158 options: &RequestOptions,
159 ) -> Result<GenericActionResponse> {
160 self.client.execute(request, Some(options)).await
161 }
162
163 pub async fn describe_images(
164 &self,
165 request: &DescribeImagesRequest,
166 ) -> Result<DescribeImagesResponse> {
167 self.client.execute(request, None).await
168 }
169
170 pub async fn describe_images_with_options(
171 &self,
172 request: &DescribeImagesRequest,
173 options: &RequestOptions,
174 ) -> Result<DescribeImagesResponse> {
175 self.client.execute(request, Some(options)).await
176 }
177}
178
179#[cfg(feature = "blocking")]
180use crate::client::BlockingClient;
181
182#[cfg(feature = "blocking")]
183#[derive(Clone)]
184pub struct BlockingCvmService {
185 client: BlockingClient,
186}
187
188#[cfg(feature = "blocking")]
189impl BlockingCvmService {
190 pub(crate) fn new(client: BlockingClient) -> Self {
191 Self { client }
192 }
193
194 pub fn describe_instances(
195 &self,
196 request: &DescribeInstancesRequest,
197 ) -> Result<DescribeInstancesResponse> {
198 self.client.execute(request, None)
199 }
200
201 pub fn describe_instances_with_options(
202 &self,
203 request: &DescribeInstancesRequest,
204 options: &RequestOptions,
205 ) -> Result<DescribeInstancesResponse> {
206 self.client.execute(request, Some(options))
207 }
208
209 pub fn reset_instances_password(
210 &self,
211 request: &ResetInstancesPasswordRequest,
212 ) -> Result<GenericActionResponse> {
213 self.client.execute(request, None)
214 }
215
216 pub fn reset_instances_password_with_options(
217 &self,
218 request: &ResetInstancesPasswordRequest,
219 options: &RequestOptions,
220 ) -> Result<GenericActionResponse> {
221 self.client.execute(request, Some(options))
222 }
223
224 pub fn describe_instance_vnc_url(
225 &self,
226 request: &DescribeInstanceVncUrlRequest,
227 ) -> Result<DescribeInstanceVncUrlResponse> {
228 self.client.execute(request, None)
229 }
230
231 pub fn describe_instance_vnc_url_with_options(
232 &self,
233 request: &DescribeInstanceVncUrlRequest,
234 options: &RequestOptions,
235 ) -> Result<DescribeInstanceVncUrlResponse> {
236 self.client.execute(request, Some(options))
237 }
238
239 pub fn run_instances(&self, request: &RunInstancesRequest) -> Result<RunInstancesResponse> {
240 self.client.execute(request, None)
241 }
242
243 pub fn run_instances_with_options(
244 &self,
245 request: &RunInstancesRequest,
246 options: &RequestOptions,
247 ) -> Result<RunInstancesResponse> {
248 self.client.execute(request, Some(options))
249 }
250
251 pub fn start_instances(
252 &self,
253 request: &StartInstancesRequest,
254 ) -> Result<GenericActionResponse> {
255 self.client.execute(request, None)
256 }
257
258 pub fn start_instances_with_options(
259 &self,
260 request: &StartInstancesRequest,
261 options: &RequestOptions,
262 ) -> Result<GenericActionResponse> {
263 self.client.execute(request, Some(options))
264 }
265
266 pub fn reboot_instances(
267 &self,
268 request: &RebootInstancesRequest,
269 ) -> Result<GenericActionResponse> {
270 self.client.execute(request, None)
271 }
272
273 pub fn reboot_instances_with_options(
274 &self,
275 request: &RebootInstancesRequest,
276 options: &RequestOptions,
277 ) -> Result<GenericActionResponse> {
278 self.client.execute(request, Some(options))
279 }
280
281 pub fn stop_instances(&self, request: &StopInstancesRequest) -> Result<GenericActionResponse> {
282 self.client.execute(request, None)
283 }
284
285 pub fn stop_instances_with_options(
286 &self,
287 request: &StopInstancesRequest,
288 options: &RequestOptions,
289 ) -> Result<GenericActionResponse> {
290 self.client.execute(request, Some(options))
291 }
292
293 pub fn modify_instances_project(
294 &self,
295 request: &ModifyInstancesProjectRequest,
296 ) -> Result<GenericActionResponse> {
297 self.client.execute(request, None)
298 }
299
300 pub fn modify_instances_project_with_options(
301 &self,
302 request: &ModifyInstancesProjectRequest,
303 options: &RequestOptions,
304 ) -> Result<GenericActionResponse> {
305 self.client.execute(request, Some(options))
306 }
307
308 pub fn terminate_instances(
309 &self,
310 request: &TerminateInstancesRequest,
311 ) -> Result<GenericActionResponse> {
312 self.client.execute(request, None)
313 }
314
315 pub fn terminate_instances_with_options(
316 &self,
317 request: &TerminateInstancesRequest,
318 options: &RequestOptions,
319 ) -> Result<GenericActionResponse> {
320 self.client.execute(request, Some(options))
321 }
322
323 pub fn describe_images(
324 &self,
325 request: &DescribeImagesRequest,
326 ) -> Result<DescribeImagesResponse> {
327 self.client.execute(request, None)
328 }
329
330 pub fn describe_images_with_options(
331 &self,
332 request: &DescribeImagesRequest,
333 options: &RequestOptions,
334 ) -> Result<DescribeImagesResponse> {
335 self.client.execute(request, Some(options))
336 }
337}