Option, OptionValueError)
-__all__ = ["DEBUG_OPT", "NOHDR_OPT", "SEP_OPT", "GenericMain",
- "SubmitOpCode", "GetClient",
- "cli_option",
- "GenerateTable", "AskUser",
- "USEUNITS_OPT", "FIELDS_OPT", "FORCE_OPT", "SUBMIT_OPT",
- "ListTags", "AddTags", "RemoveTags", "TAG_SRC_OPT",
- "FormatError", "SplitNodeOption", "SubmitOrSend",
- "JobSubmittedException", "FormatTimestamp", "ParseTimespec",
- "ToStderr", "ToStdout", "UsesRPC",
- "GetOnlineNodes", "JobExecutor", "SYNC_OPT", "CONFIRM_OPT",
- "ArgJobId", "ArgSuggest", "ArgUnknown", "ArgFile", "ArgCommand",
- "ArgInstance", "ArgNode", "ArgChoice", "ArgHost",
- "ARGS_NONE", "ARGS_ONE_INSTANCE", "ARGS_ONE_NODE",
- "ARGS_MANY_INSTANCES", "ARGS_MANY_NODES",
- ]
+__all__ = [
+ # Command line options
+ "CONFIRM_OPT",
+ "DEBUG_OPT",
+ "FIELDS_OPT",
+ "FORCE_OPT",
+ "NOHDR_OPT",
+ "SEP_OPT",
+ "SUBMIT_OPT",
+ "SYNC_OPT",
+ "TAG_SRC_OPT",
+ "USEUNITS_OPT",
+ "VERBOSE_OPT",
+ # Generic functions for CLI programs
+ "GenericMain",
+ "GetClient",
+ "GetOnlineNodes",
+ "JobExecutor",
+ "JobSubmittedException",
+ "ParseTimespec",
+ "SubmitOpCode",
+ "SubmitOrSend",
+ "UsesRPC",
+ # Formatting functions
+ "ToStderr", "ToStdout",
+ "FormatError",
+ "GenerateTable",
+ "AskUser",
+ "FormatTimestamp",
+ # Tags functions
+ "ListTags",
+ "AddTags",
+ "RemoveTags",
+ # command line options support infrastructure
+ "ARGS_MANY_INSTANCES",
+ "ARGS_MANY_NODES",
+ "ARGS_NONE",
+ "ARGS_ONE_INSTANCE",
+ "ARGS_ONE_NODE",
+ "ArgChoice",
+ "ArgCommand",
+ "ArgFile",
+ "ArgHost",
+ "ArgInstance",
+ "ArgJobId",
+ "ArgNode",
+ "ArgSuggest",
+ "ArgUnknown",
+ "OPT_COMPL_INST_ADD_NODES",
+ "OPT_COMPL_MANY_NODES",
+ "OPT_COMPL_ONE_IALLOCATOR",
+ "OPT_COMPL_ONE_INSTANCE",
+ "OPT_COMPL_ONE_NODE",
+ "OPT_COMPL_ONE_OS",
+ "cli_option",
+ "SplitNodeOption",
+ ]
NO_PREFIX = "no_"
UN_PREFIX = "-"
class _Argument:
- def __init__(self, min=0, max=None, suggest=None):
+ def __init__(self, min=0, max=None):
self.min = min
self.max = max
ARGS_ONE_NODE = [ArgNode(min=1, max=1)]
+
def _ExtractTagsObject(opts, args):
"""Extract the tag type object.
return _SplitKeyVal(opt, value)
+# completion_suggestion is normally a list. Using numeric values not evaluating
+# to False for dynamic completion.
+(OPT_COMPL_MANY_NODES,
+ OPT_COMPL_ONE_NODE,
+ OPT_COMPL_ONE_INSTANCE,
+ OPT_COMPL_ONE_OS,
+ OPT_COMPL_ONE_IALLOCATOR,
+ OPT_COMPL_INST_ADD_NODES) = range(100, 106)
+
+OPT_COMPL_ALL = frozenset([
+ OPT_COMPL_MANY_NODES,
+ OPT_COMPL_ONE_NODE,
+ OPT_COMPL_ONE_INSTANCE,
+ OPT_COMPL_ONE_OS,
+ OPT_COMPL_ONE_IALLOCATOR,
+ OPT_COMPL_INST_ADD_NODES,
+ ])
+
+
class CliOption(Option):
"""Custom option class for optparse.
" check steps and verify it it could be"
" executed"))
+VERBOSE_OPT = cli_option("-v", "--verbose", default=False,
+ action="store_true",
+ help="Increase the verbosity of the operation")
+
def _ParseArgs(argv, commands, aliases):
"""Parser for the command line arguments.
if status == constants.OP_STATUS_SUCCESS:
has_ok = True
elif status == constants.OP_STATUS_ERROR:
+ errors.MaybeRaise(msg)
if has_ok:
raise errors.OpExecError("partial failure (opcode %d): %s" %
(idx, msg))