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: 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<'de> crate::serde::de::Visitor<'de> for Visitor {
34                    type Value = Field;
35
36                    fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::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 std::fmt::Formatter<'_>) -> std::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<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() -> String {
101        "io.k8s.api.resource.v1alpha2.NamedResourcesRequest".to_owned()
102    }
103
104    fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
105        crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
106            metadata: Some(Box::new(crate::schemars::schema::Metadata {
107                description: Some("NamedResourcesRequest is used in ResourceRequestModel.".to_owned()),
108                ..Default::default()
109            })),
110            instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Object))),
111            object: Some(Box::new(crate::schemars::schema::ObjectValidation {
112                properties: [
113                    (
114                        "selector".to_owned(),
115                        crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
116                            metadata: Some(Box::new(crate::schemars::schema::Metadata {
117                                description: Some("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()".to_owned()),
118                                ..Default::default()
119                            })),
120                            instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
121                            ..Default::default()
122                        }),
123                    ),
124                ].into(),
125                required: [
126                    "selector".to_owned(),
127                ].into(),
128                ..Default::default()
129            })),
130            ..Default::default()
131        })
132    }
133}