k8s_openapi/v1_34/api/storage/v1/
volume_node_resources.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct VolumeNodeResources {
6 pub count: Option<i32>,
8}
9
10impl crate::DeepMerge for VolumeNodeResources {
11 fn merge_from(&mut self, other: Self) {
12 crate::DeepMerge::merge_from(&mut self.count, other.count);
13 }
14}
15
16impl<'de> crate::serde::Deserialize<'de> for VolumeNodeResources {
17 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
18 #[allow(non_camel_case_types)]
19 enum Field {
20 Key_count,
21 Other,
22 }
23
24 impl<'de> crate::serde::Deserialize<'de> for Field {
25 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
26 struct Visitor;
27
28 impl crate::serde::de::Visitor<'_> for Visitor {
29 type Value = Field;
30
31 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
32 f.write_str("field identifier")
33 }
34
35 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
36 Ok(match v {
37 "count" => Field::Key_count,
38 _ => Field::Other,
39 })
40 }
41 }
42
43 deserializer.deserialize_identifier(Visitor)
44 }
45 }
46
47 struct Visitor;
48
49 impl<'de> crate::serde::de::Visitor<'de> for Visitor {
50 type Value = VolumeNodeResources;
51
52 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
53 f.write_str("VolumeNodeResources")
54 }
55
56 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
57 let mut value_count: Option<i32> = None;
58
59 while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
60 match key {
61 Field::Key_count => value_count = crate::serde::de::MapAccess::next_value(&mut map)?,
62 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
63 }
64 }
65
66 Ok(VolumeNodeResources {
67 count: value_count,
68 })
69 }
70 }
71
72 deserializer.deserialize_struct(
73 "VolumeNodeResources",
74 &[
75 "count",
76 ],
77 Visitor,
78 )
79 }
80}
81
82impl crate::serde::Serialize for VolumeNodeResources {
83 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
84 let mut state = serializer.serialize_struct(
85 "VolumeNodeResources",
86 self.count.as_ref().map_or(0, |_| 1),
87 )?;
88 if let Some(value) = &self.count {
89 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "count", value)?;
90 }
91 crate::serde::ser::SerializeStruct::end(state)
92 }
93}
94
95#[cfg(feature = "schemars")]
96impl crate::schemars::JsonSchema for VolumeNodeResources {
97 fn schema_name() -> std::borrow::Cow<'static, str> {
98 "io.k8s.api.storage.v1.VolumeNodeResources".into()
99 }
100
101 fn json_schema(__gen: &mut crate::schemars::SchemaGenerator) -> crate::schemars::Schema {
102 crate::schemars::json_schema!({
103 "description": "VolumeNodeResources is a set of resource limits for scheduling of volumes.",
104 "type": "object",
105 "properties": {
106 "count": {
107 "description": "count indicates the maximum number of unique volumes managed by the CSI driver that can be used on a node. A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is not specified, then the supported number of volumes on this node is unbounded.",
108 "type": "integer",
109 "format": "int32",
110 },
111 },
112 })
113 }
114}