]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rbd/action: display image id in rbd du/list json/xml formated output
authorsongweibin <song.weibin@zte.com.cn>
Mon, 29 Jul 2019 06:14:30 +0000 (14:14 +0800)
committersongweibin <song.weibin@zte.com.cn>
Thu, 1 Aug 2019 00:33:03 +0000 (08:33 +0800)
Signed-off-by: songweibin <song.weibin@zte.com.cn>
src/tools/rbd/action/DiskUsage.cc
src/tools/rbd/action/List.cc

index 649f39a7252c39a30e670dc7edc3ffd845bf229c..1506a892c7791fa289f7d21a6e2ab0fb0e7476d3 100644 (file)
@@ -31,7 +31,9 @@ static int disk_usage_callback(uint64_t offset, size_t len, int exists,
 }
 
 static int compute_image_disk_usage(const std::string& name,
+                                    const std::string& id,
                                     const std::string& snap_name,
+                                    uint64_t snap_id,
                                     const std::string& from_snap_name,
                                     librbd::Image &image, uint64_t size,
                                     bool exact, TextTable& tbl, Formatter *f,
@@ -66,8 +68,10 @@ static int compute_image_disk_usage(const std::string& name,
   if (f) {
     f->open_object_section("image");
     f->dump_string("name", name);
+    f->dump_string("id", id);
     if (!snap_name.empty()) {
       f->dump_string("snapshot", snap_name);
+      f->dump_unsigned("snapshot_id", snap_id);
     }
     f->dump_unsigned("provisioned_size", size);
     f->dump_unsigned("used_size" , *used_size);
@@ -211,9 +215,9 @@ static int do_disk_usage(librbd::RBD &rbd, librados::IoCtx &io_ctx,
 
       if (imgname == nullptr || found_from_snap ||
          (found_from_snap && snapname != nullptr && snap->name == snapname)) {
-        r = compute_image_disk_usage(image_spec.name, snap->name,
-                                     last_snap_name, snap_image, snap->size,
-                                     exact, tbl, f, &used_size);
+        r = compute_image_disk_usage(image_spec.name, image_spec.id, snap->name,
+                                     snap->id, last_snap_name, snap_image,
+                                     snap->size, exact, tbl, f, &used_size);
         if (r < 0) {
           goto out;
         }
@@ -236,8 +240,9 @@ static int do_disk_usage(librbd::RBD &rbd, librados::IoCtx &io_ctx,
     }
 
     if (snapname == NULL) {
-      r = compute_image_disk_usage(image_spec.name, "", last_snap_name, image,
-                                   info.size, exact, tbl, f, &used_size);
+      r = compute_image_disk_usage(image_spec.name, image_spec.id, "", CEPH_NOSNAP,
+                                   last_snap_name, image, info.size, exact, tbl,
+                                   f, &used_size);
       if (r < 0) {
         goto out;
       }
index e60254183ad533e6073ac5353a17a3568851ebc1..67d9e4f8414202b4ce142d8343833f3d693068fd 100644 (file)
@@ -34,6 +34,7 @@ struct WorkerEntry {
   librbd::RBD::AioCompletion* completion;
   WorkerState state;
   string name;
+  string id;
 
   WorkerEntry() {
     state = STATE_IDLE;
@@ -86,6 +87,7 @@ int list_process_image(librados::Rados* rados, WorkerEntry* w, bool lflag, Forma
   if (f) {
     f->open_object_section("image");
     f->dump_string("image", w->name);
+    f->dump_string("id", w->id);
     f->dump_unsigned("size", info.size);
     if (has_parent) {
       f->open_object_section("parent");
@@ -135,7 +137,9 @@ int list_process_image(librados::Rados* rados, WorkerEntry* w, bool lflag, Forma
       if (f) {
         f->open_object_section("snapshot");
         f->dump_string("image", w->name);
+        f->dump_string("id", w->id);
         f->dump_string("snapshot", s->name);
+        f->dump_unsigned("snapshot_id", s->id);
         f->dump_unsigned("size", s->size);
         if (has_parent) {
           f->open_object_section("parent");
@@ -240,6 +244,7 @@ int do_list(const std::string &pool_name, const std::string& namespace_name,
            continue;
          }
          comp->name = i->name;
+          comp->id = i->id;
          comp->completion = new librbd::RBD::AioCompletion(nullptr, nullptr);
          r = rbd.aio_open_read_only(ioctx, comp->img, i->name.c_str(), nullptr,
                                      comp->completion);