From: Marcus Watts Date: Fri, 3 Aug 2018 03:49:30 +0000 (-0400) Subject: Add several types to ceph-dencoder. X-Git-Tag: v15.1.0~1944^2~20 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f7236ba1f7923eb643bbeb8bf861fc80dc915d6a;p=ceph.git Add several types to ceph-dencoder. Add types: RGWBucketEntryPoint obj_version rgw_user These are structures that are visible as data at rest inside of rados when a bucket is made via radosgw. RGWBucketEntryPoint is the contents of a rados object with names that may be either "" or "/" rgw_user is a structure contained inside of RGWBucketEntryPoint and other structures. obj_version is visible as the xattr "ceph.objclass.version" on rados objects in ".rgw.meta" that contain ".bucket.meta." Fixes: http://tracker.ceph.com/issues/35885 Signed-off-by: Marcus Watts --- diff --git a/src/cls/version/cls_version_types.h b/src/cls/version/cls_version_types.h index 15433b46fd1..852183f30e5 100644 --- a/src/cls/version/cls_version_types.h +++ b/src/cls/version/cls_version_types.h @@ -47,6 +47,7 @@ struct obj_version { void dump(Formatter *f) const; void decode_json(JSONObj *obj); + static void generate_test_instances(list& o); }; WRITE_CLASS_ENCODER(obj_version) diff --git a/src/rgw/rgw_basic_types.h b/src/rgw/rgw_basic_types.h index b2b9b7b4ec7..eb19311b21d 100644 --- a/src/rgw/rgw_basic_types.h +++ b/src/rgw/rgw_basic_types.h @@ -104,6 +104,8 @@ struct rgw_user { } return (id < rhs.id); } + void dump(Formatter *f) const; + static void generate_test_instances(list& o); }; WRITE_CLASS_ENCODER(rgw_user) diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index 88febde24b7..80738a7b763 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -1599,6 +1599,7 @@ struct RGWBucketEntryPoint void dump(Formatter *f) const; void decode_json(JSONObj *obj); + static void generate_test_instances(list& o); }; WRITE_CLASS_ENCODER(RGWBucketEntryPoint) diff --git a/src/rgw/rgw_dencoder.cc b/src/rgw/rgw_dencoder.cc index 41216fe91b2..2cbbcb05d06 100644 --- a/src/rgw/rgw_dencoder.cc +++ b/src/rgw/rgw_dencoder.cc @@ -573,3 +573,32 @@ void objexp_hint_entry::generate_test_instances(list& o) o.push_back(it); o.push_back(new objexp_hint_entry); } + +void RGWBucketEntryPoint::generate_test_instances(list& o) +{ + RGWBucketEntryPoint *bp = new RGWBucketEntryPoint(); + init_bucket(&bp->bucket, "tenant", "bucket", "pool", ".index.pool", "marker", "10"); + bp->owner = "owner"; + bp->creation_time = ceph::real_clock::from_ceph_timespec({{2}, {3}}); + + o.push_back(bp); + o.push_back(new RGWBucketEntryPoint); +} + +void rgw_user::generate_test_instances(list& o) +{ + rgw_user *u = new rgw_user("tenant", "user"); + + o.push_back(u); + o.push_back(new rgw_user); +} + +void obj_version::generate_test_instances(list& o) +{ + obj_version *v = new obj_version; + v->ver = 5; + v->tag = "tag"; + + o.push_back(v); + o.push_back(new obj_version); +} diff --git a/src/rgw/rgw_json_enc.cc b/src/rgw/rgw_json_enc.cc index 6b4756cda90..60b621e3bf9 100644 --- a/src/rgw/rgw_json_enc.cc +++ b/src/rgw/rgw_json_enc.cc @@ -1760,3 +1760,8 @@ void objexp_hint_entry::dump(Formatter *f) const encode_json("exp_time", ut, f); f->close_section(); } + +void rgw_user::dump(Formatter *f) const +{ + ::encode_json("user", *this, f); +}