+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
| ``Request.SwiftAccountName`` | string | swift account name | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket`` | table | info on the bucket | no | no | yes |
+| ``Request.Bucket`` | table | info on the bucket | no | no | no |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket.Tenant`` | string | tenant of the bucket | no | no | no |
+| ``Request.Bucket.Tenant`` | string | tenant of the bucket | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
| ``Request.Bucket.Name`` | string | bucket name | no | no | no |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket.Marker`` | string | bucket marker (initial id) | no | no | no |
+| ``Request.Bucket.Marker`` | string | bucket marker (initial id) | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket.Id`` | string | bucket id | no | no | no |
+| ``Request.Bucket.Id`` | string | bucket id | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket.Count`` | integer | number of objects in the bucket | no | no | no |
+| ``Request.Bucket.Count`` | integer | number of objects in the bucket | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket.Size`` | integer | total size of objects in the bucket | no | no | no |
+| ``Request.Bucket.Size`` | integer | total size of objects in the bucket | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket.ZoneGroupId`` | string | zone group of the bucket | no | no | no |
+| ``Request.Bucket.ZoneGroupId`` | string | zone group of the bucket | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket.CreationTime`` | time | creation time of the bucket | no | no | no |
+| ``Request.Bucket.CreationTime`` | time | creation time of the bucket | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket.MTime`` | time | modification time of the bucket | no | no | no |
+| ``Request.Bucket.MTime`` | time | modification time of the bucket | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket.Quota`` | table | bucket quota | no | no | no |
+| ``Request.Bucket.Quota`` | table | bucket quota | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
| ``Request.Bucket.Quota.MaxSize`` | integer | bucket quota max size | no | no | no |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
| ``Request.Bucket.Quota.Rounded`` | boolean | bucket quota is rounded to 4K | no | no | no |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket.PlacementRule`` | table | bucket placement rule | no | no | no |
+| ``Request.Bucket.PlacementRule`` | table | bucket placement rule | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
| ``Request.Bucket.PlacementRule.Name`` | string | bucket placement rule name | no | no | no |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
| ``Request.Bucket.PlacementRule.StorageClass`` | string | bucket placement rule storage class | no | no | no |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
-| ``Request.Bucket.User`` | table | bucket owner | no | no | no |
+| ``Request.Bucket.User`` | table | bucket owner | no | no | yes |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
| ``Request.Bucket.User.Tenant`` | string | bucket owner tenant | no | no | no |
+----------------------------------------------------+----------+--------------------------------------------------------------+----------+-----------+----------+
static std::string TableName() {return "Bucket";}
static std::string Name() {return TableName() + "Meta";}
- using Type = rgw::sal::Bucket;
-
static int IndexClosure(lua_State* L) {
- const auto bucket = reinterpret_cast<Type*>(lua_touserdata(L, lua_upvalueindex(1)));
+ const auto s = reinterpret_cast<req_state*>(lua_touserdata(L, lua_upvalueindex(1)));
+ const auto bucket = s->bucket.get();
const char* index = luaL_checkstring(L, 2);
- if (strcasecmp(index, "Tenant") == 0) {
+ if (rgw::sal::Bucket::empty(bucket)) {
+ if (strcasecmp(index, "Name") == 0) {
+ pushstring(L, s->init_state.url_bucket);
+ } else {
+ lua_pushnil(L);
+ }
+ } else if (strcasecmp(index, "Tenant") == 0) {
pushstring(L, bucket->get_tenant());
} else if (strcasecmp(index, "Name") == 0) {
pushstring(L, bucket->get_name());
lua_pushnil(L);
}
} else if (strcasecmp(index, "Bucket") == 0) {
- create_metatable<BucketMetaTable>(L, false, s->bucket);
+ create_metatable<BucketMetaTable>(L, false, s);
} else if (strcasecmp(index, "Object") == 0) {
create_metatable<ObjectMetaTable>(L, false, s->object);
} else if (strcasecmp(index, "CopyFrom") == 0) {