diff options
Diffstat (limited to 'src/network.rs')
-rw-r--r-- | src/network.rs | 99 |
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, +} |