Revision e7b61bb0 lib/cli.py
b/lib/cli.py | ||
---|---|---|
457 | 457 |
return _SplitKeyVal(opt, value) |
458 | 458 |
|
459 | 459 |
|
460 |
def check_bool(option, opt, value): # pylint: disable-msg=W0613 |
|
461 |
"""Custom parser for yes/no options. |
|
462 |
|
|
463 |
This will store the parsed value as either True or False. |
|
464 |
|
|
465 |
""" |
|
466 |
value = value.lower() |
|
467 |
if value == constants.VALUE_FALSE or value == "no": |
|
468 |
return False |
|
469 |
elif value == constants.VALUE_TRUE or value == "yes": |
|
470 |
return True |
|
471 |
else: |
|
472 |
raise errors.ParameterError("Invalid boolean value '%s'" % value) |
|
473 |
|
|
474 |
|
|
460 | 475 |
# completion_suggestion is normally a list. Using numeric values not evaluating |
461 | 476 |
# to False for dynamic completion. |
462 | 477 |
(OPT_COMPL_MANY_NODES, |
... | ... | |
487 | 502 |
"identkeyval", |
488 | 503 |
"keyval", |
489 | 504 |
"unit", |
505 |
"bool", |
|
490 | 506 |
) |
491 | 507 |
TYPE_CHECKER = Option.TYPE_CHECKER.copy() |
492 | 508 |
TYPE_CHECKER["identkeyval"] = check_ident_key_val |
493 | 509 |
TYPE_CHECKER["keyval"] = check_key_val |
494 | 510 |
TYPE_CHECKER["unit"] = check_unit |
511 |
TYPE_CHECKER["bool"] = check_bool |
|
495 | 512 |
|
496 | 513 |
|
497 | 514 |
# optparse.py sets make_option, so we do it for our own option class, too |
498 | 515 |
cli_option = CliOption |
499 | 516 |
|
500 | 517 |
|
501 |
_YESNO = ("yes", "no") |
|
502 | 518 |
_YORNO = "yes|no" |
503 | 519 |
|
504 | 520 |
DEBUG_OPT = cli_option("-d", "--debug", default=0, action="count", |
... | ... | |
759 | 775 |
|
760 | 776 |
|
761 | 777 |
MC_OPT = cli_option("-C", "--master-candidate", dest="master_candidate", |
762 |
choices=_YESNO, default=None, metavar=_YORNO,
|
|
778 |
type="bool", default=None, metavar=_YORNO,
|
|
763 | 779 |
help="Set the master_candidate flag on the node") |
764 | 780 |
|
765 | 781 |
OFFLINE_OPT = cli_option("-O", "--offline", dest="offline", metavar=_YORNO, |
766 |
choices=_YESNO, default=None,
|
|
782 |
type="bool", default=None,
|
|
767 | 783 |
help="Set the offline flag on the node") |
768 | 784 |
|
769 | 785 |
DRAINED_OPT = cli_option("-D", "--drained", dest="drained", metavar=_YORNO, |
770 |
choices=_YESNO, default=None,
|
|
786 |
type="bool", default=None,
|
|
771 | 787 |
help="Set the drained flag on the node") |
772 | 788 |
|
773 | 789 |
ALLOCATABLE_OPT = cli_option("--allocatable", dest="allocatable", |
774 |
choices=_YESNO, default=None, metavar=_YORNO,
|
|
790 |
type="bool", default=None, metavar=_YORNO,
|
|
775 | 791 |
help="Set the allocatable flag on a volume") |
776 | 792 |
|
777 | 793 |
NOLVM_STORAGE_OPT = cli_option("--no-lvm-storage", dest="lvm_storage", |
Also available in: Unified diff