openshift_openapi/v4_5/api/build/v1/
build_trigger_cause.rs

1// Generated from definition com.github.openshift.api.build.v1.BuildTriggerCause
2
3/// BuildTriggerCause holds information about a triggered build. It is used for displaying build trigger data for each build and build configuration in oc describe. It is also used to describe which triggers led to the most recent update in the build configuration.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct BuildTriggerCause {
6    /// BitbucketWebHook represents data for a Bitbucket webhook that fired a specific build.
7    pub bitbucket_web_hook: Option<crate::api::build::v1::BitbucketWebHookCause>,
8
9    /// genericWebHook holds data about a builds generic webhook trigger.
10    pub generic_web_hook: Option<crate::api::build::v1::GenericWebHookCause>,
11
12    /// gitHubWebHook represents data for a GitHub webhook that fired a specific build.
13    pub github_web_hook: Option<crate::api::build::v1::GitHubWebHookCause>,
14
15    /// GitLabWebHook represents data for a GitLab webhook that fired a specific build.
16    pub gitlab_web_hook: Option<crate::api::build::v1::GitLabWebHookCause>,
17
18    /// imageChangeBuild stores information about an imagechange event that triggered a new build.
19    pub image_change_build: Option<crate::api::build::v1::ImageChangeCause>,
20
21    /// message is used to store a human readable message for why the build was triggered. E.g.: "Manually triggered by user", "Configuration change",etc.
22    pub message: Option<String>,
23}
24
25impl<'de> serde::Deserialize<'de> for BuildTriggerCause {
26    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
27        #[allow(non_camel_case_types)]
28        enum Field {
29            Key_bitbucket_web_hook,
30            Key_generic_web_hook,
31            Key_github_web_hook,
32            Key_gitlab_web_hook,
33            Key_image_change_build,
34            Key_message,
35            Other,
36        }
37
38        impl<'de> serde::Deserialize<'de> for Field {
39            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
40                struct Visitor;
41
42                impl<'de> serde::de::Visitor<'de> for Visitor {
43                    type Value = Field;
44
45                    fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
46                        f.write_str("field identifier")
47                    }
48
49                    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: serde::de::Error {
50                        Ok(match v {
51                            "bitbucketWebHook" => Field::Key_bitbucket_web_hook,
52                            "genericWebHook" => Field::Key_generic_web_hook,
53                            "githubWebHook" => Field::Key_github_web_hook,
54                            "gitlabWebHook" => Field::Key_gitlab_web_hook,
55                            "imageChangeBuild" => Field::Key_image_change_build,
56                            "message" => Field::Key_message,
57                            _ => Field::Other,
58                        })
59                    }
60                }
61
62                deserializer.deserialize_identifier(Visitor)
63            }
64        }
65
66        struct Visitor;
67
68        impl<'de> serde::de::Visitor<'de> for Visitor {
69            type Value = BuildTriggerCause;
70
71            fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
72                f.write_str("BuildTriggerCause")
73            }
74
75            fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: serde::de::MapAccess<'de> {
76                let mut value_bitbucket_web_hook: Option<crate::api::build::v1::BitbucketWebHookCause> = None;
77                let mut value_generic_web_hook: Option<crate::api::build::v1::GenericWebHookCause> = None;
78                let mut value_github_web_hook: Option<crate::api::build::v1::GitHubWebHookCause> = None;
79                let mut value_gitlab_web_hook: Option<crate::api::build::v1::GitLabWebHookCause> = None;
80                let mut value_image_change_build: Option<crate::api::build::v1::ImageChangeCause> = None;
81                let mut value_message: Option<String> = None;
82
83                while let Some(key) = serde::de::MapAccess::next_key::<Field>(&mut map)? {
84                    match key {
85                        Field::Key_bitbucket_web_hook => value_bitbucket_web_hook = serde::de::MapAccess::next_value(&mut map)?,
86                        Field::Key_generic_web_hook => value_generic_web_hook = serde::de::MapAccess::next_value(&mut map)?,
87                        Field::Key_github_web_hook => value_github_web_hook = serde::de::MapAccess::next_value(&mut map)?,
88                        Field::Key_gitlab_web_hook => value_gitlab_web_hook = serde::de::MapAccess::next_value(&mut map)?,
89                        Field::Key_image_change_build => value_image_change_build = serde::de::MapAccess::next_value(&mut map)?,
90                        Field::Key_message => value_message = serde::de::MapAccess::next_value(&mut map)?,
91                        Field::Other => { let _: serde::de::IgnoredAny = serde::de::MapAccess::next_value(&mut map)?; },
92                    }
93                }
94
95                Ok(BuildTriggerCause {
96                    bitbucket_web_hook: value_bitbucket_web_hook,
97                    generic_web_hook: value_generic_web_hook,
98                    github_web_hook: value_github_web_hook,
99                    gitlab_web_hook: value_gitlab_web_hook,
100                    image_change_build: value_image_change_build,
101                    message: value_message,
102                })
103            }
104        }
105
106        deserializer.deserialize_struct(
107            "BuildTriggerCause",
108            &[
109                "bitbucketWebHook",
110                "genericWebHook",
111                "githubWebHook",
112                "gitlabWebHook",
113                "imageChangeBuild",
114                "message",
115            ],
116            Visitor,
117        )
118    }
119}
120
121impl serde::Serialize for BuildTriggerCause {
122    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer {
123        let mut state = serializer.serialize_struct(
124            "BuildTriggerCause",
125            self.bitbucket_web_hook.as_ref().map_or(0, |_| 1) +
126            self.generic_web_hook.as_ref().map_or(0, |_| 1) +
127            self.github_web_hook.as_ref().map_or(0, |_| 1) +
128            self.gitlab_web_hook.as_ref().map_or(0, |_| 1) +
129            self.image_change_build.as_ref().map_or(0, |_| 1) +
130            self.message.as_ref().map_or(0, |_| 1),
131        )?;
132        if let Some(value) = &self.bitbucket_web_hook {
133            serde::ser::SerializeStruct::serialize_field(&mut state, "bitbucketWebHook", value)?;
134        }
135        if let Some(value) = &self.generic_web_hook {
136            serde::ser::SerializeStruct::serialize_field(&mut state, "genericWebHook", value)?;
137        }
138        if let Some(value) = &self.github_web_hook {
139            serde::ser::SerializeStruct::serialize_field(&mut state, "githubWebHook", value)?;
140        }
141        if let Some(value) = &self.gitlab_web_hook {
142            serde::ser::SerializeStruct::serialize_field(&mut state, "gitlabWebHook", value)?;
143        }
144        if let Some(value) = &self.image_change_build {
145            serde::ser::SerializeStruct::serialize_field(&mut state, "imageChangeBuild", value)?;
146        }
147        if let Some(value) = &self.message {
148            serde::ser::SerializeStruct::serialize_field(&mut state, "message", value)?;
149        }
150        serde::ser::SerializeStruct::end(state)
151    }
152}