diff --git a/kube-core/src/conversion/types.rs b/kube-core/src/conversion/types.rs index 1230a1144..ac401017c 100644 --- a/kube-core/src/conversion/types.rs +++ b/kube-core/src/conversion/types.rs @@ -52,13 +52,7 @@ pub struct ConversionRequest { impl ConversionRequest { /// Extracts request from the [`ConversionReview`] pub fn from_review(review: ConversionReview) -> Result { - match review.request { - Some(mut req) => { - req.types = Some(review.types); - Ok(req) - } - None => Err(ConvertConversionReviewError), - } + ConversionRequest::try_from(review) } } @@ -66,7 +60,13 @@ impl TryFrom for ConversionRequest { type Error = ConvertConversionReviewError; fn try_from(review: ConversionReview) -> Result { - ConversionRequest::from_review(review) + match review.request { + Some(mut req) => { + req.types = Some(review.types); + Ok(req) + } + None => Err(ConvertConversionReviewError), + } } } @@ -122,18 +122,7 @@ impl ConversionResponse { /// - [`ConversionResponse::success`] when conversion succeeded /// - [`ConversionResponse::failure`] when conversion failed pub fn for_request(request: ConversionRequest) -> Self { - ConversionResponse { - types: request.types, - uid: request.uid, - result: Status { - status: None, - code: 0, - message: String::new(), - reason: String::new(), - details: None, - }, - converted_objects: Vec::new(), - } + ConversionResponse::from(request) } /// Creates successful conversion response @@ -168,30 +157,41 @@ impl ConversionResponse { } /// Converts response into a [`ConversionReview`] value, ready to be sent as a response - pub fn into_review(mut self) -> ConversionReview { - ConversionReview { - types: self.types.take().unwrap_or_else(|| { - // we don't know which uid, apiVersion and kind to use, let's just use something - TypeMeta { - api_version: META_API_VERSION_V1.to_string(), - kind: META_KIND.to_string(), - } - }), - request: None, - response: Some(self), - } + pub fn into_review(self) -> ConversionReview { + self.into() } } impl From for ConversionResponse { fn from(request: ConversionRequest) -> Self { - ConversionResponse::for_request(request) + ConversionResponse { + types: request.types, + uid: request.uid, + result: Status { + status: None, + code: 0, + message: String::new(), + reason: String::new(), + details: None, + }, + converted_objects: Vec::new(), + } } } impl From for ConversionReview { - fn from(response: ConversionResponse) -> Self { - response.into_review() + fn from(mut response: ConversionResponse) -> Self { + ConversionReview { + types: response.types.take().unwrap_or_else(|| { + // we don't know which uid, apiVersion and kind to use, let's just use something + TypeMeta { + api_version: META_API_VERSION_V1.to_string(), + kind: META_KIND.to_string(), + } + }), + request: None, + response: Some(response), + } } }