k8s_openapi_ext/get/container/
state.rs1use 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}