From 3c9ed62bbb217363e835eff6abb96f1a5bb60f64 Mon Sep 17 00:00:00 2001 From: houseme Date: Tue, 1 Jul 2025 20:57:58 +0800 Subject: [PATCH] improve code --- crates/notify/src/target/mqtt.rs | 3 +-- crates/notify/src/target/webhook.rs | 8 ++------ ecstore/src/config/mod.rs | 27 +++++++++++++++++++++++++++ rustfs/src/admin/handlers/event.rs | 12 +++++++++++- 4 files changed, 41 insertions(+), 9 deletions(-) diff --git a/crates/notify/src/target/mqtt.rs b/crates/notify/src/target/mqtt.rs index 0584a5ac2..594a2f2a7 100644 --- a/crates/notify/src/target/mqtt.rs +++ b/crates/notify/src/target/mqtt.rs @@ -103,8 +103,7 @@ impl MQTTTarget { let target_id = TargetID::new(id.clone(), ChannelTargetType::Mqtt.as_str().to_string()); let queue_store = if !args.queue_dir.is_empty() { let base_path = PathBuf::from(&args.queue_dir); - let unique_dir_name = - format!("rustfs-{}-{}-{}", ChannelTargetType::Mqtt.as_str(), target_id.name, target_id.id).replace(":", "_"); + let unique_dir_name = format!("rustfs-{}-{}", ChannelTargetType::Mqtt.as_str(), target_id.id).replace(":", "_"); // Ensure the directory name is valid for filesystem let specific_queue_path = base_path.join(unique_dir_name); debug!(target_id = %target_id, path = %specific_queue_path.display(), "Initializing queue store for MQTT target"); diff --git a/crates/notify/src/target/webhook.rs b/crates/notify/src/target/webhook.rs index adc426bc9..330f8b8d4 100644 --- a/crates/notify/src/target/webhook.rs +++ b/crates/notify/src/target/webhook.rs @@ -128,12 +128,8 @@ impl WebhookTarget { // Build storage let queue_store = if !args.queue_dir.is_empty() { - let queue_dir = PathBuf::from(&args.queue_dir).join(format!( - "rustfs-{}-{}-{}", - ChannelTargetType::Webhook.as_str(), - target_id.name, - target_id.id - )); + let queue_dir = + PathBuf::from(&args.queue_dir).join(format!("rustfs-{}-{}", ChannelTargetType::Webhook.as_str(), target_id.id)); let store = crate::store::QueueStore::::new(queue_dir, args.queue_limit, STORE_EXTENSION); if let Err(e) = store.open() { diff --git a/ecstore/src/config/mod.rs b/ecstore/src/config/mod.rs index 4f2ae6784..3cf810cac 100644 --- a/ecstore/src/config/mod.rs +++ b/ecstore/src/config/mod.rs @@ -90,6 +90,33 @@ impl KVS { None } + + ///Check if KVS is empty. + pub fn is_empty(&self) -> bool { + self.0.is_empty() + } + + /// Returns a list of all keys for the current KVS. + /// If the "comment" key does not exist, it will be added. + pub fn keys(&self) -> Vec { + let mut found_comment = false; + let mut keys: Vec = self + .0 + .iter() + .map(|kv| { + if kv.key == COMMENT_KEY { + found_comment = true; + } + kv.key.clone() + }) + .collect(); + + if !found_comment { + keys.push(COMMENT_KEY.to_owned()); + } + + keys + } } #[derive(Debug, Clone)] diff --git a/rustfs/src/admin/handlers/event.rs b/rustfs/src/admin/handlers/event.rs index d2d8884fb..87ec709fb 100644 --- a/rustfs/src/admin/handlers/event.rs +++ b/rustfs/src/admin/handlers/event.rs @@ -112,8 +112,18 @@ impl Operation for ListNotificationTargets { // 3. Get the list of activity targets let active_targets = ns.get_active_targets().await; + let region = match req.region.clone() { + Some(region) => region, + None => return Err(s3_error!(InvalidRequest, "region not found")), + }; + let mut data_target_arn_list = Vec::new(); + for target_id in active_targets.iter() { + let target_arn = target_id.to_arn(®ion); + data_target_arn_list.push(target_arn.to_string()); + } + // 4. Serialize and return the result - let data = serde_json::to_vec(&active_targets) + let data = serde_json::to_vec(&data_target_arn_list) .map_err(|e| S3Error::with_message(S3ErrorCode::InternalError, format!("failed to serialize targets: {}", e)))?; debug!("ListNotificationTargets call end, response data length: {}", data.len(),); let mut header = HeaderMap::new();