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