Upstream: extra interfaces cfg 33/20033/1
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Wed, 31 Aug 2016 15:07:29 +0000 (17:07 +0200)
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Wed, 31 Aug 2016 15:11:11 +0000 (17:11 +0200)
Change-Id: Ibd522813a40a0b1c385c47e65f77b1a13c860269
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
patches/opnfv-fuel/0005-transplant-Generate-extra-interfaces-config-file.patch [deleted file]
patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch [deleted file]

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
deleted file mode 100644 (file)
index 76c2716..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-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".
-
-Change-Id: I0457dc9a0d49e46b8ca85cfe7a4435c2b15f5238
-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():
-     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)
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
deleted file mode 100644 (file)
index 9ed79cc..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-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,40 @@ 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:
-+                    if line.startswith('#'):
-+                        continue
-+                    (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
-