diff --git a/src/garage/admin_rpc.rs b/src/garage/admin_rpc.rs index f9d398c23..6ebd04a93 100644 --- a/src/garage/admin_rpc.rs +++ b/src/garage/admin_rpc.rs @@ -156,14 +156,15 @@ impl AdminRpcHandler { ))) } BucketOperation::Website(query) => { - let bucket = self.get_existing_bucket(&query.bucket).await?; + /*let bucket = self.get_existing_bucket(&query.bucket).await?; if query.allow && query.deny { return Err(Error::Message(format!("Website can not be both allowed and denied on a bucket"))); } if query.allow || query.deny { let exposed = query.allow; - if let BucketState::Present(ak) = bucket.state.get_mut() { + if let BucketState::Present(state) = bucket.state.get_mut() { + let ak = state.authorized_keys; let old_ak = ak.take_and_clear(); ak.merge(&old_ak.update_mutator( key_id.to_string(), @@ -183,9 +184,9 @@ impl AdminRpcHandler { "Bucket is exposed as a website." } else { "Bucket is not exposed." - }; + };*/ - Ok(AdminRPC::Ok(msg)) + Ok(AdminRPC::Ok(/*msg*/"".to_string())) } } } diff --git a/src/model/bucket_table.rs b/src/model/bucket_table.rs index b6b0fceb9..08d0d1688 100644 --- a/src/model/bucket_table.rs +++ b/src/model/bucket_table.rs @@ -10,6 +10,11 @@ use crate::key_table::PermissionSet; use model010::bucket_table as prev; +/// A bucket is a collection of objects +/// +/// Its parameters are not directly accessible as: +/// - It must be possible to merge paramaters, hence the use of a LWW CRDT. +/// - A bucket has 2 states, Present or Deleted and parameters make sense only if present. #[derive(PartialEq, Clone, Debug, Serialize, Deserialize)] pub struct Bucket { // Primary key @@ -123,9 +128,15 @@ impl TableSchema for BucketTable { }, )); } + + let params = BucketParams { + authorized_keys: keys, + website: crdt::LWW::new(false) + }; + Some(Bucket { name: old.name, - state: crdt::LWW::migrate_from_raw(old.timestamp, BucketState::Present(keys)), + state: crdt::LWW::migrate_from_raw(old.timestamp, BucketState::Present(params)), }) } }