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 --- ...reap.py-Dump-extra-interfaces-information.patch | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch (limited to 'patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch') 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 +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_ 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 + +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 +Signed-off-by: Josep Puigdemont +--- + 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_ ++ 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 + -- cgit 1.2.3-korg