diff options
Diffstat (limited to 'cloudinit/cmd')
-rw-r--r-- | cloudinit/cmd/devel/__init__.py | 0 | ||||
-rw-r--r-- | cloudinit/cmd/devel/parser.py | 26 | ||||
-rw-r--r-- | cloudinit/cmd/main.py | 21 |
3 files changed, 40 insertions, 7 deletions
diff --git a/cloudinit/cmd/devel/__init__.py b/cloudinit/cmd/devel/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/cloudinit/cmd/devel/__init__.py diff --git a/cloudinit/cmd/devel/parser.py b/cloudinit/cmd/devel/parser.py new file mode 100644 index 00000000..acacc4ed --- /dev/null +++ b/cloudinit/cmd/devel/parser.py @@ -0,0 +1,26 @@ +# Copyright (C) 2017 Canonical Ltd. +# +# This file is part of cloud-init. See LICENSE file for license information. + +"""Define 'devel' subcommand argument parsers to include in cloud-init cmd.""" + +import argparse +from cloudinit.config.schema import ( + get_parser as schema_parser, handle_schema_args) + + +def get_parser(parser=None): + if not parser: + parser = argparse.ArgumentParser( + prog='cloudinit-devel', + description='Run development cloud-init tools') + subparsers = parser.add_subparsers(title='Subcommands', dest='subcommand') + subparsers.required = True + + parser_schema = subparsers.add_parser( + 'schema', help='Validate cloud-config files or document schema') + # Construct schema subcommand parser + schema_parser(parser_schema) + parser_schema.set_defaults(action=('schema', handle_schema_args)) + + return parser diff --git a/cloudinit/cmd/main.py b/cloudinit/cmd/main.py index 9c0ac864..5b467979 100644 --- a/cloudinit/cmd/main.py +++ b/cloudinit/cmd/main.py @@ -705,7 +705,6 @@ def main(sysv_args=None): subparsers.required = True # Each action and its sub-options (if any) - parser_init = subparsers.add_parser('init', help=('initializes cloud-init and' ' performs initial modules')) @@ -762,12 +761,20 @@ def main(sysv_args=None): parser_analyze = subparsers.add_parser( 'analyze', help='Devel tool: Analyze cloud-init logs and data') - if sysv_args and sysv_args[0] == 'analyze': - # Only load this parser if analyze is specified to avoid file load cost - # FIXME put this under 'devel' subcommand (coming in next branch) - from cloudinit.analyze.__main__ import get_parser as analyze_parser - # Construct analyze subcommand parser - analyze_parser(parser_analyze) + + parser_devel = subparsers.add_parser( + 'devel', help='Run development tools') + + if sysv_args: + # Only load subparsers if subcommand is specified to avoid load cost + if sysv_args[0] == 'analyze': + from cloudinit.analyze.__main__ import get_parser as analyze_parser + # Construct analyze subcommand parser + analyze_parser(parser_analyze) + if sysv_args[0] == 'devel': + from cloudinit.cmd.devel.parser import get_parser as devel_parser + # Construct devel subcommand parser + devel_parser(parser_devel) args = parser.parse_args(args=sysv_args) |