From: Volker Theile Date: Thu, 10 Dec 2020 14:30:16 +0000 (+0100) Subject: mgr/dashboard: The /rgw/status endpoint does not check for running service X-Git-Tag: v14.2.17~95^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F38771%2Fhead;p=ceph.git 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) --- 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):