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', {})
{%- 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
--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" \
-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
---
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
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):
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):
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
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
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(
@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):
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)
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 @@
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
+ 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
+ # 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
class OVSInterfaceDriver(LinuxInterfaceDriver):
"""Driver for creating an internal interface on an OVS bridge."""
--
-2.9.3
+2.14.3
-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.
#
+# (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
Summary: OpenStack Networking for VPP
Name: python-networking-vpp
-Version: 17.07
+Version: 18.01
Release: %{release}%{?git}%{?dist}
License: Apache 2.0
BuildArch: noarch
AutoReq: no
-Requires: vpp
+Requires: vpp python-jwt
Vendor: OpenStack <openstack-dev@lists.openstack.org>
Packager: Feng Pan <fpan@redhat.com>
[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
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
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'
)
# 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
- eth2
# Mapping for controller profile (nodes assigned as Controller nodes)
controller:
- phys_type: interface
+ phys_type: ovs_bridge
vlan: native
members:
- eth2