summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2016-05-04 17:58:56 +0200
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2016-09-01 14:12:56 +0000
commit9abfd0c63a26d9ee3230ecc0c1153533034f04d4 (patch)
treee7ff178532b0d49b71b6cc60e250e3f0697ae77b
parent00c404ef7066e31adfc409a15d9e0e118e0b491a (diff)
transplant: Generate extra interfaces config file
Original work by Josep, only signed by Alex for upstreaming. The DEA override may contain a IFCGF_<interface> section in its 'fuel:' section, containing the necessary keys to produce a ifcfg-<interface> file, like in this example: fuel: IFCFG_ETH1: device: eth1 ipaddress: 10.0.1.10 netmask: 255.255.255.0 gateway: 10.0.1.254 FIXME: In order for Network Manager to use the newly added interfaces for outgoing traffic and honor their GATEWAY setting (e.g. if we just added one public interface), the default route on admin iface (most of the time called eth0) should be disabled. For now, we assume the admin interface is always "eth0". Change-Id: I96e3ac5046dd59ed10c43099dd76a6418806a1f3 Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com> Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> (cherry picked from commit 56d816920bfefe7d41d9c35cb8fb52e36295ee07)
-rw-r--r--deploy/transplant_fuel_settings.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/deploy/transplant_fuel_settings.py b/deploy/transplant_fuel_settings.py
index 318c633aa..993b0dcce 100644
--- a/deploy/transplant_fuel_settings.py
+++ b/deploy/transplant_fuel_settings.py
@@ -11,10 +11,14 @@
import sys
import io
import yaml
+import re
+import os
from dea import DeploymentEnvironmentAdapter
from common import (
check_file_exists,
+ exec_cmd,
+ log,
)
ASTUTE_YAML = '/etc/fuel/astute.yaml'
@@ -36,15 +40,45 @@ def parse_arguments():
check_file_exists(dea_file)
return dea_file
+def write_ifcfg_file(key, fuel_conf):
+ config = ('BOOTPROTO=none\n'
+ 'ONBOOT=yes\n'
+ 'TYPE=Ethernet\n'
+ 'NM_CONTROLLED=yes\n')
+ for skey in ('ipaddress', 'device', 'netmask', 'gateway'):
+ if not fuel_conf[key].get(skey):
+ log('Warning: missing key %s for %s' % (skey, key))
+ config += '%s=\n' % skey.upper()
+ elif skey == 'ipaddress':
+ config += 'IPADDR=%s\n' % fuel_conf[key][skey]
+ else:
+ config += '%s=%s\n' % (skey.upper(), fuel_conf[key][skey])
+
+ fname = os.path.join('/etc/sysconfig/network-scripts/',
+ key.lower().replace('_','-'))
+ with open(fname, 'wc') as f:
+ f.write(config)
def transplant(dea, astute):
fuel_conf = dea.get_fuel_config()
+ require_network_restart = False
for key in fuel_conf.iterkeys():
if key == 'ADMIN_NETWORK':
for skey in fuel_conf[key].iterkeys():
astute[key][skey] = fuel_conf[key][skey]
+ elif re.match('^IFCFG', key):
+ log('Adding interface configuration for: %s' % key.lower())
+ require_network_restart = True
+ write_ifcfg_file(key, fuel_conf)
+ if astute.has_key(key):
+ astute.pop(key, None)
else:
astute[key] = fuel_conf[key]
+ if require_network_restart:
+ admin_ifcfg = '/etc/sysconfig/network-scripts/ifcfg-eth0'
+ exec_cmd('echo "DEFROUTE=no" >> %s' % admin_ifcfg)
+ log('At least one interface was reconfigured, restart network manager')
+ exec_cmd('systemctl restart network')
return astute
@@ -62,11 +96,14 @@ def main():
check_file_exists(ASTUTE_YAML)
check_file_exists(FUEL_BOOTSTRAP_CLI_YAML)
dea = DeploymentEnvironmentAdapter(dea_file)
+ log('Reading astute file %s' % ASTUTE_YAML)
with io.open(ASTUTE_YAML) as stream:
astute = yaml.load(stream)
+ log('Initiating transplant')
transplant(dea, astute)
with io.open(ASTUTE_YAML, 'w') as stream:
yaml.dump(astute, stream, default_flow_style=False)
+ log('Transplant done')
# Update bootstrap config yaml with info from DEA/astute.yaml
with io.open(FUEL_BOOTSTRAP_CLI_YAML) as stream:
fuel_bootstrap_cli = yaml.load(stream)