]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/services/orchestrator.py
366ff7de735c531e18661c07618e1469f3840427
[ceph.git] / ceph / src / pybind / mgr / dashboard / services / orchestrator.py
1 # -*- coding: utf-8 -*-
2 from __future__ import absolute_import
3
4 from orchestrator import OrchestratorClientMixin, raise_if_exception, OrchestratorError
5 from .. import mgr, logger
6
7
8 # pylint: disable=abstract-method
9 class OrchClient(OrchestratorClientMixin):
10 def __init__(self):
11 super(OrchClient, self).__init__()
12 self.set_mgr(mgr)
13
14 def list_service_info(self, service_type):
15 # type: (str) -> list
16 completion = self.describe_service(service_type, None, None)
17 self._orchestrator_wait([completion])
18 raise_if_exception(completion)
19 return completion.result
20
21 def available(self):
22 try:
23 status, desc = super(OrchClient, self).available()
24 logger.info("[ORCH] is orchestrator available: %s, %s", status, desc)
25 return status
26 except (RuntimeError, OrchestratorError, ImportError):
27 return False
28
29 def reload_service(self, service_type, service_ids):
30 if not isinstance(service_ids, list):
31 service_ids = [service_ids]
32
33 completion_list = [self.service_action('reload', service_type,
34 service_name, service_id)
35 for service_name, service_id in service_ids]
36 self._orchestrator_wait(completion_list)
37 for c in completion_list:
38 raise_if_exception(c)