From e0b149e9618dc4f54ccdc67cee15df65b30ebea7 Mon Sep 17 00:00:00 2001 From: goenning Date: Mon, 26 Sep 2022 20:41:35 +0100 Subject: [PATCH 1/2] add fieldManager querystring to all operations Signed-off-by: goenning --- kube-core/src/request.rs | 9 +++++++++ kube-core/src/subresource.rs | 3 +++ 2 files changed, 12 insertions(+) diff --git a/kube-core/src/request.rs b/kube-core/src/request.rs index 40b9ee61b..730e840ba 100644 --- a/kube-core/src/request.rs +++ b/kube-core/src/request.rs @@ -118,6 +118,9 @@ impl Request { if pp.dry_run { qp.append_pair("dryRun", "All"); } + if let Some(ref fm) = pp.field_manager { + qp.append_pair("fieldManager", fm); + } let urlstr = qp.finish(); let req = http::Request::post(urlstr).header(http::header::CONTENT_TYPE, JSON_MIME); req.body(data).map_err(Error::BuildRequest) @@ -195,6 +198,9 @@ impl Request { if pp.dry_run { qp.append_pair("dryRun", "All"); } + if let Some(ref fm) = pp.field_manager { + qp.append_pair("fieldManager", fm); + } let urlstr = qp.finish(); let req = http::Request::put(urlstr).header(http::header::CONTENT_TYPE, JSON_MIME); req.body(data).map_err(Error::BuildRequest) @@ -268,6 +274,9 @@ impl Request { if pp.dry_run { qp.append_pair("dryRun", "All"); } + if let Some(ref fm) = pp.field_manager { + qp.append_pair("fieldManager", fm); + } let urlstr = qp.finish(); let req = http::Request::put(urlstr).header(http::header::CONTENT_TYPE, JSON_MIME); req.body(data).map_err(Error::BuildRequest) diff --git a/kube-core/src/subresource.rs b/kube-core/src/subresource.rs index ae180d7df..b3823cb2e 100644 --- a/kube-core/src/subresource.rs +++ b/kube-core/src/subresource.rs @@ -105,6 +105,9 @@ impl Request { if pp.dry_run { qp.append_pair("dryRun", "All"); } + if let Some(ref fm) = pp.field_manager { + qp.append_pair("fieldManager", fm); + } let urlstr = qp.finish(); // eviction body parameters are awkward, need metadata with name let data = serde_json::to_vec(&serde_json::json!({ From 8b7c1494b29dee77e41af4f43f6ec3de518c9009 Mon Sep 17 00:00:00 2001 From: goenning Date: Mon, 26 Sep 2022 21:58:18 +0100 Subject: [PATCH 2/2] refactor post_params -> queryparam usage and use it on all operations Signed-off-by: goenning --- kube-core/src/params.rs | 9 +++++++++ kube-core/src/request.rs | 25 ++++--------------------- kube-core/src/subresource.rs | 7 +------ 3 files changed, 14 insertions(+), 27 deletions(-) diff --git a/kube-core/src/params.rs b/kube-core/src/params.rs index 19461ce75..c608728db 100644 --- a/kube-core/src/params.rs +++ b/kube-core/src/params.rs @@ -183,6 +183,15 @@ pub struct PostParams { } impl PostParams { + pub(crate) fn populate_qp(&self, qp: &mut form_urlencoded::Serializer) { + if self.dry_run { + qp.append_pair("dryRun", "All"); + } + if let Some(ref fm) = self.field_manager { + qp.append_pair("fieldManager", fm); + } + } + pub(crate) fn validate(&self) -> Result<(), Error> { if let Some(field_manager) = &self.field_manager { // Implement the easy part of validation, in future this may be extended to provide validation as in go code diff --git a/kube-core/src/request.rs b/kube-core/src/request.rs index 730e840ba..f82c0be55 100644 --- a/kube-core/src/request.rs +++ b/kube-core/src/request.rs @@ -115,12 +115,7 @@ impl Request { pp.validate()?; let target = format!("{}?", self.url_path); let mut qp = form_urlencoded::Serializer::new(target); - if pp.dry_run { - qp.append_pair("dryRun", "All"); - } - if let Some(ref fm) = pp.field_manager { - qp.append_pair("fieldManager", fm); - } + pp.populate_qp(&mut qp); let urlstr = qp.finish(); let req = http::Request::post(urlstr).header(http::header::CONTENT_TYPE, JSON_MIME); req.body(data).map_err(Error::BuildRequest) @@ -195,12 +190,7 @@ impl Request { ) -> Result>, Error> { let target = format!("{}/{}?", self.url_path, name); let mut qp = form_urlencoded::Serializer::new(target); - if pp.dry_run { - qp.append_pair("dryRun", "All"); - } - if let Some(ref fm) = pp.field_manager { - qp.append_pair("fieldManager", fm); - } + pp.populate_qp(&mut qp); let urlstr = qp.finish(); let req = http::Request::put(urlstr).header(http::header::CONTENT_TYPE, JSON_MIME); req.body(data).map_err(Error::BuildRequest) @@ -232,9 +222,7 @@ impl Request { ) -> Result>, Error> { let target = format!("{}/{}/{}?", self.url_path, name, subresource_name); let mut qp = form_urlencoded::Serializer::new(target); - if pp.dry_run { - qp.append_pair("dryRun", "All"); - } + pp.populate_qp(&mut qp); let urlstr = qp.finish(); let req = http::Request::post(urlstr).header(http::header::CONTENT_TYPE, JSON_MIME); req.body(data).map_err(Error::BuildRequest) @@ -271,12 +259,7 @@ impl Request { ) -> Result>, Error> { let target = format!("{}/{}/{}?", self.url_path, name, subresource_name); let mut qp = form_urlencoded::Serializer::new(target); - if pp.dry_run { - qp.append_pair("dryRun", "All"); - } - if let Some(ref fm) = pp.field_manager { - qp.append_pair("fieldManager", fm); - } + pp.populate_qp(&mut qp); let urlstr = qp.finish(); let req = http::Request::put(urlstr).header(http::header::CONTENT_TYPE, JSON_MIME); req.body(data).map_err(Error::BuildRequest) diff --git a/kube-core/src/subresource.rs b/kube-core/src/subresource.rs index b3823cb2e..ef527807d 100644 --- a/kube-core/src/subresource.rs +++ b/kube-core/src/subresource.rs @@ -102,12 +102,7 @@ impl Request { let pp = &ep.post_options; pp.validate()?; let mut qp = form_urlencoded::Serializer::new(target); - if pp.dry_run { - qp.append_pair("dryRun", "All"); - } - if let Some(ref fm) = pp.field_manager { - qp.append_pair("fieldManager", fm); - } + pp.populate_qp(&mut qp); let urlstr = qp.finish(); // eviction body parameters are awkward, need metadata with name let data = serde_json::to_vec(&serde_json::json!({