]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: The /rgw/status endpoint does not check for running service 38771/head
authorVolker Theile <vtheile@suse.com>
Thu, 10 Dec 2020 14:30:16 +0000 (15:30 +0100)
committerVolker Theile <vtheile@suse.com>
Tue, 5 Jan 2021 14:34:55 +0000 (15:34 +0100)
Fixes: https://tracker.ceph.com/issues/48542
Signed-off-by: Volker Theile <vtheile@suse.com>
(cherry picked from commit 3cfe054d42cbdc5fa731626b27ecaf9ac0baa31e)

src/pybind/mgr/dashboard/controllers/rgw.py
src/pybind/mgr/dashboard/tests/test_rgw.py

index cc2e25c42adedd58d26d5cf592fdba1504cdb6d2..1c8343a7bd83680ff47b12cbfe6a953c444a6adb 100644 (file)
@@ -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():
index b55d2b9b187afd89f20a3be7e3c40862be1f6127..9f586be245a386fe25dc645f606742a43cb257da 100644 (file)
@@ -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):