4 from remote_view_cache import RemoteViewCache
6 SERVICE_TYPE = 'tcmu-runner'
8 class DaemonsAndImages(RemoteViewCache):
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,
17 status = self._module.get_daemon_status(SERVICE_TYPE,
20 daemon = daemons.get(server['hostname'], None)
23 'server_hostname': server['hostname'],
24 'version': metadata['ceph_version'],
26 'non_optimized_paths': 0
28 daemons[server['hostname']] = daemon
30 image_id = service['id'].split(':')[-1]
31 image = images.get(image_id)
35 'pool_name': metadata['pool_name'],
36 'name': metadata['image_name'],
37 'optimized_paths': [],
38 'non_optimized_paths': []
40 images[image_id] = image
41 if status.get('lock_owner', 'false') == 'true':
42 daemon['optimized_paths'] += 1
43 image['optimized_paths'].append(server['hostname'])
45 daemon['non_optimized_paths'] += 1
46 image['non_optimized_paths'].append(server['hostname'])
49 'daemons': [daemons[k] for k in sorted(daemons, key=daemons.get)],
50 'images': [images[k] for k in sorted(images, key=images.get)]
54 def __init__(self, module_inst):
55 self.content_data = DaemonsAndImages(module_inst)