Skip to content

Commit 610a87a

Browse files
authored
Merge pull request ceph#61155 from idryomov/wip-69324
rbd: handle --{group,image}-namespace in "rbd group image {add,rm}" Reviewed-by: Ramana Raja <[email protected]>
2 parents 738ac44 + 1f71671 commit 610a87a

File tree

5 files changed

+63
-53
lines changed

5 files changed

+63
-53
lines changed

qa/workunits/rbd/cli_generic.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -914,6 +914,11 @@ test_namespace() {
914914

915915
rbd group create rbd/test1/group1
916916
rbd group image add rbd/test1/group1 rbd/test1/image1
917+
rbd group image add --group-pool rbd --group-namespace test1 --group group1 \
918+
--image-pool rbd --image-namespace test1 --image image2
919+
rbd group image rm --group-pool rbd --group-namespace test1 --group group1 \
920+
--image-pool rbd --image-namespace test1 --image image1
921+
rbd group image rm rbd/test1/group1 rbd/test1/image2
917922
rbd group rm rbd/test1/group1
918923

919924
rbd trash move rbd/test1/image1

src/test/cli/rbd/help.t

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,7 @@
916916
[--group-namespace <group-namespace>]
917917
[--group <group>] [--image-pool <image-pool>]
918918
[--image-namespace <image-namespace>]
919-
[--image <image>] [--pool <pool>]
919+
[--image <image>]
920920
<group-spec> <image-spec>
921921

922922
Add an image to a group.
@@ -934,7 +934,6 @@
934934
--image-pool arg image pool name
935935
--image-namespace arg image namespace name
936936
--image arg image name
937-
-p [ --pool ] arg pool name unless overridden
938937

939938
rbd help group image list
940939
usage: rbd group image list [--format <format>] [--pretty-format]
@@ -960,8 +959,7 @@
960959
[--group-namespace <group-namespace>]
961960
[--group <group>] [--image-pool <image-pool>]
962961
[--image-namespace <image-namespace>]
963-
[--image <image>] [--pool <pool>]
964-
[--image-id <image-id>]
962+
[--image <image>] [--image-id <image-id>]
965963
<group-spec> <image-spec>
966964

967965
Remove an image from a group.
@@ -979,7 +977,6 @@
979977
--image-pool arg image pool name
980978
--image-namespace arg image namespace name
981979
--image arg image name
982-
-p [ --pool ] arg pool name unless overridden
983980
--image-id arg image id
984981

985982
rbd help group info

src/tools/rbd/Utils.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -337,11 +337,14 @@ int get_pool_image_snapshot_names(const po::variables_map &vm,
337337
SpecValidation spec_validation) {
338338
std::string pool_key = (mod == at::ARGUMENT_MODIFIER_DEST ?
339339
at::DEST_POOL_NAME : at::POOL_NAME);
340+
std::string namespace_key = (mod == at::ARGUMENT_MODIFIER_DEST ?
341+
at::DEST_NAMESPACE_NAME : at::NAMESPACE_NAME);
340342
std::string image_key = (mod == at::ARGUMENT_MODIFIER_DEST ?
341343
at::DEST_IMAGE_NAME : at::IMAGE_NAME);
344+
342345
return get_pool_generic_snapshot_names(vm, mod, spec_arg_index, pool_key,
343-
pool_name, namespace_name, image_key,
344-
"image", image_name, snap_name,
346+
pool_name, namespace_key, namespace_name,
347+
image_key, "image", image_name, snap_name,
345348
image_name_required, snapshot_presence,
346349
spec_validation);
347350
}
@@ -351,6 +354,7 @@ int get_pool_generic_snapshot_names(const po::variables_map &vm,
351354
size_t *spec_arg_index,
352355
const std::string& pool_key,
353356
std::string *pool_name,
357+
const std::string& namespace_key,
354358
std::string *namespace_name,
355359
const std::string& generic_key,
356360
const std::string& generic_key_desc,
@@ -359,8 +363,6 @@ int get_pool_generic_snapshot_names(const po::variables_map &vm,
359363
bool generic_name_required,
360364
SnapshotPresence snapshot_presence,
361365
SpecValidation spec_validation) {
362-
std::string namespace_key = (mod == at::ARGUMENT_MODIFIER_DEST ?
363-
at::DEST_NAMESPACE_NAME : at::NAMESPACE_NAME);
364366
std::string snap_key = (mod == at::ARGUMENT_MODIFIER_DEST ?
365367
at::DEST_SNAPSHOT_NAME : at::SNAPSHOT_NAME);
366368

src/tools/rbd/Utils.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,10 +163,11 @@ int get_pool_generic_snapshot_names(
163163
const boost::program_options::variables_map &vm,
164164
argument_types::ArgumentModifier mod, size_t *spec_arg_index,
165165
const std::string& pool_key, std::string *pool_name,
166-
std::string *namespace_name, const std::string& generic_key,
167-
const std::string& generic_key_desc, std::string *generic_name,
168-
std::string *snap_name, bool generic_name_required,
169-
SnapshotPresence snapshot_presence, SpecValidation spec_validation);
166+
const std::string& namespace_key, std::string *namespace_name,
167+
const std::string& generic_key, const std::string& generic_key_desc,
168+
std::string *generic_name, std::string *snap_name,
169+
bool generic_name_required, SnapshotPresence snapshot_presence,
170+
SpecValidation spec_validation);
170171

171172
int get_pool_image_id(const boost::program_options::variables_map &vm,
172173
size_t *spec_arg_index,

src/tools/rbd/action/Group.cc

Lines changed: 45 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ static const std::string DEST_GROUP_NAME("dest-group");
2828
static const std::string GROUP_POOL_NAME("group-" + at::POOL_NAME);
2929
static const std::string IMAGE_POOL_NAME("image-" + at::POOL_NAME);
3030

31+
static const std::string GROUP_NAMESPACE_NAME("group-" + at::NAMESPACE_NAME);
32+
static const std::string IMAGE_NAMESPACE_NAME("image-" + at::NAMESPACE_NAME);
33+
3134
void add_group_option(po::options_description *opt,
3235
at::ArgumentModifier modifier) {
3336
std::string name = GROUP_NAME;
@@ -107,8 +110,8 @@ int execute_create(const po::variables_map &vm,
107110

108111
int r = utils::get_pool_generic_snapshot_names(
109112
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, at::POOL_NAME, &pool_name,
110-
&namespace_name, GROUP_NAME, "group", &group_name, nullptr, true,
111-
utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
113+
at::NAMESPACE_NAME, &namespace_name, GROUP_NAME, "group", &group_name,
114+
nullptr, true, utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
112115
if (r < 0) {
113116
return r;
114117
}
@@ -187,8 +190,8 @@ int execute_remove(const po::variables_map &vm,
187190

188191
int r = utils::get_pool_generic_snapshot_names(
189192
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, at::POOL_NAME, &pool_name,
190-
&namespace_name, GROUP_NAME, "group", &group_name, nullptr, true,
191-
utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
193+
at::NAMESPACE_NAME, &namespace_name, GROUP_NAME, "group", &group_name,
194+
nullptr, true, utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
192195
if (r < 0) {
193196
return r;
194197
}
@@ -221,8 +224,8 @@ int execute_rename(const po::variables_map &vm,
221224

222225
int r = utils::get_pool_generic_snapshot_names(
223226
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, at::POOL_NAME, &pool_name,
224-
&namespace_name, GROUP_NAME, "group", &group_name, nullptr, true,
225-
utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
227+
at::NAMESPACE_NAME, &namespace_name, GROUP_NAME, "group", &group_name,
228+
nullptr, true, utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
226229
if (r < 0) {
227230
return r;
228231
}
@@ -233,9 +236,9 @@ int execute_rename(const po::variables_map &vm,
233236

234237
r = utils::get_pool_generic_snapshot_names(
235238
vm, at::ARGUMENT_MODIFIER_DEST, &arg_index, at::DEST_POOL_NAME,
236-
&dest_pool_name, &dest_namespace_name, DEST_GROUP_NAME, "group",
237-
&dest_group_name, nullptr, true, utils::SNAPSHOT_PRESENCE_NONE,
238-
utils::SPEC_VALIDATION_FULL);
239+
&dest_pool_name, at::DEST_NAMESPACE_NAME, &dest_namespace_name,
240+
DEST_GROUP_NAME, "group", &dest_group_name, nullptr, true,
241+
utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
239242
if (r < 0) {
240243
return r;
241244
}
@@ -283,8 +286,8 @@ int execute_info(const po::variables_map &vm,
283286

284287
int r = utils::get_pool_generic_snapshot_names(
285288
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, at::POOL_NAME, &pool_name,
286-
&namespace_name, GROUP_NAME, "group", &group_name, nullptr, true,
287-
utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
289+
at::NAMESPACE_NAME, &namespace_name, GROUP_NAME, "group", &group_name,
290+
nullptr, true, utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
288291
if (r < 0) {
289292
return r;
290293
}
@@ -335,8 +338,9 @@ int execute_add(const po::variables_map &vm,
335338

336339
int r = utils::get_pool_generic_snapshot_names(
337340
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, GROUP_POOL_NAME,
338-
&group_pool_name, &group_namespace_name, GROUP_NAME, "group", &group_name,
339-
nullptr, true, utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
341+
&group_pool_name, GROUP_NAMESPACE_NAME, &group_namespace_name,
342+
GROUP_NAME, "group", &group_name, nullptr, true,
343+
utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
340344
if (r < 0) {
341345
return r;
342346
}
@@ -347,9 +351,9 @@ int execute_add(const po::variables_map &vm,
347351

348352
r = utils::get_pool_generic_snapshot_names(
349353
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, IMAGE_POOL_NAME,
350-
&image_pool_name, &image_namespace_name, at::IMAGE_NAME, "image",
351-
&image_name, nullptr, true, utils::SNAPSHOT_PRESENCE_NONE,
352-
utils::SPEC_VALIDATION_FULL);
354+
&image_pool_name, IMAGE_NAMESPACE_NAME, &image_namespace_name,
355+
at::IMAGE_NAME, "image", &image_name, nullptr, true,
356+
utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
353357
if (r < 0) {
354358
return r;
355359
}
@@ -393,8 +397,9 @@ int execute_remove_image(const po::variables_map &vm,
393397

394398
int r = utils::get_pool_generic_snapshot_names(
395399
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, GROUP_POOL_NAME,
396-
&group_pool_name, &group_namespace_name, GROUP_NAME, "group", &group_name,
397-
nullptr, true, utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
400+
&group_pool_name, GROUP_NAMESPACE_NAME, &group_namespace_name,
401+
GROUP_NAME, "group", &group_name, nullptr, true,
402+
utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
398403
if (r < 0) {
399404
return r;
400405
}
@@ -410,9 +415,9 @@ int execute_remove_image(const po::variables_map &vm,
410415

411416
r = utils::get_pool_generic_snapshot_names(
412417
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, IMAGE_POOL_NAME,
413-
&image_pool_name, &image_namespace_name, at::IMAGE_NAME, "image",
414-
&image_name, nullptr, image_id.empty(), utils::SNAPSHOT_PRESENCE_NONE,
415-
utils::SPEC_VALIDATION_FULL);
418+
&image_pool_name, IMAGE_NAMESPACE_NAME, &image_namespace_name,
419+
at::IMAGE_NAME, "image", &image_name, nullptr, image_id.empty(),
420+
utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
416421
if (r < 0) {
417422
return r;
418423
}
@@ -464,8 +469,8 @@ int execute_list_images(const po::variables_map &vm,
464469

465470
int r = utils::get_pool_generic_snapshot_names(
466471
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, at::POOL_NAME, &pool_name,
467-
&namespace_name, GROUP_NAME, "group", &group_name, nullptr, true,
468-
utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
472+
at::NAMESPACE_NAME, &namespace_name, GROUP_NAME, "group", &group_name,
473+
nullptr, true, utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
469474
if (r < 0) {
470475
return r;
471476
}
@@ -563,8 +568,9 @@ int execute_group_snap_create(const po::variables_map &vm,
563568

564569
int r = utils::get_pool_generic_snapshot_names(
565570
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, at::POOL_NAME, &pool_name,
566-
&namespace_name, GROUP_NAME, "group", &group_name, &snap_name, true,
567-
utils::SNAPSHOT_PRESENCE_REQUIRED, utils::SPEC_VALIDATION_FULL);
571+
at::NAMESPACE_NAME, &namespace_name, GROUP_NAME, "group", &group_name,
572+
&snap_name, true, utils::SNAPSHOT_PRESENCE_REQUIRED,
573+
utils::SPEC_VALIDATION_FULL);
568574
if (r < 0) {
569575
return r;
570576
}
@@ -604,8 +610,9 @@ int execute_group_snap_remove(const po::variables_map &vm,
604610

605611
int r = utils::get_pool_generic_snapshot_names(
606612
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, at::POOL_NAME, &pool_name,
607-
&namespace_name, GROUP_NAME, "group", &group_name, &snap_name, true,
608-
utils::SNAPSHOT_PRESENCE_REQUIRED, utils::SPEC_VALIDATION_FULL);
613+
at::NAMESPACE_NAME, &namespace_name, GROUP_NAME, "group", &group_name,
614+
&snap_name, true, utils::SNAPSHOT_PRESENCE_REQUIRED,
615+
utils::SPEC_VALIDATION_FULL);
609616
if (r < 0) {
610617
return r;
611618
}
@@ -640,8 +647,9 @@ int execute_group_snap_rename(const po::variables_map &vm,
640647

641648
int r = utils::get_pool_generic_snapshot_names(
642649
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, at::POOL_NAME, &pool_name,
643-
&namespace_name, GROUP_NAME, "group", &group_name, &source_snap_name, true,
644-
utils::SNAPSHOT_PRESENCE_REQUIRED, utils::SPEC_VALIDATION_FULL);
650+
at::NAMESPACE_NAME, &namespace_name, GROUP_NAME, "group", &group_name,
651+
&source_snap_name, true, utils::SNAPSHOT_PRESENCE_REQUIRED,
652+
utils::SPEC_VALIDATION_FULL);
645653
if (r < 0) {
646654
return r;
647655
}
@@ -696,8 +704,8 @@ int execute_group_snap_list(const po::variables_map &vm,
696704

697705
int r = utils::get_pool_generic_snapshot_names(
698706
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, at::POOL_NAME, &pool_name,
699-
&namespace_name, GROUP_NAME, "group", &group_name, nullptr, true,
700-
utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
707+
at::NAMESPACE_NAME, &namespace_name, GROUP_NAME, "group", &group_name,
708+
nullptr, true, utils::SNAPSHOT_PRESENCE_NONE, utils::SPEC_VALIDATION_FULL);
701709
if (r < 0) {
702710
return r;
703711
}
@@ -764,8 +772,9 @@ int execute_group_snap_info(const po::variables_map &vm,
764772

765773
int r = utils::get_pool_generic_snapshot_names(
766774
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, at::POOL_NAME, &pool_name,
767-
&namespace_name, GROUP_NAME, "group", &group_name, &group_snap_name, true,
768-
utils::SNAPSHOT_PRESENCE_REQUIRED, utils::SPEC_VALIDATION_FULL);
775+
at::NAMESPACE_NAME, &namespace_name, GROUP_NAME, "group", &group_name,
776+
&group_snap_name, true, utils::SNAPSHOT_PRESENCE_REQUIRED,
777+
utils::SPEC_VALIDATION_FULL);
769778
if (r < 0) {
770779
return r;
771780
}
@@ -872,8 +881,9 @@ int execute_group_snap_rollback(const po::variables_map &vm,
872881

873882
int r = utils::get_pool_generic_snapshot_names(
874883
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, at::POOL_NAME, &pool_name,
875-
&namespace_name, GROUP_NAME, "group", &group_name, &snap_name, true,
876-
utils::SNAPSHOT_PRESENCE_REQUIRED, utils::SPEC_VALIDATION_FULL);
884+
at::NAMESPACE_NAME, &namespace_name, GROUP_NAME, "group", &group_name,
885+
&snap_name, true, utils::SNAPSHOT_PRESENCE_REQUIRED,
886+
utils::SPEC_VALIDATION_FULL);
877887
if (r < 0) {
878888
return r;
879889
}
@@ -954,9 +964,6 @@ void get_add_arguments(po::options_description *positional,
954964
add_prefixed_pool_option(options, "image");
955965
add_prefixed_namespace_option(options, "image");
956966
at::add_image_option(options, at::ARGUMENT_MODIFIER_NONE);
957-
958-
at::add_pool_option(options, at::ARGUMENT_MODIFIER_NONE,
959-
" unless overridden");
960967
}
961968

962969
void get_remove_image_arguments(po::options_description *positional,
@@ -979,8 +986,6 @@ void get_remove_image_arguments(po::options_description *positional,
979986
add_prefixed_namespace_option(options, "image");
980987
at::add_image_option(options, at::ARGUMENT_MODIFIER_NONE);
981988

982-
at::add_pool_option(options, at::ARGUMENT_MODIFIER_NONE,
983-
" unless overridden");
984989
at::add_image_id_option(options);
985990
}
986991

0 commit comments

Comments
 (0)