{
encode_json("name", name, f);
encode_json("data_pool", data_pool,f);
+ encode_json("data_extra_pool", data_extra_pool,f);
encode_json("index_pool", index_pool,f);
encode_json("marker", marker,f);
encode_json("bucket_id", bucket_id,f);
std::string index_pool;
std::string marker;
std::string bucket_id;
+ std::string data_extra_pool;
void encode(bufferlist& bl) const {
- ENCODE_START(6, 3, bl);
+ ENCODE_START(7, 3, bl);
::encode(name, bl);
::encode(data_pool, bl);
::encode(marker, bl);
::encode(bucket_id, bl);
::encode(index_pool, bl);
+ ::encode(data_extra_pool, bl);
ENCODE_FINISH(bl);
}
void decode(bufferlist::iterator& bl) {
- DECODE_START_LEGACY_COMPAT_LEN(6, 3, 3, bl);
+ DECODE_START_LEGACY_COMPAT_LEN(7, 3, 3, bl);
::decode(name, bl);
::decode(data_pool, bl);
if (struct_v >= 2) {
} else {
index_pool = data_pool;
}
+ if (struct_v >= 7) {
+ ::decode(data_extra_pool, bl);
+ }
DECODE_FINISH(bl);
}
struct rgw_bucket {
std::string name;
std::string data_pool;
+ std::string data_extra_pool; /* if not set, then we should use data_pool instead */
std::string index_pool;
std::string marker;
std::string bucket_id;
rgw_bucket(const cls_user_bucket& b) {
name = b.name;
data_pool = b.data_pool;
+ data_extra_pool = b.data_extra_pool;
index_pool = b.index_pool;
marker = b.marker;
bucket_id = b.bucket_id;
void convert(cls_user_bucket *b) {
b->name = name;
b->data_pool = data_pool;
+ b->data_extra_pool = data_extra_pool;
b->index_pool = index_pool;
b->marker = marker;
b->bucket_id = bucket_id;
}
- void clear() {
- name = "";
- data_pool = "";
- index_pool = "";
- marker = "";
- bucket_id = "";
- }
-
void encode(bufferlist& bl) const {
- ENCODE_START(6, 3, bl);
+ ENCODE_START(7, 3, bl);
::encode(name, bl);
::encode(data_pool, bl);
::encode(marker, bl);
::encode(bucket_id, bl);
::encode(index_pool, bl);
+ ::encode(data_extra_pool, bl);
ENCODE_FINISH(bl);
}
void decode(bufferlist::iterator& bl) {
- DECODE_START_LEGACY_COMPAT_LEN(6, 3, 3, bl);
+ DECODE_START_LEGACY_COMPAT_LEN(7, 3, 3, bl);
::decode(name, bl);
::decode(data_pool, bl);
if (struct_v >= 2) {
} else {
index_pool = data_pool;
}
+ if (struct_v >= 7) {
+ ::decode(data_extra_pool, bl);
+ }
DECODE_FINISH(bl);
}
+
+ const string& get_data_extra_pool() {
+ if (data_extra_pool.empty()) {
+ return data_pool;
+ }
+ return data_extra_pool;
+ }
+
void dump(Formatter *f) const;
void decode_json(JSONObj *obj);
static void generate_test_instances(list<rgw_bucket*>& o);
out << b.name;
if (b.name.compare(b.data_pool)) {
out << "(@";
+ string s;
if (!b.index_pool.empty() && b.data_pool.compare(b.index_pool))
- out << "{i=" << b.index_pool << "}";
+ s = "i=" + b.index_pool;
+ if (!b.data_extra_pool.empty() && b.data_pool.compare(b.data_extra_pool)) {
+ if (!s.empty()) {
+ s += ",";
+ }
+ s += "e=" + b.data_extra_pool;
+ }
+ if (!s.empty()) {
+ out << "{" << s << "}";
+ }
+
out << b.data_pool << "[" << b.marker << "])";
}
return out;
{
encode_json("name", name, f);
encode_json("pool", data_pool, f);
+ encode_json("data_extra_pool", data_extra_pool, f);
encode_json("index_pool", index_pool, f);
encode_json("marker", marker, f);
encode_json("bucket_id", bucket_id, f);
void rgw_bucket::decode_json(JSONObj *obj) {
JSONDecoder::decode_json("name", name, obj);
JSONDecoder::decode_json("pool", data_pool, obj);
+ JSONDecoder::decode_json("data_extra_pool", data_extra_pool, obj);
JSONDecoder::decode_json("index_pool", index_pool, obj);
JSONDecoder::decode_json("marker", marker, obj);
JSONDecoder::decode_json("bucket_id", bucket_id, obj);