aboutsummaryrefslogtreecommitdiffstats
path: root/patches/opnfv-fuel/0019-transplant-Generate-extra-interfaces-config-file.patch
diff options
context:
space:
mode:
authorJosep Puigdemont <josep.puigdemont@enea.com>2016-05-08 13:04:07 +0200
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2016-05-08 17:34:50 +0000
commita31faaebf959dca2793edd984f6776ae5c272f4f (patch)
treed09bf3d730b109339363c326dc96dfd187b037f9 /patches/opnfv-fuel/0019-transplant-Generate-extra-interfaces-config-file.patch
parent1158f729444aa16313e263b468e92555f8eb7eb4 (diff)
ARMband patches for the fuel@opnfv deploy scripts
These are a collection of patches that adapt the current Fuel deploy scripts for mainly two purposes: - Make it possible to create a Fuel VM on a remote libvirt server. We use the LIBVIRT_DEFAULT_URI environment variable to detect that. Local deploys are possible by setting this variable to 'quemu:///system', or leaving it empty. See: https://libvirt.org/remote.html for more details. - Make it possible to add additional network interfaces. For this we allow the user to pass the "-b bridge" paramter several times, and creating a new virtual NIC for each of them, in the same order they were given. This required a bit of refactoring of the code. None of the changes above should break backwards compatibility, except when indicated in the commit (search for CHANGE in the log) In addition there are some updates to the code that were deemed necessary, like the ability to retry when executing shell commands instead of directly failing, and a simplification of the DHA IPMI adapter. Change-Id: I8a0cd5b8672383decd861309328137971eaed14b Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com> (cherry picked from commit bedeb36ac9ad42fb1ead2449ed8e75f0171808a2)
Diffstat (limited to 'patches/opnfv-fuel/0019-transplant-Generate-extra-interfaces-config-file.patch')
-rw-r--r--patches/opnfv-fuel/0019-transplant-Generate-extra-interfaces-config-file.patch107
1 files changed, 107 insertions, 0 deletions
diff --git a/patches/opnfv-fuel/0019-transplant-Generate-extra-interfaces-config-file.patch b/patches/opnfv-fuel/0019-transplant-Generate-extra-interfaces-config-file.patch
new file mode 100644
index 00000000..b6a351e4
--- /dev/null
+++ b/patches/opnfv-fuel/0019-transplant-Generate-extra-interfaces-config-file.patch
@@ -0,0 +1,107 @@
+From: Josep Puigdemont <josep.puigdemont@enea.com>
+Date: Wed, 4 May 2016 17:58:56 +0200
+Subject: [PATCH] transplant: Generate extra interfaces config file
+
+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".
+
+Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com>
+Signed-off-by: Alexandu Avadanii <alexandru.avadanii@enea.com>
+---
+ 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__':