--pretty-format pretty formatting (json and xml)
rbd help mirror pool demote
- usage: rbd mirror pool demote [--pool <pool>]
- <pool-name>
+ usage: rbd mirror pool demote [--pool <pool>] [--namespace <namespace>]
+ <pool-spec>
Demote all primary images in the pool.
Positional arguments
- <pool-name> pool name
+ <pool-spec> pool specification
+ (example: <pool-name>[/<namespace>]
Optional arguments
-p [ --pool ] arg pool name
+ --namespace arg namespace name
rbd help mirror pool disable
- usage: rbd mirror pool disable [--pool <pool>]
- <pool-name>
+ usage: rbd mirror pool disable [--pool <pool>] [--namespace <namespace>]
+ <pool-spec>
Disable RBD mirroring by default within a pool.
Positional arguments
- <pool-name> pool name
+ <pool-spec> pool specification
+ (example: <pool-name>[/<namespace>]
Optional arguments
-p [ --pool ] arg pool name
+ --namespace arg namespace name
rbd help mirror pool enable
- usage: rbd mirror pool enable [--pool <pool>]
- <pool-name> <mode>
+ usage: rbd mirror pool enable [--pool <pool>] [--namespace <namespace>]
+ <pool-spec> <mode>
Enable RBD mirroring by default within a pool.
Positional arguments
- <pool-name> pool name
+ <pool-spec> pool specification
+ (example: <pool-name>[/<namespace>]
<mode> mirror mode [image or pool]
Optional arguments
-p [ --pool ] arg pool name
+ --namespace arg namespace name
rbd help mirror pool info
- usage: rbd mirror pool info [--pool <pool>] [--format <format>]
- [--pretty-format] [--all]
- <pool-name>
+ usage: rbd mirror pool info [--pool <pool>] [--namespace <namespace>]
+ [--format <format>] [--pretty-format] [--all]
+ <pool-spec>
Show information about the pool mirroring configuration.
Positional arguments
- <pool-name> pool name
+ <pool-spec> pool specification
+ (example: <pool-name>[/<namespace>]
Optional arguments
-p [ --pool ] arg pool name
+ --namespace arg namespace name
--format arg output format (plain, json, or xml) [default: plain]
--pretty-format pretty formatting (json and xml)
--all list all attributes
rbd help mirror pool promote
usage: rbd mirror pool promote [--force] [--pool <pool>]
- <pool-name>
+ [--namespace <namespace>]
+ <pool-spec>
Promote all non-primary images in the pool.
Positional arguments
- <pool-name> pool name
+ <pool-spec> pool specification
+ (example: <pool-name>[/<namespace>]
Optional arguments
--force promote even if not cleanly demoted by remote cluster
-p [ --pool ] arg pool name
+ --namespace arg namespace name
rbd help mirror pool status
- usage: rbd mirror pool status [--pool <pool>] [--format <format>]
- [--pretty-format] [--verbose]
- <pool-name>
+ usage: rbd mirror pool status [--pool <pool>] [--namespace <namespace>]
+ [--format <format>] [--pretty-format] [--verbose]
+ <pool-spec>
Show status for all mirrored images in the pool.
Positional arguments
- <pool-name> pool name
+ <pool-spec> pool specification
+ (example: <pool-name>[/<namespace>]
Optional arguments
-p [ --pool ] arg pool name
+ --namespace arg namespace name
--format arg output format (plain, json, or xml) [default: plain]
--pretty-format pretty formatting (json and xml)
--verbose be verbose
} // anonymous namespace
void get_arguments(po::options_description *positional,
- po::options_description *options) {
+ po::options_description *options) {
at::add_image_spec_options(positional, options, at::ARGUMENT_MODIFIER_NONE);
}
bool force) {
size_t arg_index = 0;
std::string pool_name;
+ std::string namespace_name;
std::string image_name;
std::string snap_name;
int r = utils::get_pool_image_snapshot_names(
- vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, &pool_name, nullptr,
+ vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, &pool_name, &namespace_name,
&image_name, &snap_name, true, utils::SNAPSHOT_PRESENCE_NONE,
utils::SPEC_VALIDATION_NONE);
if (r < 0) {
return r;
}
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
librbd::Image image;
- r = utils::init_and_open_image(pool_name, "", image_name, "", "", false,
- &rados, &io_ctx, &image);
+ r = utils::init_and_open_image(pool_name, namespace_name, image_name, "", "",
+ false, &rados, &io_ctx, &image);
if (r < 0) {
return r;
}
const std::vector<std::string> &ceph_global_init_args) {
size_t arg_index = 0;
std::string pool_name;
+ std::string namespace_name;
std::string image_name;
std::string snap_name;
int r = utils::get_pool_image_snapshot_names(
- vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, &pool_name, nullptr,
+ vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, &pool_name, &namespace_name,
&image_name, &snap_name, true, utils::SNAPSHOT_PRESENCE_NONE,
utils::SPEC_VALIDATION_NONE);
if (r < 0) {
bool force = vm["force"].as<bool>();
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
librbd::Image image;
- r = utils::init_and_open_image(pool_name, "", image_name, "", "", false,
- &rados, &io_ctx, &image);
+ r = utils::init_and_open_image(pool_name, namespace_name, image_name, "", "",
+ false, &rados, &io_ctx, &image);
if (r < 0) {
return r;
}
const std::vector<std::string> &ceph_global_init_args) {
size_t arg_index = 0;
std::string pool_name;
+ std::string namespace_name;
std::string image_name;
std::string snap_name;
int r = utils::get_pool_image_snapshot_names(
- vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, &pool_name, nullptr,
+ vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, &pool_name, &namespace_name,
&image_name, &snap_name, true, utils::SNAPSHOT_PRESENCE_NONE,
utils::SPEC_VALIDATION_NONE);
if (r < 0) {
return r;
}
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
librbd::Image image;
- r = utils::init_and_open_image(pool_name, "", image_name, "", "", false,
- &rados, &io_ctx, &image);
+ r = utils::init_and_open_image(pool_name, namespace_name, image_name, "", "",
+ false, &rados, &io_ctx, &image);
if (r < 0) {
return r;
}
const std::vector<std::string> &ceph_global_init_args) {
size_t arg_index = 0;
std::string pool_name;
+ std::string namespace_name;
std::string image_name;
std::string snap_name;
int r = utils::get_pool_image_snapshot_names(
- vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, &pool_name, nullptr,
+ vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, &pool_name, &namespace_name,
&image_name, &snap_name, true, utils::SNAPSHOT_PRESENCE_NONE,
utils::SPEC_VALIDATION_NONE);
if (r < 0) {
return r;
}
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
librbd::Image image;
- r = utils::init_and_open_image(pool_name, "", image_name, "", "", false,
- &rados, &io_ctx, &image);
+ r = utils::init_and_open_image(pool_name, namespace_name, image_name, "", "",
+ false, &rados, &io_ctx, &image);
if (r < 0) {
return r;
}
size_t arg_index = 0;
std::string pool_name;
+ std::string namespace_name;
std::string image_name;
std::string snap_name;
r = utils::get_pool_image_snapshot_names(
- vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, &pool_name, nullptr,
+ vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, &pool_name, &namespace_name,
&image_name, &snap_name, true, utils::SNAPSHOT_PRESENCE_NONE,
utils::SPEC_VALIDATION_NONE);
if (r < 0) {
return r;
}
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
librbd::Image image;
- r = utils::init_and_open_image(pool_name, "", image_name, "", "", false,
- &rados, &io_ctx, &image);
+ r = utils::init_and_open_image(pool_name, namespace_name, image_name, "", "",
+ false, &rados, &io_ctx, &image);
if (r < 0) {
return r;
}
return r;
}
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
r = utils::init(pool_name, "", &rados, &io_ctx);
return r;
}
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
r = utils::init(pool_name, "", &rados, &io_ctx);
key = "mon_host";
}
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
r = utils::init(pool_name, "", &rados, &io_ctx);
void get_disable_arguments(po::options_description *positional,
po::options_description *options) {
- at::add_pool_options(positional, options, false);
+ at::add_pool_options(positional, options, true);
}
void get_enable_arguments(po::options_description *positional,
po::options_description *options) {
- at::add_pool_options(positional, options, false);
+ at::add_pool_options(positional, options, true);
positional->add_options()
("mode", "mirror mode [image or pool]");
}
int execute_enable_disable(const std::string &pool_name,
+ const std::string &namespace_name,
rbd_mirror_mode_t next_mirror_mode,
const std::string &mode) {
librados::Rados rados;
librados::IoCtx io_ctx;
rbd_mirror_mode_t current_mirror_mode;
- // TODO support namespaces
- int r = utils::init(pool_name, "", &rados, &io_ctx);
+ int r = utils::init(pool_name, namespace_name, &rados, &io_ctx);
if (r < 0) {
return r;
}
int execute_disable(const po::variables_map &vm,
const std::vector<std::string> &ceph_global_init_args) {
std::string pool_name;
+ std::string namespace_name;
size_t arg_index = 0;
int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
- nullptr, &arg_index);
+ &namespace_name, &arg_index);
if (r < 0) {
return r;
}
- return execute_enable_disable(pool_name, RBD_MIRROR_MODE_DISABLED,
- "disabled");
+ return execute_enable_disable(pool_name, namespace_name,
+ RBD_MIRROR_MODE_DISABLED, "disabled");
}
int execute_enable(const po::variables_map &vm,
const std::vector<std::string> &ceph_global_init_args) {
std::string pool_name;
+ std::string namespace_name;
size_t arg_index = 0;
int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
- nullptr, &arg_index);
+ &namespace_name, &arg_index);
if (r < 0) {
return r;
}
return -EINVAL;
}
- return execute_enable_disable(pool_name, mirror_mode, mode);
+ return execute_enable_disable(pool_name, namespace_name, mirror_mode, mode);
}
void get_info_arguments(po::options_description *positional,
po::options_description *options) {
- at::add_pool_options(positional, options, false);
+ at::add_pool_options(positional, options, true);
at::add_format_options(options);
options->add_options()
(ALL_NAME.c_str(), po::bool_switch(), "list all attributes");
int execute_info(const po::variables_map &vm,
const std::vector<std::string> &ceph_global_init_args) {
std::string pool_name;
+ std::string namespace_name;
size_t arg_index = 0;
int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
- nullptr, &arg_index);
+ &namespace_name, &arg_index);
if (r < 0) {
return r;
}
return r;
}
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
- r = utils::init(pool_name, "", &rados, &io_ctx);
+ r = utils::init(pool_name, namespace_name, &rados, &io_ctx);
if (r < 0) {
return r;
}
}
std::vector<librbd::mirror_peer_t> mirror_peers;
- r = rbd.mirror_peer_list(io_ctx, &mirror_peers);
- if (r < 0) {
- return r;
+ if (namespace_name.empty()) {
+ r = rbd.mirror_peer_list(io_ctx, &mirror_peers);
+ if (r < 0) {
+ return r;
+ }
}
std::string mirror_mode_desc;
std::cout << "Mode: " << mirror_mode_desc << std::endl;
}
- if (mirror_mode != RBD_MIRROR_MODE_DISABLED) {
+ if (mirror_mode != RBD_MIRROR_MODE_DISABLED && namespace_name.empty()) {
r = format_mirror_peers(io_ctx, formatter, mirror_peers,
vm[ALL_NAME].as<bool>());
if (r < 0) {
void get_status_arguments(po::options_description *positional,
po::options_description *options) {
- at::add_pool_options(positional, options, false);
+ at::add_pool_options(positional, options, true);
at::add_format_options(options);
at::add_verbose_option(options);
}
int execute_status(const po::variables_map &vm,
const std::vector<std::string> &ceph_global_init_args) {
std::string pool_name;
+ std::string namespace_name;
size_t arg_index = 0;
int r = utils::get_pool_and_namespace_names(vm, true, false, &pool_name,
- nullptr, &arg_index);
+ &namespace_name, &arg_index);
if (r < 0) {
return r;
}
bool verbose = vm[at::VERBOSE].as<bool>();
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
- r = utils::init(pool_name, "", &rados, &io_ctx);
+ r = utils::init(pool_name, namespace_name, &rados, &io_ctx);
if (r < 0) {
return r;
}
options->add_options()
("force", po::bool_switch(),
"promote even if not cleanly demoted by remote cluster");
- at::add_pool_options(positional, options, false);
+ at::add_pool_options(positional, options, true);
}
int execute_promote(const po::variables_map &vm,
const std::vector<std::string> &ceph_global_init_args) {
std::string pool_name;
+ std::string namespace_name;
size_t arg_index = 0;
int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
- nullptr, &arg_index);
+ &namespace_name, &arg_index);
if (r < 0) {
return r;
}
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
- r = utils::init(pool_name, "", &rados, &io_ctx);
+ r = utils::init(pool_name, namespace_name, &rados, &io_ctx);
if (r < 0) {
return r;
}
void get_demote_arguments(po::options_description *positional,
po::options_description *options) {
- at::add_pool_options(positional, options, false);
+ at::add_pool_options(positional, options, true);
}
int execute_demote(const po::variables_map &vm,
const std::vector<std::string> &ceph_global_init_args) {
std::string pool_name;
+ std::string namespace_name;
size_t arg_index = 0;
int r = utils::get_pool_and_namespace_names(vm, true, true, &pool_name,
- nullptr, &arg_index);
+ &namespace_name, &arg_index);
if (r < 0) {
return r;
}
- // TODO support namespaces
librados::Rados rados;
librados::IoCtx io_ctx;
- r = utils::init(pool_name, "", &rados, &io_ctx);
+ r = utils::init(pool_name, namespace_name, &rados, &io_ctx);
if (r < 0) {
return r;
}