From 8720471a3ef2c3e3b2dc8bb95b2b9e4cacfde0d3 Mon Sep 17 00:00:00 2001 From: Volker Theile Date: Thu, 10 Dec 2020 15:30:16 +0100 Subject: [PATCH] mgr/dashboard: The /rgw/status endpoint does not check for running service Fixes: https://tracker.ceph.com/issues/48542 Signed-off-by: Volker Theile (cherry picked from commit 3cfe054d42cbdc5fa731626b27ecaf9ac0baa31e) --- src/pybind/mgr/dashboard/controllers/rgw.py | 2 ++ src/pybind/mgr/dashboard/tests/test_rgw.py | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/pybind/mgr/dashboard/controllers/rgw.py b/src/pybind/mgr/dashboard/controllers/rgw.py index cc2e25c42ade..1c8343a7bd83 100644 --- a/src/pybind/mgr/dashboard/controllers/rgw.py +++ b/src/pybind/mgr/dashboard/controllers/rgw.py @@ -24,6 +24,8 @@ class Rgw(BaseController): def status(self): status = {'available': False, 'message': None} try: + if not CephService.get_service_list('rgw'): + raise LookupError('No RGW service is running.') instance = RgwClient.admin_instance() # Check if the service is online. if not instance.is_service_online(): diff --git a/src/pybind/mgr/dashboard/tests/test_rgw.py b/src/pybind/mgr/dashboard/tests/test_rgw.py index b55d2b9b187a..9f586be245a3 100644 --- a/src/pybind/mgr/dashboard/tests/test_rgw.py +++ b/src/pybind/mgr/dashboard/tests/test_rgw.py @@ -1,7 +1,21 @@ import mock -from . import ControllerTestCase -from ..controllers.rgw import RgwUser +from .. import mgr +from ..controllers.rgw import Rgw, RgwUser +from . import ControllerTestCase # pylint: disable=no-name-in-module + + +class RgwControllerTestCase(ControllerTestCase): + @classmethod + def setup_server(cls): + Rgw._cp_config['tools.authenticate.on'] = False # pylint: disable=protected-access + cls.setup_controllers([Rgw], '/test') + + def test_status_no_service(self): + mgr.list_servers.return_value = [] + self._get('/test/api/rgw/status') + self.assertStatus(200) + self.assertJsonBody({'available': False, 'message': 'No RGW service is running.'}) class RgwUserControllerTestCase(ControllerTestCase): -- 2.47.3