Commit d5b031dc authored by Michael Hanselmann's avatar Michael Hanselmann
Browse files

Allow ignoring successful commands in "gnt-cluster command"



In some cases it is useful to ignore the output of and avoid mentioning
successful commands. One would be when looking for a certain string in
a file:

  $ gnt-cluster command egrep -q '^testing$' /etc/...
Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
Reviewed-by: default avatarHelga Velroyen <helgav@google.com>
parent c94f9990
......@@ -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.
......
......@@ -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],
......
......@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment