Provide support for SFC deployments

This patch allows to deploy SFC capable deployments when deploying OSA with
ODL. It does the following:

- Installs the neutron networking-sfc project
- Adds SFC to the features which ODL activates
- Incorporates SFC options to neutron.conf

In order to use it, you need to have ODL running and you should add the next
items to the neutron_plugin_base when executing it:

networking_sfc.services.flowclassifier.plugin.FlowClassifierPlugin
networking_sfc.services.sfc.plugin.SfcPlugin

Depends-On: I49c01fb63054e45bae5ae45a89cce986579959de
Change-Id: I6bf2be1aef1bb612640f5d8cc101136f618fabd8
This commit is contained in:
Manuel Buil 2017-10-10 17:11:00 +02:00
parent bdc0b3172d
commit 5818eafe60
9 changed files with 116 additions and 2 deletions

View File

@ -52,6 +52,8 @@ dragonflow_git_repo: https://git.openstack.org/openstack/dragonflow
dragonflow_git_install_branch: master
networking_odl_git_repo: https://git.openstack.org/openstack/networking-odl
networking_odl_git_install_branch: master
networking_sfc_git_repo: https://git.openstack.org/openstack/networking-sfc
networking_sfc_git_install_branch: master
# Developer mode
neutron_developer_mode: false

View File

@ -103,6 +103,24 @@ Neutron network and set a gateway. Note that the br-vlan interface of the nodes
could be a perfect interface for that gateway, although it depends on your
network topology.
SFC configuration
~~~~~~~~~~~~~~~~~
It is possible to have an openstack-ansible deployment with SFC capabilities.
The following config needs to be added to the above described
``/etc/openstack_deploy/user_variables.yml`` :
.. code-block:: yaml
neutron_plugin_base:
- router
- metering
- networking_sfc.services.flowclassifier.plugin.FlowClassifierPlugin
- networking_sfc.services.sfc.plugin.SfcPlugin
When using this configuration, networking-sfc will be deployed and SFC features
will be activated in ODL. A SFC topology could be then set up through the
networking-sfc API or through an orchestrator like tacker (if deployed).
Security information
~~~~~~~~~~~~~~~~~~~~

View File

@ -13,9 +13,18 @@
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Set the packages to install
set_fact:
neutron_optional_combined_pip_packages: |-
{% set packages = neutron_optional_opendaylight_pip_packages %}
{% if 'networking_sfc.services.sfc.plugin.SfcPlugin' in neutron_plugin_base %}
{% set _ = packages.extend(neutron_optional_opendaylight_sfc_pip_packages) %}
{% endif %}
{{ packages }}
- name: Install OpenDaylight pip packages
pip:
name: "{{ neutron_optional_opendaylight_pip_packages }}"
name: "{{ neutron_optional_combined_pip_packages }}"
state: "{{ neutron_pip_package_state }}"
virtualenv: "{{ neutron_bin | dirname }}"
virtualenv_site_packages: "no"

View File

@ -271,3 +271,12 @@ transport_url = rabbit://{% for host in neutron_rabbitmq_telemetry_servers.split
# Concurrency (locking mechanisms)
[oslo_concurrency]
lock_path = {{ neutron_lock_path }}
{% if neutron_services['neutron-server']['group'] in group_names and 'networking_sfc.services.sfc.plugin.SfcPlugin' in neutron_plugin_base %}
# ODL-SFC
[sfc]
drivers = odl
[flowclassifier]
drivers = odl
{% endif %}

View File

@ -0,0 +1,45 @@
---
# 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 }}:8180/controller/nb/v2/neutron"
username: admin
password: admin
neutron_plugin_base:
- router
- metering
- networking_sfc.services.flowclassifier.plugin.FlowClassifierPlugin
- networking_sfc.services.sfc.plugin.SfcPlugin
tempest_run: yes
tempest_plugins:
- name: neutron
repo: https://git.openstack.org/openstack/neutron
branch: master
- name: neutron-plugins
repo: https://git.openstack.org/openstack/neutron-tempest-plugin
branch: master
tempest_test_whitelist:
- "neutron_tempest_plugin.api.test_networks*"

12
tox.ini
View File

@ -171,6 +171,18 @@ commands =
bash -c "{toxinidir}/tests/common/test-ansible-functional.sh"
[testenv:odl-sfc]
deps =
{[testenv:ansible]deps}
setenv =
{[testenv]setenv}
ANSIBLE_INVENTORY={toxinidir}/tests/opendaylight_inventory
ANSIBLE_OVERRIDES={toxinidir}/tests/neutron-overrides-odl-sfc.yml
commands =
bash -c "{toxinidir}/tests/tests-repo-clone.sh"
bash -c "{toxinidir}/tests/common/test-ansible-functional.sh"
[testenv:ssl]
deps =
{[testenv:ansible]deps}

View File

@ -100,6 +100,9 @@ neutron_optional_dragonflow_pip_packages:
neutron_optional_opendaylight_pip_packages:
- networking-odl
neutron_optional_opendaylight_sfc_pip_packages:
- networking-sfc
neutron_proprietary_nuage_pip_packages:
- nuage-openstack-neutron
- nuage-openstack-neutronclient
@ -114,6 +117,7 @@ neutron_developer_constraints:
- "git+{{ networking_calico_git_repo }}@{{ networking_calico_git_install_branch }}#egg=networking-calico"
- "git+{{ dragonflow_git_repo }}@{{ dragonflow_git_install_branch }}#egg=dragonflow"
- "git+{{ networking_odl_git_repo }}@{{ networking_odl_git_install_branch }}#egg=networking-odl"
- "git+{{ networking_sfc_git_repo }}@{{ networking_sfc_git_install_branch }}#egg=networking-sfc"
neutron_bin: "/openstack/venvs/neutron-{{ neutron_venv_tag }}/bin"
@ -242,7 +246,13 @@ _neutron_non_tunnel_types:
neutron_tunnel_types: "{{ neutron_ml2_drivers_type.split(',') | difference(_neutron_non_tunnel_types) | join(',') }}"
# OpenDaylight
opendaylight_extra_features: ['odl-netvirt-openstack']
opendaylight_extra_features: |-
{%- set features = ['odl-netvirt-openstack'] -%}
{%- if 'networking_sfc.services.sfc.plugin.SfcPlugin' in neutron_plugin_base -%}
{%- set features = ['odl-netvirt-sfc'] -%}
{%- endif -%}
{{ features }}
opendaylight_install_method: "{{ (ansible_os_family=='Debian') | ternary('deb_repo', 'rpm_repo') }}"
ovs_manager_list: |-

View File

@ -54,3 +54,11 @@
voting: false
vars:
tox_env: ssl
- job:
name: openstack-ansible-odl-sfc-ubuntu-xenial
parent: openstack-ansible-functional-ubuntu-xenial
voting: false
vars:
tox_env: odl-sfc

View File

@ -28,6 +28,7 @@
- openstack-ansible-opendaylight-ubuntu-xenial-nv
- openstack-ansible-ovs-nsh-ubuntu-xenial
- openstack-ansible-neutron-ssl-nv
- openstack-ansible-odl-sfc-ubuntu-xenial
experimental:
jobs:
- openstack-ansible-integrated-deploy-aio