openshift_openapi/v4_5/api/build/v1/
build_config_spec.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct BuildConfigSpec {
6 pub completion_deadline_seconds: Option<i64>,
8
9 pub failed_builds_history_limit: Option<i32>,
11
12 pub node_selector: std::collections::BTreeMap<String, String>,
14
15 pub output: Option<crate::api::build::v1::BuildOutput>,
17
18 pub post_commit: Option<crate::api::build::v1::BuildPostCommitSpec>,
20
21 pub resources: Option<k8s_openapi::api::core::v1::ResourceRequirements>,
23
24 pub revision: Option<crate::api::build::v1::SourceRevision>,
26
27 pub run_policy: Option<String>,
29
30 pub service_account: Option<String>,
32
33 pub source: Option<crate::api::build::v1::BuildSource>,
35
36 pub strategy: crate::api::build::v1::BuildStrategy,
38
39 pub successful_builds_history_limit: Option<i32>,
41
42 pub triggers: Vec<crate::api::build::v1::BuildTriggerPolicy>,
44}
45
46impl<'de> serde::Deserialize<'de> for BuildConfigSpec {
47 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
48 #[allow(non_camel_case_types)]
49 enum Field {
50 Key_completion_deadline_seconds,
51 Key_failed_builds_history_limit,
52 Key_node_selector,
53 Key_output,
54 Key_post_commit,
55 Key_resources,
56 Key_revision,
57 Key_run_policy,
58 Key_service_account,
59 Key_source,
60 Key_strategy,
61 Key_successful_builds_history_limit,
62 Key_triggers,
63 Other,
64 }
65
66 impl<'de> serde::Deserialize<'de> for Field {
67 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
68 struct Visitor;
69
70 impl<'de> serde::de::Visitor<'de> for Visitor {
71 type Value = Field;
72
73 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
74 f.write_str("field identifier")
75 }
76
77 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: serde::de::Error {
78 Ok(match v {
79 "completionDeadlineSeconds" => Field::Key_completion_deadline_seconds,
80 "failedBuildsHistoryLimit" => Field::Key_failed_builds_history_limit,
81 "nodeSelector" => Field::Key_node_selector,
82 "output" => Field::Key_output,
83 "postCommit" => Field::Key_post_commit,
84 "resources" => Field::Key_resources,
85 "revision" => Field::Key_revision,
86 "runPolicy" => Field::Key_run_policy,
87 "serviceAccount" => Field::Key_service_account,
88 "source" => Field::Key_source,
89 "strategy" => Field::Key_strategy,
90 "successfulBuildsHistoryLimit" => Field::Key_successful_builds_history_limit,
91 "triggers" => Field::Key_triggers,
92 _ => Field::Other,
93 })
94 }
95 }
96
97 deserializer.deserialize_identifier(Visitor)
98 }
99 }
100
101 struct Visitor;
102
103 impl<'de> serde::de::Visitor<'de> for Visitor {
104 type Value = BuildConfigSpec;
105
106 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
107 f.write_str("BuildConfigSpec")
108 }
109
110 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: serde::de::MapAccess<'de> {
111 let mut value_completion_deadline_seconds: Option<i64> = None;
112 let mut value_failed_builds_history_limit: Option<i32> = None;
113 let mut value_node_selector: Option<std::collections::BTreeMap<String, String>> = None;
114 let mut value_output: Option<crate::api::build::v1::BuildOutput> = None;
115 let mut value_post_commit: Option<crate::api::build::v1::BuildPostCommitSpec> = None;
116 let mut value_resources: Option<k8s_openapi::api::core::v1::ResourceRequirements> = None;
117 let mut value_revision: Option<crate::api::build::v1::SourceRevision> = None;
118 let mut value_run_policy: Option<String> = None;
119 let mut value_service_account: Option<String> = None;
120 let mut value_source: Option<crate::api::build::v1::BuildSource> = None;
121 let mut value_strategy: Option<crate::api::build::v1::BuildStrategy> = None;
122 let mut value_successful_builds_history_limit: Option<i32> = None;
123 let mut value_triggers: Option<Vec<crate::api::build::v1::BuildTriggerPolicy>> = None;
124
125 while let Some(key) = serde::de::MapAccess::next_key::<Field>(&mut map)? {
126 match key {
127 Field::Key_completion_deadline_seconds => value_completion_deadline_seconds = serde::de::MapAccess::next_value(&mut map)?,
128 Field::Key_failed_builds_history_limit => value_failed_builds_history_limit = serde::de::MapAccess::next_value(&mut map)?,
129 Field::Key_node_selector => value_node_selector = Some(serde::de::MapAccess::next_value(&mut map)?),
130 Field::Key_output => value_output = serde::de::MapAccess::next_value(&mut map)?,
131 Field::Key_post_commit => value_post_commit = serde::de::MapAccess::next_value(&mut map)?,
132 Field::Key_resources => value_resources = serde::de::MapAccess::next_value(&mut map)?,
133 Field::Key_revision => value_revision = serde::de::MapAccess::next_value(&mut map)?,
134 Field::Key_run_policy => value_run_policy = serde::de::MapAccess::next_value(&mut map)?,
135 Field::Key_service_account => value_service_account = serde::de::MapAccess::next_value(&mut map)?,
136 Field::Key_source => value_source = serde::de::MapAccess::next_value(&mut map)?,
137 Field::Key_strategy => value_strategy = Some(serde::de::MapAccess::next_value(&mut map)?),
138 Field::Key_successful_builds_history_limit => value_successful_builds_history_limit = serde::de::MapAccess::next_value(&mut map)?,
139 Field::Key_triggers => value_triggers = Some(serde::de::MapAccess::next_value(&mut map)?),
140 Field::Other => { let _: serde::de::IgnoredAny = serde::de::MapAccess::next_value(&mut map)?; },
141 }
142 }
143
144 Ok(BuildConfigSpec {
145 completion_deadline_seconds: value_completion_deadline_seconds,
146 failed_builds_history_limit: value_failed_builds_history_limit,
147 node_selector: value_node_selector.ok_or_else(|| serde::de::Error::missing_field("nodeSelector"))?,
148 output: value_output,
149 post_commit: value_post_commit,
150 resources: value_resources,
151 revision: value_revision,
152 run_policy: value_run_policy,
153 service_account: value_service_account,
154 source: value_source,
155 strategy: value_strategy.ok_or_else(|| serde::de::Error::missing_field("strategy"))?,
156 successful_builds_history_limit: value_successful_builds_history_limit,
157 triggers: value_triggers.ok_or_else(|| serde::de::Error::missing_field("triggers"))?,
158 })
159 }
160 }
161
162 deserializer.deserialize_struct(
163 "BuildConfigSpec",
164 &[
165 "completionDeadlineSeconds",
166 "failedBuildsHistoryLimit",
167 "nodeSelector",
168 "output",
169 "postCommit",
170 "resources",
171 "revision",
172 "runPolicy",
173 "serviceAccount",
174 "source",
175 "strategy",
176 "successfulBuildsHistoryLimit",
177 "triggers",
178 ],
179 Visitor,
180 )
181 }
182}
183
184impl serde::Serialize for BuildConfigSpec {
185 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer {
186 let mut state = serializer.serialize_struct(
187 "BuildConfigSpec",
188 3 +
189 self.completion_deadline_seconds.as_ref().map_or(0, |_| 1) +
190 self.failed_builds_history_limit.as_ref().map_or(0, |_| 1) +
191 self.output.as_ref().map_or(0, |_| 1) +
192 self.post_commit.as_ref().map_or(0, |_| 1) +
193 self.resources.as_ref().map_or(0, |_| 1) +
194 self.revision.as_ref().map_or(0, |_| 1) +
195 self.run_policy.as_ref().map_or(0, |_| 1) +
196 self.service_account.as_ref().map_or(0, |_| 1) +
197 self.source.as_ref().map_or(0, |_| 1) +
198 self.successful_builds_history_limit.as_ref().map_or(0, |_| 1),
199 )?;
200 if let Some(value) = &self.completion_deadline_seconds {
201 serde::ser::SerializeStruct::serialize_field(&mut state, "completionDeadlineSeconds", value)?;
202 }
203 if let Some(value) = &self.failed_builds_history_limit {
204 serde::ser::SerializeStruct::serialize_field(&mut state, "failedBuildsHistoryLimit", value)?;
205 }
206 serde::ser::SerializeStruct::serialize_field(&mut state, "nodeSelector", &self.node_selector)?;
207 if let Some(value) = &self.output {
208 serde::ser::SerializeStruct::serialize_field(&mut state, "output", value)?;
209 }
210 if let Some(value) = &self.post_commit {
211 serde::ser::SerializeStruct::serialize_field(&mut state, "postCommit", value)?;
212 }
213 if let Some(value) = &self.resources {
214 serde::ser::SerializeStruct::serialize_field(&mut state, "resources", value)?;
215 }
216 if let Some(value) = &self.revision {
217 serde::ser::SerializeStruct::serialize_field(&mut state, "revision", value)?;
218 }
219 if let Some(value) = &self.run_policy {
220 serde::ser::SerializeStruct::serialize_field(&mut state, "runPolicy", value)?;
221 }
222 if let Some(value) = &self.service_account {
223 serde::ser::SerializeStruct::serialize_field(&mut state, "serviceAccount", value)?;
224 }
225 if let Some(value) = &self.source {
226 serde::ser::SerializeStruct::serialize_field(&mut state, "source", value)?;
227 }
228 serde::ser::SerializeStruct::serialize_field(&mut state, "strategy", &self.strategy)?;
229 if let Some(value) = &self.successful_builds_history_limit {
230 serde::ser::SerializeStruct::serialize_field(&mut state, "successfulBuildsHistoryLimit", value)?;
231 }
232 serde::ser::SerializeStruct::serialize_field(&mut state, "triggers", &self.triggers)?;
233 serde::ser::SerializeStruct::end(state)
234 }
235}