mirror of
https://github.com/ceph/ceph
synced 2025-02-25 03:52:04 +00:00
test: add tests for mirroring bootstrap interfaces
Signed-off-by: Venky Shankar <vshankar@redhat.com>
This commit is contained in:
parent
8d2c726e3c
commit
3e13f48937
@ -13,6 +13,6 @@ overrides:
|
||||
tasks:
|
||||
- exec:
|
||||
client.mirror:
|
||||
- "sudo ceph auth caps client.mirror mon 'allow r' mds 'allow r' osd 'allow rw tag cephfs metadata=*, allow r tag cephfs data=*' mgr 'allow r'"
|
||||
- "sudo ceph auth caps client.mirror mon 'profile cephfs-mirror' mds 'allow r' osd 'allow rw tag cephfs metadata=*, allow r tag cephfs data=*' mgr 'allow r'"
|
||||
client.mirror_remote:
|
||||
- "sudo ceph auth caps client.mirror_remote mon 'allow r' mds 'allow rwps' osd 'allow rw tag cephfs *=*' mgr 'allow r'"
|
||||
|
@ -13,6 +13,6 @@ overrides:
|
||||
tasks:
|
||||
- exec:
|
||||
client.mirror:
|
||||
- "sudo ceph auth caps client.mirror mon 'allow r' mds 'allow r' osd 'allow rw tag cephfs metadata=*, allow r tag cephfs data=*' mgr 'allow r'"
|
||||
- "sudo ceph auth caps client.mirror mon 'profile cephfs-mirror' mds 'allow r' osd 'allow rw tag cephfs metadata=*, allow r tag cephfs data=*' mgr 'allow r'"
|
||||
client.mirror_remote:
|
||||
- "sudo ceph auth caps client.mirror_remote mon 'allow r' mds 'allow rwps' osd 'allow rw tag cephfs *=*' mgr 'allow r'"
|
||||
|
@ -57,12 +57,7 @@ class TestMirroring(CephFSTestCase):
|
||||
else:
|
||||
raise RuntimeError('expected admin socket to be unavailable')
|
||||
|
||||
def peer_add(self, fs_name, fs_id, peer_spec, remote_fs_name=None):
|
||||
if remote_fs_name:
|
||||
self.mgr_cluster.mon_manager.raw_cluster_cmd("fs", "snapshot", "mirror", "peer_add", fs_name, peer_spec, remote_fs_name)
|
||||
else:
|
||||
self.mgr_cluster.mon_manager.raw_cluster_cmd("fs", "snapshot", "mirror", "peer_add", fs_name, peer_spec)
|
||||
time.sleep(10)
|
||||
def verify_peer_added(self, fs_name, fs_id, peer_spec, remote_fs_name=None):
|
||||
# verify via asok
|
||||
res = self.mirror_daemon_command(f'mirror status for fs: {fs_name}',
|
||||
'fs', 'mirror', 'status', f'{fs_name}@{fs_id}')
|
||||
@ -76,6 +71,14 @@ class TestMirroring(CephFSTestCase):
|
||||
else:
|
||||
self.assertTrue(self.fs_name == res['peers'][peer_uuid]['remote']['fs_name'])
|
||||
|
||||
def peer_add(self, fs_name, fs_id, peer_spec, remote_fs_name=None):
|
||||
if remote_fs_name:
|
||||
self.mgr_cluster.mon_manager.raw_cluster_cmd("fs", "snapshot", "mirror", "peer_add", fs_name, peer_spec, remote_fs_name)
|
||||
else:
|
||||
self.mgr_cluster.mon_manager.raw_cluster_cmd("fs", "snapshot", "mirror", "peer_add", fs_name, peer_spec)
|
||||
time.sleep(10)
|
||||
self.verify_peer_added(fs_name, fs_id, peer_spec, remote_fs_name)
|
||||
|
||||
def peer_remove(self, fs_name, fs_id, peer_spec):
|
||||
peer_uuid = self.get_peer_uuid(peer_spec)
|
||||
self.mgr_cluster.mon_manager.raw_cluster_cmd("fs", "snapshot", "mirror", "peer_remove", fs_name, peer_uuid)
|
||||
@ -85,6 +88,15 @@ class TestMirroring(CephFSTestCase):
|
||||
'fs', 'mirror', 'status', f'{fs_name}@{fs_id}')
|
||||
self.assertTrue(res['peers'] == {} and res['snap_dirs']['dir_count'] == 0)
|
||||
|
||||
def bootstrap_peer(self, fs_name, client_name, site_name):
|
||||
outj = json.loads(self.mgr_cluster.mon_manager.raw_cluster_cmd(
|
||||
"fs", "snapshot", "mirror", "peer_bootstrap", "create", fs_name, client_name, site_name))
|
||||
return outj['token']
|
||||
|
||||
def import_peer(self, fs_name, token):
|
||||
self.mgr_cluster.mon_manager.raw_cluster_cmd("fs", "snapshot", "mirror", "peer_bootstrap", "import",
|
||||
fs_name, token)
|
||||
|
||||
def add_directory(self, fs_name, fs_id, dir_name):
|
||||
# get initial dir count
|
||||
res = self.mirror_daemon_command(f'mirror status for fs: {fs_name}',
|
||||
@ -770,3 +782,21 @@ class TestMirroring(CephFSTestCase):
|
||||
pass
|
||||
else:
|
||||
raise RuntimeError('expected admin socket to be unavailable')
|
||||
|
||||
def test_cephfs_mirror_peer_bootstrap(self):
|
||||
"""Test importing peer bootstrap token"""
|
||||
self.enable_mirroring(self.primary_fs_name, self.primary_fs_id)
|
||||
|
||||
# create a bootstrap token for the peer
|
||||
bootstrap_token = self.bootstrap_peer(self.secondary_fs_name, "client.mirror_peer_bootstrap", "site-remote")
|
||||
|
||||
# import the peer via bootstrap token
|
||||
self.import_peer(self.primary_fs_name, bootstrap_token)
|
||||
time.sleep(10)
|
||||
self.verify_peer_added(self.primary_fs_name, self.primary_fs_id, "client.mirror_peer_bootstrap@site-remote",
|
||||
self.secondary_fs_name)
|
||||
|
||||
# remove peer
|
||||
self.peer_remove(self.primary_fs_name, self.primary_fs_id, "client.mirror_peer_bootstrap@site-remote")
|
||||
# disable mirroring
|
||||
self.disable_mirroring(self.primary_fs_name, self.primary_fs_id)
|
||||
|
Loading…
Reference in New Issue
Block a user