Enable nosdn-fdio scenarios for Fraser release 53/54053/8
authorFeng Pan <fpan@redhat.com>
Thu, 15 Mar 2018 23:44:39 +0000 (19:44 -0400)
committerFeng Pan <fpan@redhat.com>
Mon, 9 Apr 2018 21:34:23 +0000 (21:34 +0000)
- Update neutron NSDriver patch
- Update os-net-config to fix config errors for vpp uio-driver
- Update puppet-tripleo to add configuration of physnets and type_driver
  in vpp agent
- Update THT to change VPP environment file for vpp-agent, and add common.yaml
  for vpp interface mapping
- Update VPP and networking-vpp version to 18.01
- Fix networking-vpp rpm build to enable proper uninstall.
- Update networking settings file to use ovs_bridge as default external interface type

JIRA: APEX-578
JIRA: APEX-568
JIRA: APEX-576
JIRA: APEX-577

apex-os-net-config: I915d5455acb8d496438b9c9e851639d3a43e6fa9
apex-puppet-tripleo: I472879b8f67e64b571638a0385943597a9120e6c
apex-tripleo-heat-templates: I5dfaf85d67fb038109edaf5c5d8a3e901b9148f4

Change-Id: I369bee232bfafef260d2ef19ac32614fdc487271
Signed-off-by: Feng Pan <fpan@redhat.com>
apex/overcloud/config.py
build/nics-template.yaml.jinja2
build/overcloud-full.sh
build/patches/neutron-patch-NSDriver.patch
build/patches/puppet-neutron-vpp-ml2-type_drivers-setting.patch
build/rpm_specs/networking-vpp.spec
build/variables.sh
config/network/network_settings.yaml

