nomad_client_rs/api/
deployment.rs

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(&params);
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}