#define RGW_USAGE_OBJ_PREFIX "usage."
#define RGW_DEFAULT_ZONE_ROOT_POOL "rgw.root"
-#define RGW_DEFAULT_ZONEGROUP_ROOT_POOL "rgw.root"
+static string RGW_DEFAULT_ZONEGROUP_ROOT_POOL = "rgw.root";
static string RGW_DEFAULT_REALM_ROOT_POOL = "rgw.root";
static string RGW_DEFAULT_PERIOD_ROOT_POOL = "rgw.root";
JSONDecoder::decode_json("default_region", default_zonegroup, obj);
}
}
-
-int RGWZoneGroup::get_pool_name(CephContext *cct, string *pool_name)
+const string& RGWZoneGroup::get_pool_name(CephContext *cct_)
{
- *pool_name = cct->_conf->rgw_zonegroup_root_pool;
- if (pool_name->empty()) {
- *pool_name = RGW_DEFAULT_ZONEGROUP_ROOT_POOL;
+ if (cct_->_conf->rgw_zonegroup_root_pool.empty()) {
+ return RGW_DEFAULT_ZONEGROUP_ROOT_POOL;
}
- return 0;
+
+ return cct_->_conf->rgw_zonegroup_root_pool;
}
-const string& RGWZoneGroup::get_default_oid(bool old_region_format)
+const string& RGWZoneGroup::get_default_oid(CephContext *cct_, bool old_region_format)
{
if (old_region_format) {
- if (cct->_conf->rgw_default_region_info_oid.empty()) {
+ if (cct_->_conf->rgw_default_region_info_oid.empty()) {
return default_region_info_oid;
}
- return cct->_conf->rgw_default_region_info_oid;
+ return cct_->_conf->rgw_default_region_info_oid;
}
- if (cct->_conf->rgw_default_zonegroup_info_oid.empty()) {
+ if (cct_->_conf->rgw_default_zonegroup_info_oid.empty()) {
return default_zone_group_info_oid;
}
- return cct->_conf->rgw_default_zonegroup_info_oid;
+ return cct_->_conf->rgw_default_zonegroup_info_oid;
}
const string& RGWZoneGroup::get_info_oid_prefix(bool old_region_format)
int RGWZoneGroup::read_default(RGWDefaultZoneGroupInfo& default_info,
const string& oid)
{
- string pool_name;
-
- int ret = get_pool_name(cct, &pool_name);
- if (ret < 0) {
- return ret;
- }
+ string pool_name = get_pool_name(cct);
rgw_bucket pool(pool_name.c_str());
bufferlist bl;
RGWObjectCtx obj_ctx(store);
- ret = rgw_get_system_obj(store, obj_ctx, pool, oid, bl, NULL, NULL);
+ int ret = rgw_get_system_obj(store, obj_ctx, pool, oid, bl, NULL, NULL);
if (ret < 0)
return ret;
int RGWZoneGroup::set_as_default()
{
- string pool_name;
- int ret = get_pool_name(cct, &pool_name);
- if (ret < 0)
- return ret;
+ string pool_name = get_pool_name(cct);
- string oid = get_default_oid();
+ string oid = get_default_oid(cct);
rgw_bucket pool(pool_name.c_str());
bufferlist bl;
::encode(default_info, bl);
- ret = rgw_put_system_obj(store, pool, oid, bl.c_str(), bl.length(), false, NULL, 0, NULL);
+ int ret = rgw_put_system_obj(store, pool, oid, bl.c_str(), bl.length(), false, NULL, 0, NULL);
if (ret < 0)
return ret;
if (zonegroup_name.empty()) {
RGWDefaultZoneGroupInfo default_info;
- int r = read_default(default_info, get_default_oid(old_region_format));
+ int r = read_default(default_info, get_default_oid(cct, old_region_format));
if (r == -ENOENT) {
r = create_default();
if (r == -EEXIST) { /* we may have raced with another zonegroup creation,
if (r < 0)
return r;
/*Re attempt to read zonegroup info from newly created default zonegroup */
- r = read_default(default_info, get_default_oid(old_region_format));
+ r = read_default(default_info, get_default_oid(cct, old_region_format));
if (r < 0)
return r;
} else if (r < 0) {
int RGWZoneGroup::read_info(const string& zonegroup_name, bool old_region_format)
{
- string pool_name;
- int ret = get_pool_name(cct, &pool_name);
- if (ret < 0)
- return ret;
+ string pool_name = get_pool_name(cct);
rgw_bucket pool(pool_name.c_str());
bufferlist bl;
string oid = get_info_oid_prefix(old_region_format) + name;
RGWObjectCtx obj_ctx(store);
- ret = rgw_get_system_obj(store, obj_ctx, pool, oid, bl, NULL, NULL);
+ int ret = rgw_get_system_obj(store, obj_ctx, pool, oid, bl, NULL, NULL);
if (ret < 0) {
lderr(cct) << "failed reading zonegroup info from " << pool << ":" << oid << ": " << cpp_strerror(-ret) << dendl;
return ret;
int RGWZoneGroup::store_info(bool exclusive)
{
- string pool_name;
- int ret = get_pool_name(cct, &pool_name);
- if (ret < 0)
- return ret;
+ string pool_name = get_pool_name(cct);
rgw_bucket pool(pool_name.c_str());
bufferlist bl;
::encode(*this, bl);
- ret = rgw_put_system_obj(store, pool, oid, bl.c_str(), bl.length(), exclusive, NULL, 0, NULL);
+ int ret = rgw_put_system_obj(store, pool, oid, bl.c_str(), bl.length(), exclusive, NULL, 0, NULL);
return ret;
}
int RGWZoneGroup::delete_obj(bool old_region_format)
{
- string pool_name;
- int ret = get_pool_name(cct, &pool_name);
- if (ret < 0) {
- return ret;
- }
+ string pool_name = get_pool_name(cct);
+
rgw_bucket pool(pool_name.c_str());
/* check to see if obj is the default */
RGWDefaultZoneGroupInfo default_info;
- ret = read_default(default_info, get_default_oid(old_region_format));
+ int ret = read_default(default_info, get_default_oid(cct, old_region_format));
if (ret < 0 && ret != -ENOENT)
return ret;
if (default_info.default_zonegroup == name) {
- string oid = get_default_oid(old_region_format);
+ string oid = get_default_oid(cct, old_region_format);
rgw_obj default_named_obj(pool, oid);
ret = store->delete_system_obj(default_named_obj);
if (ret < 0) {
int RGWRados::list_regions(list<string>& regions)
{
- string pool_name;
- int ret = RGWZoneGroup::get_pool_name(cct, &pool_name);
- if (ret < 0)
- return ret;
+ RGWZoneGroup zonegroup;
- return list_raw_prefixed_objs(pool_name, region_info_oid_prefix, regions);
+ return list_raw_prefixed_objs(zonegroup.get_pool_name(cct), region_info_oid_prefix, regions);
}
int RGWRados::list_zonegroups(list<string>& zonegroups)
{
- string pool_name;
- int ret = RGWZoneGroup::get_pool_name(cct, &pool_name);
- if (ret < 0)
- return ret;
+ RGWZoneGroup zonegroup;
- return list_raw_prefixed_objs(pool_name, zone_group_info_oid_prefix, zonegroups);
+ return list_raw_prefixed_objs(zonegroup.get_pool_name(cct), zone_group_info_oid_prefix, zonegroups);
}
int RGWRados::list_zones(list<string>& zones)