Add OvS-NSH support

To be able to perform SFC through NSH
protocol special Openvswitch packages are needed.

Blueprint: https://review.openstack.org/#/c/476121/

Change-Id: Id0e22067ac5d2a33aa2150dd65ac3fb9ae7c7542
Signed-off-by: Dimitrios Markou <mardim@intracom-telecom.com>
This commit is contained in:
Dimitrios Markou 2017-11-02 12:28:50 +02:00
parent 64da9c6cc6
commit db404dc4c8
9 changed files with 82 additions and 1 deletions

View File

@ -394,3 +394,9 @@ dragonflow_ex_peer_patch_port: patch-int
dragonflow_int_peer_patch_port: patch-ex dragonflow_int_peer_patch_port: patch-ex
dragonflow_external_network_bridge: br-ex dragonflow_external_network_bridge: br-ex
dragonflow_publisher_bind_address: "*" dragonflow_publisher_bind_address: "*"
# Install Openvswitch without NSH support
ovs_nsh_support: False
# Set higher priority to mardim PPA when ovs_nsh_support is True
ovs_nsh_apt_pinned_packages: [{ package: "*", release: "LP-PPA-mardim-mardim-ppa"}]

View File

@ -39,7 +39,10 @@ galaxy_info:
- openstack - openstack
dependencies: dependencies:
- pip_install - pip_install
- apt_package_pinning - role: apt_package_pinning
apt_pinned_packages: "{{ ovs_nsh_support | ternary(ovs_nsh_apt_pinned_packages, omit) }}"
when:
- ansible_pkg_mgr == 'apt'
- galera_client - galera_client
- openstack_openrc - openstack_openrc
- role: etcd - role: etcd

View File

@ -0,0 +1,6 @@
---
features:
- |
Open vSwitch dataplane with NSH support has been implemented.
This feature may be activated by setting ``ovs_nsh_support: True``
in ``/etc/openstack_deploy/user_variables.yml``.

View File

@ -0,0 +1,36 @@
---
# Copyright 2017, Intracom-Telecom
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
### Use OvS with NSH support
ovs_nsh_support: True
### Use OpenDaylight SDN Controller
neutron_plugin_type: "ml2.opendaylight"
odl_ip: "{{ hostvars[groups['opendaylight'][0]]['ansible_default_ipv4']['address'] }}"
neutron_opendaylight_conf_ini_overrides:
ml2_odl:
url: "http://{{ odl_ip }}:8080/controller/nb/v2/neutron"
username: admin
password: admin
tempest_run: yes
tempest_plugins:
- name: neutron
repo: https://git.openstack.org/openstack/neutron
branch: master
tempest_test_whitelist:
- neutron.tests.tempest.api.test_networks*

11
tox.ini
View File

@ -159,6 +159,17 @@ commands =
bash -c "{toxinidir}/tests/tests-repo-clone.sh" bash -c "{toxinidir}/tests/tests-repo-clone.sh"
bash -c "{toxinidir}/tests/common/test-ansible-functional.sh" bash -c "{toxinidir}/tests/common/test-ansible-functional.sh"
[testenv:ovs-nsh]
deps =
{[testenv:ansible]deps}
setenv =
{[testenv]setenv}
ANSIBLE_INVENTORY={toxinidir}/tests/opendaylight_inventory
ANSIBLE_OVERRIDES={toxinidir}/tests/neutron-overrides-ovs-nsh.yml
commands =
bash -c "{toxinidir}/tests/tests-repo-clone.sh"
bash -c "{toxinidir}/tests/common/test-ansible-functional.sh"
[testenv:linters] [testenv:linters]
deps = deps =
{[testenv:ansible]deps} {[testenv:ansible]deps}

View File

@ -28,8 +28,12 @@ neutron_package_list: |-
or (neutron_services['dragonflow-controller-agent']['group'] in group_names and neutron_services['dragonflow-controller-agent'].service_en | bool) or (neutron_services['dragonflow-controller-agent']['group'] in group_names and neutron_services['dragonflow-controller-agent'].service_en | bool)
or (neutron_services['dragonflow-l3-agent']['group'] in group_names and neutron_services['dragonflow-l3-agent'].service_en | bool) or (neutron_services['dragonflow-l3-agent']['group'] in group_names and neutron_services['dragonflow-l3-agent'].service_en | bool)
or ((neutron_services['neutron-server']['group'] not in group_names) and neutron_plugin_type == 'ml2.opendaylight') %} or ((neutron_services['neutron-server']['group'] not in group_names) and neutron_plugin_type == 'ml2.opendaylight') %}
{% if (ovs_nsh_support and ansible_distribution == 'Ubuntu') %}
{% set _ = packages.extend(neutron_ovs_nsh_required_packages) %}
{% else %}
{% set _ = packages.extend(neutron_ovs_distro_packages) %} {% set _ = packages.extend(neutron_ovs_distro_packages) %}
{% endif %} {% endif %}
{% endif %}
{% if neutron_services['neutron-linuxbridge-agent']['group'] in group_names and neutron_services['neutron-linuxbridge-agent'].service_en | bool %} {% if neutron_services['neutron-linuxbridge-agent']['group'] in group_names and neutron_services['neutron-linuxbridge-agent'].service_en | bool %}
{% set _ = packages.extend(neutron_lxb_distro_packages) %} {% set _ = packages.extend(neutron_lxb_distro_packages) %}
{% endif %} {% endif %}
@ -44,6 +48,8 @@ neutron_package_list: |-
{% endif %} {% endif %}
{{ packages }} {{ packages }}
neutron_ovs_nsh_distro_packages: []
# Set the Calico Felix agent executable destination path # Set the Calico Felix agent executable destination path
calico_felix_bin: /usr/local/bin/calico-felix calico_felix_bin: /usr/local/bin/calico-felix

View File

@ -21,6 +21,11 @@ neutron_ovs_distro_packages:
neutron_ovs_service_name: openvswitch-switch neutron_ovs_service_name: openvswitch-switch
neutron_ovs_nsh_required_packages:
- openvswitch-common
- openvswitch-switch
- python-openvswitch
## APT Cache options ## APT Cache options
cache_timeout: 600 cache_timeout: 600

View File

@ -40,3 +40,10 @@
voting: false voting: false
vars: vars:
tox_env: opendaylight tox_env: opendaylight
- job:
name: openstack-ansible-ovs-nsh-ubuntu-xenial
parent: openstack-ansible-functional-ubuntu-xenial
voting: false
vars:
tox_env: ovs-nsh

View File

@ -26,6 +26,7 @@
- openstack-ansible-calico-ubuntu-xenial-nv - openstack-ansible-calico-ubuntu-xenial-nv
- openstack-ansible-dragonflow-ubuntu-xenial-nv - openstack-ansible-dragonflow-ubuntu-xenial-nv
- openstack-ansible-opendaylight-ubuntu-xenial-nv - openstack-ansible-opendaylight-ubuntu-xenial-nv
- openstack-ansible-ovs-nsh-ubuntu-xenial
gate: gate:
jobs: jobs:
- openstack-ansible-linters - openstack-ansible-linters