contain_rs_core/
rt.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Deserialize, Serialize, Clone)]
4pub struct DetailedContainerInfo {
5    #[serde(alias = "Id")]
6    pub id: String,
7    #[serde(alias = "State")]
8    pub state: ContainerState,
9}
10
11#[derive(Debug, Deserialize, Serialize, Clone)]
12pub struct ContainerState {
13    #[serde(alias = "Running")]
14    pub running: bool,
15    // currently these are used for poth docker and podman
16    #[serde(alias = "Healthcheck", alias = "Health")]
17    pub health: Option<HealthCheck>,
18}
19
20#[derive(Debug, Deserialize, Serialize, Clone)]
21pub struct HealthCheck {
22    #[serde(alias = "Status")]
23    pub status: ContainerStatus,
24}
25
26///
27/// Health status of a container.
28///
29/// ```
30/// use contain_rs_core::rt::ContainerStatus;
31///
32/// assert_eq!(serde_json::from_str::<ContainerStatus>("\"starting\"").unwrap(), ContainerStatus::Starting);
33/// assert_eq!(serde_json::from_str::<ContainerStatus>("\"\"").unwrap(), ContainerStatus::None);
34///
35/// ```
36///
37#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
38pub enum ContainerStatus {
39    #[serde(alias = "")]
40    None,
41    #[serde(alias = "starting")]
42    Starting,
43    #[serde(alias = "exited")]
44    Exited,
45    #[serde(alias = "healthy")]
46    Healthy,
47    #[serde(alias = "unhealthy")]
48    Unhealthy,
49}