#define dout_subsys ceph_subsys_rgw
void RGWOp_Opstate_List::execute() {
- string client_id = s->info.args.get("client_id"),
- op_id = s->info.args.get("op_id"),
+ string client_id = s->info.args.get("client-id"),
+ op_id = s->info.args.get("op-id"),
object = s->info.args.get("object"),
max_entries_str = s->info.args.get("max-entries");
unsigned max_entries = OPSTATE_LIST_MAX_ENTRIES;
RGWOpState oc = RGWOpState(store);
void *handle;
bool done;
+ list<cls_statelog_entry> entries;
oc.init_list_entries(client_id, op_id, object, &handle);
+ http_ret = 0;
+ send_response();
do {
int ret = oc.list_entries(handle, max_entries, entries, &done);
if (!max_entries_str.empty())
max_entries -= entries.size();
+ send_response(entries);
} while (!done && max_entries > 0);
oc.finish_list_entries(handle);
- http_ret = 0;
+ send_response_end();
}
void RGWOp_Opstate_List::send_response() {
+ if (sent_header)
+ return;
+
set_req_state_err(s, http_ret);
dump_errno(s);
end_header(s);
+ sent_header = true;
+
+ if (http_ret < 0)
+ return;
+
s->formatter->open_array_section("entries");
+}
+
+void RGWOp_Opstate_List::send_response(list<cls_statelog_entry> entries) {
RGWOpState oc(store);
for (list<cls_statelog_entry>::iterator it = entries.begin();
it != entries.end(); it++) {
oc.dump_entry(*it, s->formatter);
flusher.flush();
}
+}
+
+void RGWOp_Opstate_List::send_response_end() {
s->formatter->close_section();
flusher.flush();
}
void RGWOp_Opstate_Set::execute() {
- string client_id = s->info.args.get("client_id"),
- op_id = s->info.args.get("op_id"),
+ string client_id = s->info.args.get("client-id"),
+ op_id = s->info.args.get("op-id"),
object = s->info.args.get("object"),
state_str = s->info.args.get("state");
}
void RGWOp_Opstate_Renew::execute() {
- string client_id = s->info.args.get("client_id"),
- op_id = s->info.args.get("op_id"),
+ string client_id = s->info.args.get("client-id"),
+ op_id = s->info.args.get("op-id"),
object = s->info.args.get("object"),
state_str = s->info.args.get("state");
}
void RGWOp_Opstate_Delete::execute() {
- string client_id = s->info.args.get("client_id"),
- op_id = s->info.args.get("op_id"),
+ string client_id = s->info.args.get("client-id"),
+ op_id = s->info.args.get("op-id"),
object = s->info.args.get("object");
if (client_id.empty() ||
ASSERT_EQ(user_create(uid, display_name), 0);
ASSERT_EQ(0, caps_add(cname, perm));
- rest_req = "/admin/opstate?client_id=1&op_id=1&object=o";
+ rest_req = "/admin/opstate?client-id=1&op-id=1&object=o";
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing state*/
- rest_req = "/admin/opstate?client_id=1&op_id=1&state=in-progress";
+ rest_req = "/admin/opstate?client-id=1&op-id=1&state=in-progress";
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing object*/
- rest_req = "/admin/opstate?client_id=1&state=in-progress&object=o";
+ rest_req = "/admin/opstate?client-id=1&state=in-progress&object=o";
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
- EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing op_id*/
+ EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing op-id*/
- rest_req = "/admin/opstate?state=in-progress&op_id=1&object=o";
+ rest_req = "/admin/opstate?state=in-progress&op-id=1&object=o";
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
- EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing client_id*/
+ EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing client-id*/
- rest_req = "/admin/opstate?state=invalid&op_id=1&object=o&client_id=1";
+ rest_req = "/admin/opstate?state=invalid&op-id=1&object=o&client-id=1";
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
EXPECT_EQ(400U, g_test->get_resp_code()); /*Invalid state*/
state = "in-progress";
entries.clear();
- ss << "/admin/opstate?client_id=" << cid_1 << "&op_id=" << oid_1
+ ss << "/admin/opstate?client-id=" << cid_1 << "&op-id=" << oid_1
<< "&object=" << obj_1 << "&state=" << state;
rest_req = ss.str();
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
state = "complete";
ss.str("");
entries.clear();
- ss << "/admin/opstate?client_id=" << cid_1 << "&op_id=" << oid_1
+ ss << "/admin/opstate?client-id=" << cid_1 << "&op-id=" << oid_1
<< "&object=" << obj_1 << "&state=" << state;
rest_req = ss.str();
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
ss.str("");
entries.clear();
- ss << "/admin/opstate?client_id=" << cid_2 << "&op_id=" << oid_2
+ ss << "/admin/opstate?client-id=" << cid_2 << "&op-id=" << oid_2
<< "&object=" << obj_2 << "&state=" << state;
rest_req = ss.str();
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
ss.str("");
entries.clear();
- ss << "/admin/opstate?client_id=" << cid_2 << "&op_id=" << oid_2 << "&object=" << obj_2;
+ ss << "/admin/opstate?client-id=" << cid_2 << "&op-id=" << oid_2 << "&object=" << obj_2;
rest_req = ss.str();
g_test->send_request(string("GET"), rest_req);
EXPECT_EQ(200U, g_test->get_resp_code());
ss.str("");
entries.clear();
- ss << "/admin/opstate?client_id=" << cid_2;
+ ss << "/admin/opstate?client-id=" << cid_2;
rest_req = ss.str();
g_test->send_request(string("GET"), rest_req);
EXPECT_EQ(200U, g_test->get_resp_code());
ss.str("");
entries.clear();
- ss << "/admin/opstate?op_id=" << oid_2;
+ ss << "/admin/opstate?op-id=" << oid_2;
rest_req = ss.str();
g_test->send_request(string("GET"), rest_req);
EXPECT_EQ(200U, g_test->get_resp_code());
ss.str("");
entries.clear();
- ss << "/admin/opstate?op_id=" << oid_2 << "&object=" << obj_1 << "&client_id=" << cid_2 ;
+ ss << "/admin/opstate?op-id=" << oid_2 << "&object=" << obj_1 << "&client-id=" << cid_2 ;
rest_req = ss.str();
g_test->send_request(string("GET"), rest_req);
EXPECT_EQ(200U, g_test->get_resp_code());
EXPECT_EQ(get_opstate_list(entries), 0);
EXPECT_EQ(entries.size(), 0U);
- rest_req = "/admin/opstate?client_id=1&op_id=1";
+ rest_req = "/admin/opstate?client-id=1&op-id=1";
g_test->send_request(string("DELETE"), rest_req);
EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing object*/
- rest_req = "/admin/opstate?client_id=1&object=1";
+ rest_req = "/admin/opstate?client-id=1&object=1";
g_test->send_request(string("DELETE"), rest_req);
- EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing op_id*/
+ EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing op-id*/
- rest_req = "/admin/opstate?object=1&op_id=1";
+ rest_req = "/admin/opstate?object=1&op-id=1";
g_test->send_request(string("DELETE"), rest_req);
- EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing client_id*/
+ EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing client-id*/
- rest_req = "/admin/opstate?object=1&op_id=1&client_id=1";
+ rest_req = "/admin/opstate?object=1&op-id=1&client-id=1";
g_test->send_request(string("DELETE"), rest_req);
EXPECT_EQ(404U, g_test->get_resp_code());
ss.str("");
- ss << "/admin/opstate?client_id=" << cid_1 << "&op_id=" << oid_1
+ ss << "/admin/opstate?client-id=" << cid_1 << "&op-id=" << oid_1
<< "&object=" << obj_1;
rest_req = ss.str();
g_test->send_request(string("DELETE"), rest_req);
EXPECT_EQ(entries.size(), 1U);
ss.str("");
- ss << "/admin/opstate?client_id=" << cid_2 << "&op_id=" << oid_2
+ ss << "/admin/opstate?client-id=" << cid_2 << "&op-id=" << oid_2
<< "&object=" << obj_2;
rest_req = ss.str();
g_test->send_request(string("DELETE"), rest_req);
ASSERT_EQ(user_create(uid, display_name), 0);
ASSERT_EQ(0, caps_add(cname, perm));
- rest_req = "/admin/opstate?renew&client_id=1&op_id=1&object=o";
+ rest_req = "/admin/opstate?renew&client-id=1&op-id=1&object=o";
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing state*/
- rest_req = "/admin/opstate?renew&client_id=1&op_id=1&state=in-progress";
+ rest_req = "/admin/opstate?renew&client-id=1&op-id=1&state=in-progress";
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing object*/
- rest_req = "/admin/opstate?renew&client_id=1&state=in-progress&object=o";
+ rest_req = "/admin/opstate?renew&client-id=1&state=in-progress&object=o";
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
- EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing op_id*/
+ EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing op-id*/
- rest_req = "/admin/opstate?renew&state=in-progress&op_id=1&object=o";
+ rest_req = "/admin/opstate?renew&state=in-progress&op-id=1&object=o";
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
- EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing client_id*/
+ EXPECT_EQ(400U, g_test->get_resp_code()); /*Missing client-id*/
- rest_req = "/admin/opstate?&renew&state=invalid&op_id=1&object=o&client_id=1";
+ rest_req = "/admin/opstate?&renew&state=invalid&op-id=1&object=o&client-id=1";
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
EXPECT_EQ(400U, g_test->get_resp_code()); /*Invalid state*/
state = "complete";
ss.str("");
- ss << "/admin/opstate?client_id=" << cid_1 << "&op_id=" << oid_1
+ ss << "/admin/opstate?client-id=" << cid_1 << "&op-id=" << oid_1
<< "&object=" << obj_1 << "&state=" << state;
rest_req = ss.str();
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
EXPECT_EQ(200U, g_test->get_resp_code());
ss.str("");
- ss << "/admin/opstate?renew&client_id=" << cid_1 << "&op_id=1"
+ ss << "/admin/opstate?renew&client-id=" << cid_1 << "&op-id=1"
<< "&object=" << obj_1 << "&state=" << state;
rest_req = ss.str();
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
EXPECT_EQ(404U, g_test->get_resp_code());
ss.str("");
- ss << "/admin/opstate?renew&client_id=" << cid_1 << "&op_id=" << oid_1
+ ss << "/admin/opstate?renew&client-id=" << cid_1 << "&op-id=" << oid_1
<< "&object=" << obj_1 << "&state=" << state;
rest_req = ss.str();
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
EXPECT_EQ(200U, g_test->get_resp_code());
ss.str("");
- ss << "/admin/opstate?renew&client_id=" << cid_1 << "&op_id=" << oid_1
+ ss << "/admin/opstate?renew&client-id=" << cid_1 << "&op-id=" << oid_1
<< "&object=" << obj_1 << "&state=in-progress";
rest_req = ss.str();
g_test->send_request(string("POST"), rest_req, read_dummy_post, NULL, sizeof(int));
EXPECT_EQ(500U, g_test->get_resp_code());
ss.str("");
- ss << "/admin/opstate?client_id=" << cid_1 << "&op_id=" << oid_1
+ ss << "/admin/opstate?client-id=" << cid_1 << "&op-id=" << oid_1
<< "&object=" << obj_1;
rest_req = ss.str();
g_test->send_request(string("DELETE"), rest_req);