stackify_docker_api/api/
secret.rs

1//! Secrets are sensitive data that can be used by services. Swarm mode must be enabled for these endpoints to work.
2
3use crate::{
4    conn::{Headers, Payload},
5    models,
6    opts::{SecretCreateOpts, SecretListOpts},
7    Result,
8};
9
10impl_api_ty!(Secret => name);
11
12impl Secret {
13    impl_api_ep! { secret: Secret, resp
14        Inspect -> &format!("/secrets/{}", secret.name), models::Secret
15        Delete -> &format!("/secrets/{}", secret.name), ()
16    }
17    // TODO: add Secret::update
18}
19
20impl Secrets {
21    impl_api_ep! { __: Secret, resp
22        List -> "/secrets", models::Secret
23    }
24
25    api_doc! { Secret => Create
26    |
27    /// Create a new secret.
28    pub async fn create(&self, opts: &SecretCreateOpts) -> Result<Secret> {
29        use serde::Deserialize;
30        #[derive(Deserialize)]
31        struct SecretCreateResponse {
32            #[serde(rename = "Id")]
33            pub id: String,
34        }
35        self.docker
36            .post_json("/secrets/create", Payload::Json(opts.serialize_vec()?), Headers::none())
37            .await
38            .map(|resp: SecretCreateResponse| {
39                Secret::new(self.docker.clone(), resp.id)
40            })
41    }}
42}