Mercurial > libervia-backend
diff sat_frontends/jp/cmd_pubsub.py @ 3413:f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
the correct exit code is now returned in case of NOT_FOUND or bridge exception. If the
exception is not a bridge exception, an internal error exit code is used.
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 12 Nov 2020 14:53:16 +0100 |
parents | 7b4ae3dbc041 |
children | 864485605d12 |
line wrap: on
line diff
--- a/sat_frontends/jp/cmd_pubsub.py Thu Nov 12 14:53:16 2020 +0100 +++ b/sat_frontends/jp/cmd_pubsub.py Thu Nov 12 14:53:16 2020 +0100 @@ -36,6 +36,7 @@ from sat.tools.common import uri from sat.tools.common.ansi import ANSI as A from sat_frontends.tools import jid, strings +from sat_frontends.bridge.bridge_frontend import BridgeException __commands__ = ["Pubsub"] @@ -80,9 +81,19 @@ self.args.node, self.profile, ) + except BridgeException as e: + if e.condition == 'item-not-found': + self.disp( + f"The node {self.args.node} doesn't exist on {self.args.service}", + error=True + ) + self.host.quit(C.EXIT_NOT_FOUND) + else: + self.disp(f"can't get node configuration: {e}", error=True) + self.host.quit(C.EXIT_BRIDGE_ERRBACK) except Exception as e: - self.disp(f"can't get node configuration: {e}", error=True) - self.host.quit(C.EXIT_BRIDGE_ERRBACK) + self.disp(f"Internal error: {e}", error=True) + self.host.quit(C.EXIT_INTERNAL_ERROR) else: key_filter = (lambda k: True) if not self.args.keys else self.filterKey config_dict = { @@ -815,9 +826,19 @@ self.profile, ) ) + except BridgeException as e: + if e.condition == 'item-not-found' or e.classname=="NotFound": + self.disp( + f"The node {self.args.node} doesn't exist on {self.args.service}", + error=True + ) + self.host.quit(C.EXIT_NOT_FOUND) + else: + self.disp(f"can't get pubsub items: {e}", error=True) + self.host.quit(C.EXIT_BRIDGE_ERRBACK) except Exception as e: - self.disp(f"can't get pubsub items: {e}", error=True) - self.host.quit(C.EXIT_BRIDGE_ERRBACK) + self.disp(f"Internal error: {e}", error=True) + self.host.quit(C.EXIT_INTERNAL_ERROR) else: await self.output(ps_result['items']) self.host.quit(C.EXIT_OK)