Comment 8 for bug 1676989

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to oslo.config (master)

Reviewed: https://review.opendev.org/451947
Committed: https://git.openstack.org/cgit/openstack/oslo.config/commit/?id=18d1617caa5a7380e2298b1e647ef110c9d574be
Submitter: Zuul
Branch: master

commit 18d1617caa5a7380e2298b1e647ef110c9d574be
Author: Dolph Mathews <email address hidden>
Date: Thu Mar 30 18:24:31 2017 +0000

    Assume positional arguments are required

    The 'positional' keyword specifically applies to oslo.config's argparse
    support. Unlike oslo.config, argparse assumes that all positional
    arguments are required by default, and you have to explicitly tell it
    that a positional argument is optional if you'd like to opt into that
    behavior.

    This patch adopts that same behavior for oslo.config. When you define an
    option to be non-positional (oslo.config's default, designed for config
    files), then oslo.config makes that option optional:

    However, when you define an option to be positional, oslo.config assumes
    that the option is primarily going to be used on the CLI and thus sets
    it as required, by default.

    This change in behavior has the side effect of allowing argparse to
    enforce required arguments on the CLI *while* parsing arguments, instead
    of depending on oslo.config to detect the condition *after* argparse has
    been allowed to parse "invalid" arguments. argparse correctly raises a
    SystemExit in this case, and prints the actual command usage and a "hey,
    you forgot this required argument", instead of allowing oslo.config to
    dump a backtrace to the CLI with a context-less error message
    ("context-less" in that no useful CLI usage information is dumped along
    with the crash to help you correct the condition).

    Change-Id: Ifdc6918444fe72f7e1649483c237cce64b4c72d8
    Partial-Bug: 1676989