]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/controllers/orchestrator.py
085870a0f4aac7bbbda82e87dc3d71e6c530bf18
1 # -*- coding: utf-8 -*-
2 from __future__
import absolute_import
4 from functools
import wraps
6 from ..exceptions
import DashboardException
7 from ..services
.orchestrator
import OrchClient
8 from . import ApiController
, ControllerDoc
, Endpoint
, EndpointDoc
, ReadPermission
, RESTController
11 "available": (bool, "Orchestrator status"),
12 "message": (str, "Error message")
16 def raise_if_no_orchestrator(features
=None):
19 def _inner(self
, *args
, **kwargs
):
20 orch
= OrchClient
.instance()
21 if not orch
.available():
22 raise DashboardException(code
='orchestrator_status_unavailable', # pragma: no cover
23 msg
='Orchestrator is unavailable',
24 component
='orchestrator',
26 if features
is not None:
27 missing
= orch
.get_missing_features(features
)
29 msg
= 'Orchestrator feature(s) are unavailable: {}'.format(', '.join(missing
))
30 raise DashboardException(code
='orchestrator_features_unavailable',
32 component
='orchestrator',
34 return method(self
, *args
, **kwargs
)
39 @ApiController('/orchestrator')
40 @ControllerDoc("Orchestrator Management API", "Orchestrator")
41 class Orchestrator(RESTController
):
45 @EndpointDoc("Display Orchestrator Status",
46 responses
={200: STATUS_SCHEMA
})
48 return OrchClient
.instance().status()