diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
commit | 19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch) | |
tree | 42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/pybind/mgr/dashboard/controllers/daemon.py | |
parent | Initial commit. (diff) | |
download | ceph-upstream/16.2.11+ds.tar.xz ceph-upstream/16.2.11+ds.zip |
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/pybind/mgr/dashboard/controllers/daemon.py')
-rw-r--r-- | src/pybind/mgr/dashboard/controllers/daemon.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/controllers/daemon.py b/src/pybind/mgr/dashboard/controllers/daemon.py new file mode 100644 index 000000000..eeea5a326 --- /dev/null +++ b/src/pybind/mgr/dashboard/controllers/daemon.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- + +from typing import Optional + +from ..exceptions import DashboardException +from ..security import Scope +from ..services.exception import handle_orchestrator_error +from ..services.orchestrator import OrchClient, OrchFeature +from . import APIDoc, APIRouter, RESTController +from ._version import APIVersion +from .orchestrator import raise_if_no_orchestrator + + +@APIRouter('/daemon', Scope.HOSTS) +@APIDoc("Perform actions on daemons", "Daemon") +class Daemon(RESTController): + @raise_if_no_orchestrator([OrchFeature.DAEMON_ACTION]) + @handle_orchestrator_error('daemon') + @RESTController.MethodMap(version=APIVersion.EXPERIMENTAL) + def set(self, daemon_name: str, action: str = '', + container_image: Optional[str] = None): + + if action not in ['start', 'stop', 'restart', 'redeploy']: + raise DashboardException( + code='invalid_daemon_action', + msg=f'Daemon action "{action}" is either not valid or not supported.') + # non 'None' container_images change need a redeploy + if container_image == '' and action != 'redeploy': + container_image = None + + orch = OrchClient.instance() + res = orch.daemons.action(action=action, daemon_name=daemon_name, image=container_image) + return res |