diff options
author | Alex Auvolat <alex@adnab.me> | 2022-01-03 19:06:04 +0100 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2022-01-04 12:53:14 +0100 |
commit | df35feba18787cac06b2a87e3426752fb78da2d5 (patch) | |
tree | 9e7de3ade1ced3d47518854287ecd34c91b1a9be /src/api/s3_bucket.rs | |
parent | 1bcd6fabbdc0cd9dee88ba28daecb5339f2c13ec (diff) | |
download | garage-df35feba18787cac06b2a87e3426752fb78da2d5.tar.gz garage-df35feba18787cac06b2a87e3426752fb78da2d5.zip |
New buckets for 0.6.0: make bucket id a SK and not a HK, CLI updates
Diffstat (limited to 'src/api/s3_bucket.rs')
-rw-r--r-- | src/api/s3_bucket.rs | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/api/s3_bucket.rs b/src/api/s3_bucket.rs index 24ec6b98..50aeb173 100644 --- a/src/api/s3_bucket.rs +++ b/src/api/s3_bucket.rs @@ -58,21 +58,17 @@ pub async fn handle_list_buckets(garage: &Garage, api_key: &Key) -> Result<Respo let mut aliases = HashMap::new(); for bucket_id in ids.iter() { - let bucket = garage.bucket_table.get(bucket_id, &EmptyKey).await?; + let bucket = garage.bucket_table.get(&EmptyKey, bucket_id).await?; if let Some(bucket) = bucket { - if let Deletable::Present(param) = bucket.state { - for (alias, _, active) in param.aliases.items() { - if *active { - let alias_ent = garage.bucket_alias_table.get(&EmptyKey, alias).await?; - if let Some(alias_ent) = alias_ent { - if let Some(alias_bucket) = alias_ent.state.get() { - if alias_bucket == bucket_id { - aliases.insert(alias_ent.name().to_string(), *bucket_id); - } - } - } + for (alias, _, _active) in bucket.aliases().iter().filter(|(_, _, active)| *active) { + let alias_opt = garage.bucket_alias_table.get(&EmptyKey, alias).await?; + if let Some(alias_ent) = alias_opt { + if *alias_ent.state.get() == Some(*bucket_id) { + aliases.insert(alias_ent.name().to_string(), *bucket_id); } } + } + if let Deletable::Present(param) = bucket.state { buckets_by_id.insert(bucket_id, param); } } |