From 38e2f7a8a2b0991f0be2183ac549a253010e6434 Mon Sep 17 00:00:00 2001 From: x11562 Date: Tue, 26 Jan 2016 13:52:46 +0800 Subject: [PATCH] rbd: simplify snap rename arguments Signed-off-by: Na Xie --- src/test/cli/rbd/help.t | 2 ++ src/tools/rbd/ArgumentTypes.cc | 6 +++--- src/tools/rbd/ArgumentTypes.h | 1 + src/tools/rbd/Utils.cc | 11 ++++++----- src/tools/rbd/action/Snap.cc | 2 +- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/test/cli/rbd/help.t b/src/test/cli/rbd/help.t index 1654ff4624c3..6832012631af 100644 --- a/src/test/cli/rbd/help.t +++ b/src/test/cli/rbd/help.t @@ -1019,6 +1019,7 @@ rbd help snap rename usage: rbd snap rename [--pool ] [--image ] [--snap ] [--dest-pool ] [--dest ] + [--dest-snap ] Rename a snapshot. @@ -1035,6 +1036,7 @@ --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 ] [--image ] [--snap ] diff --git a/src/tools/rbd/ArgumentTypes.cc b/src/tools/rbd/ArgumentTypes.cc index a403f011cabb..698a643a7fc2 100644 --- a/src/tools/rbd/ArgumentTypes.cc +++ b/src/tools/rbd/ArgumentTypes.cc @@ -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; diff --git a/src/tools/rbd/ArgumentTypes.h b/src/tools/rbd/ArgumentTypes.h index 8313cf058b59..50c74aa8ff3b 100644 --- a/src/tools/rbd/ArgumentTypes.h +++ b/src/tools/rbd/ArgumentTypes.h @@ -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"); diff --git a/src/tools/rbd/Utils.cc b/src/tools/rbd/Utils.cc index 4f4b2e87824f..236330f4e937 100644 --- a/src/tools/rbd/Utils.cc +++ b/src/tools/rbd/Utils.cc @@ -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(); @@ -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(); } - if (vm.count(at::SNAPSHOT_NAME) && snap_name != nullptr && - mod != at::ARGUMENT_MODIFIER_DEST) { - *snap_name = vm[at::SNAPSHOT_NAME].as(); - } - + if (vm.count(snap_key) && snap_name != nullptr) { + *snap_name = vm[snap_key].as(); + } + if (image_name != nullptr && !image_name->empty()) { // despite the separate pool and snapshot name options, // we can also specify them via the image option diff --git a/src/tools/rbd/action/Snap.cc b/src/tools/rbd/action/Snap.cc index e20e87887a2f..571853c3eec5 100644 --- a/src/tools/rbd/action/Snap.cc +++ b/src/tools/rbd/action/Snap.cc @@ -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; -- 2.47.3