1// Generated from definition io.k8s.api.resource.v1beta1.OpaqueDeviceConfiguration
23/// OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct OpaqueDeviceConfiguration {
6/// Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.
7 ///
8 /// An admission policy provided by the driver developer could use this to decide whether it needs to validate them.
9 ///
10 /// Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.
11pub driver: std::string::String,
1213/// Parameters can contain arbitrary data. It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version ("kind" + "apiVersion" for Kubernetes types), with conversion between different versions.
14 ///
15 /// The length of the raw data must be smaller or equal to 10 Ki.
16pub parameters: crate::apimachinery::pkg::runtime::RawExtension,
17}
1819impl crate::DeepMerge for OpaqueDeviceConfiguration {
20fn merge_from(&mut self, other: Self) {
21crate::DeepMerge::merge_from(&mut self.driver, other.driver);
22crate::DeepMerge::merge_from(&mut self.parameters, other.parameters);
23 }
24}
2526impl<'de> crate::serde::Deserialize<'de> for OpaqueDeviceConfiguration {
27fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
28#[allow(non_camel_case_types)]
29enum Field {
30 Key_driver,
31 Key_parameters,
32 Other,
33 }
3435impl<'de> crate::serde::Deserialize<'de> for Field {
36fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
37struct Visitor;
3839impl crate::serde::de::Visitor<'_> for Visitor {
40type Value = Field;
4142fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
43 f.write_str("field identifier")
44 }
4546fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
47Ok(match v {
48"driver" => Field::Key_driver,
49"parameters" => Field::Key_parameters,
50_ => Field::Other,
51 })
52 }
53 }
5455 deserializer.deserialize_identifier(Visitor)
56 }
57 }
5859struct Visitor;
6061impl<'de> crate::serde::de::Visitor<'de> for Visitor {
62type Value = OpaqueDeviceConfiguration;
6364fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
65 f.write_str("OpaqueDeviceConfiguration")
66 }
6768fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
69let mut value_driver: Option<std::string::String> = None;
70let mut value_parameters: Option<crate::apimachinery::pkg::runtime::RawExtension> = None;
7172while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
73match key {
74 Field::Key_driver => value_driver = crate::serde::de::MapAccess::next_value(&mut map)?,
75 Field::Key_parameters => value_parameters = crate::serde::de::MapAccess::next_value(&mut map)?,
76 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
77 }
78 }
7980Ok(OpaqueDeviceConfiguration {
81 driver: value_driver.unwrap_or_default(),
82 parameters: value_parameters.unwrap_or_default(),
83 })
84 }
85 }
8687 deserializer.deserialize_struct(
88"OpaqueDeviceConfiguration",
89&[
90"driver",
91"parameters",
92 ],
93 Visitor,
94 )
95 }
96}
9798impl crate::serde::Serialize for OpaqueDeviceConfiguration {
99fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
100let mut state = serializer.serialize_struct(
101"OpaqueDeviceConfiguration",
1022,
103 )?;
104crate::serde::ser::SerializeStruct::serialize_field(&mut state, "driver", &self.driver)?;
105crate::serde::ser::SerializeStruct::serialize_field(&mut state, "parameters", &self.parameters)?;
106crate::serde::ser::SerializeStruct::end(state)
107 }
108}
109110#[cfg(feature = "schemars")]
111impl crate::schemars::JsonSchema for OpaqueDeviceConfiguration {
112fn schema_name() -> std::string::String {
113"io.k8s.api.resource.v1beta1.OpaqueDeviceConfiguration".into()
114 }
115116fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
117crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
118 metadata: Some(std::boxed::Box::new(crate::schemars::schema::Metadata {
119 description: Some("OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.".into()),
120 ..Default::default()
121 })),
122 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::Object))),
123 object: Some(std::boxed::Box::new(crate::schemars::schema::ObjectValidation {
124 properties: [
125 (
126"driver".into(),
127crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
128 metadata: Some(std::boxed::Box::new(crate::schemars::schema::Metadata {
129 description: Some("Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.\n\nAn admission policy provided by the driver developer could use this to decide whether it needs to validate them.\n\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.".into()),
130 ..Default::default()
131 })),
132 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::String))),
133 ..Default::default()
134 }),
135 ),
136 (
137"parameters".into(),
138 {
139let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::runtime::RawExtension>().into_object();
140 schema_obj.metadata = Some(std::boxed::Box::new(crate::schemars::schema::Metadata {
141 description: Some("Parameters can contain arbitrary data. It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version (\"kind\" + \"apiVersion\" for Kubernetes types), with conversion between different versions.\n\nThe length of the raw data must be smaller or equal to 10 Ki.".into()),
142 ..Default::default()
143 }));
144crate::schemars::schema::Schema::Object(schema_obj)
145 },
146 ),
147 ].into(),
148 required: [
149"driver".into(),
150"parameters".into(),
151 ].into(),
152 ..Default::default()
153 })),
154 ..Default::default()
155 })
156 }
157}