k8s_openapi/v1_30/api/resource/v1alpha2/
named_resources_attribute.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct NamedResourcesAttribute {
6 pub bool: Option<bool>,
8
9 pub int: Option<i64>,
11
12 pub int_slice: Option<crate::api::resource::v1alpha2::NamedResourcesIntSlice>,
14
15 pub name: std::string::String,
17
18 pub quantity: Option<crate::apimachinery::pkg::api::resource::Quantity>,
20
21 pub string: Option<std::string::String>,
23
24 pub string_slice: Option<crate::api::resource::v1alpha2::NamedResourcesStringSlice>,
26
27 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}