Skip to main content

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}