int CrushWrapper::remove_item(CephContext *cct, int item, bool unlink_only)
{
+ if (choose_args.size() > 0) {
+ ldout(cct, 1) << "remove_item not implemented when choose_args is not empty" << dendl;
+ return -EDOM;
+ }
+
ldout(cct, 5) << "remove_item " << item << (unlink_only ? " unlink_only":"") << dendl;
int ret = -ENOENT;
int CrushWrapper::insert_item(CephContext *cct, int item, float weight, string name,
const map<string,string>& loc) // typename -> bucketname
{
+ if (choose_args.size() > 0) {
+ ldout(cct, 1) << "insert_item not implemented when choose_args is not empty" << dendl;
+ return -EDOM;
+ }
ldout(cct, 5) << "insert_item item " << item << " weight " << weight
<< " name " << name << " loc " << loc << dendl;
int CrushWrapper::move_bucket(CephContext *cct, int id, const map<string,string>& loc)
{
+ if (choose_args.size() > 0) {
+ ldout(cct, 1) << "move_bucket not implemented when choose_args is not empty" << dendl;
+ return -EDOM;
+ }
+
// sorry this only works for buckets
if (id >= 0)
return -EINVAL;
int CrushWrapper::link_bucket(CephContext *cct, int id, const map<string,string>& loc)
{
+ if (choose_args.size() > 0) {
+ ldout(cct, 1) << "link_bucket not implemented when choose_args is not empty" << dendl;
+ return -EDOM;
+ }
+
// sorry this only works for buckets
if (id >= 0)
return -EINVAL;
int CrushWrapper::create_or_move_item(CephContext *cct, int item, float weight, string name,
const map<string,string>& loc) // typename -> bucketname
{
+ if (choose_args.size() > 0) {
+ ldout(cct, 1) << "create_or_move_item not implemented when choose_args is not empty" << dendl;
+ return -EDOM;
+ }
+
int ret = 0;
int old_iweight;
int CrushWrapper::update_item(CephContext *cct, int item, float weight, string name,
const map<string,string>& loc) // typename -> bucketname
{
+ if (choose_args.size() > 0) {
+ ldout(cct, 1) << "update_item not implemented when choose_args is not empty" << dendl;
+ return -EDOM;
+ }
+
ldout(cct, 5) << "update_item item " << item << " weight " << weight
<< " name " << name << " loc " << loc << dendl;
int ret = 0;
delete c;
}
+TEST(CrushWrapper, choose_args_disabled) {
+ auto *c = new CrushWrapper;
+ c->choose_args[0] = crush_choose_arg_map();
+
+ map<string,string> loc;
+ ASSERT_EQ(-EDOM, c->remove_item(g_ceph_context, 0, true));
+ ASSERT_EQ(-EDOM, c->insert_item(g_ceph_context, 0, 0.0, "", loc));
+ ASSERT_EQ(-EDOM, c->move_bucket(g_ceph_context, 0, loc));
+ ASSERT_EQ(-EDOM, c->link_bucket(g_ceph_context, 0, loc));
+ ASSERT_EQ(-EDOM, c->create_or_move_item(g_ceph_context, 0, 0.0, "", loc));
+
+ delete c;
+}
+
TEST(CrushWrapper, remove_item) {
auto *c = new CrushWrapper;