podman_client/models/podman/networks/
inspect.rs

1use core::fmt;
2use std::collections::HashMap;
3
4use chrono::{DateTime, Utc};
5use serde::{Deserialize, Serialize};
6
7pub struct NetworkInspectOptions<'a> {
8    pub name: &'a str,
9}
10
11#[derive(Deserialize, Serialize)]
12pub struct NetworkInspect {
13    pub containers: HashMap<String, NetworkInspectContainer>,
14    pub created: DateTime<Utc>,
15    pub dns_enabled: bool,
16    pub driver: String,
17    pub id: String,
18    pub internal: bool,
19    pub ipam_options: HashMap<String, String>,
20    pub ipv6_enabled: bool,
21    pub labels: HashMap<String, String>,
22    pub name: String,
23    pub network_dns_servers: Vec<String>,
24    pub network_interface: String,
25    pub options: HashMap<String, String>,
26    pub routes: Vec<NetworkInspectRoute>,
27    pub subnets: Vec<NetworkInspectSubnet>,
28}
29
30impl fmt::Debug for NetworkInspect {
31    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32        let json = serde_json::to_string_pretty(self).map_err(|_| fmt::Error)?;
33        f.write_str(&json)
34    }
35}
36
37#[derive(Deserialize, Serialize)]
38pub struct NetworkInspectContainer {
39    pub interfaces: HashMap<String, NetworkInspectContainerInterface>,
40    pub name: String,
41}
42
43#[derive(Deserialize, Serialize)]
44pub struct NetworkInspectContainerInterface {
45    pub mac_address: String,
46    pub subnets: Vec<NetworkInspectContainerInterfaceSubnet>,
47}
48
49#[derive(Deserialize, Serialize)]
50pub struct NetworkInspectContainerInterfaceSubnet {
51    pub gateway: String,
52    pub ipnet: NetworkInspectContainerInterfaceSubnetIpnet,
53}
54
55#[derive(Deserialize, Serialize)]
56#[serde(rename_all = "PascalCase")]
57pub struct NetworkInspectContainerInterfaceSubnetIpnet {
58    #[serde(rename = "IP")]
59    pub ip: String,
60    pub mask: Vec<u8>,
61}
62
63#[derive(Deserialize, Serialize)]
64pub struct NetworkInspectRoute {
65    pub destination: String,
66    pub gateway: String,
67    pub metric: u32,
68}
69
70#[derive(Deserialize, Serialize)]
71pub struct NetworkInspectSubnet {
72    pub gateway: String,
73    pub lease_range: NetworkInspectSubnetLeaseRange,
74    pub subnet: String,
75}
76
77#[derive(Deserialize, Serialize)]
78pub struct NetworkInspectSubnetLeaseRange {
79    pub end_ip: String,
80    pub start_ip: String,
81}