From 440c1f1321eb06f570207506d212220661bd3a9d Mon Sep 17 00:00:00 2001 From: Josep Puigdemont Date: Fri, 17 Jun 2016 17:28:59 +0200 Subject: opnv-fuel: updated deploy patch set Change-Id: I9442f217d2f840382b40f6eae77ddb9ae2ddbadc Signed-off-by: Josep Puigdemont --- ...ant-Generate-extra-interfaces-config-file.patch | 112 +++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 patches/opnfv-fuel/0005-transplant-Generate-extra-interfaces-config-file.patch (limited to 'patches/opnfv-fuel/0005-transplant-Generate-extra-interfaces-config-file.patch') diff --git a/patches/opnfv-fuel/0005-transplant-Generate-extra-interfaces-config-file.patch b/patches/opnfv-fuel/0005-transplant-Generate-extra-interfaces-config-file.patch new file mode 100644 index 00000000..2c8587a5 --- /dev/null +++ b/patches/opnfv-fuel/0005-transplant-Generate-extra-interfaces-config-file.patch @@ -0,0 +1,112 @@ +From 7dad9f8350e8563942f4e9ffae595bbfe44e606d Mon Sep 17 00:00:00 2001 +From: Josep Puigdemont +Date: Wed, 4 May 2016 17:58:56 +0200 +Subject: [PATCH] transplant: Generate extra interfaces config file + +The DEA override may contain a IFCGF_ section in its 'fuel:' +section, containing the necessary keys to produce a ifcfg- +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: I0457dc9a0d49e46b8ca85cfe7a4435c2b15f5238 +Signed-off-by: Josep Puigdemont +Signed-off-by: Alexandu Avadanii +--- + deploy/transplant_fuel_settings.py | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +diff --git a/deploy/transplant_fuel_settings.py b/deploy/transplant_fuel_settings.py +index e57a4fb..9a65cf6 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' +@@ -35,15 +39,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 + + +@@ -51,11 +85,14 @@ def main(): + dea_file = parse_arguments() + check_file_exists(ASTUTE_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') + + + if __name__ == '__main__': +-- +2.5.5 + -- cgit 1.2.3-korg