Fix some docs and change syntax of CreateBucket permissions
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing

This commit is contained in:
Alex 2022-05-24 11:52:33 +02:00
parent 2f250a83e1
commit 0b43a71351
Signed by: lx
GPG key ID: 0E496D15096376BE
2 changed files with 21 additions and 7 deletions

View file

@ -124,11 +124,11 @@ Example response:
[ [
{ {
"success": true, "success": true,
"error": null, "error": null
}, },
{ {
"success": false, "success": false,
"error": "Handshake error", "error": "Handshake error"
} }
] ]
``` ```
@ -490,7 +490,11 @@ OR
"localAlias": { "localAlias": {
"accessKeyId": "GK31c2f218a2e44f485b94239e", "accessKeyId": "GK31c2f218a2e44f485b94239e",
"alias": "NameOfMyBucket", "alias": "NameOfMyBucket",
"allPermissions": true "allow": {
"read": true,
"write": true,
"owner": false
}
} }
} }
``` ```
@ -504,6 +508,9 @@ OR
Creates a new bucket, either with a global alias, a local one, Creates a new bucket, either with a global alias, a local one,
or no alias at all. or no alias at all.
Technically, you can also specify both `globalAlias` and `localAlias` and that would create
two aliases, but I don't see why you would want to do that.
#### DeleteBucket `DELETE /v0/bucket?id=<bucket id>` #### DeleteBucket `DELETE /v0/bucket?id=<bucket id>`
Deletes a storage bucket. A bucket cannot be deleted if it is not empty. Deletes a storage bucket. A bucket cannot be deleted if it is not empty.
@ -519,7 +526,7 @@ Request body format:
```json ```json
{ {
"indexDocument": "index.html", "indexDocument": "index.html",
"errorDocument": "404.html", "errorDocument": "404.html"
} }
``` ```

View file

@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize};
use garage_util::crdt::*; use garage_util::crdt::*;
use garage_util::data::*; use garage_util::data::*;
use garage_util::error::Error as GarageError; use garage_util::error::Error as GarageError;
use garage_util::time::*;
use garage_table::*; use garage_table::*;
@ -283,13 +284,19 @@ pub async fn handle_create_bucket(
.bucket_helper() .bucket_helper()
.set_local_bucket_alias(bucket.id, &la.access_key_id, &la.alias) .set_local_bucket_alias(bucket.id, &la.access_key_id, &la.alias)
.await?; .await?;
if la.all_permissions {
if la.allow.read || la.allow.write || la.allow.owner {
garage garage
.bucket_helper() .bucket_helper()
.set_bucket_key_permissions( .set_bucket_key_permissions(
bucket.id, bucket.id,
&la.access_key_id, &la.access_key_id,
BucketKeyPerm::ALL_PERMISSIONS, BucketKeyPerm{
timestamp: now_msec(),
allow_read: la.allow.read,
allow_write: la.allow.write,
allow_owner: la.allow.owner,
}
) )
.await?; .await?;
} }
@ -311,7 +318,7 @@ struct CreateBucketLocalAlias {
access_key_id: String, access_key_id: String,
alias: String, alias: String,
#[serde(default)] #[serde(default)]
all_permissions: bool, allow: ApiBucketKeyPerm,
} }
pub async fn handle_delete_bucket( pub async fn handle_delete_bucket(