Currently, ceph-dencoder lacks certain rgw types, preventing us from accurately checking the ceph corpus for encode-decode mismatches.
This pull request aims to address this issue by adding the missing types to ceph-dencoder.
To successfully incorporate these types into ceph-dencoder, we need to introduce the necessary `dump` and `generate_test_instances`
functions that was missing in some types. These functions are essential for proper encode and decode of the added types.
This PR will enhance the functionality of ceph-dencoder by including the missing types, enabling a comprehensive analysis of encode-decode consistency.
With the addition of these types, we can ensure the robustness and correctness of the ceph corpus.
This update will significantly contribute to improving the overall reliability and accuracy of ceph-dencoder.
It allows for a more comprehensive assessment of the encode-decode behavior, leading to enhanced data integrity and stability within the ceph ecosystem.
Fixes: https://tracker.ceph.com/issues/61788
Signed-off-by: Nitzan Mordechai <nmordech@redhat.com>
}
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter* f) const {
+ encode_json("entries", entries, f);
+ encode_json("monotonic_inc", monotonic_inc, f);
+ }
+
+ static void generate_test_instances(std::list<cls_log_add_op *>& l) {
+ l.push_back(new cls_log_add_op);
+ l.push_back(new cls_log_add_op);
+ l.back()->entries.push_back(cls_log_entry());
+ l.back()->entries.push_back(cls_log_entry());
+ l.back()->entries.back().section = "section";
+ l.back()->entries.back().name = "name";
+ l.back()->entries.back().timestamp = utime_t(1, 2);
+ l.back()->entries.back().data.append("data");
+ l.back()->entries.back().id = "id";
+ }
};
WRITE_CLASS_ENCODER(cls_log_add_op)
decode(keep_attr_prefixes, bl);
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ encode_json("keep_attr_prefixes", keep_attr_prefixes, f);
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_obj_remove_op*>& o) {
+ o.push_back(new rgw_cls_obj_remove_op);
+ o.back()->keep_attr_prefixes.push_back("keep_attr_prefixes1");
+ o.back()->keep_attr_prefixes.push_back("keep_attr_prefixes2");
+ o.back()->keep_attr_prefixes.push_back("keep_attr_prefixes3");
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_obj_remove_op)
decode(attr, bl);
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_string("attr", attr);
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_obj_store_pg_ver_op*>& o) {
+ o.push_back(new rgw_cls_obj_store_pg_ver_op);
+ o.back()->attr = "attr";
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_obj_store_pg_ver_op)
decode(fail_if_exist, bl);
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_string("check_prefix", check_prefix);
+ f->dump_bool("fail_if_exist", fail_if_exist);
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_obj_check_attrs_prefix*>& o) {
+ o.push_back(new rgw_cls_obj_check_attrs_prefix);
+ o.back()->check_prefix = "prefix";
+ o.back()->fail_if_exist = true;
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_obj_check_attrs_prefix)
}
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_object("info", info);
+ f->dump_string("user", user.to_str());
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_usage_log_add_op*>& o) {
+ o.push_back(new rgw_cls_usage_log_add_op);
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_usage_log_add_op)
type = (BIIndexType)c;
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_stream("key") << key;
+ f->dump_int("type", (int)type);
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_bi_get_op*>& o) {
+ o.push_back(new rgw_cls_bi_get_op);
+ o.push_back(new rgw_cls_bi_get_op);
+ o.back()->key.name = "key";
+ o.back()->key.instance = "instance";
+ o.back()->type = BIIndexType::Plain;
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_bi_get_op)
decode(entry, bl);
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_string("entry", entry.idx);
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_bi_get_ret*>& o) {
+ o.push_back(new rgw_cls_bi_get_ret);
+ o.back()->entry.idx = "entry";
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_bi_get_ret)
decode(entry, bl);
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_string("entry", entry.idx);
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_bi_put_op*>& o) {
+ o.push_back(new rgw_cls_bi_put_op);
+ o.push_back(new rgw_cls_bi_put_op);
+ o.back()->entry.idx = "entry";
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_bi_put_op)
decode(marker, bl);
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_unsigned("max", max);
+ f->dump_string("name_filter", name_filter);
+ f->dump_string("marker", marker);
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_bi_list_op*>& o) {
+ o.push_back(new rgw_cls_bi_list_op);
+ o.push_back(new rgw_cls_bi_list_op);
+ o.back()->max = 100;
+ o.back()->name_filter = "name_filter";
+ o.back()->marker = "marker";
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_bi_list_op)
decode(is_truncated, bl);
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_bool("is_truncated", is_truncated);
+ encode_json("entries", entries, f);
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_bi_list_ret*>& o) {
+ o.push_back(new rgw_cls_bi_list_ret);
+ o.push_back(new rgw_cls_bi_list_ret);
+ o.back()->entries.push_back(rgw_cls_bi_entry());
+ o.back()->entries.push_back(rgw_cls_bi_entry());
+ o.back()->entries.back().idx = "entry";
+ o.back()->is_truncated = true;
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_bi_list_ret)
}
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_unsigned("start_epoch", start_epoch);
+ f->dump_unsigned("end_epoch", end_epoch);
+ f->dump_string("owner", owner);
+ f->dump_string("bucket", bucket);
+ f->dump_string("iter", iter);
+ f->dump_unsigned("max_entries", max_entries);
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_usage_log_read_op*>& o) {
+ o.push_back(new rgw_cls_usage_log_read_op);
+ o.back()->start_epoch = 1;
+ o.back()->end_epoch = 2;
+ o.back()->owner = "owner";
+ o.back()->bucket = "bucket";
+ o.back()->iter = "iter";
+ o.back()->max_entries = 100;
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_usage_log_read_op)
decode(next_iter, bl);
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_bool("truncated", truncated);
+ f->dump_string("next_iter", next_iter);
+ encode_json("usage", usage, f);
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_usage_log_read_ret*>& o) {
+ o.push_back(new rgw_cls_usage_log_read_ret);
+ o.back()->next_iter = "123";
+ o.back()->truncated = true;
+ o.back()->usage.clear();
+ o.push_back(new rgw_cls_usage_log_read_ret);
+ o.back()->usage[rgw_user_bucket("user1", "bucket1")] = rgw_usage_log_entry();
+ o.back()->usage[rgw_user_bucket("user2", "bucket2")] = rgw_usage_log_entry();
+ o.back()->truncated = true;
+ o.back()->next_iter = "next_iter";
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_usage_log_read_ret)
}
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_unsigned("start_epoch", start_epoch);
+ f->dump_unsigned("end_epoch", end_epoch);
+ f->dump_string("user", user);
+ f->dump_string("bucket", bucket);
+ }
+
+ static void generate_test_instances(std::list<rgw_cls_usage_log_trim_op*>& ls) {
+ rgw_cls_usage_log_trim_op *m = new rgw_cls_usage_log_trim_op;
+ m->start_epoch = 1;
+ m->end_epoch = 2;
+ m->user = "user";
+ m->bucket = "bucket";
+ ls.push_back(m);
+ }
};
WRITE_CLASS_ENCODER(rgw_cls_usage_log_trim_op)
}
DECODE_FINISH(bl);
}
+
+ void dump(ceph::Formatter *f) const {
+ f->dump_string("bucket", entry.bucket);
+ f->dump_int("start_time", entry.start_time);
+ f->dump_int("status", entry.status);
+ }
+
+ static void generate_test_instances(std::list<cls_rgw_lc_set_entry_op*>& ls) {
+ ls.push_back(new cls_rgw_lc_set_entry_op);
+ ls.push_back(new cls_rgw_lc_set_entry_op);
+ ls.back()->entry.bucket = "foo";
+ ls.back()->entry.start_time = 123;
+ ls.back()->entry.status = 456;
+ }
};
WRITE_CLASS_ENCODER(cls_rgw_lc_set_entry_op)
JSONDecoder::decode_json("entry", s, obj);
from_str(s);
}
+void rgw_zone_set::dump(Formatter *f) const
+{
+ encode_json("entries", entries, f);
+}
+
+void rgw_zone_set::generate_test_instances(list<rgw_zone_set*>& o)
+{
+ o.push_back(new rgw_zone_set);
+ o.push_back(new rgw_zone_set);
+ std::optional<string> loc_key = "loc_key";
+ o.back()->insert("zone1", loc_key);
+ o.back()->insert("zone2", loc_key);
+ o.back()->insert("zone3", loc_key);
+}
void rgw_zone_set::insert(const string& zone, std::optional<string> location_key)
{
/* no DECODE_START, DECODE_END for backward compatibility */
ceph::decode(entries, bl);
}
-
+ void dump(ceph::Formatter *f) const;
+ static void generate_test_instances(std::list<rgw_zone_set*>& o);
void insert(const std::string& zone, std::optional<std::string> location_key);
bool exists(const std::string& zone, std::optional<std::string> location_key) const;
};
DECODE_FINISH(bl);
}
+ void dump(ceph::Formatter *f) const {
+ f->dump_unsigned("size", size);
+ f->dump_unsigned("num_deferred_entries", num_deferred_entries);
+ }
+
+ static void generate_test_instances(std::list<cls_rgw_gc_queue_init_op*>& o) {
+ o.push_back(new cls_rgw_gc_queue_init_op);
+ o.back()->size = 1024;
+ o.back()->num_deferred_entries = 512;
+ }
};
WRITE_CLASS_ENCODER(cls_rgw_gc_queue_init_op)
decode(num_xattr_urgent_entries, bl);
DECODE_FINISH(bl);
}
+ void dump(ceph::Formatter *f) const {
+ f->open_object_section("urgent_data_map");
+ for (auto& i : urgent_data_map) {
+ f->dump_string(i.first.c_str(), i.first);
+ }
+ f->close_section();
+ f->dump_unsigned("num_urgent_data_entries", num_urgent_data_entries);
+ f->dump_unsigned("num_head_urgent_entries", num_head_urgent_entries);
+ f->dump_unsigned("num_xattr_urgent_entries", num_xattr_urgent_entries);
+ }
+ static void generate_test_instances(std::list<cls_rgw_gc_urgent_data*>& o) {
+ o.push_back(new cls_rgw_gc_urgent_data);
+ o.push_back(new cls_rgw_gc_urgent_data);
+ o.back()->num_urgent_data_entries = 1024;
+ o.back()->num_head_urgent_entries = 512;
+ o.back()->num_xattr_urgent_entries = 512;
+ }
};
WRITE_CLASS_ENCODER(cls_rgw_gc_urgent_data)
encode_json("override_prefix", override_prefix, f);
}
+void RGWObjManifestRule::generate_test_instances(std::list<RGWObjManifestRule*>& o)
+{
+ RGWObjManifestRule *r = new RGWObjManifestRule;
+ r->start_part_num = 0;
+ r->start_ofs = 0;
+ r->part_size = 512 * 1024;
+ r->stripe_max_size = 512 * 1024 * 1024;
+ r->override_prefix = "override_prefix";
+ o.push_back(r);
+ o.push_back(new RGWObjManifestRule);
+}
+
void rgw_obj_select::dump(Formatter *f) const
{
f->dump_string("placement_rule", placement_rule.to_str());
encode_json("is_multipart_upload", is_multipart_upload, f);
}
+void RGWObjTier::generate_test_instances(std::list<RGWObjTier*>& o)
+{
+ RGWObjTier *t = new RGWObjTier;
+ t->name = "name";
+ std::list<RGWZoneGroupPlacementTier *> tiers;
+ RGWZoneGroupPlacementTier::generate_test_instances(tiers);
+ for (auto iter = tiers.begin(); iter != tiers.end(); ++iter) {
+ t->tier_placement = *(*iter);
+ }
+ t->is_multipart_upload = true;
+ o.push_back(t);
+ o.push_back(new RGWObjTier);
+}
+
// returns true on success, false on failure
static bool rgw_get_obj_data_pool(const RGWZoneGroup& zonegroup, const RGWZoneParams& zone_params,
const rgw_placement_rule& head_placement_rule,
DECODE_FINISH(bl);
}
void dump(Formatter *f) const;
+ static void generate_test_instances(std::list<RGWObjManifestRule*>& o);
};
WRITE_CLASS_ENCODER(RGWObjManifestRule)
DECODE_FINISH(bl);
}
void dump(Formatter *f) const;
+ static void generate_test_instances(std::list<RGWObjTier*>& o);
};
WRITE_CLASS_ENCODER(RGWObjTier)
encode_json("time", ut, f);
}
+void RGWOLHPendingInfo::generate_test_instances(list<RGWOLHPendingInfo*>& o)
+{
+ auto it = new RGWOLHPendingInfo;
+ it->time = ceph::real_clock::zero();
+ o.push_back(it);
+}
}
void dump(Formatter *f) const;
+ static void generate_test_instances(std::list<RGWOLHPendingInfo*>& o);
};
WRITE_CLASS_ENCODER(RGWOLHPendingInfo)
decode(s, bl);
user_id.from_str(s);
}
+ void dump(Formatter *f) const {
+ f->dump_string("user_id", user_id.to_str());
+ }
+ static void generate_test_instances(std::list<RGWUID*>& o) {
+ o.push_back(new RGWUID);
+ o.push_back(new RGWUID);
+ o.back()->user_id.from_str("test:tester");
+ }
};
WRITE_CLASS_ENCODER(RGWUID)
JSONDecoder::decode_json("obj_id", obj_id, obj);
}
+void RGWNameToId::generate_test_instances(list<RGWNameToId*>& o) {
+ RGWNameToId *n = new RGWNameToId;
+ n->obj_id = "id";
+ o.push_back(n);
+ o.push_back(new RGWNameToId);
+}
+
bool is_valid_cap_type(const std::string& tp);
void dump(Formatter *f) const;
void dump(Formatter *f, const char *name) const;
-
+ static void generate_test_instances(std::list<RGWUserCaps*>& o);
void decode_json(JSONObj *obj);
};
WRITE_CLASS_ENCODER(RGWUserCaps)
ceph::decode(id, bl);
}
+ void dump(ceph::Formatter *f) const {
+ f->dump_string("id", id);
+ }
+
+ static void generate_test_instances(std::list<rgw_zone_id*>& o) {
+ o.push_back(new rgw_zone_id);
+ o.push_back(new rgw_zone_id("id"));
+ }
+
void clear() {
id.clear();
}
dump(f, "caps");
}
+void RGWUserCaps::generate_test_instances(list<RGWUserCaps*>& o)
+{
+ o.push_back(new RGWUserCaps);
+ RGWUserCaps *caps = new RGWUserCaps;
+ caps->add_cap("read");
+ caps->add_cap("write");
+ o.push_back(caps);
+}
+
void RGWUserCaps::dump(Formatter *f, const char *name) const
{
f->open_array_section(name);
pool = old_obj.get_explicit_data_pool();
}
+void rgw_raw_obj::generate_test_instances(std::list<rgw_raw_obj*>& o)
+{
+ rgw_raw_obj *r = new rgw_raw_obj;
+ r->oid = "foo";
+ r->loc = "bar";
+ r->pool.name = "baz";
+ r->pool.ns = "ns";
+ o.push_back(r);
+}
+
static struct rgw_name_to_flag op_type_mapping[] = { {"*", RGW_OP_TYPE_ALL},
{"read", RGW_OP_TYPE_READ},
{"write", RGW_OP_TYPE_WRITE},
decode(dest_placement, bl);
DECODE_FINISH(bl);
}
+
+ void dump(Formatter *f) const {
+ dest_placement.dump(f);
+ }
+
+ static void generate_test_instances(std::list<multipart_upload_info*>& o) {
+ o.push_back(new multipart_upload_info);
+ o.push_back(new multipart_upload_info);
+ o.back()->dest_placement.name = "dest_placement";
+ o.back()->dest_placement.storage_class = "dest_storage_class";
+ }
};
WRITE_CLASS_ENCODER(multipart_upload_info)
::encode_json("blocks", blocks, f);
}
+void RGWCompressionInfo::generate_test_instances(list<RGWCompressionInfo*>& o)
+{
+ RGWCompressionInfo *i = new RGWCompressionInfo;
+ i->compression_type = "type";
+ i->orig_size = 1024;
+ i->blocks.push_back(compression_block());
+ i->blocks.back().old_ofs = 0;
+ i->blocks.back().new_ofs = 0;
+ i->blocks.back().len = 1024;
+ o.push_back(i);
+}
DECODE_FINISH(bl);
}
void dump(Formatter *f) const;
+ static void generate_test_instances(std::list<RGWCompressionInfo*>& o);
};
WRITE_CLASS_ENCODER(RGWCompressionInfo)
#include "include/types.h"
#include "common/debug.h"
#include "include/str_list.h"
+#include "common/ceph_json.h"
#include "common/Formatter.h"
#include "rgw_cors.h"
}
}
+void RGWCORSRule::dump(Formatter *f) const
+{
+ f->open_object_section("CORSRule");
+ f->dump_string("ID", id);
+ f->dump_unsigned("MaxAgeSeconds", max_age);
+ f->dump_unsigned("AllowedMethod", allowed_methods);
+ encode_json("AllowedOrigin", allowed_origins, f);
+ encode_json("AllowedHeader", allowed_hdrs, f);
+ encode_json("ExposeHeader", exposable_hdrs, f);
+}
+
void RGWCORSRule::erase_origin_if_present(string& origin, bool *rule_empty) {
set<string>::iterator it = allowed_origins.find(origin);
if (!rule_empty)
}
}
+void RGWCORSRule::generate_test_instances(list<RGWCORSRule*>& o)
+{
+ o.push_back(new RGWCORSRule);
+ o.push_back(new RGWCORSRule);
+ o.back()->id = "test";
+ o.back()->max_age = 100;
+ o.back()->allowed_methods = RGW_CORS_GET | RGW_CORS_PUT;
+ o.back()->allowed_origins.insert("http://origin1");
+ o.back()->allowed_origins.insert("http://origin2");
+ o.back()->allowed_hdrs.insert("accept-encoding");
+ o.back()->allowed_hdrs.insert("accept-language");
+ o.back()->exposable_hdrs.push_back("x-rgw-something");
+}
+
/*
* make attrs look-like-this
* does not convert underscores or dashes
decode(exposable_hdrs, bl);
DECODE_FINISH(bl);
}
+ static void generate_test_instances(std::list<RGWCORSRule*>& o);
bool has_wildcard_origin();
bool is_origin_present(const char *o);
void format_exp_headers(std::string& s);
}
void dump(Formatter *f) const;
+ static void generate_test_instances(std::list<rgw_raw_obj*>& o);
void decode_json(JSONObj *obj);
};
WRITE_CLASS_ENCODER(rgw_raw_obj)
}
}
+void DefaultRetention::dump(Formatter *f) const {
+ f->dump_string("mode", mode);
+ if (days > 0) {
+ f->dump_int("days", days);
+ } else {
+ f->dump_int("years", years);
+ }
+}
+
void DefaultRetention::dump_xml(Formatter *f) const {
encode_xml("Mode", mode, f);
if (days > 0) {
encode_xml("DefaultRetention", defaultRetention, f);
}
+void ObjectLockRule::dump(Formatter *f) const {
+ f->open_object_section("default_retention");
+ defaultRetention.dump(f);
+ f->close_section();
+}
+
+void ObjectLockRule::generate_test_instances(std::list<ObjectLockRule*>& o) {
+ ObjectLockRule *obj = new ObjectLockRule;
+ o.push_back(obj);
+}
+
void RGWObjectLock::decode_xml(XMLObj *obj) {
string enabled_str;
RGWXMLDecoder::decode_xml("ObjectLockEnabled", enabled_str, obj, true);
}
}
+void RGWObjectLock::dump(Formatter *f) const {
+ f->dump_bool("enabled", enabled);
+ f->dump_bool("rule_exist", rule_exist);
+ if (rule_exist) {
+ f->open_object_section("rule");
+ rule.dump(f);
+ f->close_section();
+ }
+}
+
ceph::real_time RGWObjectLock::get_lock_until_date(const ceph::real_time& mtime) const {
if (!rule_exist) {
return ceph::real_time();
return mtime + std::chrono::years(get_years());
}
+void RGWObjectLock::generate_test_instances(list<RGWObjectLock*>& o) {
+ RGWObjectLock *obj = new RGWObjectLock;
+ obj->enabled = true;
+ obj->rule_exist = true;
+ o.push_back(obj);
+ obj = new RGWObjectLock;
+ obj->enabled = false;
+ obj->rule_exist = false;
+ o.push_back(obj);
+}
+
void RGWObjectRetention::decode_xml(XMLObj *obj) {
RGWXMLDecoder::decode_xml("Mode", mode, obj, true);
if (mode.compare("GOVERNANCE") != 0 && mode.compare("COMPLIANCE") != 0) {
decode(years, bl);
DECODE_FINISH(bl);
}
-
+ void dump(Formatter *f) const;
void decode_xml(XMLObj *obj);
void dump_xml(Formatter *f) const;
};
void decode_xml(XMLObj *obj);
void dump_xml(Formatter *f) const;
+ void dump(Formatter *f) const;
+ static void generate_test_instances(std::list<ObjectLockRule*>& o);
};
WRITE_CLASS_ENCODER(ObjectLockRule)
void decode_xml(XMLObj *obj);
void dump_xml(Formatter *f) const;
ceph::real_time get_lock_until_date(const ceph::real_time& mtime) const;
+ void dump(Formatter *f) const;
+ static void generate_test_instances(std::list<RGWObjectLock*>& o);
};
WRITE_CLASS_ENCODER(RGWObjectLock)
from_str(s);
}
+ void dump(Formatter *f) const {
+ f->dump_string("name", name);
+ f->dump_string("storage_class", get_storage_class());
+ }
+
+ static void generate_test_instances(std::list<rgw_placement_rule*>& o) {
+ o.push_back(new rgw_placement_rule);
+ o.push_back(new rgw_placement_rule("name", "storage_class"));
+ }
+
std::string to_str() const {
if (standard_storage_class()) {
return name;
DECODE_FINISH(bl);
}
+ void dump(ceph::Formatter *f) const {
+ f->dump_string("name", name);
+ f->dump_string("ns", ns);
+ }
+
+ static void generate_test_instances(std::list<rgw_pool*>& o) {
+ o.push_back(new rgw_pool);
+ o.push_back(new rgw_pool("pool", "ns"));
+ }
+
rgw_pool& operator=(const rgw_pool&) = default;
bool operator==(const rgw_pool& p) const {
f->dump_int("max_objects", max_objects);
}
+void RGWQuotaInfo::generate_test_instances(std::list<RGWQuotaInfo*>& o)
+{
+ o.push_back(new RGWQuotaInfo);
+ o.push_back(new RGWQuotaInfo);
+ o.back()->enabled = true;
+ o.back()->check_on_raw = true;
+ o.back()->max_size = 1024;
+ o.back()->max_objects = 1;
+}
+
void RGWQuotaInfo::decode_json(JSONObj *obj)
{
if (false == JSONDecoder::decode_json("max_size", max_size, obj)) {
}
void dump(Formatter *f) const;
-
+ static void generate_test_instances(std::list<RGWQuotaInfo*>& o);
void decode_json(JSONObj *obj);
};
}
}
+void rgw_sync_policy_info::generate_test_instances(list<rgw_sync_policy_info*>& o)
+{
+ rgw_sync_policy_info *info = new rgw_sync_policy_info;
+ o.push_back(info);
+}
+
void rgw_sync_policy_info::decode_json(JSONObj *obj)
{
vector<rgw_sync_policy_group> groups_vec;
}
void dump(ceph::Formatter *f) const;
+ static void generate_test_instances(std::list<rgw_sync_policy_info*>& o);
void decode_json(JSONObj *obj);
bool empty() const {
f->close_section();
}
+void RGWObjTags::generate_test_instances(std::list<RGWObjTags*>& o)
+{
+ RGWObjTags *r = new RGWObjTags;
+ r->add_tag("key1","val1");
+ r->add_tag("key2","val2");
+ o.push_back(r);
+ o.push_back(new RGWObjTags);
+}
+
}
void dump(Formatter *f) const;
+ static void generate_test_instances(std::list<RGWObjTags*>& o);
void add_tag(const std::string& key, const std::string& val="");
void emplace_tag(std::string&& key, std::string&& val);
int check_and_add_tag(const std::string& key, const std::string& val="");
* rather not clutter the output */
}
+void RGWZonePlacementInfo::generate_test_instances(list<RGWZonePlacementInfo*>& o)
+{
+ o.push_back(new RGWZonePlacementInfo);
+ o.push_back(new RGWZonePlacementInfo);
+ o.back()->index_pool = rgw_pool("rgw.buckets.index");
+
+ o.back()->data_extra_pool = rgw_pool("rgw.buckets.non-ec");
+ o.back()->index_type = rgw::BucketIndexType::Normal;
+ o.back()->inline_data = false;
+}
+
void RGWZonePlacementInfo::decode_json(JSONObj *obj)
{
JSONDecoder::decode_json("index_pool", index_pool, obj);
}
}
+void RGWZoneStorageClasses::generate_test_instances(list<RGWZoneStorageClasses*>& o)
+{
+ o.push_back(new RGWZoneStorageClasses);
+}
+
void RGWZoneStorageClasses::decode_json(JSONObj *obj)
{
JSONFormattable f;
}
}
+void RGWZoneStorageClass::generate_test_instances(list<RGWZoneStorageClass*>& o)
+{
+ o.push_back(new RGWZoneStorageClass);
+ o.push_back(new RGWZoneStorageClass);
+ o.back()->data_pool = rgw_pool("pool1");
+ o.back()->compression_type = "zlib";
+}
+
void RGWZoneStorageClass::decode_json(JSONObj *obj)
{
JSONDecoder::decode_json("data_pool", data_pool, obj);
void dump(Formatter *f) const;
void decode_json(JSONObj *obj);
+ static void generate_test_instances(std::list<RGWNameToId*>& o);
};
WRITE_CLASS_ENCODER(RGWNameToId)
void dump(Formatter *f) const;
void decode_json(JSONObj *obj);
+ static void generate_test_instances(std::list<RGWZoneStorageClass*>& o);
};
WRITE_CLASS_ENCODER(RGWZoneStorageClass)
void dump(Formatter *f) const;
void decode_json(JSONObj *obj);
+ static void generate_test_instances(std::list<RGWZoneStorageClasses*>& o);
};
WRITE_CLASS_ENCODER(RGWZoneStorageClasses)
void dump(Formatter *f) const;
void decode_json(JSONObj *obj);
+ static void generate_test_instances(std::list<RGWZonePlacementInfo*>& o);
};
WRITE_CLASS_ENCODER(RGWZonePlacementInfo)
void dump(Formatter *f) const;
void decode_json(JSONObj *obj);
+ static void generate_test_instances(std::list<RGWZoneGroupPlacementTier*>& o) {
+ o.push_back(new RGWZoneGroupPlacementTier);
+ o.push_back(new RGWZoneGroupPlacementTier);
+ o.back()->tier_type = "cloud-s3";
+ o.back()->storage_class = "STANDARD";
+ }
};
WRITE_CLASS_ENCODER(RGWZoneGroupPlacementTier)
}
void dump(Formatter *f) const;
void decode_json(JSONObj *obj);
+ static void generate_test_instances(std::list<RGWZoneGroupPlacementTarget*>& o) {
+ o.push_back(new RGWZoneGroupPlacementTarget);
+ o.back()->storage_classes.insert("STANDARD");
+ o.push_back(new RGWZoneGroupPlacementTarget);
+ o.back()->name = "target";
+ o.back()->tags.insert("tag1");
+ o.back()->tags.insert("tag2");
+ o.back()->storage_classes.insert("STANDARD_IA");
+ o.back()->tier_targets["cloud-s3"].tier_type = "cloud-s3";
+ o.back()->tier_targets["cloud-s3"].storage_class = "STANDARD";
+ }
};
WRITE_CLASS_ENCODER(RGWZoneGroupPlacementTarget)
TYPE(RGWObjManifestPart)
TYPE(RGWObjManifest)
TYPE(objexp_hint_entry)
+TYPE(RGWOLHPendingInfo)
#include "rgw_zone.h"
TYPE(RGWZoneParams)
TYPE(RGWRealm)
TYPE(RGWPeriod)
TYPE(RGWPeriodLatestEpochInfo)
+TYPE(RGWNameToId)
#include "rgw_acl.h"
TYPE(ACLPermission)
#include "cls/log/cls_log_types.h"
TYPE(cls_log_entry)
+#include "cls/log/cls_log_ops.h"
+TYPE(cls_log_add_op)
+
#include "cls/rgw/cls_rgw_types.h"
TYPE(rgw_bucket_pending_info)
TYPE(rgw_bucket_dir_entry_meta)
TYPE(rgw_usage_log_info)
TYPE(rgw_user_bucket)
TYPE(cls_rgw_lc_entry)
+TYPE(rgw_zone_set)
#include "cls/rgw/cls_rgw_ops.h"
TYPE(cls_rgw_lc_get_entry_ret)
TYPE(cls_rgw_set_bucket_resharding_op)
TYPE(cls_rgw_clear_bucket_resharding_op)
TYPE(cls_rgw_lc_obj_head)
+TYPE(rgw_cls_bi_get_op)
+TYPE(rgw_cls_bi_get_ret)
+TYPE(rgw_cls_bi_list_op)
+TYPE(rgw_cls_bi_list_ret)
+TYPE(rgw_cls_bi_put_op)
+TYPE(rgw_cls_obj_check_attrs_prefix)
+TYPE(rgw_cls_obj_remove_op)
+TYPE(rgw_cls_obj_store_pg_ver_op)
+TYPE(rgw_cls_usage_log_add_op)
+TYPE(rgw_cls_usage_log_read_op)
+TYPE(rgw_cls_usage_log_read_ret)
+TYPE(rgw_cls_usage_log_trim_op)
+TYPE(cls_rgw_guard_bucket_resharding_op)
+TYPE(cls_rgw_lc_set_entry_op)
+
+#include "cls/rgw_gc/cls_rgw_gc_ops.h"
+TYPE(cls_rgw_gc_queue_init_op)
+#include "cls/rgw_gc/cls_rgw_gc_types.h"
+TYPE(cls_rgw_gc_urgent_data)
+
+
+
#include "cls/rgw/cls_rgw_client.h"
TYPE(rgw_bi_log_entry)
TYPE(cls::journal::ObjectSetPosition)
TYPE(cls::journal::Client)
TYPE(cls::journal::Tag)
+using namespace cls::journal;
+TYPE(ObjectSetPosition)
+TYPE(ObjectPosition)
+TYPE(Tag)
+TYPE(Client)
+
+#include "cls/version/cls_version_types.h"
+TYPE(obj_version)
#include "rgw_common.h"
TYPE(RGWAccessKey)
TYPE(RGWBucketInfo)
TYPE(RGWBucketEnt)
TYPE(rgw_obj)
+TYPE(RGWBucketEntryPoint)
+TYPE(multipart_upload_info)
+
#include "rgw_log.h"
TYPE(rgw_log_entry)
#include "rgw_bucket_encryption.h"
TYPE(RGWBucketEncryptionConfig)
+#include "rgw_compression_types.h"
+TYPE(RGWCompressionInfo)
+
+#include "rgw_cors.h"
+TYPE(RGWCORSRule)
+
+#include "rgw_object_lock.h"
+TYPE(RGWObjectLock)
+TYPE(ObjectLockRule)
+
+
+#include "rgw_obj_types.h"
+TYPE(rgw_obj_index_key)
+TYPE(rgw_raw_obj)
+
+#include "rgw_obj_manifest.h"
+TYPE(RGWObjManifestRule)
+TYPE(RGWObjTier)
+
+#include "rgw_tag.h"
+TYPE(RGWObjTags)
+
+#include "rgw_placement_types.h"
+TYPE(rgw_placement_rule)
+
+#include "rgw_pool_types.h"
+TYPE(rgw_pool)
+
+#include "rgw_quota_types.h"
+TYPE(RGWQuotaInfo)
+
+
+#include "rgw_sync_policy.h"
+TYPE(rgw_sync_policy_info)
+
+#include "rgw_basic_types.h"
+TYPE(rgw_zone_id)
+TYPE(RGWZoneStorageClass)
+TYPE(RGWZoneStorageClasses)
+TYPE(RGWZonePlacementInfo)
+TYPE(RGWZoneGroupPlacementTarget)
+TYPE(RGWUserCaps)
+
+
+#include "rgw_user.h"
+TYPE(RGWUID)
+
+#include "rgw_user_types.h"
+TYPE(rgw_user)
+
#endif