openshift_openapi/v4_5/api/build/v1/
custom_build_strategy.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct CustomBuildStrategy {
6 pub build_api_version: Option<String>,
8
9 pub env: Option<Vec<k8s_openapi::api::core::v1::EnvVar>>,
11
12 pub expose_docker_socket: Option<bool>,
14
15 pub force_pull: Option<bool>,
17
18 pub from: k8s_openapi::api::core::v1::ObjectReference,
20
21 pub pull_secret: Option<k8s_openapi::api::core::v1::LocalObjectReference>,
23
24 pub secrets: Option<Vec<crate::api::build::v1::SecretSpec>>,
26}
27
28impl<'de> serde::Deserialize<'de> for CustomBuildStrategy {
29 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
30 #[allow(non_camel_case_types)]
31 enum Field {
32 Key_build_api_version,
33 Key_env,
34 Key_expose_docker_socket,
35 Key_force_pull,
36 Key_from,
37 Key_pull_secret,
38 Key_secrets,
39 Other,
40 }
41
42 impl<'de> serde::Deserialize<'de> for Field {
43 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
44 struct Visitor;
45
46 impl<'de> serde::de::Visitor<'de> for Visitor {
47 type Value = Field;
48
49 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
50 f.write_str("field identifier")
51 }
52
53 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: serde::de::Error {
54 Ok(match v {
55 "buildAPIVersion" => Field::Key_build_api_version,
56 "env" => Field::Key_env,
57 "exposeDockerSocket" => Field::Key_expose_docker_socket,
58 "forcePull" => Field::Key_force_pull,
59 "from" => Field::Key_from,
60 "pullSecret" => Field::Key_pull_secret,
61 "secrets" => Field::Key_secrets,
62 _ => Field::Other,
63 })
64 }
65 }
66
67 deserializer.deserialize_identifier(Visitor)
68 }
69 }
70
71 struct Visitor;
72
73 impl<'de> serde::de::Visitor<'de> for Visitor {
74 type Value = CustomBuildStrategy;
75
76 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
77 f.write_str("CustomBuildStrategy")
78 }
79
80 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: serde::de::MapAccess<'de> {
81 let mut value_build_api_version: Option<String> = None;
82 let mut value_env: Option<Vec<k8s_openapi::api::core::v1::EnvVar>> = None;
83 let mut value_expose_docker_socket: Option<bool> = None;
84 let mut value_force_pull: Option<bool> = None;
85 let mut value_from: Option<k8s_openapi::api::core::v1::ObjectReference> = None;
86 let mut value_pull_secret: Option<k8s_openapi::api::core::v1::LocalObjectReference> = None;
87 let mut value_secrets: Option<Vec<crate::api::build::v1::SecretSpec>> = None;
88
89 while let Some(key) = serde::de::MapAccess::next_key::<Field>(&mut map)? {
90 match key {
91 Field::Key_build_api_version => value_build_api_version = serde::de::MapAccess::next_value(&mut map)?,
92 Field::Key_env => value_env = serde::de::MapAccess::next_value(&mut map)?,
93 Field::Key_expose_docker_socket => value_expose_docker_socket = serde::de::MapAccess::next_value(&mut map)?,
94 Field::Key_force_pull => value_force_pull = serde::de::MapAccess::next_value(&mut map)?,
95 Field::Key_from => value_from = Some(serde::de::MapAccess::next_value(&mut map)?),
96 Field::Key_pull_secret => value_pull_secret = serde::de::MapAccess::next_value(&mut map)?,
97 Field::Key_secrets => value_secrets = serde::de::MapAccess::next_value(&mut map)?,
98 Field::Other => { let _: serde::de::IgnoredAny = serde::de::MapAccess::next_value(&mut map)?; },
99 }
100 }
101
102 Ok(CustomBuildStrategy {
103 build_api_version: value_build_api_version,
104 env: value_env,
105 expose_docker_socket: value_expose_docker_socket,
106 force_pull: value_force_pull,
107 from: value_from.ok_or_else(|| serde::de::Error::missing_field("from"))?,
108 pull_secret: value_pull_secret,
109 secrets: value_secrets,
110 })
111 }
112 }
113
114 deserializer.deserialize_struct(
115 "CustomBuildStrategy",
116 &[
117 "buildAPIVersion",
118 "env",
119 "exposeDockerSocket",
120 "forcePull",
121 "from",
122 "pullSecret",
123 "secrets",
124 ],
125 Visitor,
126 )
127 }
128}
129
130impl serde::Serialize for CustomBuildStrategy {
131 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer {
132 let mut state = serializer.serialize_struct(
133 "CustomBuildStrategy",
134 1 +
135 self.build_api_version.as_ref().map_or(0, |_| 1) +
136 self.env.as_ref().map_or(0, |_| 1) +
137 self.expose_docker_socket.as_ref().map_or(0, |_| 1) +
138 self.force_pull.as_ref().map_or(0, |_| 1) +
139 self.pull_secret.as_ref().map_or(0, |_| 1) +
140 self.secrets.as_ref().map_or(0, |_| 1),
141 )?;
142 if let Some(value) = &self.build_api_version {
143 serde::ser::SerializeStruct::serialize_field(&mut state, "buildAPIVersion", value)?;
144 }
145 if let Some(value) = &self.env {
146 serde::ser::SerializeStruct::serialize_field(&mut state, "env", value)?;
147 }
148 if let Some(value) = &self.expose_docker_socket {
149 serde::ser::SerializeStruct::serialize_field(&mut state, "exposeDockerSocket", value)?;
150 }
151 if let Some(value) = &self.force_pull {
152 serde::ser::SerializeStruct::serialize_field(&mut state, "forcePull", value)?;
153 }
154 serde::ser::SerializeStruct::serialize_field(&mut state, "from", &self.from)?;
155 if let Some(value) = &self.pull_secret {
156 serde::ser::SerializeStruct::serialize_field(&mut state, "pullSecret", value)?;
157 }
158 if let Some(value) = &self.secrets {
159 serde::ser::SerializeStruct::serialize_field(&mut state, "secrets", value)?;
160 }
161 serde::ser::SerializeStruct::end(state)
162 }
163}