openshift_openapi/v4_5/api/project/v1/
project.rs1#[derive(Clone, Debug, Default, PartialEq)]
9pub struct Project {
10 pub metadata: k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta,
12
13 pub spec: Option<crate::api::project::v1::ProjectSpec>,
15
16 pub status: Option<crate::api::project::v1::ProjectStatus>,
18}
19
20impl Project {
25 #[cfg(feature = "api")]
37 pub fn create_project(
38 body: &crate::api::project::v1::Project,
39 optional: k8s_openapi::CreateOptional<'_>,
40 ) -> Result<(http::Request<Vec<u8>>, fn(http::StatusCode) -> k8s_openapi::ResponseBody<k8s_openapi::CreateResponse<Self>>), k8s_openapi::RequestError> {
41 let __url = "/apis/project.openshift.io/v1/projects?".to_owned();
42 let mut __query_pairs = k8s_openapi::url::form_urlencoded::Serializer::new(__url);
43 optional.__serialize(&mut __query_pairs);
44 let __url = __query_pairs.finish();
45
46 let __request = http::Request::post(__url);
47 let __body = serde_json::to_vec(body).map_err(k8s_openapi::RequestError::Json)?;
48 let __request = __request.header(http::header::CONTENT_TYPE, http::header::HeaderValue::from_static("application/json"));
49 match __request.body(__body) {
50 Ok(request) => Ok((request, k8s_openapi::ResponseBody::new)),
51 Err(err) => Err(k8s_openapi::RequestError::Http(err)),
52 }
53 }
54}
55
56impl Project {
59 #[cfg(feature = "api")]
73 pub fn delete_project(
74 name: &str,
75 optional: k8s_openapi::DeleteOptional<'_>,
76 ) -> Result<(http::Request<Vec<u8>>, fn(http::StatusCode) -> k8s_openapi::ResponseBody<k8s_openapi::DeleteResponse<Self>>), k8s_openapi::RequestError> {
77 let __url = format!("/apis/project.openshift.io/v1/projects/{name}",
78 name = k8s_openapi::percent_encoding::percent_encode(name.as_bytes(), k8s_openapi::percent_encoding2::PATH_SEGMENT_ENCODE_SET),
79 );
80
81 let __request = http::Request::delete(__url);
82 let __body = serde_json::to_vec(&optional).map_err(k8s_openapi::RequestError::Json)?;
83 let __request = __request.header(http::header::CONTENT_TYPE, http::header::HeaderValue::from_static("application/json"));
84 match __request.body(__body) {
85 Ok(request) => Ok((request, k8s_openapi::ResponseBody::new)),
86 Err(err) => Err(k8s_openapi::RequestError::Http(err)),
87 }
88 }
89}
90
91impl Project {
94 #[cfg(feature = "api")]
106 pub fn list_project(
107 optional: k8s_openapi::ListOptional<'_>,
108 ) -> Result<(http::Request<Vec<u8>>, fn(http::StatusCode) -> k8s_openapi::ResponseBody<k8s_openapi::ListResponse<Self>>), k8s_openapi::RequestError> {
109 let __url = "/apis/project.openshift.io/v1/projects?".to_owned();
110 let mut __query_pairs = k8s_openapi::url::form_urlencoded::Serializer::new(__url);
111 optional.__serialize(&mut __query_pairs);
112 let __url = __query_pairs.finish();
113
114 let __request = http::Request::get(__url);
115 let __body = vec![];
116 match __request.body(__body) {
117 Ok(request) => Ok((request, k8s_openapi::ResponseBody::new)),
118 Err(err) => Err(k8s_openapi::RequestError::Http(err)),
119 }
120 }
121}
122
123impl Project {
126 #[cfg(feature = "api")]
142 pub fn patch_project(
143 name: &str,
144 body: &k8s_openapi::apimachinery::pkg::apis::meta::v1::Patch,
145 optional: k8s_openapi::PatchOptional<'_>,
146 ) -> Result<(http::Request<Vec<u8>>, fn(http::StatusCode) -> k8s_openapi::ResponseBody<k8s_openapi::PatchResponse<Self>>), k8s_openapi::RequestError> {
147 let __url = format!("/apis/project.openshift.io/v1/projects/{name}?",
148 name = k8s_openapi::percent_encoding::percent_encode(name.as_bytes(), k8s_openapi::percent_encoding2::PATH_SEGMENT_ENCODE_SET),
149 );
150 let mut __query_pairs = k8s_openapi::url::form_urlencoded::Serializer::new(__url);
151 optional.__serialize(&mut __query_pairs);
152 let __url = __query_pairs.finish();
153
154 let __request = http::Request::patch(__url);
155 let __body = serde_json::to_vec(body).map_err(k8s_openapi::RequestError::Json)?;
156 let __request = __request.header(http::header::CONTENT_TYPE, http::header::HeaderValue::from_static(match body {
157 k8s_openapi::apimachinery::pkg::apis::meta::v1::Patch::Json(_) => "application/json-patch+json",
158 k8s_openapi::apimachinery::pkg::apis::meta::v1::Patch::Merge(_) => "application/merge-patch+json",
159 k8s_openapi::apimachinery::pkg::apis::meta::v1::Patch::StrategicMerge(_) => "application/strategic-merge-patch+json",
160 }));
161 match __request.body(__body) {
162 Ok(request) => Ok((request, k8s_openapi::ResponseBody::new)),
163 Err(err) => Err(k8s_openapi::RequestError::Http(err)),
164 }
165 }
166}
167
168impl Project {
171 #[cfg(feature = "api")]
185 pub fn read_project(
186 name: &str,
187 optional: ReadProjectOptional<'_>,
188 ) -> Result<(http::Request<Vec<u8>>, fn(http::StatusCode) -> k8s_openapi::ResponseBody<ReadProjectResponse>), k8s_openapi::RequestError> {
189 let ReadProjectOptional {
190 pretty,
191 } = optional;
192 let __url = format!("/apis/project.openshift.io/v1/projects/{name}?",
193 name = k8s_openapi::percent_encoding::percent_encode(name.as_bytes(), k8s_openapi::percent_encoding2::PATH_SEGMENT_ENCODE_SET),
194 );
195 let mut __query_pairs = k8s_openapi::url::form_urlencoded::Serializer::new(__url);
196 if let Some(pretty) = pretty {
197 __query_pairs.append_pair("pretty", pretty);
198 }
199 let __url = __query_pairs.finish();
200
201 let __request = http::Request::get(__url);
202 let __body = vec![];
203 match __request.body(__body) {
204 Ok(request) => Ok((request, k8s_openapi::ResponseBody::new)),
205 Err(err) => Err(k8s_openapi::RequestError::Http(err)),
206 }
207 }
208}
209
210#[cfg(feature = "api")]
212#[derive(Clone, Copy, Debug, Default)]
213pub struct ReadProjectOptional<'a> {
214 pub pretty: Option<&'a str>,
216}
217
218#[cfg(feature = "api")]
220#[derive(Debug)]
221pub enum ReadProjectResponse {
222 Ok(crate::api::project::v1::Project),
223 Other(Result<Option<serde_json::Value>, serde_json::Error>),
224}
225
226#[cfg(feature = "api")]
227impl k8s_openapi::Response for ReadProjectResponse {
228 fn try_from_parts(status_code: http::StatusCode, buf: &[u8]) -> Result<(Self, usize), k8s_openapi::ResponseError> {
229 match status_code {
230 http::StatusCode::OK => {
231 let result = match serde_json::from_slice(buf) {
232 Ok(value) => value,
233 Err(ref err) if err.is_eof() => return Err(k8s_openapi::ResponseError::NeedMoreData),
234 Err(err) => return Err(k8s_openapi::ResponseError::Json(err)),
235 };
236 Ok((ReadProjectResponse::Ok(result), buf.len()))
237 },
238 _ => {
239 let (result, read) =
240 if buf.is_empty() {
241 (Ok(None), 0)
242 }
243 else {
244 match serde_json::from_slice(buf) {
245 Ok(value) => (Ok(Some(value)), buf.len()),
246 Err(ref err) if err.is_eof() => return Err(k8s_openapi::ResponseError::NeedMoreData),
247 Err(err) => (Err(err), 0),
248 }
249 };
250 Ok((ReadProjectResponse::Other(result), read))
251 },
252 }
253 }
254}
255
256impl Project {
259 #[cfg(feature = "api")]
275 pub fn replace_project(
276 name: &str,
277 body: &crate::api::project::v1::Project,
278 optional: k8s_openapi::ReplaceOptional<'_>,
279 ) -> Result<(http::Request<Vec<u8>>, fn(http::StatusCode) -> k8s_openapi::ResponseBody<k8s_openapi::ReplaceResponse<Self>>), k8s_openapi::RequestError> {
280 let __url = format!("/apis/project.openshift.io/v1/projects/{name}?",
281 name = k8s_openapi::percent_encoding::percent_encode(name.as_bytes(), k8s_openapi::percent_encoding2::PATH_SEGMENT_ENCODE_SET),
282 );
283 let mut __query_pairs = k8s_openapi::url::form_urlencoded::Serializer::new(__url);
284 optional.__serialize(&mut __query_pairs);
285 let __url = __query_pairs.finish();
286
287 let __request = http::Request::put(__url);
288 let __body = serde_json::to_vec(body).map_err(k8s_openapi::RequestError::Json)?;
289 let __request = __request.header(http::header::CONTENT_TYPE, http::header::HeaderValue::from_static("application/json"));
290 match __request.body(__body) {
291 Ok(request) => Ok((request, k8s_openapi::ResponseBody::new)),
292 Err(err) => Err(k8s_openapi::RequestError::Http(err)),
293 }
294 }
295}
296
297impl Project {
300 #[cfg(feature = "api")]
312 pub fn watch_project(
313 optional: k8s_openapi::WatchOptional<'_>,
314 ) -> Result<(http::Request<Vec<u8>>, fn(http::StatusCode) -> k8s_openapi::ResponseBody<k8s_openapi::WatchResponse<Self>>), k8s_openapi::RequestError> {
315 let __url = "/apis/project.openshift.io/v1/projects?".to_owned();
316 let mut __query_pairs = k8s_openapi::url::form_urlencoded::Serializer::new(__url);
317 optional.__serialize(&mut __query_pairs);
318 let __url = __query_pairs.finish();
319
320 let __request = http::Request::get(__url);
321 let __body = vec![];
322 match __request.body(__body) {
323 Ok(request) => Ok((request, k8s_openapi::ResponseBody::new)),
324 Err(err) => Err(k8s_openapi::RequestError::Http(err)),
325 }
326 }
327}
328
329impl k8s_openapi::Resource for Project {
332 const API_VERSION: &'static str = "project.openshift.io/v1";
333 const GROUP: &'static str = "project.openshift.io";
334 const KIND: &'static str = "Project";
335 const VERSION: &'static str = "v1";
336}
337
338impl k8s_openapi::ListableResource for Project {
339 const LIST_KIND: &'static str = concat!("Project", "List");
340}
341
342impl k8s_openapi::Metadata for Project {
343 type Ty = k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
344
345 fn metadata(&self) -> &<Self as k8s_openapi::Metadata>::Ty {
346 &self.metadata
347 }
348
349 fn metadata_mut(&mut self) -> &mut<Self as k8s_openapi::Metadata>::Ty {
350 &mut self.metadata
351 }
352}
353
354impl<'de> serde::Deserialize<'de> for Project {
355 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
356 #[allow(non_camel_case_types)]
357 enum Field {
358 Key_api_version,
359 Key_kind,
360 Key_metadata,
361 Key_spec,
362 Key_status,
363 Other,
364 }
365
366 impl<'de> serde::Deserialize<'de> for Field {
367 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
368 struct Visitor;
369
370 impl<'de> serde::de::Visitor<'de> for Visitor {
371 type Value = Field;
372
373 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
374 f.write_str("field identifier")
375 }
376
377 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: serde::de::Error {
378 Ok(match v {
379 "apiVersion" => Field::Key_api_version,
380 "kind" => Field::Key_kind,
381 "metadata" => Field::Key_metadata,
382 "spec" => Field::Key_spec,
383 "status" => Field::Key_status,
384 _ => Field::Other,
385 })
386 }
387 }
388
389 deserializer.deserialize_identifier(Visitor)
390 }
391 }
392
393 struct Visitor;
394
395 impl<'de> serde::de::Visitor<'de> for Visitor {
396 type Value = Project;
397
398 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
399 f.write_str(<Self::Value as k8s_openapi::Resource>::KIND)
400 }
401
402 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: serde::de::MapAccess<'de> {
403 let mut value_metadata: Option<k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta> = None;
404 let mut value_spec: Option<crate::api::project::v1::ProjectSpec> = None;
405 let mut value_status: Option<crate::api::project::v1::ProjectStatus> = None;
406
407 while let Some(key) = serde::de::MapAccess::next_key::<Field>(&mut map)? {
408 match key {
409 Field::Key_api_version => {
410 let value_api_version: String = serde::de::MapAccess::next_value(&mut map)?;
411 if value_api_version != <Self::Value as k8s_openapi::Resource>::API_VERSION {
412 return Err(serde::de::Error::invalid_value(serde::de::Unexpected::Str(&value_api_version), &<Self::Value as k8s_openapi::Resource>::API_VERSION));
413 }
414 },
415 Field::Key_kind => {
416 let value_kind: String = serde::de::MapAccess::next_value(&mut map)?;
417 if value_kind != <Self::Value as k8s_openapi::Resource>::KIND {
418 return Err(serde::de::Error::invalid_value(serde::de::Unexpected::Str(&value_kind), &<Self::Value as k8s_openapi::Resource>::KIND));
419 }
420 },
421 Field::Key_metadata => value_metadata = Some(serde::de::MapAccess::next_value(&mut map)?),
422 Field::Key_spec => value_spec = serde::de::MapAccess::next_value(&mut map)?,
423 Field::Key_status => value_status = serde::de::MapAccess::next_value(&mut map)?,
424 Field::Other => { let _: serde::de::IgnoredAny = serde::de::MapAccess::next_value(&mut map)?; },
425 }
426 }
427
428 Ok(Project {
429 metadata: value_metadata.ok_or_else(|| serde::de::Error::missing_field("metadata"))?,
430 spec: value_spec,
431 status: value_status,
432 })
433 }
434 }
435
436 deserializer.deserialize_struct(
437 <Self as k8s_openapi::Resource>::KIND,
438 &[
439 "apiVersion",
440 "kind",
441 "metadata",
442 "spec",
443 "status",
444 ],
445 Visitor,
446 )
447 }
448}
449
450impl serde::Serialize for Project {
451 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer {
452 let mut state = serializer.serialize_struct(
453 <Self as k8s_openapi::Resource>::KIND,
454 3 +
455 self.spec.as_ref().map_or(0, |_| 1) +
456 self.status.as_ref().map_or(0, |_| 1),
457 )?;
458 serde::ser::SerializeStruct::serialize_field(&mut state, "apiVersion", <Self as k8s_openapi::Resource>::API_VERSION)?;
459 serde::ser::SerializeStruct::serialize_field(&mut state, "kind", <Self as k8s_openapi::Resource>::KIND)?;
460 serde::ser::SerializeStruct::serialize_field(&mut state, "metadata", &self.metadata)?;
461 if let Some(value) = &self.spec {
462 serde::ser::SerializeStruct::serialize_field(&mut state, "spec", value)?;
463 }
464 if let Some(value) = &self.status {
465 serde::ser::SerializeStruct::serialize_field(&mut state, "status", value)?;
466 }
467 serde::ser::SerializeStruct::end(state)
468 }
469}