Add Networking-SFC role

Networking-SFC is a neutron big-tent project support Service Function
Chaining in Neutron.

* Rename the image from neutron-networking-sfc-agent to
  neutron-sfc-agent.
* Add networking-sfc role in playbooks.

Co-Authored-by: Jeffrey Zhang <zhang.lei.fly@gmail.com>
Change-Id: I1f99650eed85f59929d4ab6b2226603c54f29577
Implements: blueprint enable-networking-sfc-support
This commit is contained in:
prithiv 2016-09-13 11:24:53 +01:00 committed by Jeffrey Zhang
parent 1109c25b60
commit 8a01ed3270
9 changed files with 75 additions and 11 deletions

View File

@ -110,7 +110,7 @@ tunnel_interface: "{{ network_interface }}"
bifrost_network_interface: "{{ network_interface }}" bifrost_network_interface: "{{ network_interface }}"
# Valid options are [ openvswitch, linuxbridge ] # Valid options are [ openvswitch, linuxbridge, sfc ]
neutron_plugin_agent: "openvswitch" neutron_plugin_agent: "openvswitch"
# The default ports used by each service. # The default ports used by each service.

View File

@ -36,6 +36,10 @@ neutron_openvswitch_agent_image: "{{ docker_registry ~ '/' if docker_registry el
neutron_openvswitch_agent_tag: "{{ openstack_release }}" neutron_openvswitch_agent_tag: "{{ openstack_release }}"
neutron_openvswitch_agent_image_full: "{{ neutron_openvswitch_agent_image }}:{{ neutron_openvswitch_agent_tag }}" neutron_openvswitch_agent_image_full: "{{ neutron_openvswitch_agent_image }}:{{ neutron_openvswitch_agent_tag }}"
neutron_sfc_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-neutron-sfc-agent"
neutron_sfc_agent_tag: "{{ openstack_release }}"
neutron_sfc_agent_image_full: "{{ neutron_sfc_agent_image }}:{{ neutron_sfc_agent_tag }}"
neutron_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-neutron-server" neutron_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-neutron-server"
neutron_server_tag: "{{ openstack_release }}" neutron_server_tag: "{{ openstack_release }}"
neutron_server_image_full: "{{ neutron_server_image }}:{{ neutron_server_tag }}" neutron_server_image_full: "{{ neutron_server_image }}:{{ neutron_server_tag }}"

View File

@ -109,6 +109,36 @@
) )
- neutron_plugin_agent == "openvswitch" - neutron_plugin_agent == "openvswitch"
- name: Starting neutron-sfc-agent container
kolla_docker:
action: "start_container"
common_options: "{{ docker_common_options }}"
image: "{{ neutron_sfc_agent_image_full }}"
name: "neutron_sfc_agent"
privileged: True
volumes:
- "{{ node_config_directory }}/neutron-sfc-agent/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
- "/lib/modules:/lib/modules:ro"
- "/run:/run"
- "kolla_logs:/var/log/kolla/"
when:
- (
( inventory_hostname in groups['compute']
or (enable_manila | bool and inventory_hostname in groups['manila-share'])
or inventory_hostname in groups['neutron-dhcp-agent']
or inventory_hostname in groups['neutron-l3-agent']
or inventory_hostname in groups['neutron-metadata-agent']
and not enable_nova_fake | bool
) or
( inventory_hostname in groups['neutron-dhcp-agent']
or inventory_hostname in groups['neutron-l3-agent']
or inventory_hostname in groups['neutron-metadata-agent']
and enable_nova_fake | bool
)
)
- neutron_plugin_agent == "sfc"
- name: Starting neutron-openvswitch-agent container for fake nova compute - name: Starting neutron-openvswitch-agent container for fake nova compute
kolla_docker: kolla_docker:
action: "start_container" action: "start_container"
@ -128,6 +158,25 @@
- neutron_plugin_agent == "openvswitch" - neutron_plugin_agent == "openvswitch"
- enable_nova_fake | bool - enable_nova_fake | bool
- name: Starting neutron-sfc-agent container for fake nova compute
kolla_docker:
action: "start_container"
common_options: "{{ docker_common_options }}"
image: "{{ neutron_sfc_agent_image_full }}"
name: "neutron_sfc_agent_fake_{{ item }}"
privileged: True
volumes:
- "{{ node_config_directory }}/neutron-sfc-agent-fake-{{ item }}/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
- "/lib/modules:/lib/modules:ro"
- "/run:/run"
- "kolla_logs:/var/log/kolla/"
with_sequence: start=1 end={{ num_nova_fake_per_node }}
when:
- inventory_hostname in groups['compute']
- neutron_plugin_agent == "sfc"
- enable_nova_fake | bool
- name: Starting neutron-linuxbridge-agent container - name: Starting neutron-linuxbridge-agent container
kolla_docker: kolla_docker:
action: "start_container" action: "start_container"

View File

