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

1// Generated from definition io.k8s.api.resource.v1alpha2.NamedResourcesRequest
2
3/// NamedResourcesRequest is used in ResourceRequestModel.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct NamedResourcesRequest {
6    /// Selector is a CEL expression which must evaluate to true if a resource instance is suitable. The language is as defined in https://kubernetes.io/docs/reference/using-api/cel/
7    ///
8    /// In addition, for each type NamedResourcesin AttributeValue there is a map that resolves to the corresponding value of the instance under evaluation. For example:
9    ///
10    ///    attributes.quantity\["a"\].isGreaterThan(quantity("0")) &&
11    ///    attributes.stringslice\["b"\].isSorted()
12    pub selector: std::string::String,
13}
14
15impl crate::DeepMerge for NamedResourcesRequest {
16    fn merge_from(&mut self, other: Self) {
17        crate::DeepMerge::merge_from(&mut self.selector, other.selector);
18    }
19}
20
21impl<'de> crate::serde::Deserialize<'de> for NamedResourcesRequest {
22    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
23        #[allow(non_camel_case_types)]
24        enum Field {
25            Key_selector,
26            Other,
27        }
28
29        impl<'de> crate::serde::Deserialize<'de> for Field {
30            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
31                struct Visitor;
32
33                impl crate::serde::de::Visitor<'_> for Visitor {
34                    type Value = Field;
35
36                    fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
37                        f.write_str("field identifier")
38                    }
39
40                    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
41                        Ok(match v {
42                            "selector" => Field::Key_selector,
43                            _ => Field::Other,
44                        })
45                    }
46                }
47
48                deserializer.deserialize_identifier(Visitor)
49            }
50        }
51
52        struct Visitor;
53
54        impl<'de> crate::serde::de::Visitor<'de> for Visitor {
55            type Value = NamedResourcesRequest;
56
57            fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
58                f.write_str("NamedResourcesRequest")
59            }
60
61            fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
62                let mut value_selector: Option<std::string::String> = None;
63
64                while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
65                    match key {
66                        Field::Key_selector => value_selector = crate::serde::de::MapAccess::next_value(&mut map)?,
67                        Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
68                    }
69                }
70
71                Ok(NamedResourcesRequest {
72                    selector: value_selector.unwrap_or_default(),
73                })
74            }
75        }
76
77        deserializer.deserialize_struct(
78            "NamedResourcesRequest",
79            &[
80                "selector",
81            ],
82            Visitor,
83        )
84    }
85}
86
87impl crate::serde::Serialize for NamedResourcesRequest {
88    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
89        let mut state = serializer.serialize_struct(
90            "NamedResourcesRequest",
91            1,
92        )?;
93        crate::serde::ser::SerializeStruct::serialize_field(&mut state, "selector", &self.selector)?;
94        crate::serde::ser::SerializeStruct::end(state)
95    }
96}
97
98#[cfg(feature = "schemars")]
99impl crate::schemars::JsonSchema for NamedResourcesRequest {
100    fn schema_name() -> std::borrow::Cow<'static, str> {
101        "io.k8s.api.resource.v1alpha2.NamedResourcesRequest".into()
102    }
103
104    fn json_schema(__gen: &mut crate::schemars::SchemaGenerator) -> crate::schemars::Schema {
105        crate::schemars::json_schema!({
106            "description": "NamedResourcesRequest is used in ResourceRequestModel.",
107            "type": "object",
108            "properties": {
109                "selector": {
110                    "description": "Selector is a CEL expression which must evaluate to true if a resource instance is suitable. The language is as defined in https://kubernetes.io/docs/reference/using-api/cel/\n\nIn addition, for each type NamedResourcesin AttributeValue there is a map that resolves to the corresponding value of the instance under evaluation. For example:\n\n   attributes.quantity[\"a\"].isGreaterThan(quantity(\"0\")) &&\n   attributes.stringslice[\"b\"].isSorted()",
111                    "type": "string",
112                },
113            },
114            "required": [
115                "selector",
116            ],
117        })
118    }
119}