k8s_openapi_ext/get/
deployment.rs1use super::*;
2
3pub trait DeploymentGetExt {
4 fn spec(&self) -> Option<&appsv1::DeploymentSpec>;
5
6 fn status(&self) -> Option<&appsv1::DeploymentStatus>;
7
8 fn min_ready_seconds(&self) -> Option<i32> {
11 self.spec()?.min_ready_seconds
12 }
13
14 fn paused(&self) -> Option<bool> {
15 self.spec()?.paused
16 }
17
18 fn progress_deadline_seconds(&self) -> Option<i32> {
19 self.spec()?.progress_deadline_seconds
20 }
21
22 fn revision_history_limit(&self) -> Option<i32> {
23 self.spec()?.revision_history_limit
24 }
25
26 fn selector(&self) -> Option<&metav1::LabelSelector> {
27 self.spec().map(|spec| &spec.selector)
28 }
29
30 fn strategy(&self) -> Option<&appsv1::DeploymentStrategy> {
31 self.spec()?.strategy.as_ref()
32 }
33
34 fn template(&self) -> Option<&corev1::PodTemplateSpec> {
35 self.spec().map(|spec| &spec.template)
36 }
37
38 fn spec_replicas(&self) -> Option<i32> {
39 self.spec()?.replicas
40 }
41
42 fn conditions(&self) -> Option<&[appsv1::DeploymentCondition]> {
44 self.status()?.conditions.as_deref()
45 }
46
47 fn status_replicas(&self) -> Option<i32> {
48 self.status()?.replicas
49 }
50
51 fn available_replicas(&self) -> Option<i32> {
52 self.status()?.available_replicas
53 }
54
55 fn ready_replicas(&self) -> Option<i32> {
56 self.status()?.ready_replicas
57 }
58
59 fn unavailable_replicas(&self) -> Option<i32> {
60 self.status()?.unavailable_replicas
61 }
62
63 fn updated_replicas(&self) -> Option<i32> {
64 self.status()?.updated_replicas
65 }
66
67 fn collision_count(&self) -> Option<i32> {
68 self.status()?.collision_count
69 }
70
71 fn observed_generation(&self) -> Option<i64> {
72 self.status()?.observed_generation
73 }
74
75 fn containers(&self) -> Option<&[corev1::Container]> {
77 self.template()?.containers()
78 }
79
80 fn port_by_name(&self, name: impl AsRef<str>) -> Option<&corev1::ContainerPort> {
81 let name = name.as_ref();
82 self.containers()?
83 .iter()
84 .find_map(|container| container.port_by_name(name))
85 }
86}
87
88impl DeploymentGetExt for appsv1::Deployment {
89 fn spec(&self) -> Option<&appsv1::DeploymentSpec> {
90 self.spec.as_ref()
91 }
92
93 fn status(&self) -> Option<&appsv1::DeploymentStatus> {
94 self.status.as_ref()
95 }
96}
97
98impl DeploymentGetExt for appsv1::DeploymentSpec {
99 fn spec(&self) -> Option<&appsv1::DeploymentSpec> {
100 Some(self)
101 }
102
103 fn status(&self) -> Option<&appsv1::DeploymentStatus> {
104 None
105 }
106}
107
108impl DeploymentGetExt for appsv1::DeploymentStatus {
109 fn spec(&self) -> Option<&appsv1::DeploymentSpec> {
110 None
111 }
112
113 fn status(&self) -> Option<&appsv1::DeploymentStatus> {
114 Some(self)
115 }
116}