Skip to content

Commit

Permalink
rgw: Let the default quota settings take effect during user creation
Browse files Browse the repository at this point in the history
Signed-off-by: Pavan Rallabhandi <PRallabhandi@walmartlabs.com>
  • Loading branch information
root committed Jun 19, 2016
1 parent ee5c9f6 commit 400d7c9
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 2 deletions.
31 changes: 31 additions & 0 deletions src/rgw/rgw_rest_user.cc
Expand Up @@ -152,6 +152,37 @@ void RGWOp_User_Create::execute()
if (gen_key)
op_state.set_generate_key();

RGWQuotaInfo bucket_quota;
RGWQuotaInfo user_quota;

if (s->cct->_conf->rgw_bucket_default_quota_max_objects >= 0) {
bucket_quota.max_objects = s->cct->_conf->rgw_bucket_default_quota_max_objects;
bucket_quota.enabled = true;
}

if (s->cct->_conf->rgw_bucket_default_quota_max_size >= 0) {
bucket_quota.max_size = s->cct->_conf->rgw_bucket_default_quota_max_size;
bucket_quota.enabled = true;
}

if (s->cct->_conf->rgw_user_default_quota_max_objects >= 0) {
user_quota.max_objects = s->cct->_conf->rgw_user_default_quota_max_objects;
user_quota.enabled = true;
}

if (s->cct->_conf->rgw_user_default_quota_max_size >= 0) {
user_quota.max_size = s->cct->_conf->rgw_user_default_quota_max_size;
user_quota.enabled = true;
}

if (bucket_quota.enabled) {
op_state.set_bucket_quota(bucket_quota);
}

if (user_quota.enabled) {
op_state.set_user_quota(user_quota);
}

http_ret = RGWUserAdminOp_User::create(store, op_state, flusher);
}

Expand Down
24 changes: 22 additions & 2 deletions src/rgw/rgw_user.cc
Expand Up @@ -1935,8 +1935,18 @@ int RGWUser::execute_add(RGWUserAdminOpState& op_state, std::string *err_msg)
if (op_state.op_mask_specified)
user_info.op_mask = op_state.get_op_mask();

if (op_state.has_bucket_quota())
if (op_state.has_bucket_quota()) {
user_info.bucket_quota = op_state.get_bucket_quota();
} else {
if (cct->_conf->rgw_bucket_default_quota_max_objects >= 0) {
user_info.bucket_quota.max_objects = cct->_conf->rgw_bucket_default_quota_max_objects;
user_info.bucket_quota.enabled = true;
}
if (cct->_conf->rgw_bucket_default_quota_max_size >= 0) {
user_info.bucket_quota.max_size = cct->_conf->rgw_bucket_default_quota_max_size;
user_info.bucket_quota.enabled = true;
}
}

if (op_state.temp_url_key_specified) {
map<int, string>::iterator iter;
Expand All @@ -1946,8 +1956,18 @@ int RGWUser::execute_add(RGWUserAdminOpState& op_state, std::string *err_msg)
}
}

if (op_state.has_user_quota())
if (op_state.has_user_quota()) {
user_info.user_quota = op_state.get_user_quota();
} else {
if (cct->_conf->rgw_user_default_quota_max_objects >= 0) {
user_info.user_quota.max_objects = cct->_conf->rgw_user_default_quota_max_objects;
user_info.user_quota.enabled = true;
}
if (cct->_conf->rgw_user_default_quota_max_size >= 0) {
user_info.user_quota.max_size = cct->_conf->rgw_user_default_quota_max_size;
user_info.user_quota.enabled = true;
}
}

// update the request
op_state.set_user_info(user_info);
Expand Down

0 comments on commit 400d7c9

Please sign in to comment.