Commit 03298ebe authored by Michael Hanselmann's avatar Michael Hanselmann
Browse files

cli: Use ToStdout/ToStderr instead of print

Signed-off-by: default avatarMichael Hanselmann <>
Reviewed-by: default avatarIustin Pop <>
parent 723f4565
......@@ -41,6 +41,7 @@ from ganeti import rpc
from optparse import (OptionParser, make_option, TitledHelpFormatter,
Option, OptionValueError)
__all__ = ["DEBUG_OPT", "NOHDR_OPT", "SEP_OPT", "GenericMain",
"SubmitOpCode", "GetClient",
"cli_option", "ikv_option", "keyval_option",
......@@ -57,6 +58,7 @@ __all__ = ["DEBUG_OPT", "NOHDR_OPT", "SEP_OPT", "GenericMain",
NO_PREFIX = "no_"
def _ExtractTagsObject(opts, args):
"""Extract the tag type object.
......@@ -122,7 +124,7 @@ def ListTags(opts, args):
result = list(result)
for tag in result:
print tag
def AddTags(opts, args):
......@@ -356,7 +358,7 @@ def _ParseArgs(argv, commands, aliases):
binary = argv[0].split("/")[-1]
if len(argv) > 1 and argv[1] == "--version":
print "%s (ganeti) %s" % (binary, constants.RELEASE_VERSION)
ToStdout("%s (ganeti) %s", binary, constants.RELEASE_VERSION)
# Quit right away. That way we don't have to care about this special
# argument. does it the same.
......@@ -366,22 +368,27 @@ def _ParseArgs(argv, commands, aliases):
# let's do a nice thing
sortedcmds = commands.keys()
print ("Usage: %(bin)s {command} [options...] [argument...]"
"\n%(bin)s <command> --help to see details, or"
" man %(bin)s\n" % {"bin": binary})
ToStdout("Usage: %s {command} [options...] [argument...]", binary)
ToStdout("%s <command> --help to see details, or man %s", binary, binary)
# compute the max line length for cmd + usage
mlen = max([len(" %s" % cmd) for cmd in commands])
mlen = min(60, mlen) # should not get here...
# and format a nice command list
print "Commands:"
for cmd in sortedcmds:
cmdstr = " %s" % (cmd,)
help_text = commands[cmd][4]
help_lines = textwrap.wrap(help_text, 79-3-mlen)
print "%-*s - %s" % (mlen, cmdstr, help_lines.pop(0))
help_lines = textwrap.wrap(help_text, 79 - 3 - mlen)
ToStdout("%-*s - %s", mlen, cmdstr, help_lines.pop(0))
for line in help_lines:
print "%-*s %s" % (mlen, "", line)
ToStdout("%-*s %s", mlen, "", line)
return None, None, None
# get command, unalias it, and look it up in commands
......@@ -406,15 +413,13 @@ def _ParseArgs(argv, commands, aliases):
options, args = parser.parse_args()
if nargs is None:
if len(args) != 0:
print >> sys.stderr, ("Error: Command %s expects no arguments" % cmd)
ToStderr("Error: Command %s expects no arguments", cmd)
return None, None, None
elif nargs < 0 and len(args) != -nargs:
print >> sys.stderr, ("Error: Command %s expects %d argument(s)" %
(cmd, -nargs))
ToStderr("Error: Command %s expects %d argument(s)", cmd, -nargs)
return None, None, None
elif nargs >= 0 and len(args) < nargs:
print >> sys.stderr, ("Error: Command %s expects at least %d argument(s)" %
(cmd, nargs))
ToStderr("Error: Command %s expects at least %d argument(s)", cmd, nargs)
return None, None, None
return func, options, args
......@@ -560,7 +565,7 @@ def PollJob(job_id, cl=None, feedback_fn=None):
encoded = utils.SafeEncode(message)
print "%s %s" % (time.ctime(utils.MergeTime(timestamp)), encoded)
ToStdout("%s %s", time.ctime(utils.MergeTime(timestamp)), encoded)
prev_logmsg_serial = max(prev_logmsg_serial, serial)
# TODO: Handle canceled and archived jobs
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