From f7a1d57dd0d6c29b8c57a5de624da33777403fe5 Mon Sep 17 00:00:00 2001 From: John Spray Date: Thu, 27 Jul 2017 11:48:42 -0400 Subject: [PATCH] mgr/restful: cleaner message when not configured RuntimeError+backtrace prints should be for genuinely exceptional exceptions. For these known cases, we should just print the message cleanly. http://tracker.ceph.com/issues/21292 Signed-off-by: John Spray --- src/pybind/mgr/restful/module.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pybind/mgr/restful/module.py b/src/pybind/mgr/restful/module.py index 63fcae72a5a..1bb6f6e0fb3 100644 --- a/src/pybind/mgr/restful/module.py +++ b/src/pybind/mgr/restful/module.py @@ -26,6 +26,9 @@ from mgr_module import MgrModule, CommandResult instance = None +class CannotServe(Exception): + pass + class CommandsRequest(object): """ @@ -247,6 +250,8 @@ class Module(MgrModule): try: self._serve() self.server.socket.close() + except CannotServe as cs: + self.log.warn("server not running: {0}".format(cs.message)) except: self.log.error(str(traceback.format_exc())) @@ -272,7 +277,8 @@ class Module(MgrModule): server_addr = self.get_localized_config('server_addr', '::') if server_addr is None: - raise RuntimeError('no server_addr configured; try "ceph config-key set mgr/restful/server_addr "') + raise CannotServe('no server_addr configured; try "ceph config-key set mgr/restful/server_addr "') + server_port = int(self.get_localized_config('server_port', '8003')) self.log.info('server_addr: %s server_port: %d', server_addr, server_port) @@ -296,11 +302,11 @@ class Module(MgrModule): pkey_fname = self.get_localized_config('key_file') if not cert_fname or not pkey_fname: - raise RuntimeError('no certificate configured') + raise CannotServe('no certificate configured') if not os.path.isfile(cert_fname): - raise RuntimeError('certificate %s does not exist' % cert_fname) + raise CannotServe('certificate %s does not exist' % cert_fname) if not os.path.isfile(pkey_fname): - raise RuntimeError('private key %s does not exist' % pkey_fname) + raise CannotServe('private key %s does not exist' % pkey_fname) # Create the HTTPS werkzeug server serving pecan app self.server = make_server( -- 2.39.5