class RGWOp;
+struct delete_multi_obj_entry {
+ std::string key, version_id, error_message, marker_version_id;
+ uint32_t http_status;
+ bool error, delete_marker;
+
+ void encode(bufferlist &bl) const {
+ ENCODE_START(1, 1, bl);
+ encode(key, bl);
+ encode(version_id, bl);
+ encode(error_message, bl);
+ encode(marker_version_id, bl);
+ encode(http_status, bl);
+ encode(error, bl);
+ encode(delete_marker, bl);
+ ENCODE_FINISH(bl);
+ }
+
+ void decode(bufferlist::const_iterator &p) {
+ DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, p);
+ decode(key, p);
+ decode(version_id, p);
+ decode(error_message, p);
+ decode(marker_version_id, p);
+ decode(http_status, p);
+ decode(error, p);
+ decode(delete_marker, p);
+ DECODE_FINISH(p);
+ }
+};
+WRITE_CLASS_ENCODER(delete_multi_obj_entry)
+
+struct delete_multi_obj_op_meta {
+ uint32_t num_ok, num_err;
+ std::vector<delete_multi_obj_entry> objects;
+
+ void encode(bufferlist &bl) const {
+ ENCODE_START(1, 1, bl);
+ encode(num_ok, bl);
+ encode(num_err, bl);
+ encode(objects, bl);
+ ENCODE_FINISH(bl);
+ }
+
+ void decode(bufferlist::const_iterator &p) {
+ DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, p);
+ decode(num_ok, p);
+ decode(num_err, p);
+ decode(objects, p);
+ DECODE_FINISH(p);
+ }
+};
+WRITE_CLASS_ENCODER(delete_multi_obj_op_meta)
+
struct rgw_log_entry {
using headers_map = boost::container::flat_map<std::string, std::string>;
std::string access_key_id;
std::string subuser;
bool temp_url {false};
+ delete_multi_obj_op_meta delete_multi_obj_meta;
void encode(bufferlist &bl) const {
- ENCODE_START(13, 5, bl);
+ ENCODE_START(14, 5, bl);
encode(object_owner.id, bl);
encode(bucket_owner.id, bl);
encode(bucket, bl);
encode(access_key_id, bl);
encode(subuser, bl);
encode(temp_url, bl);
+ encode(delete_multi_obj_meta, bl);
ENCODE_FINISH(bl);
}
void decode(bufferlist::const_iterator &p) {
- DECODE_START_LEGACY_COMPAT_LEN(13, 5, 5, p);
+ DECODE_START_LEGACY_COMPAT_LEN(14, 5, 5, p);
decode(object_owner.id, p);
if (struct_v > 3)
decode(bucket_owner.id, p);
decode(subuser, p);
decode(temp_url, p);
}
+ if (struct_v >= 14) {
+ decode(delete_multi_obj_meta, p);
+ }
DECODE_FINISH(p);
}
void dump(ceph::Formatter *f) const;
DEFINE_REQ_STATE;
s.init_state.url_bucket = "myname";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "put_obj", script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
ASSERT_EQ(s.init_state.url_bucket, "othername");
}
b.name = "myname";
s.bucket.reset(new sal::RadosBucket(nullptr, b));
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "put_obj", script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
ASSERT_NE(rc, 0);
}
u.id = "myid";
s.user.reset(new sal::RadosUser(nullptr, u));
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "put_obj", script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
// to make sure test is consistent we have to puase the background
lua_background.pause();
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "hello"), "from request");
// now we resume and let the background set the value
DEFINE_REQ_STATE;
s.lua_background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "string value");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
DEFINE_REQ_STATE;
s.lua_background = &lua_background;
- auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "string value");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
RGW["key4"] = RGW["key2"]
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "string value");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
s.err.ret = -99;
s.err.message = "hi";
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<long long int>(lua_background, "key1"), -99);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key2"), "hi");
s.tagset.add_tag("key1", "val1");
s.tagset.add_tag("key2", "val2");
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "val1");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
DEFINE_REQ_STATE;
s.lua_background = &lua_background;
- auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "string value");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
RGW["size"] = #RGW
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
DEFINE_REQ_STATE;
s.lua_background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
EXPECT_EQ(get_table_value<std::string>(lua_background, "key1"), "string value");
EXPECT_EQ(get_table_value<long long int>(lua_background, "key2"), 42);
DEFINE_REQ_STATE;
s.lua_background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
s.lua_background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
s.lua_background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
s.lua_background = &lua_background;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
s.lua_background = &lua_background;
- auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
request_script = R"(
RGW.increment("key1")
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
request_script = R"(
RGW.increment("key1", "kaboom")
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
}
DEFINE_REQ_STATE;
s.lua_background = &lua_background;
- auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
request_script = R"(
RGW.increment = 11
)";
- rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "", request_script);
+ rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, request_script);
ASSERT_NE(rc, 0);
}
DEFINE_REQ_STATE;
INIT_TRACE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "put_obj", script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}
DEFINE_REQ_STATE;
INIT_TRACE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "put_obj", script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
#ifdef HAVE_JAEGER
ASSERT_NE(rc, 0);
#else
DEFINE_REQ_STATE;
INIT_TRACE;
- const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, "put_obj", script);
+ const auto rc = lua::request::execute(nullptr, nullptr, nullptr, &s, nullptr, script);
ASSERT_EQ(rc, 0);
}