docker_api/api/
node.rs

1//! Manage Docker nodes
2//!
3//! Nodes are instances of the Engine participating in a swarm.
4//! Swarm mode must be enabled for these endpoints to work.
5
6use crate::{
7    conn::{Headers, Payload},
8    models,
9    opts::{NodeListOpts, NodeUpdateOpts},
10    Result,
11};
12use containers_api::url::encoded_pair;
13
14impl_api_ty!(Node => name);
15
16type Void = ();
17
18impl Node {
19    impl_api_ep! {node: Node, resp
20        Inspect -> &format!("/nodes/{}", node.name), models::Node
21        ForceDelete -> &format!("/nodes/{}", node.name), Void
22    }
23
24    api_doc! { Node => Update
25    |
26    /// Update a node.
27    pub async fn update(&self, opts: &NodeUpdateOpts) -> Result<()> {
28        self.docker
29            .post(
30                &format!(
31                    "/nodes/{}/update?{}",
32                    self.name,
33                    encoded_pair("version", opts.version().to_string())
34                ),
35                Payload::Json(opts.serialize_vec()?),
36                Headers::none()
37            )
38            .await
39            .map(|_| ())
40    }}
41}
42
43impl Nodes {
44    impl_api_ep! {node: Node, resp
45        List -> "/nodes", models::Node
46    }
47}