cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #00959
[Merge] lp:~harlowja/cloud-init/cloud-init-render-tool into lp:cloud-init
Joshua Harlow has proposed merging lp:~harlowja/cloud-init/cloud-init-render-tool into lp:cloud-init.
Requested reviews:
cloud init development team (cloud-init-dev)
For more details, see:
https://code.launchpad.net/~harlowja/cloud-init/cloud-init-render-tool/+merge/297816
--
Your team cloud init development team is requested to review the proposed merge of lp:~harlowja/cloud-init/cloud-init-render-tool into lp:cloud-init.
=== modified file 'setup.py'
--- setup.py 2016-06-14 21:56:51 +0000
+++ setup.py 2016-06-18 00:17:45 +0000
@@ -211,7 +211,7 @@
cmdclass=cmdclass,
entry_points={
'console_scripts': [
- 'cloud-init = cloudinit.cmd.main:main'
+ 'cloud-init = cloudinit.cmd.main:main',
],
}
)
=== added file 'tools/net-convert.py'
--- tools/net-convert.py 1970-01-01 00:00:00 +0000
+++ tools/net-convert.py 2016-06-18 00:17:45 +0000
@@ -0,0 +1,89 @@
+#!/usr/bin/python
+# vi: ts=4 expandtab
+#
+# Copyright (C) 2012 Canonical Ltd.
+# Copyright (C) 2012 Hewlett-Packard Development Company, L.P.
+# Copyright (C) 2012 Yahoo! Inc.
+#
+# Author: Scott Moser <scott.moser@xxxxxxxxxxxxx>
+# Author: Juerg Haefliger <juerg.haefliger@xxxxxx>
+# Author: Joshua Harlow <harlowja@xxxxxxxxxxxxx>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3, as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import argparse
+import json
+import os
+
+from cloudinit.sources.helpers import openstack
+
+from cloudinit.net import eni
+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'],
+ 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("--output-kind", "-ok",
+ choices=['eni', 'sysconfig'],
+ required=True)
+ args = parser.parse_args()
+
+ if not os.path.isdir(args.directory):
+ os.makedirs(args.directory)
+
+ 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)
+ 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.output_kind == "eni":
+ r_cls = eni.Renderer
+ else:
+ r_cls = sysconfig.Renderer
+
+ r = r_cls()
+ r.render_network_state(args.directory, ns)
+
+
+if __name__ == '__main__':
+ main()
Follow ups