return os;
}
+void ParentImageSpec::encode(bufferlist& bl) const {
+ ENCODE_START(1, 1, bl);
+ encode(pool_id, bl);
+ encode(pool_namespace, bl);
+ encode(image_id, bl);
+ encode(snap_id, bl);
+ ENCODE_FINISH(bl);
+}
+
+void ParentImageSpec::decode(bufferlist::const_iterator& bl) {
+ DECODE_START(1, bl);
+ decode(pool_id, bl);
+ decode(pool_namespace, bl);
+ decode(image_id, bl);
+ decode(snap_id, bl);
+ DECODE_FINISH(bl);
+}
+
+void ParentImageSpec::dump(Formatter *f) const {
+ f->dump_int("pool_id", pool_id);
+ f->dump_string("pool_namespace", pool_namespace);
+ f->dump_string("image_id", image_id);
+ f->dump_unsigned("snap_id", snap_id);
+}
+
+void ParentImageSpec::generate_test_instances(std::list<ParentImageSpec*>& o) {
+ o.push_back(new ParentImageSpec{});
+ o.push_back(new ParentImageSpec{1, "", "foo", 3});
+ o.push_back(new ParentImageSpec{1, "ns", "foo", 3});
+}
+
void ChildImageSpec::encode(bufferlist &bl) const {
ENCODE_START(1, 1, bl);
encode(pool_id, bl);
WRITE_CLASS_ENCODER(MirrorImageStatus);
+struct ParentImageSpec {
+ int64_t pool_id = -1;
+ std::string pool_namespace;
+ std::string image_id;
+ snapid_t snap_id = CEPH_NOSNAP;
+
+ ParentImageSpec() {
+ }
+ ParentImageSpec(int64_t pool_id, const std::string& pool_namespace,
+ const std::string& image_id, snapid_t snap_id)
+ : pool_id(pool_id), pool_namespace(pool_namespace), image_id(image_id),
+ snap_id(snap_id) {
+ }
+
+ bool exists() const {
+ return (pool_id >= 0 && !image_id.empty() && snap_id != CEPH_NOSNAP);
+ }
+
+ bool operator==(const ParentImageSpec& rhs) const {
+ return ((pool_id == rhs.pool_id) &&
+ (pool_namespace == rhs.pool_namespace) &&
+ (image_id == rhs.image_id) &&
+ (snap_id == rhs.snap_id));
+ }
+
+ bool operator!=(const ParentImageSpec& rhs) const {
+ return !(*this == rhs);
+ }
+
+ void encode(bufferlist &bl) const;
+ void decode(bufferlist::const_iterator &it);
+ void dump(Formatter *f) const;
+
+ static void generate_test_instances(std::list<ParentImageSpec*> &o);
+};
+
+WRITE_CLASS_ENCODER(ParentImageSpec);
+
struct ChildImageSpec {
int64_t pool_id = -1;
std::string image_id;
TYPE(cls_rbd_snap)
#include "cls/rbd/cls_rbd_types.h"
+TYPE(cls::rbd::ParentImageSpec)
TYPE(cls::rbd::ChildImageSpec)
TYPE(cls::rbd::MigrationSpec)
TYPE(cls::rbd::MirrorPeer)