cerr << " user info get user info\n";
cerr << " user rm remove user\n";
cerr << " buckets list list buckets\n";
+ cerr << " bucket unlink unlink bucket from specified user\n";
cerr << " policy read bucket/object policy\n";
cerr << " log show dump a log from specific bucket, date\n";
cerr << "options:\n";
OPT_USER_MODIFY,
OPT_USER_RM,
OPT_BUCKETS_LIST,
+ OPT_BUCKET_UNLINK,
OPT_POLICY,
OPT_LOG_SHOW,
};
*need_more = false;
if (strcmp(cmd, "user") == 0 ||
strcmp(cmd, "buckets") == 0 ||
+ strcmp(cmd, "bucket") == 0 ||
strcmp(cmd, "log") == 0) {
*need_more = true;
return 0;
} else if (strcmp(prev_cmd, "buckets") == 0) {
if (strcmp(cmd, "list") == 0)
return OPT_BUCKETS_LIST;
+ } else if (strcmp(prev_cmd, "bucket") == 0) {
+ if (strcmp(cmd, "unlink") == 0)
+ return OPT_BUCKET_UNLINK;
} else if (strcmp(prev_cmd, "log") == 0) {
if (strcmp(cmd, "show") == 0)
return OPT_LOG_SHOW;
}
- if (opt_cmd == OPT_USER_MODIFY || opt_cmd == OPT_USER_INFO) {
+ if (opt_cmd == OPT_USER_MODIFY || opt_cmd == OPT_USER_INFO || opt_cmd == OPT_BUCKET_UNLINK) {
if (!user_id) {
cerr << "user_id was not specified, aborting" << std::endl;
return 0;
}
}
+ if (opt_cmd == OPT_BUCKET_UNLINK) {
+ if (!bucket) {
+ cerr << "bucket name was not specified" << std::endl;
+ usage();
+ }
+ string bucket_str(bucket);
+ int r = rgw_remove_bucket(user_id, bucket_str);
+ if (r < 0)
+ cerr << "error unlinking bucket " << cpp_strerror(-r) << std::endl;
+ return -r;
+ }
+
if (opt_cmd == OPT_LOG_SHOW) {
if (!date || !bucket) {
if (!date)