1use reqwest::Method;
2
3use crate::api::deployment::models::{DeploymentFailResponse, DeploymentListParams};
4use crate::models::allocation::Allocation;
5use crate::models::deployment::Deployment;
6use crate::{ClientError, NomadClient};
7
8impl NomadClient {
9 pub async fn deployment_list(
10 &self,
11 params: Option<DeploymentListParams>,
12 ) -> Result<Vec<Deployment>, ClientError> {
13 let req = self.request(Method::GET, "/deployments").query(¶ms);
14
15 self.send::<Vec<Deployment>>(req).await
16 }
17
18 pub async fn deployment_get(&self, id: &str) -> Result<Deployment, ClientError> {
19 let req = self.request(Method::GET, &format!("/deployment/{}", id));
20
21 self.send::<Deployment>(req).await
22 }
23
24 pub async fn deployment_allocation_list(
25 &self,
26 id: &str,
27 ) -> Result<Vec<Allocation>, ClientError> {
28 let req = self.request(Method::GET, &format!("/deployment/allocations/{}", id));
29
30 self.send::<Vec<Allocation>>(req).await
31 }
32
33 pub async fn deployment_fail(&self, id: &str) -> Result<DeploymentFailResponse, ClientError> {
34 let req = self.request(Method::POST, &format!("/deployment/fail/{}", id));
35
36 self.send::<DeploymentFailResponse>(req).await
37 }
38}
39
40pub mod models {
41 use serde::{Deserialize, Serialize};
42
43 #[derive(Debug, Default, Serialize)]
44 #[serde(rename_all = "camelCase")]
45 pub struct DeploymentListParams {
46 pub prefix: Option<String>,
47 pub namespace: Option<String>,
48 pub next_token: Option<String>,
49 pub per_page: Option<i32>,
50 pub filter: Option<String>,
51 pub reverse: Option<bool>,
52 }
53
54 #[derive(Debug, Deserialize)]
55 #[serde(rename_all = "PascalCase")]
56 pub struct DeploymentFailResponse {
57 #[serde(rename = "EvalID")]
58 pub eval_id: String,
59 pub eval_create_index: i32,
60 pub deployment_modify_index: i32,
61 pub reverted_job_version: i32,
62 pub index: i32,
63 }
64
65 #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
66 pub struct DeploymentAllocHealthRequest {
67 #[serde(rename = "DeploymentID", skip_serializing_if = "Option::is_none")]
68 pub deployment_id: Option<String>,
69 #[serde(
70 rename = "HealthyAllocationIDs",
71 skip_serializing_if = "Option::is_none"
72 )]
73 pub healthy_allocation_ids: Option<Vec<String>>,
74 #[serde(rename = "Namespace", skip_serializing_if = "Option::is_none")]
75 pub namespace: Option<String>,
76 #[serde(rename = "Region", skip_serializing_if = "Option::is_none")]
77 pub region: Option<String>,
78 #[serde(rename = "SecretID", skip_serializing_if = "Option::is_none")]
79 pub secret_id: Option<String>,
80 #[serde(
81 rename = "UnhealthyAllocationIDs",
82 skip_serializing_if = "Option::is_none"
83 )]
84 pub unhealthy_allocation_ids: Option<Vec<String>>,
85 }
86
87 #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
88 pub struct DeploymentPauseRequest {
89 #[serde(rename = "DeploymentID", skip_serializing_if = "Option::is_none")]
90 pub deployment_id: Option<String>,
91 #[serde(rename = "Namespace", skip_serializing_if = "Option::is_none")]
92 pub namespace: Option<String>,
93 #[serde(rename = "Pause", skip_serializing_if = "Option::is_none")]
94 pub pause: Option<bool>,
95 #[serde(rename = "Region", skip_serializing_if = "Option::is_none")]
96 pub region: Option<String>,
97 #[serde(rename = "SecretID", skip_serializing_if = "Option::is_none")]
98 pub secret_id: Option<String>,
99 }
100
101 #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
102 pub struct DeploymentPromoteRequest {
103 #[serde(rename = "All", skip_serializing_if = "Option::is_none")]
104 pub all: Option<bool>,
105 #[serde(rename = "DeploymentID", skip_serializing_if = "Option::is_none")]
106 pub deployment_id: Option<String>,
107 #[serde(rename = "Groups", skip_serializing_if = "Option::is_none")]
108 pub groups: Option<Vec<String>>,
109 #[serde(rename = "Namespace", skip_serializing_if = "Option::is_none")]
110 pub namespace: Option<String>,
111 #[serde(rename = "Region", skip_serializing_if = "Option::is_none")]
112 pub region: Option<String>,
113 #[serde(rename = "SecretID", skip_serializing_if = "Option::is_none")]
114 pub secret_id: Option<String>,
115 }
116
117 #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
118 pub struct DeploymentUnblockRequest {
119 #[serde(rename = "DeploymentID", skip_serializing_if = "Option::is_none")]
120 pub deployment_id: Option<String>,
121 #[serde(rename = "Namespace", skip_serializing_if = "Option::is_none")]
122 pub namespace: Option<String>,
123 #[serde(rename = "Region", skip_serializing_if = "Option::is_none")]
124 pub region: Option<String>,
125 #[serde(rename = "SecretID", skip_serializing_if = "Option::is_none")]
126 pub secret_id: Option<String>,
127 }
128
129 #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
130 pub struct DeploymentUpdateResponse {
131 #[serde(
132 rename = "DeploymentModifyIndex",
133 skip_serializing_if = "Option::is_none"
134 )]
135 pub deployment_modify_index: Option<i32>,
136 #[serde(rename = "EvalCreateIndex", skip_serializing_if = "Option::is_none")]
137 pub eval_create_index: Option<i32>,
138 #[serde(rename = "EvalID", skip_serializing_if = "Option::is_none")]
139 pub eval_id: Option<String>,
140 #[serde(rename = "LastIndex", skip_serializing_if = "Option::is_none")]
141 pub last_index: Option<i32>,
142 #[serde(rename = "RequestTime", skip_serializing_if = "Option::is_none")]
143 pub request_time: Option<i64>,
144 #[serde(rename = "RevertedJobVersion", skip_serializing_if = "Option::is_none")]
145 pub reverted_job_version: Option<i32>,
146 }
147}