From 8439b375ed6fe732478884877edcbe1d6e29c700 Mon Sep 17 00:00:00 2001 From: weisd Date: Wed, 20 Nov 2024 14:12:33 +0800 Subject: [PATCH] todo put_object_metadata --- ecstore/src/sets.rs | 4 ++++ ecstore/src/store.rs | 15 +++++++++++++++ ecstore/src/store_api.rs | 1 + 3 files changed, 20 insertions(+) diff --git a/ecstore/src/sets.rs b/ecstore/src/sets.rs index 203e3a3ad..b65ddb213 100644 --- a/ecstore/src/sets.rs +++ b/ecstore/src/sets.rs @@ -448,6 +448,10 @@ impl StorageAPI for Sets { self.get_disks_by_key(object).get_object_info(bucket, object, opts).await } + async fn put_object_metadata(&self, bucket: &str, object: &str, opts: &ObjectOptions) -> Result { + self.get_disks_by_key(object).put_object_metadata(bucket, object, opts).await + } + async fn get_object_tags(&self, bucket: &str, object: &str, opts: &ObjectOptions) -> Result { self.get_disks_by_key(object).get_object_tags(bucket, object, opts).await } diff --git a/ecstore/src/store.rs b/ecstore/src/store.rs index a6d90f72b..c2ca44fc7 100644 --- a/ecstore/src/store.rs +++ b/ecstore/src/store.rs @@ -1381,6 +1381,21 @@ impl StorageAPI for ECStore { Ok(oi.user_tags) } + + async fn put_object_metadata(&self, bucket: &str, object: &str, opts: &ObjectOptions) -> Result { + let object = encode_dir_object(object); + if self.single_pool() { + return self.pools[0].put_object_metadata(bucket, object.as_str(), opts).await; + } + + let mut opts = opts.clone(); + opts.metadata_chg = true; + + let idx = self.get_pool_idx_existing_with_opts(bucket, object.as_str(), &opts).await?; + + self.pools[idx].put_object_metadata(bucket, object.as_str(), &opts).await + } + #[tracing::instrument(level = "debug", skip(self))] async fn put_object_tags(&self, bucket: &str, object: &str, tags: &str, opts: &ObjectOptions) -> Result { let object = encode_dir_object(object); diff --git a/ecstore/src/store_api.rs b/ecstore/src/store_api.rs index 483ce7170..3402ab7c5 100644 --- a/ecstore/src/store_api.rs +++ b/ecstore/src/store_api.rs @@ -977,6 +977,7 @@ pub trait StorageAPI: ObjectIO { // CheckAbandonedParts // Health // PutObjectMetadata + async fn put_object_metadata(&self, bucket: &str, object: &str, opts: &ObjectOptions) -> Result; // DecomTieredObject async fn get_object_tags(&self, bucket: &str, object: &str, opts: &ObjectOptions) -> Result; async fn put_object_tags(&self, bucket: &str, object: &str, tags: &str, opts: &ObjectOptions) -> Result;