Merge pull request #20471 from mdw-at-linuxbox/wip-master-swacldel

rgw: Allow swift acls to be deleted.

Reviewed-by: Orit Wasserman <owasserm@redhat.com>
This commit is contained in:
Yuri Weinstein 2018-02-27 09:46:30 -08:00 committed by GitHub
commit 9cafa7c275
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 19 deletions

View File

@ -23,10 +23,10 @@
#define SWIFT_GROUP_ALL_USERS ".r:*"
static int parse_list(const std::string& uid_list,
static int parse_list(const char* uid_list,
std::vector<std::string>& uids) /* out */
{
char *s = strdup(uid_list.c_str());
char *s = strdup(uid_list);
if (!s) {
return -ENOMEM;
}
@ -176,8 +176,8 @@ int RGWAccessControlPolicy_SWIFT::add_grants(RGWRados* const store,
int RGWAccessControlPolicy_SWIFT::create(RGWRados* const store,
const rgw_user& id,
const std::string& name,
const std::string& read_list,
const std::string& write_list,
const char* read_list,
const char* write_list,
uint32_t& rw_mask)
{
acl.create_default(id, name);
@ -185,7 +185,7 @@ int RGWAccessControlPolicy_SWIFT::create(RGWRados* const store,
owner.set_name(name);
rw_mask = 0;
if (read_list.size()) {
if (read_list) {
std::vector<std::string> uids;
int r = parse_list(read_list, uids);
if (r < 0) {
@ -202,7 +202,7 @@ int RGWAccessControlPolicy_SWIFT::create(RGWRados* const store,
}
rw_mask |= SWIFT_PERM_READ;
}
if (write_list.size()) {
if (write_list) {
std::vector<std::string> uids;
int r = parse_list(write_list, uids);
if (r < 0) {

View File

@ -28,8 +28,8 @@ public:
int create(RGWRados *store,
const rgw_user& id,
const std::string& name,
const std::string& read_list,
const std::string& write_list,
const char* read_list,
const char* write_list,
uint32_t& rw_mask);
void filter_merge(uint32_t mask, RGWAccessControlPolicy_SWIFT *policy);
void to_str(std::string& read, std::string& write);

View File

@ -576,20 +576,12 @@ static int get_swift_container_settings(req_state * const s,
RGWCORSConfiguration * const cors_config,
bool * const has_cors)
{
string read_list, write_list;
const char * const read_attr = s->info.env->get("HTTP_X_CONTAINER_READ");
if (read_attr) {
read_list = read_attr;
}
const char * const write_attr = s->info.env->get("HTTP_X_CONTAINER_WRITE");
if (write_attr) {
write_list = write_attr;
}
const char * const read_list = s->info.env->get("HTTP_X_CONTAINER_READ");
const char * const write_list = s->info.env->get("HTTP_X_CONTAINER_WRITE");
*has_policy = false;
if (read_attr || write_attr) {
if (read_list || write_list) {
RGWAccessControlPolicy_SWIFT swift_policy(s->cct);
const auto r = swift_policy.create(store,
s->user->user_id,