#[derive(serde_derive::Deserialize)]
pub struct Metadata {
pub name: String,
#[serde(default)]
pub namespace: String,
#[serde(default)]
pub uid: String,
}
#[derive(serde_derive::Deserialize)]
pub struct Container {
pub name: String,
pub image: String,
}
#[derive(Default, serde_derive::Deserialize)]
pub struct PodSpec {
#[serde(default)]
pub containers: Vec<Container>,
}
#[derive(serde_derive::Deserialize)]
pub struct ContainerStatus {
pub container_id: String,
pub name: String,
pub image: String,
pub ready: bool,
pub restart_count: i32,
}
impl ContainerStatus {
#[inline]
pub fn container_id_suffix(&self) -> &str {
let mut parts = self.container_id.split("://");
let type_or_not = parts.next().unwrap();
parts.next().unwrap_or(type_or_not)
}
}
#[derive(Default, serde_derive::Deserialize)]
pub struct PodStatus {
#[serde(default)]
pub container_statuses: Vec<ContainerStatus>,
}
#[derive(serde_derive::Deserialize)]
pub struct Pod {
pub metadata: Metadata,
#[serde(default)]
pub spec: PodSpec,
#[serde(default)]
pub status: PodStatus,
}