:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : Copyright (c) 2017 Mirantis Inc., Enea AB and others. : : All rights reserved. This program and the accompanying materials : are made available under the terms of the Apache License, Version 2.0 : which accompanies this distribution, and is available at : http://www.apache.org/licenses/LICENSE-2.0 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: From: Michael Polenchuk Date: Thu, 29 Jun 2017 12:05:25 +0400 Subject: [PATCH] Bring in opendaylight support Change-Id: Ie9073fafccba336f94b1996bd85c98d7a7f5060b diff --git a/neutron/files/pike/dhcp_agent.ini b/neutron/files/pike/dhcp_agent.ini index d327e64..739dddf 100644 --- a/neutron/files/pike/dhcp_agent.ini +++ b/neutron/files/pike/dhcp_agent.ini @@ -1,3 +1,8 @@ +{%- if pillar.neutron.gateway is defined %} +{%- from "neutron/map.jinja" import gateway as neutron with context %} +{%- else %} +{%- from "neutron/map.jinja" import compute as neutron with context %} +{%- endif %} [DEFAULT] # @@ -48,6 +53,7 @@ enable_isolated_metadata = True # this value will force the DHCP server to append specific host routes to the DHCP request. If this option is set, then the metadata service # will be activated for all the networks. (boolean value) #force_metadata = false +{% if neutron.backend.router is defined %}force_metadata = True{% endif %} # Allows for serving metadata requests coming from a dedicated metadata access network whose CIDR is 169.254.169.254/16 (or larger prefix), # and is connected to a Neutron router from which the VMs send metadata:1 request. In this case DHCP Option 121 will not be injected in VMs, diff --git a/neutron/files/pike/ml2_conf.ini b/neutron/files/pike/ml2_conf.ini index b61e313..02da3b1 100644 --- a/neutron/files/pike/ml2_conf.ini +++ b/neutron/files/pike/ml2_conf.ini @@ -134,7 +134,8 @@ tenant_network_types = {{ server.backend.tenant_network_types }} {%- for mechanism_name, mechanism in server.get('backend', {}).get('mechanism', []).items() %} {%- do mechanism_drivers.append(mechanism.get('driver')) if 'driver' in mechanism %} {%- endfor %} -{%- if "vxlan" in server.backend.tenant_network_types %} +{%- set opendaylight_enabled = true if 'opendaylight' in mechanism_drivers|join else false %} +{%- if "vxlan" in server.backend.tenant_network_types and not opendaylight_enabled %} {%- do mechanism_drivers.append('l2population') %} {%- endif %} mechanism_drivers = {{ ','.join(mechanism_drivers) }} @@ -311,3 +312,11 @@ ovn_nb_connection = tcp:{{ server.controller_vip }}:6641 ovn_sb_connection = tcp:{{ server.controller_vip }}:6642 ovn_l3_scheduler = leastloaded {%- endif %} + +{%- if opendaylight_enabled %} +[ml2_odl] +port_binding_controller = pseudo-agentdb-binding +url = http://{{ server.backend.host }}:{{ server.backend.rest_api_port }}/controller/nb/v2/neutron +username = {{ server.backend.user }} +password = {{ server.backend.password }} +{%- endif %} diff --git a/neutron/files/pike/neutron-generic.conf.Debian b/neutron/files/pike/neutron-generic.conf.Debian index 123386d..d77f6c8 100644 --- a/neutron/files/pike/neutron-generic.conf.Debian +++ b/neutron/files/pike/neutron-generic.conf.Debian @@ -37,7 +37,7 @@ auth_strategy = keystone core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin -service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin +service_plugins = {{ neutron.backend.get('router', 'router')}}, metering {% endif %} @@ -668,7 +668,7 @@ root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf # needs to execute commands in Dom0 in the hypervisor of XenServer, this item # should be set to 'xenapi_root_helper', so that it will keep a XenAPI session # to pass commands to Dom0. (string value) -root_helper_daemon = sudo neutron-rootwrap-daemon /etc/neutron/rootwrap.conf +#root_helper_daemon = # Seconds between nodes reporting state to server; should be less than # agent_down_time, best if it is half or less than agent_down_time. (floating @@ -2092,3 +2092,8 @@ heartbeat_rate = 2 # Sets the list of available ciphers. value should be a string in the OpenSSL # cipher list format. (string value) #ciphers = + +{%- if neutron.backend.ovsdb_connection is defined %} +[ovs] +ovsdb_connection = {{ neutron.backend.ovsdb_connection }} +{%- endif %} diff --git a/neutron/files/pike/neutron-server.conf.Debian b/neutron/files/pike/neutron-server.conf.Debian index 79376a2..a7a4645 100644 --- a/neutron/files/pike/neutron-server.conf.Debian +++ b/neutron/files/pike/neutron-server.conf.Debian @@ -50,7 +50,7 @@ core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin {% set l3_plugin = 'networking_ovn.l3.l3_ovn.OVNL3RouterPlugin' %} {% endif %} -service_plugins ={{ l3_plugin }}, neutron.services.metering.metering_plugin.MeteringPlugin +service_plugins = {{ server.backend.get('router', l3_plugin)}}, metering {%- if server.lbaas is defined -%},lbaasv2{%- endif -%} {%- if fwaas.get('enabled', False) -%},{{ fwaas[fwaas.api_version]['service_plugin'] }}{%- endif -%} {%- if server.get('qos', 'True') -%},neutron.services.qos.qos_plugin.QoSPlugin{%- endif -%} @@ -703,7 +703,7 @@ root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf # needs to execute commands in Dom0 in the hypervisor of XenServer, this item # should be set to 'xenapi_root_helper', so that it will keep a XenAPI session # to pass commands to Dom0. (string value) -root_helper_daemon = sudo neutron-rootwrap-daemon /etc/neutron/rootwrap.conf +#root_helper_daemon = # Seconds between nodes reporting state to server; should be less than # agent_down_time, best if it is half or less than agent_down_time. (floating @@ -2245,3 +2245,8 @@ username = {{ server.identity.user }} password = {{ server.identity.password }} auth_url=http://{{ server.identity.host }}:35357 {%- endif %} + +{%- if server.backend.ovsdb_connection is defined %} +[ovs] +ovsdb_connection = {{ server.backend.ovsdb_connection }} +{%- endif %} diff --git a/neutron/gateway.sls b/neutron/gateway.sls index 81513d8..7ec9b91 100644 --- a/neutron/gateway.sls +++ b/neutron/gateway.sls @@ -32,6 +32,7 @@ neutron_gateway_packages: /etc/neutron/dhcp_agent.ini: file.managed: - source: salt://neutron/files/{{ gateway.version }}/dhcp_agent.ini + - template: jinja - require: - pkg: neutron_gateway_packages