@ -35,7 +35,7 @@ host = {{ ansible_hostname }}_{{ item }}
allow_overlapping_ips = true allow_overlapping_ips = true
core_plugin = ml2 core_plugin = ml2
service_plugins = router{% if enable_neutron_lbaas | bool %},neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2{% endif %}{% if enable_neutron_qos | bool %},qos{% endif %} service_plugins = router{% if enable_neutron_lbaas | bool %},lbaas{% endif %}{% if enable_neutron_qos | bool %},qos{% endif %},{% if neutron_plugin_agent == "sfc" %}flow_classifier,sfc{% endif %}
{% if enable_neutron_agent_ha | bool %} {% if enable_neutron_agent_ha | bool %}
dhcp_agents_per_network = {{ dhcp_agents_per_network }} dhcp_agents_per_network = {{ dhcp_agents_per_network }}
@ -100,3 +100,9 @@ topics = notifications
{% else %} {% else %}
driver = noop driver = noop
{% endif %} {% endif %}
{% if neutron_plugin_agent == "sfc" %}
[sfc]
drivers = ovs
[flowclassifier]
{% endif %}

View File

@ -10,10 +10,10 @@ RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
{% elif install_type == 'source' %} {% elif install_type == 'source' %}
ADD neutron-networking-sfc-agent-archive /neutron-networking-sfc-agent-source ADD neutron-sfc-agent-archive /neutron-sfc-agent-source
RUN ln -s neutron-networking-sfc-agent-source/* neutron_networking-sfc-agent \ RUN ln -s neutron-sfc-agent-source/* neutron-sfc-agent \
&& /var/lib/kolla/venv/bin/pip --no-cache-dir install --upgrade -c requirements/upper-constraints.txt /neutron_networking-sfc-agent \ && /var/lib/kolla/venv/bin/pip --no-cache-dir install --upgrade -c requirements/upper-constraints.txt /neutron-sfc-agent \
&& cp /neutron_networking-sfc-agent/etc/neutron/rootwrap.d/* /etc/neutron/rootwrap.d \ && cp /neutron-sfc-agent/etc/neutron/rootwrap.d/* /etc/neutron/rootwrap.d \
&& sed -i 's|^exec_dirs.*|exec_dirs=/var/lib/kolla/venv/bin,/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin,/usr/local/sbin|g' /etc/neutron/rootwrap.conf && sed -i 's|^exec_dirs.*|exec_dirs=/var/lib/kolla/venv/bin,/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin,/usr/local/sbin|g' /etc/neutron/rootwrap.conf
{% endif %} {% endif %}
@ -21,7 +21,7 @@ RUN ln -s neutron-networking-sfc-agent-source/* neutron_networking-sfc-agent \
COPY extend_start.sh /usr/local/bin/kolla_neutron_extend_start COPY extend_start.sh /usr/local/bin/kolla_neutron_extend_start
RUN chmod 755 /usr/local/bin/kolla_neutron_extend_start RUN chmod 755 /usr/local/bin/kolla_neutron_extend_start
{% block neutron_networking_sfc_agent_footer %}{% endblock %} {% block neutron_sfc_agent_footer %}{% endblock %}
{% block footer %}{% endblock %} {% block footer %}{% endblock %}
{{ include_footer }} {{ include_footer }}

View File

@ -241,7 +241,7 @@ SOURCES = {
'type': 'url', 'type': 'url',
'location': ('http://tarballs.openstack.org/neutron-lbaas/' 'location': ('http://tarballs.openstack.org/neutron-lbaas/'
'neutron-lbaas-master.tar.gz')}, 'neutron-lbaas-master.tar.gz')},
'neutron-networking-sfc-agent': { 'neutron-sfc-agent': {
'type': 'url', 'type': 'url',
'location': ('http://tarballs.openstack.org/networking-sfc/' 'location': ('http://tarballs.openstack.org/networking-sfc/'
'networking-sfc-master.tar.gz')}, 'networking-sfc-master.tar.gz')},

View File

@ -0,0 +1,5 @@
---
features:
- Add neutron Service Function Chaining (sfc) support. Service Function
Chaining is a mechanism for overriding the basic destination based
forwarding that is typical of IP networks

View File

@ -66,7 +66,7 @@ class BuildTest(object):
class BuildTestCentosBinary(BuildTest, base.BaseTestCase): class BuildTestCentosBinary(BuildTest, base.BaseTestCase):
excluded_images = ["kuryr", excluded_images = ["kuryr",
"neutron-networking-sfc-agent", "neutron-sfc-agent",
"senlin-base", "senlin-base",
"vmtp", "vmtp",
"watcher-base", "watcher-base",
@ -94,7 +94,7 @@ class BuildTestUbuntuBinary(BuildTest, base.BaseTestCase):
# package, just add neutron-lbaas-agent into the exclude_image. Once they # package, just add neutron-lbaas-agent into the exclude_image. Once they
# fix it, this should be reverted. # fix it, this should be reverted.
excluded_images = ["kuryr", excluded_images = ["kuryr",
"neutron-networking-sfc-agent", "neutron-sfc-agent",
"neutron-lbaas-agent", "neutron-lbaas-agent",
"senlin-base", "senlin-base",
"vmtp", "vmtp",
@ -121,7 +121,7 @@ class BuildTestUbuntuSource(BuildTest, base.BaseTestCase):
class BuildTestOracleLinuxBinary(BuildTest, base.BaseTestCase): class BuildTestOracleLinuxBinary(BuildTest, base.BaseTestCase):
excluded_images = ["kuryr", excluded_images = ["kuryr",
"neutron-networking-sfc-agent", "neutron-sfc-agent",
"senlin-base", "senlin-base",
"vmtp", "vmtp",
"watcher-base", "watcher-base",