sal_virt/nerdctl/container_types.rs
1// File: /root/code/git.threefold.info/herocode/sal/src/virt/nerdctl/container_types.rs
2
3use std::collections::HashMap;
4
5/// Container struct for nerdctl operations
6#[derive(Clone)]
7pub struct Container {
8 /// Name of the container
9 pub name: String,
10 /// Container ID
11 pub container_id: Option<String>,
12 /// Base image (if created from an image)
13 pub image: Option<String>,
14 /// Configuration options
15 pub config: HashMap<String, String>,
16 /// Port mappings
17 pub ports: Vec<String>,
18 /// Volume mounts
19 pub volumes: Vec<String>,
20 /// Environment variables
21 pub env_vars: HashMap<String, String>,
22 /// Network to connect to
23 pub network: Option<String>,
24 /// Network aliases
25 pub network_aliases: Vec<String>,
26 /// CPU limit
27 pub cpu_limit: Option<String>,
28 /// Memory limit
29 pub memory_limit: Option<String>,
30 /// Memory swap limit
31 pub memory_swap_limit: Option<String>,
32 /// CPU shares
33 pub cpu_shares: Option<String>,
34 /// Restart policy
35 pub restart_policy: Option<String>,
36 /// Health check
37 pub health_check: Option<HealthCheck>,
38 /// Whether to run in detached mode
39 pub detach: bool,
40 /// Snapshotter to use
41 pub snapshotter: Option<String>,
42}
43
44/// Health check configuration for a container
45#[derive(Debug, Clone)]
46pub struct HealthCheck {
47 /// Command to run for health check
48 pub cmd: String,
49 /// Time between running the check (default: 30s)
50 pub interval: Option<String>,
51 /// Maximum time to wait for a check to complete (default: 30s)
52 pub timeout: Option<String>,
53 /// Number of consecutive failures needed to consider unhealthy (default: 3)
54 pub retries: Option<u32>,
55 /// Start period for the container to initialize before counting retries (default: 0s)
56 pub start_period: Option<String>,
57}
58
59/// Container status information
60#[derive(Debug, Clone)]
61pub struct ContainerStatus {
62 /// Container state (e.g., running, stopped)
63 pub state: String,
64 /// Container status
65 pub status: String,
66 /// Creation time
67 pub created: String,
68 /// Start time
69 pub started: String,
70 /// Health status (if health check is configured)
71 pub health_status: Option<String>,
72 /// Health check output (if health check is configured)
73 pub health_output: Option<String>,
74}
75
76/// Container resource usage information
77#[derive(Debug, Clone)]
78pub struct ResourceUsage {
79 /// CPU usage percentage
80 pub cpu_usage: String,
81 /// Memory usage
82 pub memory_usage: String,
83 /// Memory limit
84 pub memory_limit: String,
85 /// Memory usage percentage
86 pub memory_percentage: String,
87 /// Network input
88 pub network_input: String,
89 /// Network output
90 pub network_output: String,
91 /// Block input
92 pub block_input: String,
93 /// Block output
94 pub block_output: String,
95 /// PIDs
96 pub pids: String,
97}