Skip to content

Commit 883e4c0

Browse files
authored
Merge pull request ceph#59883 from idryomov/wip-group-snap-namespace-type-enum
librbd: introduce rbd_group_snap_namespace_type_t enum Reviewed-by: N Balachandran <[email protected]>
2 parents 9bc0f19 + 45cdd37 commit 883e4c0

File tree

9 files changed

+37
-4
lines changed

9 files changed

+37
-4
lines changed

src/include/rbd/librbd.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,10 @@ typedef enum {
249249
RBD_GROUP_SNAP_STATE_COMPLETE
250250
} rbd_group_snap_state_t;
251251

252+
typedef enum {
253+
RBD_GROUP_SNAP_NAMESPACE_TYPE_USER = 0
254+
} rbd_group_snap_namespace_type_t;
255+
252256
typedef struct {
253257
char *image_name;
254258
int64_t pool_id;
@@ -265,7 +269,7 @@ typedef struct {
265269
char *name;
266270
char *image_snap_name;
267271
rbd_group_snap_state_t state;
268-
//rbd_group_snap_namespace_type_t namespace_type;
272+
rbd_group_snap_namespace_type_t namespace_type;
269273
size_t image_snaps_count;
270274
rbd_group_image_snap_info_t *image_snaps;
271275
} rbd_group_snap_info2_t;

src/include/rbd/librbd.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ namespace librbd {
160160
} group_info_t;
161161

162162
typedef rbd_group_snap_state_t group_snap_state_t;
163+
typedef rbd_group_snap_namespace_type_t group_snap_namespace_type_t;
163164

164165
typedef struct {
165166
std::string image_name;
@@ -177,7 +178,7 @@ namespace librbd {
177178
std::string name;
178179
std::string image_snap_name;
179180
group_snap_state_t state;
180-
//group_snap_namespace_type_t namespace_type;
181+
group_snap_namespace_type_t namespace_type;
181182
std::vector<group_image_snap_info_t> image_snaps;
182183
} group_snap_info2_t;
183184

src/librbd/api/Group.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,7 @@ int GroupSnapshot_to_group_snap_info2(
483483
group_snap->id = cls_group_snap.id;
484484
group_snap->name = cls_group_snap.name;
485485
group_snap->state = static_cast<group_snap_state_t>(cls_group_snap.state);
486+
group_snap->namespace_type = RBD_GROUP_SNAP_NAMESPACE_TYPE_USER;
486487
if (!image_snaps.empty()) {
487488
group_snap->image_snap_name = calc_ind_image_snap_name(
488489
group_ioctx.get_id(), group_id, cls_group_snap.id);

src/librbd/librbd.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ void group_snap_info2_cpp_to_c(const librbd::group_snap_info2_t &cpp_info,
275275
c_info->name = strdup(cpp_info.name.c_str());
276276
c_info->image_snap_name = strdup(cpp_info.image_snap_name.c_str());
277277
c_info->state = cpp_info.state;
278+
c_info->namespace_type = cpp_info.namespace_type;
278279
c_info->image_snaps_count = cpp_info.image_snaps.size();
279280
c_info->image_snaps = static_cast<rbd_group_image_snap_info_t*>(calloc(
280281
cpp_info.image_snaps.size(), sizeof(rbd_group_image_snap_info_t)));

src/pybind/rbd/c_rbd.pxd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,9 @@ cdef extern from "rbd/librbd.h" nogil:
224224
_RBD_GROUP_SNAP_STATE_INCOMPLETE "RBD_GROUP_SNAP_STATE_INCOMPLETE"
225225
_RBD_GROUP_SNAP_STATE_COMPLETE "RBD_GROUP_SNAP_STATE_COMPLETE"
226226

227+
ctypedef enum rbd_group_snap_namespace_type_t:
228+
_RBD_GROUP_SNAP_NAMESPACE_TYPE_USER "RBD_GROUP_SNAP_NAMESPACE_TYPE_USER"
229+
227230
ctypedef struct rbd_group_image_snap_info_t:
228231
char *image_name
229232
int64_t pool_id
@@ -234,6 +237,7 @@ cdef extern from "rbd/librbd.h" nogil:
234237
char *name
235238
char *image_snap_name
236239
rbd_group_snap_state_t state
240+
rbd_group_snap_namespace_type_t namespace_type
237241
size_t image_snaps_count
238242
rbd_group_image_snap_info_t *image_snaps
239243

src/pybind/rbd/mock_rbd.pxi

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,9 @@ cdef nogil:
228228
_RBD_GROUP_SNAP_STATE_INCOMPLETE "RBD_GROUP_SNAP_STATE_INCOMPLETE"
229229
_RBD_GROUP_SNAP_STATE_COMPLETE "RBD_GROUP_SNAP_STATE_COMPLETE"
230230

231+
ctypedef enum rbd_group_snap_namespace_type_t:
232+
_RBD_GROUP_SNAP_NAMESPACE_TYPE_USER "RBD_GROUP_SNAP_NAMESPACE_TYPE_USER"
233+
231234
ctypedef struct rbd_group_image_snap_info_t:
232235
char *image_name
233236
int64_t pool_id
@@ -238,6 +241,7 @@ cdef nogil:
238241
char *name
239242
char *image_snap_name
240243
rbd_group_snap_state_t state
244+
rbd_group_snap_namespace_type_t namespace_type
241245
size_t image_snaps_count
242246
rbd_group_image_snap_info_t *image_snaps
243247

src/pybind/rbd/rbd.pyx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ RBD_GROUP_IMAGE_STATE_INCOMPLETE = _RBD_GROUP_IMAGE_STATE_INCOMPLETE
134134
RBD_GROUP_SNAP_STATE_INCOMPLETE = _RBD_GROUP_SNAP_STATE_INCOMPLETE
135135
RBD_GROUP_SNAP_STATE_COMPLETE = _RBD_GROUP_SNAP_STATE_COMPLETE
136136

137+
RBD_GROUP_SNAP_NAMESPACE_TYPE_USER = _RBD_GROUP_SNAP_NAMESPACE_TYPE_USER
138+
137139
RBD_IMAGE_MIGRATION_STATE_UNKNOWN = _RBD_IMAGE_MIGRATION_STATE_UNKNOWN
138140
RBD_IMAGE_MIGRATION_STATE_ERROR = _RBD_IMAGE_MIGRATION_STATE_ERROR
139141
RBD_IMAGE_MIGRATION_STATE_PREPARING = _RBD_IMAGE_MIGRATION_STATE_PREPARING
@@ -2843,6 +2845,8 @@ cdef class Group(object):
28432845
28442846
* ``state`` (int) - state of the group snapshot
28452847
2848+
* ``namespace_type`` (int) - group snapshot namespace type
2849+
28462850
* ``image_snap_name`` (str) - name of the image snapshots
28472851
28482852
* ``image_snaps`` (list) - image snapshots that constitute the group snapshot.
@@ -2881,6 +2885,7 @@ cdef class Group(object):
28812885
'id': decode_cstr(group_snap.id),
28822886
'name': decode_cstr(group_snap.name),
28832887
'state': group_snap.state,
2888+
'namespace_type': group_snap.namespace_type,
28842889
'image_snap_name': decode_cstr(group_snap.image_snap_name),
28852890
'image_snaps': image_snaps
28862891
}
@@ -6055,6 +6060,8 @@ cdef class GroupSnapIterator(object):
60556060
60566061
* ``state`` (int) - state of the group snapshot
60576062
6063+
* ``namespace_type`` (int) - group snapshot namespace type
6064+
60586065
* ``image_snap_name`` (str) - name of the image snapshots
60596066
60606067
* ``image_snaps`` (list) - image snapshots that constitute the group snapshot.
@@ -6105,6 +6112,7 @@ cdef class GroupSnapIterator(object):
61056112
'id': decode_cstr(group_snap.id),
61066113
'name': decode_cstr(group_snap.name),
61076114
'state': group_snap.state,
6115+
'namespace_type': group_snap.namespace_type,
61086116
'image_snap_name': decode_cstr(group_snap.image_snap_name),
61096117
'image_snaps': image_snaps,
61106118
}

src/test/librbd/test_Groups.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,7 @@ TEST_F(TestGroup, snap_get_info)
522522
&gp_snap_info));
523523
ASSERT_STREQ(gp_snap_name, gp_snap_info.name);
524524
ASSERT_EQ(RBD_GROUP_SNAP_STATE_COMPLETE, gp_snap_info.state);
525+
ASSERT_EQ(RBD_GROUP_SNAP_NAMESPACE_TYPE_USER, gp_snap_info.namespace_type);
525526
ASSERT_STREQ("", gp_snap_info.image_snap_name);
526527
ASSERT_EQ(0U, gp_snap_info.image_snaps_count);
527528

@@ -536,6 +537,7 @@ TEST_F(TestGroup, snap_get_info)
536537
&gp_snap_info));
537538
ASSERT_STREQ(gp_snap_name, gp_snap_info.name);
538539
ASSERT_EQ(RBD_GROUP_SNAP_STATE_COMPLETE, gp_snap_info.state);
540+
ASSERT_EQ(RBD_GROUP_SNAP_NAMESPACE_TYPE_USER, gp_snap_info.namespace_type);
539541
ASSERT_EQ(1U, gp_snap_info.image_snaps_count);
540542
ASSERT_EQ(m_image_name, gp_snap_info.image_snaps[0].image_name);
541543
ASSERT_EQ(rados_ioctx_get_id(ioctx), gp_snap_info.image_snaps[0].pool_id);
@@ -574,6 +576,7 @@ TEST_F(TestGroup, snap_get_infoPP)
574576
&gp_snap_info));
575577
ASSERT_EQ(gp_snap_name, gp_snap_info.name);
576578
ASSERT_EQ(RBD_GROUP_SNAP_STATE_COMPLETE, gp_snap_info.state);
579+
ASSERT_EQ(RBD_GROUP_SNAP_NAMESPACE_TYPE_USER, gp_snap_info.namespace_type);
577580
ASSERT_EQ("", gp_snap_info.image_snap_name);
578581
ASSERT_EQ(0U, gp_snap_info.image_snaps.size());
579582

