@@ -6504,11 +6504,21 @@ def get_subvol_uuid(self, subvol_name, group_name=None):
65046504 subvol_uuid = os .path .basename (subvol_path )
65056505 return subvol_uuid
65066506
6507- def construct_snap_path (self , subvol_name , snap_name , uuid ,
6508- group_name = '_nogroup' ):
6507+ def construct_snap_path_for_v2 (self , subvol_name , snap_name , uuid ,
6508+ group_name = '_nogroup' ):
65096509 return os .path .join ('/volumes' , group_name , subvol_name , '.snap' ,
65106510 snap_name , uuid )
65116511
6512+ def construct_snap_path_for_v1 (self , subvol_name , snap_name , uuid ,
6513+ group_name = '_nogroup' ):
6514+ return os .path .join ('/volumes' , group_name , subvol_name , uuid ,
6515+ '.snap' , snap_name )
6516+
6517+ def construct_snap_path_for_legacy (self , subvol_name , snap_name ,
6518+ group_name = '_nogroup' ):
6519+ return os .path .join ('/volumes' , group_name , subvol_name , '.snap' ,
6520+ snap_name )
6521+
65126522 def test_snapshot_getpath (self ):
65136523 '''
65146524 Test that "ceph fs subvolume snapshot getpath" command returns path to
@@ -6525,8 +6535,8 @@ def test_snapshot_getpath(self):
65256535 snap_path = self .get_ceph_cmd_stdout (f'fs subvolume snapshot getpath '
65266536 f'{ self .volname } { subvol_name } '
65276537 f'{ snap_name } ' ).strip ()
6528- exp_snap_path = self .construct_snap_path (subvol_name , snap_name ,
6529- sv_uuid )
6538+ exp_snap_path = self .construct_snap_path_for_v2 (subvol_name , snap_name ,
6539+ sv_uuid )
65306540 self .assertEqual (snap_path , exp_snap_path )
65316541
65326542 def test_snapshot_getpath_in_group (self ):
@@ -6550,8 +6560,8 @@ def test_snapshot_getpath_in_group(self):
65506560 f'{ self .volname } { subvol_name } '
65516561 f'{ snap_name } { group_name } ' )\
65526562 .strip ()
6553- exp_snap_path = self .construct_snap_path (subvol_name , snap_name ,
6554- sv_uuid , group_name )
6563+ exp_snap_path = self .construct_snap_path_for_v2 (subvol_name , snap_name ,
6564+ sv_uuid , group_name )
65556565 self .assertEqual (snap_path , exp_snap_path )
65566566
65576567 def test_snapshot_getpath_on_retained_subvol (self ):
@@ -6573,8 +6583,8 @@ def test_snapshot_getpath_on_retained_subvol(self):
65736583 snap_path = self .get_ceph_cmd_stdout (f'fs subvolume snapshot getpath '
65746584 f'{ self .volname } { subvol_name } '
65756585 f'{ snap_name } ' ).strip ()
6576- exp_snap_path = self .construct_snap_path (subvol_name , snap_name ,
6577- sv_uuid )
6586+ exp_snap_path = self .construct_snap_path_for_v2 (subvol_name , snap_name ,
6587+ sv_uuid )
65786588 self .assertEqual (snap_path , exp_snap_path )
65796589
65806590 def test_snapshot_getpath_on_retained_subvol_in_group (self ):
@@ -6601,8 +6611,96 @@ def test_snapshot_getpath_on_retained_subvol_in_group(self):
66016611 f'{ self .volname } { subvol_name } '
66026612 f'{ snap_name } { group_name } ' )\
66036613 .strip ()
6604- exp_snap_path = self .construct_snap_path (subvol_name , snap_name ,
6605- sv_uuid , group_name )
6614+ exp_snap_path = self .construct_snap_path_for_v2 (subvol_name , snap_name ,
6615+ sv_uuid , group_name )
6616+ self .assertEqual (snap_path , exp_snap_path )
6617+
6618+ def test_snapshot_getpath_for_v1 (self ):
6619+ subvol_name = self ._gen_subvol_name ()
6620+ snap_name = self ._gen_subvol_snap_name ()
6621+
6622+ self ._create_v1_subvolume (subvol_name )
6623+ sv_uuid = self .get_subvol_uuid (subvol_name )
6624+ self .run_ceph_cmd (f'fs subvolume snapshot create { self .volname } '
6625+ f'{ subvol_name } { snap_name } ' )
6626+
6627+ snap_path = self .get_ceph_cmd_stdout (
6628+ f'fs subvolume snapshot getpath { self .volname } { subvol_name } '
6629+ f'{ snap_name } ' ).strip ()
6630+ exp_snap_path = self .construct_snap_path_for_v1 (subvol_name , snap_name ,
6631+ sv_uuid )
6632+ self .assertEqual (snap_path , exp_snap_path )
6633+
6634+ def test_snapshot_getpath_in_group_for_v1 (self ):
6635+ subvol_name = self ._gen_subvol_name ()
6636+ group_name = self ._gen_subvol_grp_name ()
6637+ snap_name = self ._gen_subvol_snap_name ()
6638+
6639+ self .run_ceph_cmd (f'fs subvolumegroup create { self .volname } '
6640+ f'{ group_name } ' )
6641+ self ._create_v1_subvolume (subvol_name , group_name )
6642+ sv_uuid = self .get_subvol_uuid (subvol_name , group_name )
6643+ self .run_ceph_cmd (f'fs subvolume snapshot create { self .volname } '
6644+ f'{ subvol_name } { snap_name } { group_name } ' )
6645+
6646+ snap_path = self .get_ceph_cmd_stdout (
6647+ f'fs subvolume snapshot getpath { self .volname } { subvol_name } '
6648+ f'{ snap_name } { group_name } ' ).strip ()
6649+ exp_snap_path = self .construct_snap_path_for_v1 (subvol_name , snap_name ,
6650+ sv_uuid , group_name )
6651+ self .assertEqual (snap_path , exp_snap_path )
6652+
6653+ def test_snapshot_getpath_for_upgraded_legacy (self ):
6654+ subvol_name = self ._gen_subvol_name ()
6655+ snap_name = self ._gen_subvol_snap_name ()
6656+
6657+ sv_path = os .path .join ('.' , 'volumes' , '_nogroup' , subvol_name )
6658+ self .mount_a .run_shell (f'sudo mkdir -p { sv_path } ' , omit_sudo = False )
6659+
6660+ sv_getpath = self .get_ceph_cmd_stdout (
6661+ f'fs subvolume getpath { self .volname } { subvol_name } ' ).strip ()
6662+ self .assertNotEqual (sv_getpath , None )
6663+ # remove '/' at the beginning
6664+ self .assertEqual (sv_path [1 :], sv_getpath )
6665+ self ._assert_meta_location_and_version (self .volname , subvol_name ,
6666+ version = 1 , legacy = True )
6667+
6668+ self .run_ceph_cmd (f'fs subvolume snapshot create { self .volname } '
6669+ f'{ subvol_name } { snap_name } ' )
6670+
6671+ snap_path = self .get_ceph_cmd_stdout (
6672+ f'fs subvolume snapshot getpath { self .volname } { subvol_name } '
6673+ f'{ snap_name } ' ).strip ()
6674+ exp_snap_path = self .construct_snap_path_for_legacy (subvol_name ,
6675+ snap_name )
6676+ self .assertEqual (snap_path , exp_snap_path )
6677+
6678+ def test_snapshot_getpath_in_group_for_upgraded_legacy (self ):
6679+ subvol_name = self ._gen_subvol_name ()
6680+ group_name = self ._gen_subvol_grp_name ()
6681+ snap_name = self ._gen_subvol_snap_name ()
6682+
6683+ sv_path = os .path .join ('.' , 'volumes' , group_name , subvol_name )
6684+ self .mount_a .run_shell (f'sudo mkdir -p { sv_path } ' , omit_sudo = False )
6685+
6686+ sv_getpath = self .get_ceph_cmd_stdout (
6687+ f'fs subvolume getpath { self .volname } { subvol_name } '
6688+ f'{ group_name } ' ).strip ()
6689+ self .assertNotEqual (sv_getpath , None )
6690+ # remove '/' at the beginning
6691+ self .assertEqual (sv_path [1 :], sv_getpath )
6692+ self ._assert_meta_location_and_version (self .volname , subvol_name ,
6693+ subvol_group = group_name ,
6694+ version = 1 , legacy = True )
6695+
6696+ self .run_ceph_cmd (f'fs subvolume snapshot create { self .volname } '
6697+ f'{ subvol_name } { snap_name } { group_name } ' )
6698+
6699+ snap_path = self .get_ceph_cmd_stdout (
6700+ f'fs subvolume snapshot getpath { self .volname } { subvol_name } '
6701+ f'{ snap_name } { group_name } ' ).strip ()
6702+ exp_snap_path = self .construct_snap_path_for_legacy (subvol_name , snap_name ,
6703+ group_name )
66066704 self .assertEqual (snap_path , exp_snap_path )
66076705
66086706
0 commit comments