summaryrefslogtreecommitdiffstats
path: root/patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch
diff options
context:
space:
mode:
authorJosep Puigdemont <josep.puigdemont@enea.com>2016-06-17 17:28:59 +0200
committerJosep Puigdemont <josep.puigdemont@enea.com>2016-06-17 17:28:59 +0200
commit440c1f1321eb06f570207506d212220661bd3a9d (patch)
treed054e797dad10a042e63b7cf618761392449146c /patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch
parentc1b2d0f84ce5b685185fa34d6c007d31e9ade3bb (diff)
opnv-fuel: updated deploy patch set
Change-Id: I9442f217d2f840382b40f6eae77ddb9ae2ddbadc Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com>
Diffstat (limited to 'patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch')
-rw-r--r--patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch95
1 files changed, 95 insertions, 0 deletions
diff --git a/patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch b/patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch
new file mode 100644
index 00000000..7cb759e1
--- /dev/null
+++ b/patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch
@@ -0,0 +1,95 @@
+From e8232eca62d67c2bac1d34f5b2adfeba1a580634 Mon Sep 17 00:00:00 2001
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Wed, 4 May 2016 18:31:09 +0200
+Subject: [PATCH] deploy/reap.py: Dump extra interfaces information.
+
+Since on AArch64, Ubuntu local mirror lacks arm64 packages (see [1]),
+Fuel master requires internet connectivity during deploy, and hence
+a way to setup such a public (extra) interface automatically.
+
+Previous commit "transplant: Generate extra interfaces config file"
+introduced support for passing this information via DEA (override),
+which may define 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
+
+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) is disabled when extra interfaces are present.
+
+FIXME: Only supports lowercase interface names, but so does Fuel,
+see related bug report [2].
+
+[1] https://jira.opnfv.org/browse/ARMBAND-35
+[2] https://jira.opnfv.org/browse/FUEL-136
+
+Change-Id: I6f0a759c65a435ec8bd883a04c8d1adca109cc13
+Signed-off-by: Alexandu Avadanii <alexandru.avadanii@enea.com>
+Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com>
+---
+ deploy/reap.py | 34 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 34 insertions(+)
+
+diff --git a/deploy/reap.py b/deploy/reap.py
+index ed5bc99..9f14e35 100644
+--- a/deploy/reap.py
++++ b/deploy/reap.py
+@@ -15,6 +15,8 @@ import yaml
+ import glob
+ import shutil
+ import tempfile
++import re
++import netaddr
+
+ from common import (
+ N,
+@@ -248,6 +250,38 @@ class Reap(object):
+ if key not in ['ipaddress', 'netmask',
+ 'dhcp_pool_start', 'dhcp_pool_end', 'ssh_network']:
+ del fuel['ADMIN_NETWORK'][key]
++
++ ## FIXME(armband): Factor in support for adding public/other interfaces.
++ ## TODO: Following block expects interface name(s) to be lowercase only
++ interfaces_list = exec_cmd('ip -o -4 a | grep -e "e[nt][hopsx].*"')
++ for interface in re.split('\n', interfaces_list):
++ # Sample output line from above cmd:
++ # 3: eth1 inet 10.0.2.10/24 scope global eth1 valid_lft forever ...
++ ifcfg = re.split(r'\s+', interface)
++ ifcfg_name = ifcfg[1]
++ ifcfg_ipaddr = ifcfg[3]
++
++ # Filter out admin interface (device name is not known, match IP)
++ current_network = netaddr.IPNetwork(ifcfg_ipaddr)
++ if str(current_network.ip) == fuel['ADMIN_NETWORK']['ipaddress']:
++ continue
++
++ # Read ifcfg-* network interface config file, write IFCFG_<IFNAME>
++ ifcfg_sec = 'IFCFG_%s' % ifcfg_name.upper()
++ fuel[ifcfg_sec] = {}
++ ifcfg_data = {}
++ ifcfg_f = ('/etc/sysconfig/network-scripts/ifcfg-%s' % ifcfg_name)
++ with open(ifcfg_f) as f:
++ for line in f:
++ (key, val) = line.split('=')
++ ifcfg_data[key.lower()] = val.rstrip()
++
++ # Keep only needed info (e.g. filter-out type=Ethernet).
++ fuel[ifcfg_sec]['ipaddress'] = ifcfg_data['ipaddr']
++ fuel[ifcfg_sec]['device'] = ifcfg_data['device']
++ fuel[ifcfg_sec]['netmask'] = str(current_network.netmask)
++ fuel[ifcfg_sec]['gateway'] = ifcfg_data['gateway']
++
+ self.write_yaml(self.dea_file, {'fuel': fuel})
+
+ def reap_network_settings(self):
+--
+2.5.5
+