From: root Date: Mon, 23 May 2016 10:04:58 +0000 (+0530) Subject: rgw: Let the default quota settings take effect during user creation X-Git-Tag: v11.0.0~112^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=400d7c982f18efd7cf96acfc3a63078791d1ec0a;p=ceph.git rgw: Let the default quota settings take effect during user creation Signed-off-by: Pavan Rallabhandi --- diff --git a/src/rgw/rgw_rest_user.cc b/src/rgw/rgw_rest_user.cc index e72f5acb5acb..e7ef10185c25 100644 --- a/src/rgw/rgw_rest_user.cc +++ b/src/rgw/rgw_rest_user.cc @@ -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); } diff --git a/src/rgw/rgw_user.cc b/src/rgw/rgw_user.cc index 7ce8e8beaf72..5aa2b7d74a95 100644 --- a/src/rgw/rgw_user.cc +++ b/src/rgw/rgw_user.cc @@ -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::iterator iter; @@ -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);