1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6#[derive(Debug, Clone, Deserialize)]
8pub struct DockerInfo {
9 #[serde(rename = "Name")]
11 pub name: String,
12 #[serde(rename = "ServerVersion")]
14 pub server_version: String,
15 #[serde(rename = "OperatingSystem")]
17 pub operating_system: String,
18 #[serde(rename = "Architecture")]
20 pub architecture: String,
21}
22
23#[derive(Debug, Clone, Deserialize)]
25pub struct ImageInspect {
26 #[serde(rename = "Id")]
28 pub id: String,
29 #[serde(rename = "RepoTags", default)]
31 pub repo_tags: Vec<String>,
32 #[serde(rename = "RepoDigests", default)]
34 pub repo_digests: Vec<String>,
35}
36
37#[derive(Debug, Clone, Deserialize)]
39pub struct VolumeInspect {
40 #[serde(rename = "Name")]
42 pub name: String,
43 #[serde(rename = "Driver")]
45 pub driver: String,
46 #[serde(rename = "Labels", default)]
48 pub labels: Option<HashMap<String, String>>,
49 #[serde(rename = "Options", default)]
51 pub options: Option<HashMap<String, String>>,
52}
53
54#[derive(Debug, Clone, Deserialize)]
56pub struct NetworkInspect {
57 #[serde(rename = "Name")]
59 pub name: String,
60 #[serde(rename = "Id")]
62 pub id: String,
63 #[serde(rename = "Driver")]
65 pub driver: String,
66 #[serde(rename = "Internal", default)]
68 pub internal: bool,
69 #[serde(rename = "EnableIPv6", default)]
71 pub enable_ipv6: bool,
72 #[serde(rename = "Attachable", default)]
74 pub attachable: bool,
75 #[serde(rename = "Labels", default)]
77 pub labels: Option<HashMap<String, String>>,
78 #[serde(rename = "Options", default)]
80 pub options: Option<HashMap<String, String>>,
81 #[serde(rename = "IPAM", default)]
83 pub ipam: NetworkIpam,
84}
85
86#[derive(Debug, Clone, Default, Deserialize)]
88pub struct NetworkIpam {
89 #[serde(rename = "Driver", default)]
91 pub driver: String,
92 #[serde(rename = "Config", default)]
94 pub config: Vec<NetworkIpamConfig>,
95}
96
97#[derive(Debug, Clone, Default, Deserialize, Serialize, PartialEq)]
99pub struct NetworkIpamConfig {
100 #[serde(rename = "Subnet", default)]
102 pub subnet: String,
103 #[serde(rename = "Gateway", default)]
105 pub gateway: String,
106 #[serde(rename = "IPRange", default)]
108 pub ip_range: String,
109}
110
111#[derive(Debug, Clone, Deserialize)]
113pub struct ContainerInspect {
114 #[serde(rename = "Id")]
116 pub id: String,
117 #[serde(rename = "Name")]
119 pub name: String,
120 #[serde(rename = "Image")]
122 pub image: String,
123 #[serde(rename = "Created", default)]
129 pub created: String,
130 #[serde(rename = "State")]
132 pub state: ContainerState,
133 #[serde(rename = "Config")]
135 pub config: ContainerConfig,
136 #[serde(rename = "HostConfig")]
138 pub host_config: HostConfig,
139 #[serde(rename = "NetworkSettings")]
141 pub network_settings: NetworkSettings,
142 #[serde(rename = "Mounts", default)]
144 pub mounts: Vec<MountPoint>,
145}
146
147#[derive(Debug, Clone, Deserialize)]
149pub struct ContainerState {
150 #[serde(rename = "Status")]
152 pub status: String,
153 #[serde(rename = "Running", default)]
155 pub running: bool,
156}
157
158#[derive(Debug, Clone, Default, Deserialize)]
160pub struct ContainerConfig {
161 #[serde(rename = "Hostname", default)]
163 pub hostname: String,
164 #[serde(rename = "Domainname", default)]
166 pub domainname: String,
167 #[serde(rename = "User", default)]
169 pub user: String,
170 #[serde(rename = "Env", default)]
172 pub env: Option<Vec<String>>,
173 #[serde(rename = "Cmd", default)]
175 pub cmd: Option<Vec<String>>,
176 #[serde(rename = "Image", default)]
178 pub image: String,
179 #[serde(rename = "WorkingDir", default)]
181 pub working_dir: String,
182 #[serde(rename = "Entrypoint", default)]
184 pub entrypoint: Option<Vec<String>>,
185 #[serde(rename = "Labels", default)]
187 pub labels: Option<HashMap<String, String>>,
188 #[serde(rename = "Tty", default)]
190 pub tty: bool,
191 #[serde(rename = "OpenStdin", default)]
193 pub open_stdin: bool,
194 #[serde(rename = "ExposedPorts", default)]
196 pub exposed_ports: Option<HashMap<String, serde_json::Value>>,
197}
198
199#[derive(Debug, Clone, Default, Deserialize)]
201pub struct HostConfig {
202 #[serde(rename = "NetworkMode", default)]
205 pub network_mode: String,
206 #[serde(rename = "PortBindings", default)]
208 pub port_bindings: Option<HashMap<String, Option<Vec<PortBinding>>>>,
209 #[serde(rename = "RestartPolicy", default)]
211 pub restart_policy: Option<RestartPolicy>,
212 #[serde(rename = "Privileged", default)]
214 pub privileged: bool,
215 #[serde(rename = "ReadonlyRootfs", default)]
217 pub readonly_rootfs: bool,
218 #[serde(rename = "ExtraHosts", default)]
220 pub extra_hosts: Option<Vec<String>>,
221 #[serde(rename = "AutoRemove", default)]
223 pub auto_remove: bool,
224 #[serde(rename = "Memory", default)]
226 pub memory: i64,
227 #[serde(rename = "NanoCpus", default)]
230 pub nano_cpus: i64,
231 #[serde(rename = "CapAdd", default)]
233 pub cap_add: Option<Vec<String>>,
234}
235
236#[derive(Debug, Clone, Default, Deserialize)]
238pub struct RestartPolicy {
239 #[serde(rename = "Name", default)]
241 pub name: String,
242 #[serde(rename = "MaximumRetryCount", default)]
244 pub maximum_retry_count: i64,
245}
246
247#[derive(Debug, Clone, Default, Deserialize)]
249pub struct NetworkSettings {
250 #[serde(rename = "Networks", default)]
252 pub networks: HashMap<String, EndpointSettings>,
253}
254
255#[derive(Debug, Clone, Default, Deserialize)]
257pub struct EndpointSettings {
258 #[serde(rename = "Aliases", default)]
260 pub aliases: Option<Vec<String>>,
261}
262
263#[derive(Debug, Clone, Deserialize)]
265pub struct MountPoint {
266 #[serde(rename = "Type")]
268 pub mount_type: String,
269 #[serde(rename = "Name", default)]
271 pub name: String,
272 #[serde(rename = "Source", default)]
274 pub source: String,
275 #[serde(rename = "Destination")]
277 pub destination: String,
278 #[serde(rename = "Mode", default)]
280 pub mode: String,
281 #[serde(rename = "RW", default)]
283 pub rw: bool,
284}
285
286#[derive(Debug, Clone, Deserialize)]
288pub struct PortBinding {
289 #[serde(rename = "HostIp", default)]
291 pub host_ip: String,
292 #[serde(rename = "HostPort", default)]
294 pub host_port: String,
295}