diff --git a/lib/cli.py b/lib/cli.py index b7a4d312977e9b52e9c5a04ef4254076770f0ce4..603cdc4746593d1c898083aea22850505d06429b 100644 --- a/lib/cli.py +++ b/lib/cli.py @@ -82,6 +82,7 @@ __all__ = [ "EARLY_RELEASE_OPT", "ENABLED_HV_OPT", "ERROR_CODES_OPT", + "FAILURE_ONLY_OPT", "FIELDS_OPT", "FILESTORE_DIR_OPT", "FILESTORE_DRIVER_OPT", @@ -1363,6 +1364,11 @@ SHOW_MACHINE_OPT = cli_option("-M", "--show-machine-names", default=False, action="store_true", help="Show machine name for every line in output") +FAILURE_ONLY_OPT = cli_option("--failure-only", default=False, + action="store_true", + help=("Hide successful results and show failures" + " only (determined by the exit code)")) + def _PriorityOptionCb(option, _, value, parser): """Callback for processing C{--priority} option. diff --git a/lib/client/gnt_cluster.py b/lib/client/gnt_cluster.py index ecfa4ce75399d736705ad4bd5ad22255080a5c7b..ccbc7a9e6af63c20d4a657211b095c3965f26258 100644 --- a/lib/client/gnt_cluster.py +++ b/lib/client/gnt_cluster.py @@ -539,6 +539,11 @@ def RunClusterCommand(opts, args): for name in nodes: result = srun.Run(name, constants.SSH_LOGIN_USER, command) + + if opts.failure_only and result.exit_code == constants.EXIT_SUCCESS: + # Do not output anything for successful commands + continue + ToStdout("------------------------------------------------") if opts.show_machine_names: for line in result.output.splitlines(): @@ -1524,7 +1529,7 @@ commands = { "[-n node...] <filename>", "Copies a file to all (or only some) nodes"), "command": ( RunClusterCommand, [ArgCommand(min=1)], - [NODE_LIST_OPT, NODEGROUP_OPT, SHOW_MACHINE_OPT], + [NODE_LIST_OPT, NODEGROUP_OPT, SHOW_MACHINE_OPT, FAILURE_ONLY_OPT], "[-n node...] <command>", "Runs a command on all (or only some) nodes"), "info": ( ShowClusterConfig, ARGS_NONE, [ROMAN_OPT], diff --git a/man/gnt-cluster.rst b/man/gnt-cluster.rst index e4bcc28c2ab6708be53cbbc0f9ddd5af705984ea..b67f904212de2b518bc4ade7308dc56b0a8ca565 100644 --- a/man/gnt-cluster.rst +++ b/man/gnt-cluster.rst @@ -59,7 +59,8 @@ group, e.g.:: # gnt-cluster command -g default date The ``-M`` option can be used to prepend the node name to all output -lines. +lines. The ``--failure-only`` option hides successful commands, making +it easier to see failures. The command is executed serially on the selected nodes. If the master node is present in the list, the command will be executed