From: Yuri Weinstein Date: Thu, 14 Jan 2021 16:21:06 +0000 (-0800) Subject: Merge pull request #38584 from votdev/wip-48593-nautilus X-Git-Tag: v14.2.17~89 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=6d4e43d2dc7a0706a079a6cc49169ec53ebd7a30;p=ceph.git Merge pull request #38584 from votdev/wip-48593-nautilus nautilus: mgr/dashboard: Drop invalid RGW client instances, improve logging Reviewed-by: Alfonso Martínez Reviewed-by: Ernesto Puerta --- 6d4e43d2dc7a0706a079a6cc49169ec53ebd7a30 diff --cc src/pybind/mgr/dashboard/controllers/rgw.py index 1c8343a7bd836,3434cfe791627..085155aa893a7 --- a/src/pybind/mgr/dashboard/controllers/rgw.py +++ b/src/pybind/mgr/dashboard/controllers/rgw.py @@@ -24,11 -24,21 +24,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(): + try: + is_online = instance.is_service_online() + 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.