]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd: simplify snap rename arguments 7345/head
authorx11562 <xie.na@h3c.com>
Tue, 26 Jan 2016 05:52:46 +0000 (13:52 +0800)
committerx11562 <xie.na@h3c.com>
Thu, 28 Jan 2016 00:55:01 +0000 (08:55 +0800)
Signed-off-by: Na Xie <xie.na@h3c.com>
src/test/cli/rbd/help.t
src/tools/rbd/ArgumentTypes.cc
src/tools/rbd/ArgumentTypes.h
src/tools/rbd/Utils.cc
src/tools/rbd/action/Snap.cc

index 1654ff4624c3599e6d6a122f75565caea3c658b3..6832012631af9c3c2960d73a1ee3a4d40ea412c7 100644 (file)
   rbd help snap rename
   usage: rbd snap rename [--pool <pool>] [--image <image>] [--snap <snap>] 
                          [--dest-pool <dest-pool>] [--dest <dest>] 
+                         [--dest-snap <dest-snap>] 
                          <source-snap-spec> <dest-snap-spec> 
   
   Rename a snapshot.
     --snap arg           source snapshot name
     --dest-pool arg      destination pool name
     --dest arg           destination image name
+    --dest-snap arg      destination snapshot name
   
   rbd help snap rollback
   usage: rbd snap rollback [--pool <pool>] [--image <image>] [--snap <snap>] 
index a403f011cabb5dfb04a9c79a15e107738031893a..698a643a7fc243074f9fa55bbaf5824879b6c7f8 100644 (file)
@@ -104,15 +104,15 @@ void add_image_option(po::options_description *opt,
 
 void add_snap_option(po::options_description *opt,
                       ArgumentModifier modifier) {
-  if (modifier == ARGUMENT_MODIFIER_DEST) {
-    return;
-  }
 
   std::string name = SNAPSHOT_NAME;
   std::string description = "snapshot name";
   switch (modifier) {
   case ARGUMENT_MODIFIER_NONE:
+    break;
   case ARGUMENT_MODIFIER_DEST:
+    name = DEST_SNAPSHOT_NAME;
+    description = "destination " + description;
     break;
   case ARGUMENT_MODIFIER_SOURCE:
     description = "source " + description;
index 8313cf058b597106baa28e639bda3c8132844643..50c74aa8ff3bc76e8f9271500e12f047a564ddf4 100644 (file)
@@ -50,6 +50,7 @@ static const std::string DEST_POOL_NAME("dest-pool");
 static const std::string IMAGE_NAME("image");
 static const std::string DEST_IMAGE_NAME("dest");
 static const std::string SNAPSHOT_NAME("snap");
+static const std::string DEST_SNAPSHOT_NAME("dest-snap");
 static const std::string JOURNAL_NAME("journal");
 static const std::string DEST_JOURNAL_NAME("dest-journal");
 static const std::string PATH("path");
index 4f4b2e87824fd0a88dd57152bf733a464db86120..236330f4e937457486b36bd2080937514ec89f32 100644 (file)
@@ -144,6 +144,8 @@ int get_pool_image_snapshot_names(const po::variables_map &vm,
     at::DEST_POOL_NAME : at::POOL_NAME);
   std::string image_key = (mod == at::ARGUMENT_MODIFIER_DEST ?
     at::DEST_IMAGE_NAME : at::IMAGE_NAME);
+  std::string snap_key = (mod == at::ARGUMENT_MODIFIER_DEST ?
+       at::DEST_SNAPSHOT_NAME : at::SNAPSHOT_NAME);
 
   if (vm.count(pool_key) && pool_name != nullptr) {
     *pool_name = vm[pool_key].as<std::string>();
@@ -151,11 +153,10 @@ int get_pool_image_snapshot_names(const po::variables_map &vm,
   if (vm.count(image_key) && image_name != nullptr) {
     *image_name = vm[image_key].as<std::string>();
   }
-  if (vm.count(at::SNAPSHOT_NAME) && snap_name != nullptr &&
-      mod != at::ARGUMENT_MODIFIER_DEST) {
-    *snap_name = vm[at::SNAPSHOT_NAME].as<std::string>();
-  }
-
+  if (vm.count(snap_key) && snap_name != nullptr) {
+     *snap_name = vm[snap_key].as<std::string>();
+   }
+  
   if (image_name != nullptr && !image_name->empty()) {
     // despite the separate pool and snapshot name options,
     // we can also specify them via the image option
index e20e87887a2f4936bcd34af8bb124116253dace1..571853c3eec54cf2a54812ad6c4731da891e5772 100644 (file)
@@ -446,7 +446,7 @@ int execute_rename(const po::variables_map &vm) {
               << std::endl;
     return -EINVAL;
   }
-
+  
   librados::Rados rados;
   librados::IoCtx io_ctx;
   librbd::Image image;