]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/mirroring/module.py
import quincy beta 17.1.0
[ceph.git] / ceph / src / pybind / mgr / mirroring / module.py
1 from typing import List, Optional
2
3 from mgr_module import MgrModule, CLIReadCommand, CLIWriteCommand, Option, NotifyType
4
5 from .fs.snapshot_mirror import FSSnapshotMirror
6
7 class Module(MgrModule):
8 MODULE_OPTIONS: List[Option] = []
9 NOTIFY_TYPES = [NotifyType.fs_map]
10
11 def __init__(self, *args, **kwargs):
12 super().__init__(*args, **kwargs)
13 self.fs_snapshot_mirror = FSSnapshotMirror(self)
14
15 def notify(self, notify_type: NotifyType, notify_id):
16 self.fs_snapshot_mirror.notify(notify_type)
17
18 @CLIWriteCommand('fs snapshot mirror enable')
19 def snapshot_mirror_enable(self,
20 fs_name: str):
21 """Enable snapshot mirroring for a filesystem"""
22 return self.fs_snapshot_mirror.enable_mirror(fs_name)
23
24 @CLIWriteCommand('fs snapshot mirror disable')
25 def snapshot_mirror_disable(self,
26 fs_name: str):
27 """Disable snapshot mirroring for a filesystem"""
28 return self.fs_snapshot_mirror.disable_mirror(fs_name)
29
30 @CLIWriteCommand('fs snapshot mirror peer_add')
31 def snapshot_mirorr_peer_add(self,
32 fs_name: str,
33 remote_cluster_spec: str,
34 remote_fs_name: Optional[str] = None,
35 remote_mon_host: Optional[str] = None,
36 cephx_key: Optional[str] = None):
37 """Add a remote filesystem peer"""
38 conf = {}
39 if remote_mon_host and cephx_key:
40 conf['mon_host'] = remote_mon_host
41 conf['key'] = cephx_key
42 return self.fs_snapshot_mirror.peer_add(fs_name, remote_cluster_spec,
43 remote_fs_name, remote_conf=conf)
44
45 @CLIReadCommand('fs snapshot mirror peer_list')
46 def snapshot_mirror_peer_list(self,
47 fs_name: str):
48 """List configured peers for a file system"""
49 return self.fs_snapshot_mirror.peer_list(fs_name)
50
51 @CLIWriteCommand('fs snapshot mirror peer_remove')
52 def snapshot_mirror_peer_remove(self,
53 fs_name: str,
54 peer_uuid: str):
55 """Remove a filesystem peer"""
56 return self.fs_snapshot_mirror.peer_remove(fs_name, peer_uuid)
57
58 @CLIWriteCommand('fs snapshot mirror peer_bootstrap create')
59 def snapshot_mirror_peer_bootstrap_create(self,
60 fs_name: str,
61 client_name: str,
62 site_name: str):
63 """Bootstrap a filesystem peer"""
64 return self.fs_snapshot_mirror.peer_bootstrap_create(fs_name, client_name, site_name)
65
66 @CLIWriteCommand('fs snapshot mirror peer_bootstrap import')
67 def snapshot_mirror_peer_bootstrap_import(self,
68 fs_name: str,
69 token: str):
70 """Import a bootstrap token"""
71 return self.fs_snapshot_mirror.peer_bootstrap_import(fs_name, token)
72
73 @CLIWriteCommand('fs snapshot mirror add')
74 def snapshot_mirror_add_dir(self,
75 fs_name: str,
76 path: str):
77 """Add a directory for snapshot mirroring"""
78 return self.fs_snapshot_mirror.add_dir(fs_name, path)
79
80 @CLIWriteCommand('fs snapshot mirror remove')
81 def snapshot_mirror_remove_dir(self,
82 fs_name: str,
83 path: str):
84 """Remove a snapshot mirrored directory"""
85 return self.fs_snapshot_mirror.remove_dir(fs_name, path)
86
87 @CLIReadCommand('fs snapshot mirror dirmap')
88 def snapshot_mirror_dirmap(self,
89 fs_name: str,
90 path: str):
91 """Get current mirror instance map for a directory"""
92 return self.fs_snapshot_mirror.status(fs_name, path)
93
94 @CLIReadCommand('fs snapshot mirror show distribution')
95 def snapshot_mirror_distribution(self,
96 fs_name: str):
97 """Get current instance to directory map for a filesystem"""
98 return self.fs_snapshot_mirror.show_distribution(fs_name)
99
100 @CLIReadCommand('fs snapshot mirror daemon status')
101 def snapshot_mirror_daemon_status(self):
102 """Get mirror daemon status"""
103 return self.fs_snapshot_mirror.daemon_status()