From 0cd3c6cef32adb1bf9d26414ed73bd9373b0c407 Mon Sep 17 00:00:00 2001 From: Feng Pan Date: Thu, 15 Mar 2018 19:44:39 -0400 Subject: Enable nosdn-fdio scenarios for Fraser release - 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 --- apex/overcloud/config.py | 3 + build/nics-template.yaml.jinja2 | 2 +- build/overcloud-full.sh | 4 +- build/patches/neutron-patch-NSDriver.patch | 36 +++++----- ...ppet-neutron-vpp-ml2-type_drivers-setting.patch | 80 +++++++++++++++------- build/rpm_specs/networking-vpp.spec | 13 +++- build/variables.sh | 12 ++-- config/network/network_settings.yaml | 4 +- 8 files changed, 97 insertions(+), 57 deletions(-) diff --git a/apex/overcloud/config.py b/apex/overcloud/config.py index b0cbb18b..e8d8fbb0 100644 --- a/apex/overcloud/config.py +++ b/apex/overcloud/config.py @@ -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', {}) diff --git a/build/nics-template.yaml.jinja2 b/build/nics-template.yaml.jinja2 index 16083294..959a3926 100644 --- a/build/nics-template.yaml.jinja2 +++ b/build/nics-template.yaml.jinja2 @@ -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 diff --git a/build/overcloud-full.sh b/build/overcloud-full.sh index a4006c4a..f7d55e58 100755 --- a/build/overcloud-full.sh +++ b/build/overcloud-full.sh @@ -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" \ diff --git a/build/patches/neutron-patch-NSDriver.patch b/build/patches/neutron-patch-NSDriver.patch index f01d0318..84b4fb02 100644 --- a/build/patches/neutron-patch-NSDriver.patch +++ b/build/patches/neutron-patch-NSDriver.patch @@ -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 -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 diff --git a/build/patches/puppet-neutron-vpp-ml2-type_drivers-setting.patch b/build/patches/puppet-neutron-vpp-ml2-type_drivers-setting.patch index a84ab83f..00e7183b 100644 --- a/build/patches/puppet-neutron-vpp-ml2-type_drivers-setting.patch +++ b/build/patches/puppet-neutron-vpp-ml2-type_drivers-setting.patch @@ -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 -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 --- - 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 diff --git a/build/rpm_specs/networking-vpp.spec b/build/rpm_specs/networking-vpp.spec index 80687836..75466f94 100644 --- a/build/rpm_specs/networking-vpp.spec +++ b/build/rpm_specs/networking-vpp.spec @@ -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 Packager: Feng Pan @@ -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 diff --git a/build/variables.sh b/build/variables.sh index e966e33e..06570bbe 100644 --- a/build/variables.sh +++ b/build/variables.sh @@ -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' ) diff --git a/config/network/network_settings.yaml b/config/network/network_settings.yaml index ffe3a18e..c2d9bc90 100644 --- a/config/network/network_settings.yaml +++ b/config/network/network_settings.yaml @@ -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 -- cgit 1.2.3-korg