k8s_openapi_ext/ext/
env.rs1use super::*;
2
3pub trait EnvVarExt {
5 fn value(name: impl ToString, value: impl ToString) -> Self;
7 fn metadata_name(name: impl ToString) -> Self;
9 fn metadata_namespace(name: impl ToString) -> Self;
10 fn metadata_uid(name: impl ToString) -> Self;
11 fn spec_nodename(name: impl ToString) -> Self;
14 fn spec_service_account_name(name: impl ToString) -> Self;
16 fn status_host_ip(name: impl ToString) -> Self;
17 fn status_pod_ip(name: impl ToString) -> Self;
18 fn status_pod_ips(name: impl ToString) -> Self;
19 fn field_ref(name: impl ToString, field_path: impl ToString) -> Self;
21}
22
23impl EnvVarExt for corev1::EnvVar {
24 fn value(name: impl ToString, value: impl ToString) -> Self {
25 let name = name.to_string();
26 let value = Some(value.to_string());
27 Self {
28 name,
29 value,
30 value_from: None,
31 }
32 }
33
34 fn metadata_name(name: impl ToString) -> Self {
35 Self::field_ref(name, "metadata.name")
36 }
37
38 fn metadata_namespace(name: impl ToString) -> Self {
39 Self::field_ref(name, "metadata.namespace")
40 }
41
42 fn metadata_uid(name: impl ToString) -> Self {
43 Self::field_ref(name, "metadata.uid")
44 }
45
46 fn spec_nodename(name: impl ToString) -> Self {
47 Self::field_ref(name, "spec.nodeName")
48 }
49
50 fn spec_service_account_name(name: impl ToString) -> Self {
51 Self::field_ref(name, "spec.serviceAccountName")
52 }
53
54 fn status_host_ip(name: impl ToString) -> Self {
55 Self::field_ref(name, "status.hostIP")
56 }
57 fn status_pod_ip(name: impl ToString) -> Self {
58 Self::field_ref(name, "status.podIP")
59 }
60 fn status_pod_ips(name: impl ToString) -> Self {
61 Self::field_ref(name, "status.podIPs")
62 }
63
64 fn field_ref(name: impl ToString, field_path: impl ToString) -> Self {
65 let name = name.to_string();
66 let field_ref = corev1::ObjectFieldSelector {
67 api_version: None,
68 field_path: field_path.to_string(),
69 };
70 let source = corev1::EnvVarSource {
71 field_ref: Some(field_ref),
72 ..default()
73 };
74 Self {
75 name,
76 value: None,
77 value_from: Some(source),
78 }
79 }
80}
81
82pub trait ToEnvVar {
83 fn to_envvar(&self) -> corev1::EnvVar;
84}
85
86impl ToEnvVar for corev1::EnvVar {
87 fn to_envvar(&self) -> corev1::EnvVar {
88 self.clone()
89 }
90}
91
92impl<T, U> ToEnvVar for (T, U)
93where
94 T: fmt::Display,
95 U: fmt::Display,
96{
97 fn to_envvar(&self) -> corev1::EnvVar {
98 let (ref name, ref value) = *self;
99 corev1::EnvVar::value(name, value)
100 }
101}
102
103pub trait ToEnvFrom {
104 fn to_envfrom(self) -> corev1::EnvFromSource;
105}
106
107impl ToEnvFrom for corev1::SecretEnvSource {
108 fn to_envfrom(self) -> corev1::EnvFromSource {
109 corev1::EnvFromSource {
110 secret_ref: Some(self),
111 ..default()
112 }
113 }
114}
115
116impl ToEnvFrom for corev1::ConfigMapEnvSource {
117 fn to_envfrom(self) -> corev1::EnvFromSource {
118 corev1::EnvFromSource {
119 config_map_ref: Some(self),
120 ..default()
121 }
122 }
123}