]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/nfs/utils.py
import ceph quincy 17.2.1
[ceph.git] / ceph / src / pybind / mgr / nfs / utils.py
CommitLineData
a4b75251
TL
1from typing import List, TYPE_CHECKING
2
b3b6e05e
TL
3import orchestrator
4
a4b75251
TL
5if TYPE_CHECKING:
6 from nfs.module import Module
b3b6e05e 7
1d09f67e
TL
8EXPORT_PREFIX: str = "export-"
9CONF_PREFIX: str = "conf-nfs."
10USER_CONF_PREFIX: str = "userconf-nfs."
11
12
13def export_obj_name(export_id: int) -> str:
14 """Return a rados object name for the export."""
15 return f"{EXPORT_PREFIX}{export_id}"
16
17
18def conf_obj_name(cluster_id: str) -> str:
19 """Return a rados object name for the config."""
20 return f"{CONF_PREFIX}{cluster_id}"
21
22
23def user_conf_obj_name(cluster_id: str) -> str:
24 """Returna a rados object name for the user config."""
25 return f"{USER_CONF_PREFIX}{cluster_id}"
26
b3b6e05e 27
a4b75251 28def available_clusters(mgr: 'Module') -> List[str]:
b3b6e05e
TL
29 '''
30 This method returns list of available cluster ids.
31 Service name is service_type.service_id
32 Example:
33 completion.result value:
34 <ServiceDescription of <NFSServiceSpec for service_name=nfs.vstart>>
35 return value: ['vstart']
36 '''
37 # TODO check cephadm cluster list with rados pool conf objects
38 completion = mgr.describe_service(service_type='nfs')
39 orchestrator.raise_if_exception(completion)
a4b75251 40 assert completion.result is not None
b3b6e05e
TL
41 return [cluster.spec.service_id for cluster in completion.result
42 if cluster.spec.service_id]
43
44
a4b75251 45def restart_nfs_service(mgr: 'Module', cluster_id: str) -> None:
b3b6e05e
TL
46 '''
47 This methods restarts the nfs daemons
48 '''
49 completion = mgr.service_action(action='restart',
a4b75251 50 service_name='nfs.' + cluster_id)
b3b6e05e
TL
51 orchestrator.raise_if_exception(completion)
52
53
a4b75251 54def check_fs(mgr: 'Module', fs_name: str) -> bool:
b3b6e05e
TL
55 '''
56 This method checks if given fs is valid
57 '''
58 fs_map = mgr.get('fs_map')
59 return fs_name in [fs['mdsmap']['fs_name'] for fs in fs_map['filesystems']]