summaryrefslogtreecommitdiff
path: root/tools/net-convert.py
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2018-08-06 16:50:51 +0000
committerServer Team CI Bot <josh.powers+server-team-bot@canonical.com>2018-08-06 16:50:51 +0000
commita6f95c72259f2890e4a9f9f11166310812173c68 (patch)
tree8041e9cf99d8e21dab3c75112ac7d1c041b629bd /tools/net-convert.py
parente218c597c87205b239d5628dce1dc377fb83a0ea (diff)
downloadvyos-cloud-init-a6f95c72259f2890e4a9f9f11166310812173c68.tar.gz
vyos-cloud-init-a6f95c72259f2890e4a9f9f11166310812173c68.zip
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: $ cloud-init devel net-convert Or, if you just have checked out source (and no cli executable):   $ python3 -m cloudinit.cmd.devel.net_convert or   $ python3 -m cloudinit.cmd.main devel net-convert
Diffstat (limited to 'tools/net-convert.py')
-rwxr-xr-xtools/net-convert.py104
1 files changed, 0 insertions, 104 deletions
diff --git a/tools/net-convert.py b/tools/net-convert.py
deleted file mode 100755
index d1a4a646..00000000
--- a/tools/net-convert.py
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/usr/bin/python3
-# This file is part of cloud-init. See LICENSE file for license information.
-
-import argparse
-import json
-import os
-import sys
-import yaml
-
-from cloudinit.sources.helpers import openstack
-
-from cloudinit.net import eni
-from cloudinit import log
-from cloudinit.net import netplan
-from cloudinit.net import network_state
-from cloudinit.net import sysconfig
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument("--network-data", "-p", type=open,
- metavar="PATH", required=True)
- parser.add_argument("--kind", "-k",
- choices=['eni', 'network_data.json', 'yaml'],
- required=True)
- parser.add_argument("-d", "--directory",
- metavar="PATH",
- help="directory to place output in",
- required=True)
- parser.add_argument("-m", "--mac",
- metavar="name,mac",
- action='append',
- help="interface name to mac mapping")
- parser.add_argument("--debug", action='store_true',
- help='enable debug logging to stderr.')
- parser.add_argument("--output-kind", "-ok",
- choices=['eni', 'netplan', 'sysconfig'],
- required=True)
- args = parser.parse_args()
-
- if not args.directory.endswith("/"):
- args.directory += "/"
-
- if not os.path.isdir(args.directory):
- os.makedirs(args.directory)
-
- if args.debug:
- log.setupBasicLogging(level=log.DEBUG)
- else:
- log.setupBasicLogging(level=log.WARN)
- if args.mac:
- known_macs = {}
- for item in args.mac:
- iface_name, iface_mac = item.split(",", 1)
- known_macs[iface_mac] = iface_name
- else:
- known_macs = None
-
- net_data = args.network_data.read()
- if args.kind == "eni":
- pre_ns = eni.convert_eni_data(net_data)
- ns = network_state.parse_net_config_data(pre_ns)
- elif args.kind == "yaml":
- pre_ns = yaml.load(net_data)
- if 'network' in pre_ns:
- pre_ns = pre_ns.get('network')
- if args.debug:
- sys.stderr.write('\n'.join(
- ["Input YAML",
- yaml.dump(pre_ns, default_flow_style=False, indent=4), ""]))
- ns = network_state.parse_net_config_data(pre_ns)
- else:
- pre_ns = openstack.convert_net_json(
- json.loads(net_data), known_macs=known_macs)
- ns = network_state.parse_net_config_data(pre_ns)
-
- if not ns:
- raise RuntimeError("No valid network_state object created from"
- "input data")
-
- if args.debug:
- sys.stderr.write('\n'.join([
- "", "Internal State",
- yaml.dump(ns, default_flow_style=False, indent=4), ""]))
- if args.output_kind == "eni":
- r_cls = eni.Renderer
- elif args.output_kind == "netplan":
- r_cls = netplan.Renderer
- else:
- r_cls = sysconfig.Renderer
-
- r = r_cls()
- sys.stderr.write(''.join([
- "Read input format '%s' from '%s'.\n" % (
- args.kind, args.network_data.name),
- "Wrote output format '%s' to '%s'\n" % (
- args.output_kind, args.directory)]) + "\n")
- r.render_network_state(network_state=ns, target=args.directory)
-
-
-if __name__ == '__main__':
- main()
-
-# vi: ts=4 expandtab