index b0cbb18..e8d8fbb 100644 (file)
@@ -52,6 +52,9 @@ def create_nic_template(network_settings, deploy_settings, role, template_dir,
             if ds.get('dvr') is True:
                 nets['admin']['nic_mapping'][role]['phys_type'] = \
                     'linux_bridge'
+        else:
+            nets['external'][0]['nic_mapping'][role]['phys_type'] = \
+                'linux_bridge'
     elif ds['dataplane'] == 'ovs_dpdk':
         ovs_dpdk_br = 'br-phy'
     if (ds.get('performance', {}).get(role.title(), {}).get('vpp', {})
index 1608329..959a392 100644 (file)
@@ -232,7 +232,7 @@ resources:
                 {%- if ovs_dpdk_bridge == 'br-phy' and role == 'compute' %}
                 type: ovs_user_bridge
                 {%- else %}
-                type: ovs_bridge
+                type: {{ nets['external'][0]['nic_mapping'][role]['phys_type'] }}
                 {%- endif %}
                 name: br-ex
                 use_dhcp: false
index a4006c4..f7d55e5 100755 (executable)
@@ -67,10 +67,10 @@ LIBGUESTFS_BACKEND=direct $VIRT_CUSTOMIZE \
     --upload ${BUILD_ROOT}/patches/neutron_openstackclient_dps.patch:/usr/lib/python2.7/site-packages/ \
     --upload ${BUILD_ROOT}/patches/puppet-neutron-add-sfc.patch:/usr/share/openstack-puppet/modules/neutron/ \
     --upload ${BUILD_ROOT}/patches/congress-parallel-execution.patch:/usr/lib/python2.7/site-packages/ \
+    --upload ${BUILD_ROOT}/patches/puppet-neutron-vpp-ml2-type_drivers-setting.patch:/usr/share/openstack-puppet/modules/neutron/ \
+    --run-command "cd /usr/share/openstack-puppet/modules/neutron && patch -p1 < puppet-neutron-vpp-ml2-type_drivers-setting.patch" \
     --install openstack-utils \
     -a overcloud-full_build.qcow2
-#    --upload ${BUILD_ROOT}/patches/puppet-neutron-vpp-ml2-type_drivers-setting.patch:/usr/share/openstack-puppet/modules/neutron/ \
-#    --run-command "cd /usr/share/openstack-puppet/modules/neutron && patch -p1 < puppet-neutron-vpp-ml2-type_drivers-setting.patch" \
 #    --upload ${BUILD_ROOT}/patches/puppet-neutron-add-external_network_bridge-option.patch:/usr/share/openstack-puppet/modules/neutron/ \
 #    --run-command "cd /usr/share/openstack-puppet/modules/neutron && patch -p1 < puppet-neutron-add-external_network_bridge-option.patch" \
 
index f01d031..84b4fb0 100644 (file)
@@ -1,6 +1,6 @@
-From d51e6ba77c3f40c7c04c97b1de06bf9344c95929 Mon Sep 17 00:00:00 2001
+From ea53f407637d7ed8b5447fc261b1577d4795744a Mon Sep 17 00:00:00 2001
 From: Feng Pan <fpan@redhat.com>
-Date: Thu, 20 Jul 2017 16:12:45 -0400
+Date: Sun, 5 Feb 2017 21:34:19 -0500
 Subject: [PATCH] Add NSDriver
 
 ---
@@ -10,7 +10,7 @@ Subject: [PATCH] Add NSDriver
  3 files changed, 86 insertions(+), 8 deletions(-)
 
 diff --git a/neutron/agent/l3/namespaces.py b/neutron/agent/l3/namespaces.py
-index f65c706..e9fc4b7 100644
+index 71e8cbcf35..7152cd94ff 100644
 --- a/neutron/agent/l3/namespaces.py
 +++ b/neutron/agent/l3/namespaces.py
 @@ -18,6 +18,7 @@ import functools
@@ -18,10 +18,10 @@ index f65c706..e9fc4b7 100644
  from oslo_utils import excutils
  
 +from neutron.agent.linux.interface import OVSInterfaceDriver
- from neutron._i18n import _LE, _LW
  from neutron.agent.linux import ip_lib
  
-@@ -110,8 +111,9 @@ class Namespace(object):
+ LOG = logging.getLogger(__name__)
+@@ -119,8 +120,9 @@ class Namespace(object):
  
  class RouterNamespace(Namespace):
  
@@ -32,7 +32,7 @@ index f65c706..e9fc4b7 100644
          name = self._get_ns_name(router_id)
          super(RouterNamespace, self).__init__(
              name, agent_conf, driver, use_ipv6)
-@@ -132,7 +134,7 @@ class RouterNamespace(Namespace):
+@@ -140,7 +142,7 @@ class RouterNamespace(Namespace):
              elif d.name.startswith(ROUTER_2_FIP_DEV_PREFIX):
                  ns_ip.del_veth(d.name)
              elif d.name.startswith(EXTERNAL_DEV_PREFIX):
@@ -42,10 +42,10 @@ index f65c706..e9fc4b7 100644
                      bridge=self.agent_conf.external_network_bridge,
                      namespace=self.name,
 diff --git a/neutron/agent/l3/router_info.py b/neutron/agent/l3/router_info.py
-index 46db6a5..6775882 100644
+index f578a9e5e2..cadc0371d7 100644
 --- a/neutron/agent/l3/router_info.py
 +++ b/neutron/agent/l3/router_info.py
-@@ -30,6 +30,7 @@ from neutron.common import exceptions as n_exc
+@@ -29,6 +29,7 @@ from neutron.common import exceptions as n_exc
  from neutron.common import ipv6_utils
  from neutron.common import utils as common_utils
  from neutron.ipam import utils as ipam_utils
@@ -53,7 +53,7 @@ index 46db6a5..6775882 100644
  
  LOG = logging.getLogger(__name__)
  INTERNAL_DEV_PREFIX = namespaces.INTERNAL_DEV_PREFIX
-@@ -52,6 +53,7 @@ class RouterInfo(object):
+@@ -51,6 +52,7 @@ class RouterInfo(object):
                   interface_driver,
                   use_ipv6=False):
          self.agent = agent
@@ -61,7 +61,7 @@ index 46db6a5..6775882 100644
          self.router_id = router_id
          self.ex_gw_port = None
          self._snat_enabled = None
-@@ -63,7 +65,7 @@ class RouterInfo(object):
+@@ -62,7 +64,7 @@ class RouterInfo(object):
          self.router = router
          self.use_ipv6 = use_ipv6
          ns = self.create_router_namespace_object(
@@ -82,7 +82,7 @@ index 46db6a5..6775882 100644
  
      @property
      def router(self):
-@@ -609,7 +611,7 @@ class RouterInfo(object):
+@@ -630,7 +632,7 @@ class RouterInfo(object):
                  for ip in floating_ips]
  
      def _plug_external_gateway(self, ex_gw_port, interface_name, ns_name):
@@ -91,7 +91,7 @@ index 46db6a5..6775882 100644
                           ex_gw_port['id'],
                           interface_name,
                           ex_gw_port['mac_address'],
-@@ -679,7 +681,7 @@ class RouterInfo(object):
+@@ -700,7 +702,7 @@ class RouterInfo(object):
  
          self._add_route_to_gw(ex_gw_port, device_name=interface_name,
                                namespace=ns_name, preserve_ips=preserve_ips)
@@ -101,7 +101,7 @@ index 46db6a5..6775882 100644
              ip_cidrs,
              namespace=ns_name,
 diff --git a/neutron/agent/linux/interface.py b/neutron/agent/linux/interface.py
-index 1f1ed39..b7781e2 100644
+index 88d6e67f31..c0fab604d1 100644
 --- a/neutron/agent/linux/interface.py
 +++ b/neutron/agent/linux/interface.py
 @@ -15,7 +15,7 @@
@@ -113,7 +113,7 @@ index 1f1ed39..b7781e2 100644
  import netaddr
  from neutron_lib import constants
  from oslo_config import cfg
-@@ -317,6 +317,80 @@ class NullDriver(LinuxInterfaceDriver):
+@@ -308,6 +308,80 @@ class NullDriver(LinuxInterfaceDriver):
      def unplug(self, device_name, bridge=None, namespace=None, prefix=None):
          pass
  
@@ -132,7 +132,7 @@ index 1f1ed39..b7781e2 100644
 +                return True
 +            attempt += 1
 +            eventlet.sleep(1)
-+        LOG.error(_LE("Device %(dev)s was not created in %(time)d seconds"),
++        LOG.error("Device %(dev)s was not created in %(time)d seconds",
 +                  {'dev': device_name,
 +                   'time': NSDriver.MAX_TIME_FOR_DEVICE_EXISTENCE})
 +        return False
@@ -144,8 +144,8 @@ index 1f1ed39..b7781e2 100644
 +            # Note: network_device_mtu will be deprecated in future
 +            mtu_override = self.conf.network_device_mtu
 +        except cfg.NoSuchOptError:
-+            LOG.warning(_LW("Config setting for MTU deprecated - any "
-+                            "override will be ignored."))
++            LOG.warning("Config setting for MTU deprecated - any "
++                            "override will be ignored.")
 +            mtu_override = None
 +        if mtu_override:
 +            mtu = mtu_override
@@ -195,5 +195,5 @@ index 1f1ed39..b7781e2 100644
  class OVSInterfaceDriver(LinuxInterfaceDriver):
      """Driver for creating an internal interface on an OVS bridge."""
 -- 
-2.9.3
+2.14.3
 
index a84ab83..00e7183 100644 (file)
@@ -1,18 +1,20 @@
-From 8e37e0fae6195ec177828a9e9d36c6ee009cd372 Mon Sep 17 00:00:00 2001
+From 8676df91883d52e53f2762107267e106ce8c1c64 Mon Sep 17 00:00:00 2001
 From: Feng Pan <fpan@redhat.com>
-Date: Thu, 18 May 2017 17:39:42 -0400
-Subject: [PATCH] Add ml2 type_drivers setting
+Date: Fri, 16 Mar 2018 08:47:30 -0400
+Subject: [PATCH] Add vpp ml2 type_driver config
 
-Change-Id: Ie47a1ace6302d7eccd3ead676c4e1cde7e82c5d2
+Change-Id: I60fb724f2a61377f65df7608c4d70f534c5539f5
+Signed-off-by: Feng Pan <fpan@redhat.com>
 ---
- manifests/agents/ml2/vpp.pp | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
+ manifests/agents/ml2/vpp.pp  | 14 +++++++++++++-
+ manifests/plugins/ml2/vpp.pp |  6 ++++++
+ 2 files changed, 19 insertions(+), 1 deletion(-)
 
 diff --git a/manifests/agents/ml2/vpp.pp b/manifests/agents/ml2/vpp.pp
-index f17d67e8..08427833 100644
+index f8204024..ca3a333b 100644
 --- a/manifests/agents/ml2/vpp.pp
 +++ b/manifests/agents/ml2/vpp.pp
-@@ -42,6 +42,11 @@
+@@ -42,6 +42,15 @@
  #   in the vpp config.
  #   Defaults to false.
  #
@@ -20,33 +22,61 @@ index f17d67e8..08427833 100644
 +#   (optional) List of network type driver entrypoints to be loaded
 +#   Could be an array that can contain flat, vlan or vxlan
 +#   Defaults to $::os_service_default.
++#
++# [*service_plugins*]
++# (optional) service plugins config
++# Defaults to $::os_service_default.
 +#
  class neutron::agents::ml2::vpp (
-   $package_ensure   = 'present',
-   $enabled          = true,
-@@ -51,6 +56,7 @@ class neutron::agents::ml2::vpp (
-   $etcd_port        = $::os_service_default,
-   $etcd_user        = $::os_service_default,
-   $etcd_pass        = $::os_service_default,
-+  $type_drivers     = $::os_service_default,
-   $purge_config     = false,
+   $package_ensure = 'present',
+   $enabled        = true,
+@@ -51,6 +60,8 @@ class neutron::agents::ml2::vpp (
+   $etcd_port      = $::os_service_default,
+   $etcd_user      = $::os_service_default,
+   $etcd_pass      = $::os_service_default,
++  $type_drivers   = $::os_service_default,
++  $service_plugins = $::os_service_default,
+   $purge_config   = false,
  ) {
    include ::neutron::deps
-@@ -61,12 +67,12 @@ class neutron::agents::ml2::vpp (
-   }
-   neutron_agent_vpp {
--    'ml2_vpp/physnets': value  => $physnets;
-+    'ml2_vpp/physnets':  value => $physnets;
-     'ml2_vpp/etcd_host': value => $etcd_host;
+@@ -66,7 +77,8 @@ class neutron::agents::ml2::vpp (
      'ml2_vpp/etcd_port': value => $etcd_port;
      'ml2_vpp/etcd_user': value => $etcd_user;
      'ml2_vpp/etcd_pass': value => $etcd_pass;
--    'DEFAULT/host': value      => $::hostname;
+-    'DEFAULT/host':      value => $::hostname;
 +    'ml2/type_drivers':  value => join(any2array($type_drivers), ',');
++    'DEFAULT/service_plugins': value => $service_plugins;
    }
  
    package { 'neutron-vpp-agent':
+diff --git a/manifests/plugins/ml2/vpp.pp b/manifests/plugins/ml2/vpp.pp
+index 0410a43e..b0c3c4d8 100644
+--- a/manifests/plugins/ml2/vpp.pp
++++ b/manifests/plugins/ml2/vpp.pp
+@@ -20,11 +20,16 @@
+ # (optional) Password for etcd authentication
+ # Defaults to $::os_service_default.
+ #
++# [*l3_hosts*]
++# (optional) L3 vpp-routing hosts
++# Defaults to $::os_service_default.
++#
+ class neutron::plugins::ml2::vpp (
+   $etcd_host = $::os_service_default,
+   $etcd_port = $::os_service_default,
+   $etcd_user = $::os_service_default,
+   $etcd_pass = $::os_service_default,
++  $l3_hosts  = $::os_service_default,
+ ) {
+   include ::neutron::deps
+   require ::neutron::plugins::ml2
+@@ -34,5 +39,6 @@ class neutron::plugins::ml2::vpp (
+     'ml2_vpp/etcd_port': value => $etcd_port;
+     'ml2_vpp/etcd_user': value => $etcd_user;
+     'ml2_vpp/etcd_pass': value => $etcd_pass, secret => true;
++    'ml2_vpp/l3_hosts': value  => $l3_hosts;
+   }
+ }
 -- 
-2.13.3
+2.14.3
 
index 8068783..75466f9 100644 (file)
@@ -2,7 +2,7 @@
 
 Summary:   OpenStack Networking for VPP
 Name:      python-networking-vpp
-Version:   17.07
+Version:   18.01
 Release:   %{release}%{?git}%{?dist}
 
 License:   Apache 2.0
@@ -12,7 +12,7 @@ Url:       https://github.com/openstack/networking-vpp/
 
 BuildArch: noarch
 AutoReq:   no
-Requires:  vpp
+Requires:  vpp python-jwt
 Vendor:    OpenStack <openstack-dev@lists.openstack.org>
 Packager:  Feng Pan <fpan@redhat.com>
 
@@ -27,7 +27,7 @@ Description=Networking VPP ML2 Agent
 
 [Service]
 ExecStartPre=/usr/bin/systemctl is-active vpp
-ExecStart=/usr/bin/vpp-agent --config-file /etc/neutron/plugins/ml2/vpp_agent.ini
+ExecStart=/usr/bin/vpp-agent --config-file /etc/neutron/plugins/ml2/vpp_agent.ini --log-file /var/log/neutron/vpp-agent.log
 Type=simple
 Restart=on-failure
 RestartSec=5s
@@ -37,6 +37,13 @@ WantedBy=multi-user.target
 
 EOF
 
+%preun
+%systemd_preun neutron-vpp-agent.service
+
+%postun
+%systemd_postun
+rm -rf %{python2_sitelib}/networking_vpp*
+
 %install
 python setup.py install -O1 --root=%{buildroot} --record=INSTALLED_FILES
 mkdir -p %{buildroot}%{_libdir}/systemd/system
index e966e33..06570bb 100644 (file)
@@ -45,15 +45,15 @@ calipso_uri_base="https://git.opnfv.org/calipso/plain/app/install"
 calipso_script="calipso-installer.py"
 
 netvpp_repo="https://github.com/openstack/networking-vpp"
-netvpp_branch="17.07"
+netvpp_branch="18.01"
 netvpp_commit=$(git ls-remote ${netvpp_repo} ${netvpp_branch} | awk '{print substr($1,1,7)}')
-netvpp_pkg=python-networking-vpp-17.07-1.git${NETVPP_COMMIT}$(rpm -E %dist).noarch.rpm
+netvpp_pkg=python-networking-vpp-18.01-1.git${NETVPP_COMMIT}$(rpm -E %dist).noarch.rpm
 
 gluon_rpm=gluon-0.0.1-1_20170302.noarch.rpm
 
 nosdn_vpp_rpms=(
-'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp/17.07.01-release.x86_64/vpp-17.07.01-release.x86_64.rpm'
-'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp-api-python/17.07.01-release.x86_64/vpp-api-python-17.07.01-release.x86_64.rpm'
-'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp-lib/17.07.01-release.x86_64/vpp-lib-17.07.01-release.x86_64.rpm'
-'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp-plugins/17.07.01-release.x86_64/vpp-plugins-17.07.01-release.x86_64.rpm'
+'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp/18.01.1-release.x86_64/vpp-18.01.1-release.x86_64.rpm'
+'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp-plugins/18.01.1-release.x86_64/vpp-plugins-18.01.1-release.x86_64.rpm'
+'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp-lib/18.01.1-release.x86_64/vpp-lib-18.01.1-release.x86_64.rpm'
+'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp-api-python/18.01.1-release.x86_64/vpp-api-python-18.01.1-release.x86_64.rpm'
 )
index ffe3a18..c2d9bc9 100644 (file)
@@ -181,7 +181,7 @@ networks:
         # Mapping for compute profile (nodes assigned as Compute nodes)
         compute:
           # Physical interface type (interface or bond)
-          phys_type: interface
+          phys_type: ovs_bridge
           # VLAN tag to use with this NIC
           vlan: native
           # Physical NIC members of this mapping
@@ -190,7 +190,7 @@ networks:
             - eth2
         # Mapping for controller profile (nodes assigned as Controller nodes)
         controller:
-          phys_type: interface
+          phys_type: ovs_bridge
           vlan: native
           members:
             - eth2