]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/rbd_iscsi.py
update sources to v12.1.2
[ceph.git] / ceph / src / pybind / mgr / dashboard / rbd_iscsi.py
1
2 import rados
3 import rbd
4 from remote_view_cache import RemoteViewCache
5
6 SERVICE_TYPE = 'tcmu-runner'
7
8 class DaemonsAndImages(RemoteViewCache):
9 def _get(self):
10 daemons = {}
11 images = {}
12 for server in self._module.list_servers():
13 for service in server['services']:
14 if service['type'] == SERVICE_TYPE:
15 metadata = self._module.get_metadata(SERVICE_TYPE,
16 service['id'])
17 status = self._module.get_daemon_status(SERVICE_TYPE,
18 service['id'])
19
20 daemon = daemons.get(server['hostname'], None)
21 if daemon is None:
22 daemon = {
23 'server_hostname': server['hostname'],
24 'version': metadata['ceph_version'],
25 'optimized_paths': 0,
26 'non_optimized_paths': 0
27 }
28 daemons[server['hostname']] = daemon
29
30 image = images.get(service['id'])
31 if image is None:
32 image = {
33 'id': service['id'],
34 'pool_name': metadata['pool_name'],
35 'name': metadata['image_name'],
36 'optimized_paths': [],
37 'non_optimized_paths': []
38 }
39 if status.get('lock_owner', 'false') == 'true':
40 daemon['optimized_paths'] += 1
41 image['optimized_paths'].append(server['hostname'])
42 else:
43 daemon['non_optimized_paths'] += 1
44 image['non_optimized_paths'].append(server['hostname'])
45 images[service['id']] = image
46
47 return {
48 'daemons': [daemons[k] for k in sorted(daemons, key=daemons.get)],
49 'images': [images[k] for k in sorted(images, key=images.get)]
50 }
51
52 class Controller:
53 def __init__(self, module_inst):
54 self.content_data = DaemonsAndImages(module_inst)