k8s_openapi_ext/ext/
pod_template_spec.rs

1use super::*;
2
3pub trait PodTemplateSpecExt {
4    fn new(name: impl ToString) -> Self;
5
6    fn labels(self, labels: impl IntoIterator<Item = (impl ToString, impl ToString)>) -> Self;
7
8    fn pod_spec(self, spec: corev1::PodSpec) -> Self;
9}
10
11impl PodTemplateSpecExt for corev1::PodTemplateSpec {
12    fn new(name: impl ToString) -> Self {
13        Self {
14            metadata: Some(metadata(name)),
15            spec: None,
16        }
17    }
18
19    fn labels(self, labels: impl IntoIterator<Item = (impl ToString, impl ToString)>) -> Self {
20        let labels = labels
21            .into_iter()
22            .map(|(key, value)| (key.to_string(), value.to_string()))
23            .collect();
24        let mut metadata = self.metadata.unwrap_or_default();
25        metadata.labels = Some(labels);
26        Self {
27            metadata: Some(metadata),
28            ..self
29        }
30    }
31
32    fn pod_spec(self, spec: corev1::PodSpec) -> Self {
33        Self {
34            spec: Some(spec),
35            ..self
36        }
37    }
38}