k8s_openapi/v1_33/api/storage/v1/
volume_node_resources.rs

1// Generated from definition io.k8s.api.storage.v1.VolumeNodeResources
2
3/// VolumeNodeResources is a set of resource limits for scheduling of volumes.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct VolumeNodeResources {
6    /// 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.
7    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::string::String {
98        "io.k8s.api.storage.v1.VolumeNodeResources".into()
99    }
100
101    fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
102        crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
103            metadata: Some(std::boxed::Box::new(crate::schemars::schema::Metadata {
104                description: Some("VolumeNodeResources is a set of resource limits for scheduling of volumes.".into()),
105                ..Default::default()
106            })),
107            instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::Object))),
108            object: Some(std::boxed::Box::new(crate::schemars::schema::ObjectValidation {
109                properties: [
110                    (
111                        "count".into(),
112                        crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
113                            metadata: Some(std::boxed::Box::new(crate::schemars::schema::Metadata {
114                                description: Some("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.".into()),
115                                ..Default::default()
116                            })),
117                            instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::Integer))),
118                            format: Some("int32".into()),
119                            ..Default::default()
120                        }),
121                    ),
122                ].into(),
123                ..Default::default()
124            })),
125            ..Default::default()
126        })
127    }
128}