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>]
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;
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");
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>();
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
<< std::endl;
return -EINVAL;
}
-
+
librados::Rados rados;
librados::IoCtx io_ctx;
librbd::Image image;