From cc6960be6f8f598ba7e81283e69f6da0d1d9b5f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mois=C3=A9s=20Guimar=C3=A3es=20de=20Medeiros?= Date: Thu, 13 Dec 2018 16:57:40 +0100 Subject: [PATCH] Use oslo.config instead of argparse. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changing arg consumption from argparse to oslo.config in order to also provide behavior control using config files. Change-Id: Iec4dab763b973b70c98077cb29708acd9cbbcec4 Signed-off-by: Moisés Guimarães de Medeiros --- oslo_policy/shell.py | 64 +++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/oslo_policy/shell.py b/oslo_policy/shell.py index 3fda8de6..b030fdfe 100644 --- a/oslo_policy/shell.py +++ b/oslo_policy/shell.py @@ -13,12 +13,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argparse import collections import sys from oslo_serialization import jsonutils +from oslo_config import cfg from oslo_policy import policy @@ -83,37 +83,41 @@ def tool(policy_file, access_file, apply_rule, is_admin=False, def main(): - parser = argparse.ArgumentParser(sys.argv[0]) - parser.add_argument( - '--policy', - required=True, - type=argparse.FileType('rb', 0), - help='path to a policy file') - parser.add_argument( - '--access', - required=True, - type=argparse.FileType('rb', 0), - help='path to a file containing OpenStack Identity API' + - ' access info in JSON format') - parser.add_argument( - '--target', - type=argparse.FileType('rb', 0), - help='path to a file containing custom target info in' + - ' JSON format. This will be used to evaluate the policy with.') - parser.add_argument( - '--rule', - help='rule to test') + conf = cfg.ConfigOpts() - parser.add_argument( - '--is_admin', - help='set is_admin=True on the credentials used for the evaluation') + conf.register_cli_opt(cfg.StrOpt( + 'policy', + required=True, + help='path to a policy file')) - args = parser.parse_args() - try: - is_admin = args.is_admin.lower() == "true" - except Exception: - is_admin = False - tool(args.policy, args.access, args.rule, is_admin, args.target) + conf.register_cli_opt(cfg.StrOpt( + 'access', + required=True, + help='path to a file containing OpenStack Identity API ' + 'access info in JSON format')) + + conf.register_cli_opt(cfg.StrOpt( + 'target', + help='path to a file containing custom target info in ' + 'JSON format. This will be used to evaluate the policy with.')) + + conf.register_cli_opt(cfg.StrOpt( + 'rule', + help='rule to test')) + + conf.register_cli_opt(cfg.StrOpt( + 'is_admin', + help='set is_admin=True on the credentials used for the evaluation', + default="")) + + conf() + + policy = open(conf.policy, "rb", 0) + access = open(conf.access, "rb", 0) + target = open(conf.target, "rb", 0) if conf.target else None + is_admin = conf.is_admin.lower() == "true" + + tool(policy, access, conf.rule, is_admin, target) if __name__ == "__main__":