k8s_openapi_ext/get/container/
state.rs

1use super::*;
2
3pub trait ContainerStateTerminatedGetExt {
4    fn reason(&self) -> Option<&str>;
5
6    fn exit_code(&self) -> i32;
7
8    fn signal(&self) -> Option<i32>;
9
10    fn access_reason(&self) -> String {
11        if let Some(reason) = self.reason() {
12            reason.to_string()
13        } else if let Some(signal) = self.signal() {
14            format!("Signal:{signal}")
15        } else {
16            format!("ExitCode:{}", self.exit_code())
17        }
18    }
19}
20
21impl ContainerStateTerminatedGetExt for corev1::ContainerStateTerminated {
22    fn reason(&self) -> Option<&str> {
23        self.reason.as_deref()
24    }
25
26    fn exit_code(&self) -> i32 {
27        self.exit_code
28    }
29
30    fn signal(&self) -> Option<i32> {
31        self.signal
32    }
33}
34
35pub trait ContainerStateWaitingGetExt {
36    const POD_INITIALIZING: &str = "PodInitializing";
37    const CONTAINER_CREATING: &str = "ContainerCreating";
38
39    fn reason(&self) -> Option<&str>;
40
41    fn is_pod_initializing(&self) -> bool {
42        self.reason() == Some(Self::POD_INITIALIZING)
43    }
44
45    fn is_container_creating(&self) -> bool {
46        self.reason() == Some(Self::CONTAINER_CREATING)
47    }
48}
49
50impl ContainerStateWaitingGetExt for corev1::ContainerStateWaiting {
51    fn reason(&self) -> Option<&str> {
52        self.reason.as_deref()
53    }
54}