#!/usr/bin/python import os import shutil import subprocess import tempfile import pystache renderer = pystache.Renderer() template = os.path.join(os.path.dirname(__file__), '..', 'config.json.template') context = { 'LOCAL_IP': os.environ.get('LOCAL_IP', '192.0.2.1'), 'PUBLIC_INTERFACE_IP': os.environ.get('PUBLIC_INTERFACE_IP', '192.0.2.1/24'), 'LOCAL_INTERFACE': os.environ.get('LOCAL_INTERFACE', 'eth1'), 'MASQUERADE_NETWORK': os.environ.get('MASQUERADE_NETWORK', '192.0.2.0/24'), 'DHCP_START': os.environ.get('DHCP_START', '192.0.2.5'), 'DHCP_END': os.environ.get('DHCP_END', '192.0.2.24'), 'NETWORK_CIDR': os.environ.get('NETWORK_CIDR', '192.0.2.0/24'), 'NETWORK_GATEWAY': os.environ.get('NETWORK_GATEWAY', '192.0.2.1'), 'DISCOVERY_INTERFACE': os.environ.get('DISCOVERY_INTERFACE', 'br-ctlplane'), 'DISCOVERY_IPRANGE': os.environ.get('DISCOVERY_IPRANGE', '192.0.2.100,192.0.2.120'), 'DISCOVERY_RUNBENCH': os.environ.get('DISCOVERY_RUNBENCH', '0'), 'UNDERCLOUD_TUSKAR_PASSWORD': os.environ.get('UNDERCLOUD_TUSKAR_PASSWORD', 'unset'), 'UNDERCLOUD_IRONIC_PASSWORD': os.environ.get('UNDERCLOUD_IRONIC_PASSWORD', 'unset'), } with open(template) as f: config_json = renderer.render(f.read(), context) cfn_path = '/var/lib/heat-cfntools/cfn-init-data' if not os.path.exists(os.path.dirname(cfn_path)): os.makedirs(os.path.dirname(cfn_path)) with open(cfn_path, 'w') as f: f.write(config_json) # Make the json pretty again tmpfile = tempfile.mkstemp()[1] outfile = open(tmpfile, 'w') subprocess.check_call(['jq', '.', cfn_path], stdout=outfile) outfile.close() shutil.move(tmpfile, cfn_path) os.chmod(cfn_path, 0644)