From da71bdcf82a8dc71a1170ad3f190702fa49d2838 Mon Sep 17 00:00:00 2001 From: Aravinda VK Date: Thu, 17 Nov 2016 15:42:24 +0530 Subject: eventsapi: JSON output and different error codes JSON outputs are added to all commands, use `--json` to get JSON output. Following error codes are added to differenciate between errors. Any other Unknown errors will have return code 1 ERROR_SAME_CONFIG = 2 ERROR_ALL_NODES_STATUS_NOT_OK = 3 ERROR_PARTIAL_SUCCESS = 4 ERROR_WEBHOOK_ALREADY_EXISTS = 5 ERROR_WEBHOOK_NOT_EXISTS = 6 ERROR_INVALID_CONFIG = 7 ERROR_WEBHOOK_SYNC_FAILED = 8 ERROR_CONFIG_SYNC_FAILED = 9 Also hidden `node-` commands in the help message. BUG: 1357753 Change-Id: I962b5435c8a448b4573059da0eae42f3f93cc97e Signed-off-by: Aravinda VK Reviewed-on: http://review.gluster.org/15867 Smoke: Gluster Build System Reviewed-by: Prashanth Pai NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System --- extras/cliutils/__init__.py | 6 ++++-- extras/cliutils/cliutils.py | 21 +++++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) (limited to 'extras') diff --git a/extras/cliutils/__init__.py b/extras/cliutils/__init__.py index 4bb8395bb46..9c930982be0 100644 --- a/extras/cliutils/__init__.py +++ b/extras/cliutils/__init__.py @@ -11,7 +11,8 @@ from cliutils import (runcli, yesno, get_node_uuid, Cmd, - GlusterCmdException) + GlusterCmdException, + set_common_args_func) # This will be useful when `from cliutils import *` @@ -26,4 +27,5 @@ __all__ = ["runcli", "yesno", "get_node_uuid", "Cmd", - "GlusterCmdException"] + "GlusterCmdException", + "set_common_args_func"] diff --git a/extras/cliutils/cliutils.py b/extras/cliutils/cliutils.py index 4e035d7ff5c..d805ac6d100 100644 --- a/extras/cliutils/cliutils.py +++ b/extras/cliutils/cliutils.py @@ -16,6 +16,7 @@ subparsers = parser.add_subparsers(dest="mode") subcommands = {} cache_data = {} ParseError = etree.ParseError if hasattr(etree, 'ParseError') else SyntaxError +_common_args_func = lambda p: True class GlusterCmdException(Exception): @@ -50,9 +51,9 @@ def oknotok(flag): return "OK" if flag else "NOT OK" -def output_error(message): +def output_error(message, errcode=1): print (message, file=sys.stderr) - sys.exit(1) + sys.exit(errcode) def node_output_ok(message=""): @@ -186,6 +187,7 @@ def runcli(): # a subcommand as specified in the Class name. Call the args # method by passing subcommand parser, Derived class can add # arguments to the subcommand parser. + metavar_data = [] for c in Cmd.__subclasses__(): cls = c() if getattr(cls, "name", "") == "": @@ -193,14 +195,24 @@ def runcli(): "to \"{0}\"".format( cls.__class__.__name__)) + # Do not show in help message if subcommand starts with node- + if not cls.name.startswith("node-"): + metavar_data.append(cls.name) + p = subparsers.add_parser(cls.name) args_func = getattr(cls, "args", None) if args_func is not None: args_func(p) + # Apply common args if any + _common_args_func(p) + # A dict to save subcommands, key is name of the subcommand subcommands[cls.name] = cls + # Hide node commands in Help message + subparsers.metavar = "{" + ",".join(metavar_data) + "}" + # Get all parsed arguments args = parser.parse_args() @@ -210,3 +222,8 @@ def runcli(): # Run if cls is not None: cls.run(args) + + +def set_common_args_func(func): + global _common_args_func + _common_args_func = func -- cgit