summaryrefslogtreecommitdiffstats
path: root/src/network.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/network.rs')
-rw-r--r--src/network.rs99
1 files changed, 96 insertions, 3 deletions
diff --git a/src/network.rs b/src/network.rs
index cc9a62e..e274d2d 100644
--- a/src/network.rs
+++ b/src/network.rs
@@ -8,14 +8,13 @@ use std::{
};
use hyper::Body;
-use serde::Serialize;
+use serde::{Deserialize, Serialize};
use serde_json::{json, Value};
use url::form_urlencoded;
use crate::{
+ docker::Docker,
errors::{Error, Result},
- rep::{NetworkCreateInfo, NetworkDetails as NetworkInfo},
- Docker,
};
/// Interface for docker network
@@ -300,3 +299,97 @@ impl ContainerConnectionOptionsBuilder {
}
}
}
+
+type PortDescription = HashMap<String, Option<Vec<HashMap<String, String>>>>;
+
+#[derive(Clone, Debug, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct NetworkSettings {
+ pub bridge: String,
+ pub gateway: String,
+ #[serde(rename = "IPAddress")]
+ pub ip_address: String,
+ #[serde(rename = "IPPrefixLen")]
+ pub ip_prefix_len: u64,
+ pub mac_address: String,
+ pub ports: Option<PortDescription>,
+ pub networks: HashMap<String, NetworkEntry>,
+}
+
+#[derive(Clone, Debug, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct NetworkEntry {
+ #[serde(rename = "NetworkID")]
+ pub network_id: String,
+ #[serde(rename = "EndpointID")]
+ pub endpoint_id: String,
+ pub gateway: String,
+ #[serde(rename = "IPAddress")]
+ pub ip_address: String,
+ #[serde(rename = "IPPrefixLen")]
+ pub ip_prefix_len: u64,
+ #[serde(rename = "IPv6Gateway")]
+ pub ipv6_gateway: String,
+ #[serde(rename = "GlobalIPv6Address")]
+ pub global_ipv6_address: String,
+ #[serde(rename = "GlobalIPv6PrefixLen")]
+ pub global_ipv6_prefix_len: u64,
+ pub mac_address: String,
+}
+
+#[derive(Clone, Debug, Serialize, Deserialize)]
+pub struct NetworkInfo {
+ pub rx_dropped: u64,
+ pub rx_bytes: u64,
+ pub rx_errors: u64,
+ pub tx_packets: u64,
+ pub tx_dropped: u64,
+ pub rx_packets: u64,
+ pub tx_errors: u64,
+ pub tx_bytes: u64,
+}
+
+#[derive(Clone, Debug, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct IPAM {
+ pub driver: String,
+ pub config: Vec<HashMap<String, String>>,
+ pub options: Option<HashMap<String, String>>,
+}
+
+#[derive(Clone, Debug, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct NetworkDetails {
+ pub name: String,
+ pub id: String,
+ pub scope: String,
+ pub driver: String,
+ #[serde(rename = "EnableIPv6")]
+ pub enable_ipv6: bool,
+ #[serde(rename = "IPAM")]
+ pub ipam: IPAM,
+ pub internal: bool,
+ pub attachable: bool,
+ pub containers: HashMap<String, NetworkContainerDetails>,
+ pub options: Option<HashMap<String, String>>,
+ pub labels: Option<HashMap<String, String>>,
+}
+
+#[derive(Clone, Debug, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct NetworkContainerDetails {
+ #[serde(rename = "EndpointID")]
+ pub endpoint_id: String,
+ pub mac_address: String,
+ #[serde(rename = "IPv4Address")]
+ pub ipv4_address: String,
+ #[serde(rename = "IPv6Address")]
+ pub ipv6_address: String,
+}
+
+#[derive(Clone, Debug, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct NetworkCreateInfo {
+ pub id: String,
+ pub warning: String,
+}