Skip to main content

k8s_openapi/v1_36/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::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}
115
116#[cfg(feature = "schemars08")]
117impl crate::schemars08::JsonSchema for VolumeNodeResources {
118    fn schema_name() -> std::string::String {
119        "io.k8s.api.storage.v1.VolumeNodeResources".into()
120    }
121
122    fn json_schema(__gen: &mut crate::schemars08::gen::SchemaGenerator) -> crate::schemars08::schema::Schema {
123        crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
124            metadata: Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
125                description: Some("VolumeNodeResources is a set of resource limits for scheduling of volumes.".into()),
126                ..Default::default()
127            })),
128            instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::Object))),
129            object: Some(std::boxed::Box::new(crate::schemars08::schema::ObjectValidation {
130                properties: [
131                    (
132                        "count".into(),
133                        crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
134                            metadata: Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
135                                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()),
136                                ..Default::default()
137                            })),
138                            instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::Integer))),
139                            format: Some("int32".into()),
140                            ..Default::default()
141                        }),
142                    ),
143                ].into(),
144                ..Default::default()
145            })),
146            ..Default::default()
147        })
148    }
149}