From 8244379f78333b103651a5ddc5c4f3ff823234fa Mon Sep 17 00:00:00 2001 From: Super User Date: Thu, 27 Feb 2025 14:39:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=BE=80params=E4=B8=AD?= =?UTF-8?q?=E5=A1=AB=E5=85=A5clusterId=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/actix_web_client/resources.rs | 20 -------------------- src/event_client/resources.rs | 17 ----------------- src/utils/mod.rs | 14 ++++++++++++++ 3 files changed, 14 insertions(+), 37 deletions(-) diff --git a/src/actix_web_client/resources.rs b/src/actix_web_client/resources.rs index 13a4a39..7ffd795 100644 --- a/src/actix_web_client/resources.rs +++ b/src/actix_web_client/resources.rs @@ -26,26 +26,6 @@ impl ResourceUntypedClientImpl { impl ResourceUntypedClientImpl { pub async fn call_api_deserializable(&self, mut params: ResourcesParams, method: Method, path: &str) -> ServerResult { params = utils::resource_params::ensure_cluster_id(params, self.api_caller.cluster_id.as_ref().expect("cluster_id is none")); - if let Some(mut body) = params.body { - if let Some(obj) = body.as_object_mut() { - if let Some(metadata) = obj.get_mut("metadata") { - if let Some(metadata_obj) = metadata.as_object_mut() { - if !metadata_obj.contains_key("clusterId") { - let cluster_id = self.api_caller.cluster_id.as_ref() - .expect("clusterId is none") - .trim_matches('"') - .to_string(); - - metadata_obj.insert( - "clusterId".to_string(), - Value::String(cluster_id) - ); - } - } - } - } - params.body = Some(body); - } self.api_caller.send_request_json_response(method, &path, Some(params.query), params.body).await } diff --git a/src/event_client/resources.rs b/src/event_client/resources.rs index ee9c5d1..87b8efe 100644 --- a/src/event_client/resources.rs +++ b/src/event_client/resources.rs @@ -19,23 +19,6 @@ pub struct ResourceUntypedClientImpl { async fn call_api_deserializable(api_caller: &EventAPICaller, to_topic: fn(String) -> P2PEventTopic, mut params: ResourcesParams) -> ServerResult { params = utils::resource_params::ensure_cluster_id(params, api_caller.cluster_id.as_str()); - if let Some(mut body) = params.body { - if let Some(obj) = body.as_object_mut() { - if let Some(metadata) = obj.get_mut("metadata") { - if let Some(metadata_obj) = metadata.as_object_mut() { - if !metadata_obj.contains_key("clusterId") { - let cluster_id = api_caller.cluster_id.clone(); - - metadata_obj.insert( - "clusterId".to_string(), - Value::String(cluster_id) - ); - } - } - } - } - params.body = Some(body); - } api_caller.get_resource_reply(to_topic, params).await } diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 20d4439..8a2eadf 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -1,10 +1,24 @@ pub mod resource_params { use fleet_apiserver::ResourcesParams; + use serde_json::{Value}; pub fn ensure_cluster_id(mut params: ResourcesParams, cluster_id: impl ToString) -> ResourcesParams { if params.cluster_id.is_none() { params.cluster_id = Some(cluster_id.to_string()); } + params.body.as_mut() + .and_then(|body| body.as_object_mut()) + .and_then(|obj| obj.get_mut("metadata")) + .and_then(|metadata| metadata.as_object_mut()) + .and_then(|metadata_obj| { + if !metadata_obj.contains_key("clusterId") { + metadata_obj.insert( + "clusterId".to_string(), + Value::String(cluster_id.to_string().clone()) + ); + } + Some(()) + }); params } } \ No newline at end of file -- Gitee From fe702d02577f03dbc65c7b6822fe1f80475c4f81 Mon Sep 17 00:00:00 2001 From: Super User Date: Thu, 27 Feb 2025 16:48:51 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A1=AB=E5=86=99metadat?= =?UTF-8?q?a=E4=B8=AD=E7=BC=BA=E5=A4=B1=E7=9A=84uid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/actix_web_client/resources.rs | 2 +- src/event_client/resources.rs | 4 ++-- src/utils/mod.rs | 9 ++++++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/actix_web_client/resources.rs b/src/actix_web_client/resources.rs index 7ffd795..433a790 100644 --- a/src/actix_web_client/resources.rs +++ b/src/actix_web_client/resources.rs @@ -25,7 +25,7 @@ impl ResourceUntypedClientImpl { impl ResourceUntypedClientImpl { pub async fn call_api_deserializable(&self, mut params: ResourcesParams, method: Method, path: &str) -> ServerResult { - params = utils::resource_params::ensure_cluster_id(params, self.api_caller.cluster_id.as_ref().expect("cluster_id is none")); + params = utils::resource_params::ensure_cluster_id_and_uid(params, self.api_caller.cluster_id.as_ref().expect("cluster_id is none")); self.api_caller.send_request_json_response(method, &path, Some(params.query), params.body).await } diff --git a/src/event_client/resources.rs b/src/event_client/resources.rs index 87b8efe..f070866 100644 --- a/src/event_client/resources.rs +++ b/src/event_client/resources.rs @@ -18,12 +18,12 @@ pub struct ResourceUntypedClientImpl { } async fn call_api_deserializable(api_caller: &EventAPICaller, to_topic: fn(String) -> P2PEventTopic, mut params: ResourcesParams) -> ServerResult { - params = utils::resource_params::ensure_cluster_id(params, api_caller.cluster_id.as_str()); + params = utils::resource_params::ensure_cluster_id_and_uid(params, api_caller.cluster_id.as_str()); api_caller.get_resource_reply(to_topic, params).await } async fn call_api_string_reply(api_caller: &EventAPICaller, to_topic: fn(String) -> P2PEventTopic, mut params: ResourcesParams) -> ServerResult { - params = utils::resource_params::ensure_cluster_id(params, api_caller.cluster_id.as_str()); + params = utils::resource_params::ensure_cluster_id_and_uid(params, api_caller.cluster_id.as_str()); let cluster_id = params.cluster_id.clone().unwrap_or_default(); if cluster_id.is_empty() { return Err(ServerError::internal_error("cluster_id is empty")); diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 8a2eadf..b101602 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -1,8 +1,9 @@ pub mod resource_params { use fleet_apiserver::ResourcesParams; + use fleetmodv2::resources::values::generate_uuid; use serde_json::{Value}; - pub fn ensure_cluster_id(mut params: ResourcesParams, cluster_id: impl ToString) -> ResourcesParams { + pub fn ensure_cluster_id_and_uid(mut params: ResourcesParams, cluster_id: impl ToString) -> ResourcesParams { if params.cluster_id.is_none() { params.cluster_id = Some(cluster_id.to_string()); } @@ -17,6 +18,12 @@ pub mod resource_params { Value::String(cluster_id.to_string().clone()) ); } + if !metadata_obj.contains_key("uid") { + metadata_obj.insert( + "uid".to_string(), + Value::String(generate_uuid()) + ); + } Some(()) }); params -- Gitee