From: Yuri Weinstein Date: Mon, 11 Jan 2021 20:00:24 +0000 (-0800) Subject: Merge pull request #38770 from votdev/wip-48629-octopus X-Git-Tag: v15.2.9~81 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a9c5e525214e848e0986428b3f488eb6eb8424ac;p=ceph.git Merge pull request #38770 from votdev/wip-48629-octopus octopus: mgr/dashboard: The /rgw/status endpoint does not check for running service Reviewed-by: Alfonso Martínez Reviewed-by: Alfonso Martínez Reviewed-by: Nizamudeen A --- a9c5e525214e848e0986428b3f488eb6eb8424ac diff --cc src/pybind/mgr/dashboard/controllers/rgw.py index 6e17f3e80278,55a6fbcddb7d..f3a885a21ac3 --- a/src/pybind/mgr/dashboard/controllers/rgw.py +++ b/src/pybind/mgr/dashboard/controllers/rgw.py @@@ -30,21 -30,11 +30,23 @@@ 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(): # pragma: no cover - no complexity there + try: + is_online = instance.is_service_online() # pragma: no cover - no complexity there + except RequestException as e: + # Drop this instance because the RGW client seems not to + # exist anymore (maybe removed via orchestrator). Removing + # the instance from the cache will result in the correct + # error message next time when the backend tries to + # establish a new connection (-> 'No RGW found' instead + # of 'RGW REST API failed request ...'). + # Note, this only applies to auto-detected RGW clients. + RgwClient.drop_instance(instance.userid) + raise e + if not is_online: msg = 'Failed to connect to the Object Gateway\'s Admin Ops API.' raise RequestException(msg) # Ensure the API user ID is known by the RGW.