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

1// Generated from definition io.k8s.api.resource.v1alpha2.ResourceClaimSchedulingStatus
2
3/// ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with "WaitForFirstConsumer" allocation mode.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct ResourceClaimSchedulingStatus {
6    /// Name matches the pod.spec.resourceClaims\[*\].Name field.
7    pub name: Option<std::string::String>,
8
9    /// UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.
10    ///
11    /// The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.
12    pub unsuitable_nodes: Option<std::vec::Vec<std::string::String>>,
13}
14
15impl crate::DeepMerge for ResourceClaimSchedulingStatus {
16    fn merge_from(&mut self, other: Self) {
17        crate::DeepMerge::merge_from(&mut self.name, other.name);
18        crate::merge_strategies::list::atomic(&mut self.unsuitable_nodes, other.unsuitable_nodes);
19    }
20}
21
22impl<'de> crate::serde::Deserialize<'de> for ResourceClaimSchedulingStatus {
23    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
24        #[allow(non_camel_case_types)]
25        enum Field {
26            Key_name,
27            Key_unsuitable_nodes,
28            Other,
29        }
30
31        impl<'de> crate::serde::Deserialize<'de> for Field {
32            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
33                struct Visitor;
34
35                impl crate::serde::de::Visitor<'_> for Visitor {
36                    type Value = Field;
37
38                    fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
39                        f.write_str("field identifier")
40                    }
41
42                    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
43                        Ok(match v {
44                            "name" => Field::Key_name,
45                            "unsuitableNodes" => Field::Key_unsuitable_nodes,
46                            _ => Field::Other,
47                        })
48                    }
49                }
50
51                deserializer.deserialize_identifier(Visitor)
52            }
53        }
54
55        struct Visitor;
56
57        impl<'de> crate::serde::de::Visitor<'de> for Visitor {
58            type Value = ResourceClaimSchedulingStatus;
59
60            fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
61                f.write_str("ResourceClaimSchedulingStatus")
62            }
63
64            fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
65                let mut value_name: Option<std::string::String> = None;
66                let mut value_unsuitable_nodes: Option<std::vec::Vec<std::string::String>> = None;
67
68                while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
69                    match key {
70                        Field::Key_name => value_name = crate::serde::de::MapAccess::next_value(&mut map)?,
71                        Field::Key_unsuitable_nodes => value_unsuitable_nodes = crate::serde::de::MapAccess::next_value(&mut map)?,
72                        Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
73                    }
74                }
75
76                Ok(ResourceClaimSchedulingStatus {
77                    name: value_name,
78                    unsuitable_nodes: value_unsuitable_nodes,
79                })
80            }
81        }
82
83        deserializer.deserialize_struct(
84            "ResourceClaimSchedulingStatus",
85            &[
86                "name",
87                "unsuitableNodes",
88            ],
89            Visitor,
90        )
91    }
92}
93
94impl crate::serde::Serialize for ResourceClaimSchedulingStatus {
95    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
96        let mut state = serializer.serialize_struct(
97            "ResourceClaimSchedulingStatus",
98            self.name.as_ref().map_or(0, |_| 1) +
99            self.unsuitable_nodes.as_ref().map_or(0, |_| 1),
100        )?;
101        if let Some(value) = &self.name {
102            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "name", value)?;
103        }
104        if let Some(value) = &self.unsuitable_nodes {
105            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "unsuitableNodes", value)?;
106        }
107        crate::serde::ser::SerializeStruct::end(state)
108    }
109}
110
111#[cfg(feature = "schemars")]
112impl crate::schemars::JsonSchema for ResourceClaimSchedulingStatus {
113    fn schema_name() -> std::borrow::Cow<'static, str> {
114        "io.k8s.api.resource.v1alpha2.ResourceClaimSchedulingStatus".into()
115    }
116
117    fn json_schema(__gen: &mut crate::schemars::SchemaGenerator) -> crate::schemars::Schema {
118        crate::schemars::json_schema!({
119            "description": "ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with \"WaitForFirstConsumer\" allocation mode.",
120            "type": "object",
121            "properties": {
122                "name": {
123                    "description": "Name matches the pod.spec.resourceClaims[*].Name field.",
124                    "type": "string",
125                },
126                "unsuitableNodes": {
127                    "description": "UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.\n\nThe size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.",
128                    "type": "array",
129                    "items": {
130                        "type": "string",
131                    },
132                },
133            },
134        })
135    }
136}