cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #05245
[Merge] ~smoser/cloud-init:feature/devel-expose-net-convert into cloud-init:master
Scott Moser has proposed merging ~smoser/cloud-init:feature/devel-expose-net-convert into cloud-init:master.
Commit message:
tools: Add 'net-convert' subcommand command to 'cloud-init devel'.
Move the tools/net-convert.py to be exposed as part of 'cloud-init devel'
subcommands.
It can now be called like:
$ python3 -m cloudinit.cmd.devel.net_convert
or
$ python3 -m cloudinit.cmd.main devel net-convert
or
$ cloud-init devel net-convert
Requested reviews:
cloud-init commiters (cloud-init-dev)
For more details, see:
https://code.launchpad.net/~smoser/cloud-init/+git/cloud-init/+merge/352027
see commit message
--
Your team cloud-init commiters is requested to review the proposed merge of ~smoser/cloud-init:feature/devel-expose-net-convert into cloud-init:master.
diff --git a/tools/net-convert.py b/cloudinit/cmd/devel/net_convert.py
index d1a4a64..5d109af 100755
--- a/tools/net-convert.py
+++ b/cloudinit/cmd/devel/net_convert.py
@@ -1,6 +1,6 @@
-#!/usr/bin/python3
# This file is part of cloud-init. See LICENSE file for license information.
+"""Debug network config format conversions."""
import argparse
import json
import os
@@ -9,15 +9,23 @@ import yaml
from cloudinit.sources.helpers import openstack
-from cloudinit.net import eni
+from cloudinit.net import eni, netplan, network_state, sysconfig
from cloudinit import log
-from cloudinit.net import netplan
-from cloudinit.net import network_state
-from cloudinit.net import sysconfig
+NAME = 'net-convert'
-def main():
- parser = argparse.ArgumentParser()
+
+def get_parser(parser=None):
+ """Build or extend and arg parser for collect-logs utility.
+
+ @param parser: Optional existing ArgumentParser instance representing the
+ collect-logs subcommand which will be extended to support the args of
+ this utility.
+
+ @returns: ArgumentParser with proper argument configuration.
+ """
+ if not parser:
+ parser = argparse.ArgumentParser(prog=NAME, description=__doc__)
parser.add_argument("--network-data", "-p", type=open,
metavar="PATH", required=True)
parser.add_argument("--kind", "-k",
@@ -36,8 +44,10 @@ def main():
parser.add_argument("--output-kind", "-ok",
choices=['eni', 'netplan', 'sysconfig'],
required=True)
- args = parser.parse_args()
+ return parser
+
+def handle_args(name, args):
if not args.directory.endswith("/"):
args.directory += "/"
@@ -99,6 +109,8 @@ def main():
if __name__ == '__main__':
- main()
+ args = get_parser().parse_args()
+ handle_args(NAME, args)
+
# vi: ts=4 expandtab
diff --git a/cloudinit/cmd/devel/parser.py b/cloudinit/cmd/devel/parser.py
index acacc4e..40a4b01 100644
--- a/cloudinit/cmd/devel/parser.py
+++ b/cloudinit/cmd/devel/parser.py
@@ -5,8 +5,9 @@
"""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)
+from cloudinit.config import schema
+
+from . import net_convert
def get_parser(parser=None):
@@ -17,10 +18,15 @@ def get_parser(parser=None):
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))
+ subcmds = [
+ ('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, net_convert.handle_args)
+ ]
+ for (subcmd, helpmsg, get_parser, handler) in subcmds:
+ parser = subparsers.add_parser(subcmd, help=helpmsg)
+ get_parser(parser)
+ parser.set_defaults(action=(subcmd, handler))
return parser
References