@@ -587,6 +590,7 @@ TEST_F(TestGroup, snap_get_infoPP)
587590
&gp_snap_info));
588591
ASSERT_EQ(gp_snap_name, gp_snap_info.name);
589592
ASSERT_EQ(RBD_GROUP_SNAP_STATE_COMPLETE, gp_snap_info.state);
593+
ASSERT_EQ(RBD_GROUP_SNAP_NAMESPACE_TYPE_USER, gp_snap_info.namespace_type);
590594
ASSERT_EQ(1U, gp_snap_info.image_snaps.size());
591595
ASSERT_EQ(m_image_name, gp_snap_info.image_snaps[0].image_name);
592596
ASSERT_EQ(m_ioctx.get_id(), gp_snap_info.image_snaps[0].pool_id);
@@ -652,6 +656,7 @@ TEST_F(TestGroup, snap_list2)
652656

653657
for (int i = 0; i < 4; i++) {
654658
ASSERT_EQ(RBD_GROUP_SNAP_STATE_COMPLETE, gp_snaps[i].state);
659+
ASSERT_EQ(RBD_GROUP_SNAP_NAMESPACE_TYPE_USER, gp_snaps[i].namespace_type);
655660
if (!strcmp(gp_snaps[i].name, gp_snap_names[0])) {
656661
ASSERT_EQ(0U, gp_snaps[i].image_snaps_count);
657662
} else if (!strcmp(gp_snaps[i].name, gp_snap_names[1])) {
@@ -739,6 +744,7 @@ TEST_F(TestGroup, snap_list2PP)
739744

740745
for (const auto& gp_snap : gp_snaps) {
741746
ASSERT_EQ(RBD_GROUP_SNAP_STATE_COMPLETE, gp_snap.state);
747+
ASSERT_EQ(RBD_GROUP_SNAP_NAMESPACE_TYPE_USER, gp_snap.namespace_type);
742748
if (gp_snap.name == gp_snap_names[0]) {
743749
ASSERT_EQ(0U, gp_snap.image_snaps.size());
744750
} else if (gp_snap.name == gp_snap_names[1]) {

src/test/pybind/test_rbd.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@
4949
RBD_SNAP_CREATE_IGNORE_QUIESCE_ERROR,
5050
RBD_WRITE_ZEROES_FLAG_THICK_PROVISION,
5151
RBD_ENCRYPTION_FORMAT_LUKS1, RBD_ENCRYPTION_FORMAT_LUKS2,
52-
RBD_ENCRYPTION_FORMAT_LUKS, RBD_GROUP_SNAP_STATE_COMPLETE)
52+
RBD_ENCRYPTION_FORMAT_LUKS, RBD_GROUP_SNAP_STATE_COMPLETE,
53+
RBD_GROUP_SNAP_NAMESPACE_TYPE_USER)
5354

5455
rados = None
5556
ioctx = None
@@ -2836,7 +2837,8 @@ def test_list_groups_after_removed():
28362837

28372838
class TestGroups(object):
28382839
img_snap_keys = ['image_name', 'pool_id', 'snap_id']
2839-
gp_snap_keys = ['id', 'image_snap_name', 'image_snaps', 'name', 'state']
2840+
gp_snap_keys = ['id', 'image_snap_name', 'image_snaps', 'name',
2841+
'namespace_type', 'state']
28402842

28412843
def setup_method(self, method):
28422844
global snap_name
@@ -2925,6 +2927,7 @@ def test_group_snap_get_info(self):
29252927
assert sorted(snap_info_dict.keys()) == self.gp_snap_keys
29262928
assert snap_info_dict['name'] == snap_name
29272929
assert snap_info_dict['state'] == RBD_GROUP_SNAP_STATE_COMPLETE
2930+
assert snap_info_dict['namespace_type'] == RBD_GROUP_SNAP_NAMESPACE_TYPE_USER
29282931
for image_snap in snap_info_dict['image_snaps']:
29292932
assert sorted(image_snap.keys()) == self.img_snap_keys
29302933
assert image_snap['pool_id'] == pool_id
@@ -2946,6 +2949,7 @@ def test_group_snap_get_info_no_member_images(self):
29462949
assert sorted(snap_info_dict.keys()) == self.gp_snap_keys
29472950
assert snap_info_dict['name'] == snap_name
29482951
assert snap_info_dict['state'] == RBD_GROUP_SNAP_STATE_COMPLETE
2952+
assert snap_info_dict['namespace_type'] == RBD_GROUP_SNAP_NAMESPACE_TYPE_USER
29492953
assert snap_info_dict['image_snap_name'] == ""
29502954
assert snap_info_dict['image_snaps'] == []
29512955

0 commit comments

Comments
 (0)