nomad_client_rs/api/
deployment.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
use reqwest::Method;

use crate::api::deployment::models::{DeploymentFailResponse, DeploymentListParams};
use crate::models::allocation::Allocation;
use crate::models::deployment::Deployment;
use crate::{ClientError, NomadClient};

impl NomadClient {
    pub async fn deployment_list(
        &self,
        params: Option<DeploymentListParams>,
    ) -> Result<Vec<Deployment>, ClientError> {
        let req = self.request(Method::GET, "/deployments").query(&params);

        self.send::<Vec<Deployment>>(req).await
    }

    pub async fn deployment_get(&self, id: &str) -> Result<Deployment, ClientError> {
        let req = self.request(Method::GET, &format!("/deployment/{}", id));

        self.send::<Deployment>(req).await
    }

    pub async fn deployment_allocation_list(
        &self,
        id: &str,
    ) -> Result<Vec<Allocation>, ClientError> {
        let req = self.request(Method::GET, &format!("/deployment/allocations/{}", id));

        self.send::<Vec<Allocation>>(req).await
    }

    pub async fn deployment_fail(&self, id: &str) -> Result<DeploymentFailResponse, ClientError> {
        let req = self.request(Method::POST, &format!("/deployment/fail/{}", id));

        self.send::<DeploymentFailResponse>(req).await
    }
}

pub mod models {
    use serde::{Deserialize, Serialize};

    #[derive(Debug, Default, Serialize)]
    #[serde(rename_all = "camelCase")]
    pub struct DeploymentListParams {
        pub prefix: Option<String>,
        pub namespace: Option<String>,
        pub next_token: Option<String>,
        pub per_page: Option<i32>,
        pub filter: Option<String>,
        pub reverse: Option<bool>,
    }

    #[derive(Debug, Deserialize)]
    #[serde(rename_all = "PascalCase")]
    pub struct DeploymentFailResponse {
        #[serde(rename = "EvalID")]
        pub eval_id: String,
        pub eval_create_index: i32,
        pub deployment_modify_index: i32,
        pub reverted_job_version: i32,
        pub index: i32,
    }

    #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
    pub struct DeploymentAllocHealthRequest {
        #[serde(rename = "DeploymentID", skip_serializing_if = "Option::is_none")]
        pub deployment_id: Option<String>,
        #[serde(
            rename = "HealthyAllocationIDs",
            skip_serializing_if = "Option::is_none"
        )]
        pub healthy_allocation_ids: Option<Vec<String>>,
        #[serde(rename = "Namespace", skip_serializing_if = "Option::is_none")]
        pub namespace: Option<String>,
        #[serde(rename = "Region", skip_serializing_if = "Option::is_none")]
        pub region: Option<String>,
        #[serde(rename = "SecretID", skip_serializing_if = "Option::is_none")]
        pub secret_id: Option<String>,
        #[serde(
            rename = "UnhealthyAllocationIDs",
            skip_serializing_if = "Option::is_none"
        )]
        pub unhealthy_allocation_ids: Option<Vec<String>>,
    }

    #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
    pub struct DeploymentPauseRequest {
        #[serde(rename = "DeploymentID", skip_serializing_if = "Option::is_none")]
        pub deployment_id: Option<String>,
        #[serde(rename = "Namespace", skip_serializing_if = "Option::is_none")]
        pub namespace: Option<String>,
        #[serde(rename = "Pause", skip_serializing_if = "Option::is_none")]
        pub pause: Option<bool>,
        #[serde(rename = "Region", skip_serializing_if = "Option::is_none")]
        pub region: Option<String>,
        #[serde(rename = "SecretID", skip_serializing_if = "Option::is_none")]
        pub secret_id: Option<String>,
    }

    #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
    pub struct DeploymentPromoteRequest {
        #[serde(rename = "All", skip_serializing_if = "Option::is_none")]
        pub all: Option<bool>,
        #[serde(rename = "DeploymentID", skip_serializing_if = "Option::is_none")]
        pub deployment_id: Option<String>,
        #[serde(rename = "Groups", skip_serializing_if = "Option::is_none")]
        pub groups: Option<Vec<String>>,
        #[serde(rename = "Namespace", skip_serializing_if = "Option::is_none")]
        pub namespace: Option<String>,
        #[serde(rename = "Region", skip_serializing_if = "Option::is_none")]
        pub region: Option<String>,
        #[serde(rename = "SecretID", skip_serializing_if = "Option::is_none")]
        pub secret_id: Option<String>,
    }

    #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
    pub struct DeploymentUnblockRequest {
        #[serde(rename = "DeploymentID", skip_serializing_if = "Option::is_none")]
        pub deployment_id: Option<String>,
        #[serde(rename = "Namespace", skip_serializing_if = "Option::is_none")]
        pub namespace: Option<String>,
        #[serde(rename = "Region", skip_serializing_if = "Option::is_none")]
        pub region: Option<String>,
        #[serde(rename = "SecretID", skip_serializing_if = "Option::is_none")]
        pub secret_id: Option<String>,
    }

    #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
    pub struct DeploymentUpdateResponse {
        #[serde(
            rename = "DeploymentModifyIndex",
            skip_serializing_if = "Option::is_none"
        )]
        pub deployment_modify_index: Option<i32>,
        #[serde(rename = "EvalCreateIndex", skip_serializing_if = "Option::is_none")]
        pub eval_create_index: Option<i32>,
        #[serde(rename = "EvalID", skip_serializing_if = "Option::is_none")]
        pub eval_id: Option<String>,
        #[serde(rename = "LastIndex", skip_serializing_if = "Option::is_none")]
        pub last_index: Option<i32>,
        #[serde(rename = "RequestTime", skip_serializing_if = "Option::is_none")]
        pub request_time: Option<i64>,
        #[serde(rename = "RevertedJobVersion", skip_serializing_if = "Option::is_none")]
        pub reverted_job_version: Option<i32>,
    }
}