1use reqwest;
12
13use super::{configuration, Error};
14use crate::{apis::ResponseContent, sign_request};
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum AddInstanceProtectionError {
20 UnknownValue(serde_json::Value),
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
25#[serde(untagged)]
26pub enum CreateInstanceError {
27 UnknownValue(serde_json::Value),
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize)]
32#[serde(untagged)]
33pub enum CreateSnapshotError {
34 UnknownValue(serde_json::Value),
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
39#[serde(untagged)]
40pub enum DeleteInstanceError {
41 UnknownValue(serde_json::Value),
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize)]
46#[serde(untagged)]
47pub enum GetInstanceError {
48 UnknownValue(serde_json::Value),
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(untagged)]
54pub enum ListInstancesError {
55 UnknownValue(serde_json::Value),
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
60#[serde(untagged)]
61pub enum RebootInstanceError {
62 UnknownValue(serde_json::Value),
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
67#[serde(untagged)]
68pub enum RemoveInstanceProtectionError {
69 UnknownValue(serde_json::Value),
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
74#[serde(untagged)]
75pub enum ResetInstanceError {
76 UnknownValue(serde_json::Value),
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
81#[serde(untagged)]
82pub enum ResetInstanceFieldError {
83 UnknownValue(serde_json::Value),
84}
85
86#[derive(Debug, Clone, Serialize, Deserialize)]
88#[serde(untagged)]
89pub enum ResizeInstanceDiskError {
90 UnknownValue(serde_json::Value),
91}
92
93#[derive(Debug, Clone, Serialize, Deserialize)]
95#[serde(untagged)]
96pub enum RevertInstanceToSnapshotError {
97 UnknownValue(serde_json::Value),
98}
99
100#[derive(Debug, Clone, Serialize, Deserialize)]
102#[serde(untagged)]
103pub enum ScaleInstanceError {
104 UnknownValue(serde_json::Value),
105}
106
107#[derive(Debug, Clone, Serialize, Deserialize)]
109#[serde(untagged)]
110pub enum StartInstanceError {
111 UnknownValue(serde_json::Value),
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize)]
116#[serde(untagged)]
117pub enum StopInstanceError {
118 UnknownValue(serde_json::Value),
119}
120
121#[derive(Debug, Clone, Serialize, Deserialize)]
123#[serde(untagged)]
124pub enum UpdateInstanceError {
125 UnknownValue(serde_json::Value),
126}
127
128pub async fn add_instance_protection(
130 configuration: &configuration::Configuration,
131 id: &str,
132) -> Result<serde_json::Value, Error<AddInstanceProtectionError>> {
133 let local_var_configuration = configuration;
134
135 let local_var_client = &local_var_configuration.client;
136
137 let local_var_uri_str = format!(
138 "{}/instance/{id}:add-protection",
139 local_var_configuration.base_path,
140 id = crate::apis::urlencode(id)
141 );
142 let mut local_var_req_builder =
143 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
144
145 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
146 local_var_req_builder =
147 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
148 }
149
150 let local_var_req = local_var_req_builder.build()?;
151 let local_var_resp = local_var_client.execute(local_var_req).await?;
152
153 let local_var_status = local_var_resp.status();
154 let local_var_content = local_var_resp.text().await?;
155
156 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
157 serde_json::from_str(&local_var_content).map_err(Error::from)
158 } else {
159 let local_var_entity: Option<AddInstanceProtectionError> =
160 serde_json::from_str(&local_var_content).ok();
161 let local_var_error = ResponseContent {
162 status: local_var_status,
163 content: local_var_content,
164 entity: local_var_entity,
165 };
166 Err(Error::ResponseError(local_var_error))
167 }
168}
169
170pub async fn create_instance(
172 configuration: &configuration::Configuration,
173 create_instance_request: crate::models::CreateInstanceRequest,
174) -> Result<crate::models::Operation, Error<CreateInstanceError>> {
175 let local_var_configuration = configuration;
176
177 let local_var_client = &local_var_configuration.client;
178
179 let local_var_uri_str = format!("{}/instance", local_var_configuration.base_path);
180 let mut local_var_req_builder =
181 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
182
183 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
184 local_var_req_builder =
185 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
186 }
187 local_var_req_builder = local_var_req_builder.json(&create_instance_request);
188
189 let mut local_var_req = local_var_req_builder.build()?;
190
191 let _ = sign_request(&mut local_var_req, configuration);
192
193 let local_var_resp = local_var_client.execute(local_var_req).await?;
194
195 let local_var_status = local_var_resp.status();
196 let local_var_content = local_var_resp.text().await?;
197
198 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
199 serde_json::from_str(&local_var_content).map_err(Error::from)
200 } else {
201 let local_var_entity: Option<CreateInstanceError> =
202 serde_json::from_str(&local_var_content).ok();
203 let local_var_error = ResponseContent {
204 status: local_var_status,
205 content: local_var_content,
206 entity: local_var_entity,
207 };
208 Err(Error::ResponseError(local_var_error))
209 }
210}
211
212pub async fn create_snapshot(
214 configuration: &configuration::Configuration,
215 id: &str,
216) -> Result<crate::models::Operation, Error<CreateSnapshotError>> {
217 let local_var_configuration = configuration;
218
219 let local_var_client = &local_var_configuration.client;
220
221 let local_var_uri_str = format!(
222 "{}/instance/{id}:create-snapshot",
223 local_var_configuration.base_path,
224 id = crate::apis::urlencode(id)
225 );
226 let mut local_var_req_builder =
227 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
228
229 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
230 local_var_req_builder =
231 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
232 }
233
234 let local_var_req = local_var_req_builder.build()?;
235 let local_var_resp = local_var_client.execute(local_var_req).await?;
236
237 let local_var_status = local_var_resp.status();
238 let local_var_content = local_var_resp.text().await?;
239
240 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
241 serde_json::from_str(&local_var_content).map_err(Error::from)
242 } else {
243 let local_var_entity: Option<CreateSnapshotError> =
244 serde_json::from_str(&local_var_content).ok();
245 let local_var_error = ResponseContent {
246 status: local_var_status,
247 content: local_var_content,
248 entity: local_var_entity,
249 };
250 Err(Error::ResponseError(local_var_error))
251 }
252}
253
254pub async fn delete_instance(
256 configuration: &configuration::Configuration,
257 id: &str,
258) -> Result<crate::models::Operation, Error<DeleteInstanceError>> {
259 let local_var_configuration = configuration;
260
261 let local_var_client = &local_var_configuration.client;
262
263 let local_var_uri_str = format!(
264 "{}/instance/{id}",
265 local_var_configuration.base_path,
266 id = crate::apis::urlencode(id)
267 );
268 let mut local_var_req_builder =
269 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
270
271 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
272 local_var_req_builder =
273 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
274 }
275
276 let mut local_var_req = local_var_req_builder.build()?;
277
278 let _ = sign_request(&mut local_var_req, configuration);
279
280 let local_var_resp = local_var_client.execute(local_var_req).await?;
281
282 let local_var_status = local_var_resp.status();
283 let local_var_content = local_var_resp.text().await?;
284
285 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
286 serde_json::from_str(&local_var_content).map_err(Error::from)
287 } else {
288 let local_var_entity: Option<DeleteInstanceError> =
289 serde_json::from_str(&local_var_content).ok();
290 let local_var_error = ResponseContent {
291 status: local_var_status,
292 content: local_var_content,
293 entity: local_var_entity,
294 };
295 Err(Error::ResponseError(local_var_error))
296 }
297}
298
299pub async fn get_instance(
301 configuration: &configuration::Configuration,
302 id: &str,
303) -> Result<crate::models::Instance, Error<GetInstanceError>> {
304 let local_var_configuration = configuration;
305
306 let local_var_client = &local_var_configuration.client;
307
308 let local_var_uri_str = format!(
309 "{}/instance/{id}",
310 local_var_configuration.base_path,
311 id = crate::apis::urlencode(id)
312 );
313 let mut local_var_req_builder =
314 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
315
316 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
317 local_var_req_builder =
318 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
319 }
320
321 let local_var_req = local_var_req_builder.build()?;
322 let local_var_resp = local_var_client.execute(local_var_req).await?;
323
324 let local_var_status = local_var_resp.status();
325 let local_var_content = local_var_resp.text().await?;
326
327 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
328 serde_json::from_str(&local_var_content).map_err(Error::from)
329 } else {
330 let local_var_entity: Option<GetInstanceError> =
331 serde_json::from_str(&local_var_content).ok();
332 let local_var_error = ResponseContent {
333 status: local_var_status,
334 content: local_var_content,
335 entity: local_var_entity,
336 };
337 Err(Error::ResponseError(local_var_error))
338 }
339}
340
341pub async fn list_instances(
343 configuration: &configuration::Configuration,
344 manager_id: Option<&str>,
345 manager_type: Option<&str>,
346) -> Result<crate::models::ListInstances200Response, Error<ListInstancesError>> {
347 let local_var_configuration = configuration;
348
349 let local_var_client = &local_var_configuration.client;
350
351 let local_var_uri_str = format!("{}/instance", local_var_configuration.base_path);
352 let mut local_var_req_builder =
353 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
354
355 if let Some(ref local_var_str) = manager_id {
356 local_var_req_builder =
357 local_var_req_builder.query(&[("manager-id", &local_var_str.to_string())]);
358 }
359 if let Some(ref local_var_str) = manager_type {
360 local_var_req_builder =
361 local_var_req_builder.query(&[("manager-type", &local_var_str.to_string())]);
362 }
363 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
364 local_var_req_builder =
365 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
366 }
367
368 let local_var_req = local_var_req_builder.build()?;
369 let local_var_resp = local_var_client.execute(local_var_req).await?;
370
371 let local_var_status = local_var_resp.status();
372 let local_var_content = local_var_resp.text().await?;
373
374 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
375 serde_json::from_str(&local_var_content).map_err(Error::from)
376 } else {
377 let local_var_entity: Option<ListInstancesError> =
378 serde_json::from_str(&local_var_content).ok();
379 let local_var_error = ResponseContent {
380 status: local_var_status,
381 content: local_var_content,
382 entity: local_var_entity,
383 };
384 Err(Error::ResponseError(local_var_error))
385 }
386}
387
388pub async fn reboot_instance(
390 configuration: &configuration::Configuration,
391 id: &str,
392) -> Result<crate::models::Operation, Error<RebootInstanceError>> {
393 let local_var_configuration = configuration;
394
395 let local_var_client = &local_var_configuration.client;
396
397 let local_var_uri_str = format!(
398 "{}/instance/{id}:reboot",
399 local_var_configuration.base_path,
400 id = crate::apis::urlencode(id)
401 );
402 let mut local_var_req_builder =
403 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
404
405 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
406 local_var_req_builder =
407 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
408 }
409
410 let local_var_req = local_var_req_builder.build()?;
411 let local_var_resp = local_var_client.execute(local_var_req).await?;
412
413 let local_var_status = local_var_resp.status();
414 let local_var_content = local_var_resp.text().await?;
415
416 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
417 serde_json::from_str(&local_var_content).map_err(Error::from)
418 } else {
419 let local_var_entity: Option<RebootInstanceError> =
420 serde_json::from_str(&local_var_content).ok();
421 let local_var_error = ResponseContent {
422 status: local_var_status,
423 content: local_var_content,
424 entity: local_var_entity,
425 };
426 Err(Error::ResponseError(local_var_error))
427 }
428}
429
430pub async fn remove_instance_protection(
432 configuration: &configuration::Configuration,
433 id: &str,
434) -> Result<serde_json::Value, Error<RemoveInstanceProtectionError>> {
435 let local_var_configuration = configuration;
436
437 let local_var_client = &local_var_configuration.client;
438
439 let local_var_uri_str = format!(
440 "{}/instance/{id}:remove-protection",
441 local_var_configuration.base_path,
442 id = crate::apis::urlencode(id)
443 );
444 let mut local_var_req_builder =
445 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
446
447 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
448 local_var_req_builder =
449 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
450 }
451
452 let local_var_req = local_var_req_builder.build()?;
453 let local_var_resp = local_var_client.execute(local_var_req).await?;
454
455 let local_var_status = local_var_resp.status();
456 let local_var_content = local_var_resp.text().await?;
457
458 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
459 serde_json::from_str(&local_var_content).map_err(Error::from)
460 } else {
461 let local_var_entity: Option<RemoveInstanceProtectionError> =
462 serde_json::from_str(&local_var_content).ok();
463 let local_var_error = ResponseContent {
464 status: local_var_status,
465 content: local_var_content,
466 entity: local_var_entity,
467 };
468 Err(Error::ResponseError(local_var_error))
469 }
470}
471
472pub async fn reset_instance(
474 configuration: &configuration::Configuration,
475 id: &str,
476 reset_instance_request: crate::models::ResetInstanceRequest,
477) -> Result<crate::models::Operation, Error<ResetInstanceError>> {
478 let local_var_configuration = configuration;
479
480 let local_var_client = &local_var_configuration.client;
481
482 let local_var_uri_str = format!(
483 "{}/instance/{id}:reset",
484 local_var_configuration.base_path,
485 id = crate::apis::urlencode(id)
486 );
487 let mut local_var_req_builder =
488 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
489
490 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
491 local_var_req_builder =
492 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
493 }
494 local_var_req_builder = local_var_req_builder.json(&reset_instance_request);
495
496 let local_var_req = local_var_req_builder.build()?;
497 let local_var_resp = local_var_client.execute(local_var_req).await?;
498
499 let local_var_status = local_var_resp.status();
500 let local_var_content = local_var_resp.text().await?;
501
502 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
503 serde_json::from_str(&local_var_content).map_err(Error::from)
504 } else {
505 let local_var_entity: Option<ResetInstanceError> =
506 serde_json::from_str(&local_var_content).ok();
507 let local_var_error = ResponseContent {
508 status: local_var_status,
509 content: local_var_content,
510 entity: local_var_entity,
511 };
512 Err(Error::ResponseError(local_var_error))
513 }
514}
515
516pub async fn reset_instance_field(
518 configuration: &configuration::Configuration,
519 id: &str,
520 field: &str,
521) -> Result<crate::models::Operation, Error<ResetInstanceFieldError>> {
522 let local_var_configuration = configuration;
523
524 let local_var_client = &local_var_configuration.client;
525
526 let local_var_uri_str = format!(
527 "{}/instance/{id}/{field}",
528 local_var_configuration.base_path,
529 id = crate::apis::urlencode(id),
530 field = crate::apis::urlencode(field)
531 );
532 let mut local_var_req_builder =
533 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
534
535 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
536 local_var_req_builder =
537 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
538 }
539
540 let mut local_var_req = local_var_req_builder.build()?;
541
542 let _ = sign_request(&mut local_var_req, configuration);
543
544 let local_var_resp = local_var_client.execute(local_var_req).await?;
545
546 let local_var_status = local_var_resp.status();
547 let local_var_content = local_var_resp.text().await?;
548
549 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
550 serde_json::from_str(&local_var_content).map_err(Error::from)
551 } else {
552 let local_var_entity: Option<ResetInstanceFieldError> =
553 serde_json::from_str(&local_var_content).ok();
554 let local_var_error = ResponseContent {
555 status: local_var_status,
556 content: local_var_content,
557 entity: local_var_entity,
558 };
559 Err(Error::ResponseError(local_var_error))
560 }
561}
562
563pub async fn resize_instance_disk(
565 configuration: &configuration::Configuration,
566 id: &str,
567 resize_instance_disk_request: crate::models::ResizeInstanceDiskRequest,
568) -> Result<crate::models::Operation, Error<ResizeInstanceDiskError>> {
569 let local_var_configuration = configuration;
570
571 let local_var_client = &local_var_configuration.client;
572
573 let local_var_uri_str = format!(
574 "{}/instance/{id}:resize-disk",
575 local_var_configuration.base_path,
576 id = crate::apis::urlencode(id)
577 );
578 let mut local_var_req_builder =
579 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
580
581 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
582 local_var_req_builder =
583 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
584 }
585 local_var_req_builder = local_var_req_builder.json(&resize_instance_disk_request);
586
587 let local_var_req = local_var_req_builder.build()?;
588 let local_var_resp = local_var_client.execute(local_var_req).await?;
589
590 let local_var_status = local_var_resp.status();
591 let local_var_content = local_var_resp.text().await?;
592
593 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
594 serde_json::from_str(&local_var_content).map_err(Error::from)
595 } else {
596 let local_var_entity: Option<ResizeInstanceDiskError> =
597 serde_json::from_str(&local_var_content).ok();
598 let local_var_error = ResponseContent {
599 status: local_var_status,
600 content: local_var_content,
601 entity: local_var_entity,
602 };
603 Err(Error::ResponseError(local_var_error))
604 }
605}
606
607pub async fn revert_instance_to_snapshot(
609 configuration: &configuration::Configuration,
610 instance_id: &str,
611 revert_instance_to_snapshot_request: crate::models::RevertInstanceToSnapshotRequest,
612) -> Result<crate::models::Operation, Error<RevertInstanceToSnapshotError>> {
613 let local_var_configuration = configuration;
614
615 let local_var_client = &local_var_configuration.client;
616
617 let local_var_uri_str = format!(
618 "{}/instance/{instance_id}:revert-snapshot",
619 local_var_configuration.base_path,
620 instance_id = crate::apis::urlencode(instance_id)
621 );
622 let mut local_var_req_builder =
623 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
624
625 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
626 local_var_req_builder =
627 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
628 }
629 local_var_req_builder = local_var_req_builder.json(&revert_instance_to_snapshot_request);
630
631 let local_var_req = local_var_req_builder.build()?;
632 let local_var_resp = local_var_client.execute(local_var_req).await?;
633
634 let local_var_status = local_var_resp.status();
635 let local_var_content = local_var_resp.text().await?;
636
637 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
638 serde_json::from_str(&local_var_content).map_err(Error::from)
639 } else {
640 let local_var_entity: Option<RevertInstanceToSnapshotError> =
641 serde_json::from_str(&local_var_content).ok();
642 let local_var_error = ResponseContent {
643 status: local_var_status,
644 content: local_var_content,
645 entity: local_var_entity,
646 };
647 Err(Error::ResponseError(local_var_error))
648 }
649}
650
651pub async fn scale_instance(
653 configuration: &configuration::Configuration,
654 id: &str,
655 scale_instance_request: crate::models::ScaleInstanceRequest,
656) -> Result<crate::models::Operation, Error<ScaleInstanceError>> {
657 let local_var_configuration = configuration;
658
659 let local_var_client = &local_var_configuration.client;
660
661 let local_var_uri_str = format!(
662 "{}/instance/{id}:scale",
663 local_var_configuration.base_path,
664 id = crate::apis::urlencode(id)
665 );
666 let mut local_var_req_builder =
667 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
668
669 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
670 local_var_req_builder =
671 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
672 }
673 local_var_req_builder = local_var_req_builder.json(&scale_instance_request);
674
675 let local_var_req = local_var_req_builder.build()?;
676 let local_var_resp = local_var_client.execute(local_var_req).await?;
677
678 let local_var_status = local_var_resp.status();
679 let local_var_content = local_var_resp.text().await?;
680
681 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
682 serde_json::from_str(&local_var_content).map_err(Error::from)
683 } else {
684 let local_var_entity: Option<ScaleInstanceError> =
685 serde_json::from_str(&local_var_content).ok();
686 let local_var_error = ResponseContent {
687 status: local_var_status,
688 content: local_var_content,
689 entity: local_var_entity,
690 };
691 Err(Error::ResponseError(local_var_error))
692 }
693}
694
695pub async fn start_instance(
697 configuration: &configuration::Configuration,
698 id: &str,
699 start_instance_request: crate::models::StartInstanceRequest,
700) -> Result<crate::models::Operation, Error<StartInstanceError>> {
701 let local_var_configuration = configuration;
702
703 let local_var_client = &local_var_configuration.client;
704
705 let local_var_uri_str = format!(
706 "{}/instance/{id}:start",
707 local_var_configuration.base_path,
708 id = crate::apis::urlencode(id)
709 );
710 let mut local_var_req_builder =
711 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
712
713 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
714 local_var_req_builder =
715 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
716 }
717 local_var_req_builder = local_var_req_builder.json(&start_instance_request);
718
719 let mut local_var_req = local_var_req_builder.build()?;
720
721 let _ = sign_request(&mut local_var_req, configuration);
722
723 let local_var_resp = local_var_client.execute(local_var_req).await?;
724
725 let local_var_status = local_var_resp.status();
726 let local_var_content = local_var_resp.text().await?;
727
728 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
729 serde_json::from_str(&local_var_content).map_err(Error::from)
730 } else {
731 let local_var_entity: Option<StartInstanceError> =
732 serde_json::from_str(&local_var_content).ok();
733 let local_var_error = ResponseContent {
734 status: local_var_status,
735 content: local_var_content,
736 entity: local_var_entity,
737 };
738 Err(Error::ResponseError(local_var_error))
739 }
740}
741
742pub async fn stop_instance(
744 configuration: &configuration::Configuration,
745 id: &str,
746) -> Result<crate::models::Operation, Error<StopInstanceError>> {
747 let local_var_configuration = configuration;
748
749 let local_var_client = &local_var_configuration.client;
750
751 let local_var_uri_str = format!(
752 "{}/instance/{id}:stop",
753 local_var_configuration.base_path,
754 id = crate::apis::urlencode(id)
755 );
756 let mut local_var_req_builder =
757 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
758
759 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
760 local_var_req_builder =
761 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
762 }
763
764 let mut local_var_req = local_var_req_builder.build()?;
765
766 let _ = sign_request(&mut local_var_req, configuration);
767
768 let local_var_resp = local_var_client.execute(local_var_req).await?;
769
770 let local_var_status = local_var_resp.status();
771 let local_var_content = local_var_resp.text().await?;
772
773 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
774 serde_json::from_str(&local_var_content).map_err(Error::from)
775 } else {
776 let local_var_entity: Option<StopInstanceError> =
777 serde_json::from_str(&local_var_content).ok();
778 let local_var_error = ResponseContent {
779 status: local_var_status,
780 content: local_var_content,
781 entity: local_var_entity,
782 };
783 Err(Error::ResponseError(local_var_error))
784 }
785}
786
787pub async fn update_instance(
789 configuration: &configuration::Configuration,
790 id: &str,
791 update_instance_request: crate::models::UpdateInstanceRequest,
792) -> Result<crate::models::Operation, Error<UpdateInstanceError>> {
793 let local_var_configuration = configuration;
794
795 let local_var_client = &local_var_configuration.client;
796
797 let local_var_uri_str = format!(
798 "{}/instance/{id}",
799 local_var_configuration.base_path,
800 id = crate::apis::urlencode(id)
801 );
802 let mut local_var_req_builder =
803 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
804
805 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
806 local_var_req_builder =
807 local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
808 }
809 local_var_req_builder = local_var_req_builder.json(&update_instance_request);
810
811 let mut local_var_req = local_var_req_builder.build()?;
812
813 let _ = sign_request(&mut local_var_req, configuration);
814
815 let local_var_resp = local_var_client.execute(local_var_req).await?;
816
817 let local_var_status = local_var_resp.status();
818 let local_var_content = local_var_resp.text().await?;
819
820 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
821 serde_json::from_str(&local_var_content).map_err(Error::from)
822 } else {
823 let local_var_entity: Option<UpdateInstanceError> =
824 serde_json::from_str(&local_var_content).ok();
825 let local_var_error = ResponseContent {
826 status: local_var_status,
827 content: local_var_content,
828 entity: local_var_entity,
829 };
830 Err(Error::ResponseError(local_var_error))
831 }
832}
833
834#[cfg(test)]
835pub mod test {
836 use super::*;
837
838 use crate::apis::configuration::Configuration;
839 use crate::apis::instance_type_api::list_instance_types;
840 use crate::apis::operation_api::get_operation;
841 use crate::models::instance_type::Size;
842 use crate::models::operation::State;
843 use crate::models::{CreateInstanceRequest, InstanceType, Operation, Template};
844 use crate::test::test_config;
845
846 pub async fn get_id_for_size(config: &Configuration, size: Size) -> String {
848 let types = list_instance_types(config)
849 .await
850 .expect("failed to list instance types");
851
852 types
853 .instance_types
854 .expect("no instance types available")
855 .into_iter()
856 .find(|x| x.size.unwrap() == size)
857 .expect("no instance types available for tiny")
858 .id
859 .unwrap()
860 }
861
862 pub async fn poll_operation(config: &Configuration, mut op: Operation) -> Operation {
864 assert_eq!(op.state.unwrap(), State::Pending);
865
866 while op.state.unwrap() == State::Pending {
867 op = get_operation(config, &op.id.unwrap())
868 .await
869 .expect("failed to get operation state");
870 }
871
872 assert_eq!(op.state.unwrap(), State::Success);
873
874 op
875 }
876
877 pub async fn spawn_instance_for_size(
879 config: &Configuration,
880 template: Template,
881 size: Size,
882 ) -> Operation {
883 let instance_type_id = get_id_for_size(config, size).await;
884
885 dbg!(&instance_type_id);
886
887 let request = CreateInstanceRequest {
888 instance_type: InstanceType {
889 id: instance_type_id.into(),
890 ..Default::default()
891 }
892 .into(),
893 template: template.into(),
894 disk_size: 50,
895 ..Default::default()
896 };
897
898 create_instance(config, request)
899 .await
900 .expect("failed to create instance")
901 }
902
903 #[tokio::test]
904 async fn create_delete_instance() {
905 let config = test_config();
906
907 let instance_type_id = get_id_for_size(&config, Size::Tiny).await;
908
909 let create_request = CreateInstanceRequest {
910 instance_type: InstanceType {
911 id: instance_type_id.into(),
912 ..Default::default()
913 }
914 .into(),
915 template: Template {
916 id: env!("EXOSCALE_TEMPLATE").to_string().into(),
917 ..Default::default()
918 }
919 .into(),
920 disk_size: 50,
921 ..Default::default()
922 };
923
924 let operation = create_instance(&config, create_request)
925 .await
926 .expect("failed to create instance");
927
928 let operation = poll_operation(&config, operation).await;
929 let instance_id = operation.reference.unwrap().id.unwrap();
930
931 delete_instance(&config, &instance_id)
932 .await
933 .expect("failed to delete instance");
934 }
935}