]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/mirroring/module.py
1 from typing
import List
, Optional
3 from mgr_module
import MgrModule
, CLIReadCommand
, CLIWriteCommand
, Option
, NotifyType
5 from .fs
.snapshot_mirror
import FSSnapshotMirror
7 class Module(MgrModule
):
8 MODULE_OPTIONS
: List
[Option
] = []
9 NOTIFY_TYPES
= [NotifyType
.fs_map
]
11 def __init__(self
, *args
, **kwargs
):
12 super().__init
__(*args
, **kwargs
)
13 self
.fs_snapshot_mirror
= FSSnapshotMirror(self
)
15 def notify(self
, notify_type
: NotifyType
, notify_id
):
16 self
.fs_snapshot_mirror
.notify(notify_type
)
18 @CLIWriteCommand('fs snapshot mirror enable')
19 def snapshot_mirror_enable(self
,
21 """Enable snapshot mirroring for a filesystem"""
22 return self
.fs_snapshot_mirror
.enable_mirror(fs_name
)
24 @CLIWriteCommand('fs snapshot mirror disable')
25 def snapshot_mirror_disable(self
,
27 """Disable snapshot mirroring for a filesystem"""
28 return self
.fs_snapshot_mirror
.disable_mirror(fs_name
)
30 @CLIWriteCommand('fs snapshot mirror peer_add')
31 def snapshot_mirorr_peer_add(self
,
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"""
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
)
45 @CLIReadCommand('fs snapshot mirror peer_list')
46 def snapshot_mirror_peer_list(self
,
48 """List configured peers for a file system"""
49 return self
.fs_snapshot_mirror
.peer_list(fs_name
)
51 @CLIWriteCommand('fs snapshot mirror peer_remove')
52 def snapshot_mirror_peer_remove(self
,
55 """Remove a filesystem peer"""
56 return self
.fs_snapshot_mirror
.peer_remove(fs_name
, peer_uuid
)
58 @CLIWriteCommand('fs snapshot mirror peer_bootstrap create')
59 def snapshot_mirror_peer_bootstrap_create(self
,
63 """Bootstrap a filesystem peer"""
64 return self
.fs_snapshot_mirror
.peer_bootstrap_create(fs_name
, client_name
, site_name
)
66 @CLIWriteCommand('fs snapshot mirror peer_bootstrap import')
67 def snapshot_mirror_peer_bootstrap_import(self
,
70 """Import a bootstrap token"""
71 return self
.fs_snapshot_mirror
.peer_bootstrap_import(fs_name
, token
)
73 @CLIWriteCommand('fs snapshot mirror add')
74 def snapshot_mirror_add_dir(self
,
77 """Add a directory for snapshot mirroring"""
78 return self
.fs_snapshot_mirror
.add_dir(fs_name
, path
)
80 @CLIWriteCommand('fs snapshot mirror remove')
81 def snapshot_mirror_remove_dir(self
,
84 """Remove a snapshot mirrored directory"""
85 return self
.fs_snapshot_mirror
.remove_dir(fs_name
, path
)
87 @CLIReadCommand('fs snapshot mirror dirmap')
88 def snapshot_mirror_dirmap(self
,
91 """Get current mirror instance map for a directory"""
92 return self
.fs_snapshot_mirror
.status(fs_name
, path
)
94 @CLIReadCommand('fs snapshot mirror show distribution')
95 def snapshot_mirror_distribution(self
,
97 """Get current instance to directory map for a filesystem"""
98 return self
.fs_snapshot_mirror
.show_distribution(fs_name
)
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()