k8s_openapi/v1_30/api/resource/v1alpha2/
named_resources_attribute.rs

1// Generated from definition io.k8s.api.resource.v1alpha2.NamedResourcesAttribute
2
3/// NamedResourcesAttribute is a combination of an attribute name and its value.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct NamedResourcesAttribute {
6    /// BoolValue is a true/false value.
7    pub bool: Option<bool>,
8
9    /// IntValue is a 64-bit integer.
10    pub int: Option<i64>,
11
12    /// IntSliceValue is an array of 64-bit integers.
13    pub int_slice: Option<crate::api::resource::v1alpha2::NamedResourcesIntSlice>,
14
15    /// Name is unique identifier among all resource instances managed by the driver on the node. It must be a DNS subdomain.
16    pub name: std::string::String,
17
18    /// QuantityValue is a quantity.
19    pub quantity: Option<crate::apimachinery::pkg::api::resource::Quantity>,
20
21    /// StringValue is a string.
22    pub string: Option<std::string::String>,
23
24    /// StringSliceValue is an array of strings.
25    pub string_slice: Option<crate::api::resource::v1alpha2::NamedResourcesStringSlice>,
26
27    /// VersionValue is a semantic version according to semver.org spec 2.0.0.
28    pub version: Option<std::string::String>,
29}
30
31impl crate::DeepMerge for NamedResourcesAttribute {
32    fn merge_from(&mut self, other: Self) {
33        crate::DeepMerge::merge_from(&mut self.bool, other.bool);
34        crate::DeepMerge::merge_from(&mut self.int, other.int);
35        crate::DeepMerge::merge_from(&mut self.int_slice, other.int_slice);
36        crate::DeepMerge::merge_from(&mut self.name, other.name);
37        crate::DeepMerge::merge_from(&mut self.quantity, other.quantity);
38        crate::DeepMerge::merge_from(&mut self.string, other.string);
39        crate::DeepMerge::merge_from(&mut self.string_slice, other.string_slice);
40        crate::DeepMerge::merge_from(&mut self.version, other.version);
41    }
42}
43
44impl<'de> crate::serde::Deserialize<'de> for NamedResourcesAttribute {
45    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
46        #[allow(non_camel_case_types)]
47        enum Field {
48            Key_bool,
49            Key_int,
50            Key_int_slice,
51            Key_name,
52            Key_quantity,
53            Key_string,
54            Key_string_slice,
55            Key_version,
56            Other,
57        }
58
59        impl<'de> crate::serde::Deserialize<'de> for Field {
60            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
61                struct Visitor;
62
63                impl crate::serde::de::Visitor<'_> for Visitor {
64                    type Value = Field;
65
66                    fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
67                        f.write_str("field identifier")
68                    }
69
70                    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
71                        Ok(match v {
72                            "bool" => Field::Key_bool,
73                            "int" => Field::Key_int,
74                            "intSlice" => Field::Key_int_slice,
75                            "name" => Field::Key_name,
76                            "quantity" => Field::Key_quantity,
77                            "string" => Field::Key_string,
78                            "stringSlice" => Field::Key_string_slice,
79                            "version" => Field::Key_version,
80                            _ => Field::Other,
81                        })
82                    }
83                }
84
85                deserializer.deserialize_identifier(Visitor)
86            }
87        }
88
89        struct Visitor;
90
91        impl<'de> crate::serde::de::Visitor<'de> for Visitor {
92            type Value = NamedResourcesAttribute;
93
94            fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
95                f.write_str("NamedResourcesAttribute")
96            }
97
98            fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
99                let mut value_bool: Option<bool> = None;
100                let mut value_int: Option<i64> = None;
101                let mut value_int_slice: Option<crate::api::resource::v1alpha2::NamedResourcesIntSlice> = None;
102                let mut value_name: Option<std::string::String> = None;
103                let mut value_quantity: Option<crate::apimachinery::pkg::api::resource::Quantity> = None;
104                let mut value_string: Option<std::string::String> = None;
105                let mut value_string_slice: Option<crate::api::resource::v1alpha2::NamedResourcesStringSlice> = None;
106                let mut value_version: Option<std::string::String> = None;
107
108                while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
109                    match key {
110                        Field::Key_bool => value_bool = crate::serde::de::MapAccess::next_value(&mut map)?,
111                        Field::Key_int => value_int = crate::serde::de::MapAccess::next_value(&mut map)?,
112                        Field::Key_int_slice => value_int_slice = crate::serde::de::MapAccess::next_value(&mut map)?,
113                        Field::Key_name => value_name = crate::serde::de::MapAccess::next_value(&mut map)?,
114                        Field::Key_quantity => value_quantity = crate::serde::de::MapAccess::next_value(&mut map)?,
115                        Field::Key_string => value_string = crate::serde::de::MapAccess::next_value(&mut map)?,
116                        Field::Key_string_slice => value_string_slice = crate::serde::de::MapAccess::next_value(&mut map)?,
117                        Field::Key_version => value_version = crate::serde::de::MapAccess::next_value(&mut map)?,
118                        Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
119                    }
120                }
121
122                Ok(NamedResourcesAttribute {
123                    bool: value_bool,
124                    int: value_int,
125                    int_slice: value_int_slice,
126                    name: value_name.unwrap_or_default(),
127                    quantity: value_quantity,
128                    string: value_string,
129                    string_slice: value_string_slice,
130                    version: value_version,
131                })
132            }
133        }
134
135        deserializer.deserialize_struct(
136            "NamedResourcesAttribute",
137            &[
138                "bool",
139                "int",
140                "intSlice",
141                "name",
142                "quantity",
143                "string",
144                "stringSlice",
145                "version",
146            ],
147            Visitor,
148        )
149    }
150}
151
152impl crate::serde::Serialize for NamedResourcesAttribute {
153    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
154        let mut state = serializer.serialize_struct(
155            "NamedResourcesAttribute",
156            1 +
157            self.bool.as_ref().map_or(0, |_| 1) +
158            self.int.as_ref().map_or(0, |_| 1) +
159            self.int_slice.as_ref().map_or(0, |_| 1) +
160            self.quantity.as_ref().map_or(0, |_| 1) +
161            self.string.as_ref().map_or(0, |_| 1) +
162            self.string_slice.as_ref().map_or(0, |_| 1) +
163            self.version.as_ref().map_or(0, |_| 1),
164        )?;
165        if let Some(value) = &self.bool {
166            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "bool", value)?;
167        }
168        if let Some(value) = &self.int {
169            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "int", value)?;
170        }
171        if let Some(value) = &self.int_slice {
172            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "intSlice", value)?;
173        }
174        crate::serde::ser::SerializeStruct::serialize_field(&mut state, "name", &self.name)?;
175        if let Some(value) = &self.quantity {
176            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "quantity", value)?;
177        }
178        if let Some(value) = &self.string {
179            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "string", value)?;
180        }
181        if let Some(value) = &self.string_slice {
182            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "stringSlice", value)?;
183        }
184        if let Some(value) = &self.version {
185            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "version", value)?;
186        }
187        crate::serde::ser::SerializeStruct::end(state)
188    }
189}
190
191#[cfg(feature = "schemars")]
192impl crate::schemars::JsonSchema for NamedResourcesAttribute {
193    fn schema_name() -> std::borrow::Cow<'static, str> {
194        "io.k8s.api.resource.v1alpha2.NamedResourcesAttribute".into()
195    }
196
197    fn json_schema(__gen: &mut crate::schemars::SchemaGenerator) -> crate::schemars::Schema {
198        crate::schemars::json_schema!({
199            "description": "NamedResourcesAttribute is a combination of an attribute name and its value.",
200            "type": "object",
201            "properties": {
202                "bool": {
203                    "description": "BoolValue is a true/false value.",
204                    "type": "boolean",
205                },
206                "int": {
207                    "description": "IntValue is a 64-bit integer.",
208                    "type": "integer",
209                    "format": "int64",
210                },
211                "intSlice": ({
212                    let mut schema_obj = __gen.subschema_for::<crate::api::resource::v1alpha2::NamedResourcesIntSlice>();
213                    schema_obj.ensure_object().insert("description".into(), "IntSliceValue is an array of 64-bit integers.".into());
214                    schema_obj
215                }),
216                "name": {
217                    "description": "Name is unique identifier among all resource instances managed by the driver on the node. It must be a DNS subdomain.",
218                    "type": "string",
219                },
220                "quantity": ({
221                    let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::api::resource::Quantity>();
222                    schema_obj.ensure_object().insert("description".into(), "QuantityValue is a quantity.".into());
223                    schema_obj
224                }),
225                "string": {
226                    "description": "StringValue is a string.",
227                    "type": "string",
228                },
229                "stringSlice": ({
230                    let mut schema_obj = __gen.subschema_for::<crate::api::resource::v1alpha2::NamedResourcesStringSlice>();
231                    schema_obj.ensure_object().insert("description".into(), "StringSliceValue is an array of strings.".into());
232                    schema_obj
233                }),
234                "version": {
235                    "description": "VersionValue is a semantic version according to semver.org spec 2.0.0.",
236                    "type": "string",
237                },
238            },
239            "required": [
240                "name",
241            ],
242        })
243    }
244}