]>
git.proxmox.com Git - ceph.git/blob - ceph/src/rgw/rgw_rest_usage.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
6 #include "rgw_rest_usage.h"
8 #include "include/str_list.h"
10 #define dout_subsys ceph_subsys_rgw
12 class RGWOp_Usage_Get
: public RGWRESTOp
{
17 int check_caps(RGWUserCaps
& caps
) override
{
18 return caps
.check_cap("usage", RGW_CAP_READ
);
20 void execute() override
;
22 const string
name() override
{ return "get_usage"; }
25 void RGWOp_Usage_Get::execute() {
26 map
<std::string
, bool> categories
;
33 RESTArgs::get_string(s
, "uid", uid_str
, &uid_str
);
34 rgw_user
uid(uid_str
);
36 RESTArgs::get_epoch(s
, "start", 0, &start
);
37 RESTArgs::get_epoch(s
, "end", (uint64_t)-1, &end
);
38 RESTArgs::get_bool(s
, "show-entries", true, &show_entries
);
39 RESTArgs::get_bool(s
, "show-summary", true, &show_summary
);
42 RESTArgs::get_string(s
, "categories", cat_str
, &cat_str
);
44 if (!cat_str
.empty()) {
45 list
<string
> cat_list
;
46 list
<string
>::iterator iter
;
47 get_str_list(cat_str
, cat_list
);
48 for (iter
= cat_list
.begin(); iter
!= cat_list
.end(); ++iter
) {
49 categories
[*iter
] = true;
53 http_ret
= RGWUsage::show(store
, uid
, start
, end
, show_entries
, show_summary
, &categories
, flusher
);
56 class RGWOp_Usage_Delete
: public RGWRESTOp
{
59 RGWOp_Usage_Delete() {}
61 int check_caps(RGWUserCaps
& caps
) override
{
62 return caps
.check_cap("usage", RGW_CAP_WRITE
);
64 void execute() override
;
66 const string
name() override
{ return "trim_usage"; }
69 void RGWOp_Usage_Delete::execute() {
73 RESTArgs::get_string(s
, "uid", uid_str
, &uid_str
);
74 rgw_user
uid(uid_str
);
76 RESTArgs::get_epoch(s
, "start", 0, &start
);
77 RESTArgs::get_epoch(s
, "end", (uint64_t)-1, &end
);
81 end
== (uint64_t)-1) {
83 RESTArgs::get_bool(s
, "remove-all", false, &remove_all
);
90 http_ret
= RGWUsage::trim(store
, uid
, start
, end
);
93 RGWOp
*RGWHandler_Usage::op_get()
95 return new RGWOp_Usage_Get
;
98 RGWOp
*RGWHandler_Usage::op_delete()
100 return new RGWOp_Usage_Delete
;