diff options
author | Brett Holman <bholman.devel@gmail.com> | 2022-04-27 10:05:55 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-27 09:05:55 -0600 |
commit | 3bcffacb216d683241cf955e4f7f3e89431c1491 (patch) | |
tree | 4a0ada8fb7146e79d6c0b4aa70e4fa882bad559c /cloudinit/cmd | |
parent | 2f496d60d16ebf7c85ef6afab2b73d449280932d (diff) | |
download | cloud-init-git-3bcffacb216d683241cf955e4f7f3e89431c1491.tar.gz |
Promote cloud-init schema from devel to top level subcommand (#1402)
Diffstat (limited to 'cloudinit/cmd')
-rw-r--r-- | cloudinit/cmd/devel/parser.py | 8 | ||||
-rw-r--r-- | cloudinit/cmd/main.py | 32 |
2 files changed, 23 insertions, 17 deletions
diff --git a/cloudinit/cmd/devel/parser.py b/cloudinit/cmd/devel/parser.py index 76b16c2e..460b94b3 100644 --- a/cloudinit/cmd/devel/parser.py +++ b/cloudinit/cmd/devel/parser.py @@ -6,8 +6,6 @@ import argparse -from cloudinit.config import schema - from . import hotplug_hook, make_mime, net_convert, render @@ -28,12 +26,6 @@ def get_parser(parser=None): hotplug_hook.handle_args, ), ( - "schema", - "Validate cloud-config files for document schema", - schema.get_parser, - schema.handle_schema_args, - ), - ( net_convert.NAME, net_convert.__doc__, net_convert.get_parser, diff --git a/cloudinit/cmd/main.py b/cloudinit/cmd/main.py index c9be41b3..afd0a8d8 100644 --- a/cloudinit/cmd/main.py +++ b/cloudinit/cmd/main.py @@ -836,8 +836,7 @@ def main_features(name, args): def main(sysv_args=None): if not sysv_args: sysv_args = sys.argv - parser = argparse.ArgumentParser(prog=sysv_args[0]) - sysv_args = sysv_args[1:] + parser = argparse.ArgumentParser(prog=sysv_args.pop(0)) # Top level args parser.add_argument( @@ -956,7 +955,9 @@ def main(sysv_args=None): "analyze", help="Devel tool: Analyze cloud-init logs and data" ) - parser_devel = subparsers.add_parser("devel", help="Run development tools") + parser_devel = subparsers.add_parser( + "devel", help="Run development tools." + ) parser_collect_logs = subparsers.add_parser( "collect-logs", help="Collect and tar all cloud-init debug info" @@ -970,19 +971,24 @@ def main(sysv_args=None): "status", help="Report cloud-init status or wait on completion." ) + parser_schema = subparsers.add_parser( + "schema", help="Validate cloud-config files using jsonschema." + ) + if sysv_args: # Only load subparsers if subcommand is specified to avoid load cost - if sysv_args[0] == "analyze": + subcommand = sysv_args[0] + if subcommand == "analyze": from cloudinit.analyze.__main__ import get_parser as analyze_parser # Construct analyze subcommand parser analyze_parser(parser_analyze) - elif sysv_args[0] == "devel": + elif subcommand == "devel": from cloudinit.cmd.devel.parser import get_parser as devel_parser # Construct devel subcommand parser devel_parser(parser_devel) - elif sysv_args[0] == "collect-logs": + elif subcommand == "collect-logs": from cloudinit.cmd.devel.logs import ( get_parser as logs_parser, handle_collect_logs_args, @@ -992,7 +998,7 @@ def main(sysv_args=None): parser_collect_logs.set_defaults( action=("collect-logs", handle_collect_logs_args) ) - elif sysv_args[0] == "clean": + elif subcommand == "clean": from cloudinit.cmd.clean import ( get_parser as clean_parser, handle_clean_args, @@ -1000,7 +1006,7 @@ def main(sysv_args=None): clean_parser(parser_clean) parser_clean.set_defaults(action=("clean", handle_clean_args)) - elif sysv_args[0] == "query": + elif subcommand == "query": from cloudinit.cmd.query import ( get_parser as query_parser, handle_args as handle_query_args, @@ -1008,7 +1014,15 @@ def main(sysv_args=None): query_parser(parser_query) parser_query.set_defaults(action=("render", handle_query_args)) - elif sysv_args[0] == "status": + elif subcommand == "schema": + from cloudinit.config.schema import ( + get_parser as schema_parser, + handle_schema_args, + ) + + schema_parser(parser_schema) + parser_schema.set_defaults(action=("schema", handle_schema_args)) + elif subcommand == "status": from cloudinit.cmd.status import ( get_parser as status_parser, handle_status_args, |