Merge "ContrailPlugin: remove admin_token"
diff --git a/.kitchen.yml b/.kitchen.yml
index 2b5e840..23c6f61 100644
--- a/.kitchen.yml
+++ b/.kitchen.yml
@@ -51,7 +51,7 @@
platforms:
- name: <%=ENV['PLATFORM'] || 'saltstack-ubuntu-xenial-salt-stable'%>
driver_config:
- image: <%=ENV['PLATFORM'] || 'epcim/salt:saltstack-ubuntu-xenial-salt-stable'%>
+ image: <%=ENV['PLATFORM'] || 'docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19'%>
platform: ubuntu
suites:
diff --git a/.travis.yml b/.travis.yml
index 1cb784a..6d4f0c2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,70 +9,38 @@
- pip install PyYAML
- pip install virtualenv
- |
- test -e Gemfile || cat <<EOF > Gemfile
- source 'https://rubygems.org'
- gem 'rake'
- gem 'test-kitchen'
- gem 'kitchen-docker'
- gem 'kitchen-inspec'
- gem 'inspec', '<3.0.0'
- #Version was frozen, because of issues in the version of inspec >3.0.0 -- see https://mirantis.jira.com/browse/PROD-24324 for more info
- gem 'kitchen-salt', :git => 'https://github.com/salt-formulas/kitchen-salt.git'
+ if [ ! -e Gemfile ]; then
+ curl -s -o ./Gemfile 'https://gerrit.mcp.mirantis.com/gitweb?p=salt-formulas/salt-formulas-scripts.git;a=blob_plain;f=Gemfile;hb=refs/heads/master'
+ fi
- bundle install
env:
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=compute-dpdk
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=compute-dvr-fwaas-v1
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=compute-nonexternal-dvr
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=compute-qos-sriov
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=compute-ovn
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=control-cluster
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=control-nodvr
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=control-fwaas-v1
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=control-opendaylight
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=control-qos
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=gateway-dvr
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=gateway-qos
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=gateway-legacy-l2gw
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=compute-dvr
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=compute-legacy
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=compute-sriov
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=compute-qos
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=control-dvr
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=control-lbaas-octavia
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=control-l2gw
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=control-single
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=control-ovn
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=gateway-dvr
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=gateway-legacy
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=gateway-legacy-fwaas-v1
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2018.3 SUITE=gateway-legacy-opendaylight
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=compute-dvr
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=compute-legacy
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=compute-sriov
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=compute-qos
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=control-dvr
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=control-lbaas-octavia
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=control-l2gw
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=control-single
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=control-ovn
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=control-dns
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=gateway-legacy
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=gateway-legacy-fwaas-v1
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2017.7 SUITE=gateway-legacy-opendaylight
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=compute-dpdk
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=compute-dvr-fwaas-v1
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=compute-nonexternal-dvr
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=compute-qos-sriov
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=compute-ovn
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=control-cluster
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=control-nodvr
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=control-fwaas-v1
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=control-opendaylight
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=control-qos
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=gateway-dvr
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=gateway-qos
- # - PLATFORM=epcim/salt:saltstack-ubuntu-bionic-salt-2018.3 SUITE=gateway-legacy-l2gw
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=compute-dpdk
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=compute-dvr-fwaas-v1
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=compute-nonexternal-dvr
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=compute-qos-sriov
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=compute-ovn
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=control-cluster
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=control-nodvr
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=control-fwaas-v1
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=control-opendaylight
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=control-qos
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=gateway-dvr
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=gateway-qos
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-2017.7/salt:2018_11_19 SUITE=gateway-legacy-l2gw
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=compute-dvr
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=compute-legacy
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=compute-sriov
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=compute-qos
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=control-dvr
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=control-lbaas-octavia
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=control-l2gw
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=control-single
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=control-ovn
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=gateway-dvr
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=gateway-legacy
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=gateway-legacy-fwaas-v1
+ - PLATFORM=docker-dev-local.docker.mirantis.net/epcim/salt/saltstack-ubuntu-xenial-salt-stable/salt:2018_11_19 SUITE=gateway-legacy-opendaylight
before_script:
- set -o pipefail
diff --git a/Makefile b/Makefile
index d166862..fb69046 100644
--- a/Makefile
+++ b/Makefile
@@ -18,7 +18,11 @@
JOBS := 1
endif
+ifeq (,$(wildcard ./.kitchen.openstack.yml))
+KITCHEN_LOCAL_YAML?=.kitchen.openstack.yml
+else
KITCHEN_LOCAL_YAML?=.kitchen.yml
+endif
KITCHEN_OPTS?="--concurrency=$(JOBS)"
KITCHEN_OPTS_CREATE?=""
KITCHEN_OPTS_CONVERGE?=""
diff --git a/README.rst b/README.rst
index 00a74c4..1d03977 100644
--- a/README.rst
+++ b/README.rst
@@ -743,7 +743,7 @@
- flat # possible values - 'flat' or 'vlan'
sriov_net:
mtu: 9000 # Optional, defaults to 1500
- vlan_range: '100:200' # Optional
+ vlan_range: '100:200,300:400' # Optional
types:
- vlan
ext_net2:
diff --git a/_modules/neutronng.py b/_modules/neutronng.py
index 6ea50f9..87bc154 100644
--- a/_modules/neutronng.py
+++ b/_modules/neutronng.py
@@ -1,7 +1,9 @@
# -*- coding: utf-8 -*-
import logging
+import time
from functools import wraps
+from salt.exceptions import CommandExecutionError
LOG = logging.getLogger(__name__)
# Import third party libs
@@ -416,3 +418,22 @@
salt '*' neutronng.list_extensions
'''
return neutron_interface.list_extensions(**kwargs)
+
+
+def wait_for_api_ready(profile, retries=1, retry_timeout=10):
+
+ response = {'status': 'up'}
+ for i in range(1, retries+1):
+ try:
+ list_routers(profile=profile)
+ except Exception as e:
+ msg = ("Error: %s "
+ "Sleeping for %ss. "
+ "Attempts %s of %s ")
+ LOG.error(msg % (e, retry_timeout, i, retries))
+ time.sleep(retry_timeout)
+ if i == retries:
+ raise CommandExecutionError(e)
+ continue
+ return response
+
diff --git a/_modules/neutronv2/__init__.py b/_modules/neutronv2/__init__.py
index 85db2b7..e275af6 100644
--- a/_modules/neutronv2/__init__.py
+++ b/_modules/neutronv2/__init__.py
@@ -12,6 +12,7 @@
from neutronv2 import subnets
from neutronv2 import agents
from neutronv2 import routers
+from neutronv2 import common
network_get_details = networks.network_get_details
@@ -62,6 +63,8 @@
wait_for_network_services = agents.wait_for_network_services
+wait_for_api_ready = common.wait_for_api_ready
+
__all__ = (
'network_get_details', 'network_update', 'network_delete', 'network_list',
'network_create', 'network_bulk_create', 'subnetpool_get_details',
diff --git a/_modules/neutronv2/common.py b/_modules/neutronv2/common.py
index 7b62122..6f3f56c 100644
--- a/_modules/neutronv2/common.py
+++ b/_modules/neutronv2/common.py
@@ -3,6 +3,8 @@
import os_client_config
import time
+from salt.exceptions import CommandExecutionError
+
log = logging.getLogger(__name__)
NEUTRON_VERSION_HEADER = 'x-openstack-networking-version'
@@ -108,3 +110,32 @@
return resp
return wrapped_f
return wrap
+
+def wait_for_api_ready(cloud_name, retries=1, retry_timeout=10, **kwargs):
+
+ adapter = _get_raw_client(cloud_name)
+ response = None
+ for i in range(1, retries+1):
+ try:
+ response = getattr(adapter, 'get')(
+ '/', connect_retries=retries,
+ **kwargs)
+ except Exception as e:
+ msg = ("Error: %s "
+ "Sleeping for %ss. "
+ "Attempts %s of %s ")
+ log.error(msg % (e, retry_timeout, i, retries))
+ time.sleep(retry_timeout)
+ continue
+ break
+ if not response or not response.content:
+ if e:
+ raise CommandExecutionError(e)
+ else:
+ return {}
+ try:
+ resp = response.json()
+ except ValueError:
+ resp = response.content
+ return resp
+
diff --git a/neutron/client/resources/init.sls b/neutron/client/resources/init.sls
index 5ec7f0d..090ebb7 100644
--- a/neutron/client/resources/init.sls
+++ b/neutron/client/resources/init.sls
@@ -11,6 +11,13 @@
{%- for identity_name, identity in client.get('server', {}).iteritems() %}
+wait_for_neutron_agents_legacy_{{ identity_name }}:
+ module.run:
+ - name: neutronng.wait_for_api_ready
+ - retries: 90
+ - retry_timeout: 1
+ - profile: {{ identity_name }}
+
{%- if identity.security_group is defined %}
{%- for security_group_name, security_group in identity.security_group.iteritems() %}
@@ -25,6 +32,8 @@
- tenant: {{ security_group.tenant }}
{%- if identity.endpoint_type is defined %}
- endpoint_type: {{ identity.endpoint_type }}
+ - require:
+ - wait_for_neutron_agents_legacy_{{ identity_name }}
{%- endif %}
{%- endfor %}
@@ -67,6 +76,8 @@
{%- if network.is_default is defined %}
- is_default: {{ network.is_default }}
{%- endif %}
+ - require:
+ - neutronng.wait_for_api_ready
{%- if network.subnet is defined %}
diff --git a/neutron/client/resources/v2.sls b/neutron/client/resources/v2.sls
index 3de104d..3bd57b9 100644
--- a/neutron/client/resources/v2.sls
+++ b/neutron/client/resources/v2.sls
@@ -3,6 +3,13 @@
{%- for identity_name, identity in client.get('resources', {}).get('v2', {}).iteritems() %}
+wait_for_neutron_agents_v2_{{ identity_name }}:
+ module.run:
+ - name: neutronv2.wait_for_api_ready
+ - retries: 90
+ - retry_timeout: 1
+ - cloud_name: {{ identity_name }}
+
{%- if identity.network is defined %}
{%- for network_name, network in identity.network.iteritems() %}
@@ -34,6 +41,8 @@
{%- if network.is_default is defined %}
- is_default: {{ network.is_default }}
{%- endif %}
+ - require:
+ - wait_for_neutron_agents_v2_{{ identity_name }}
{%- if network.subnet is defined %}
{%- for subnet_name, subnet in network.subnet.iteritems() %}
@@ -96,6 +105,9 @@
{%- if pool.is_default is defined %}
- is_default: {{ pool.is_default }}
{%- endif %}
+ {%- if pool.shared is defined %}
+ - shared: {{ pool.shared }}
+ {%- endif %}
{%- if pool.prefixes is defined %}
- prefixes:
{%- for prefix in pool.prefixes %}
@@ -107,4 +119,4 @@
{%- endif %}
{%- endfor %}
-{%- endif %}
\ No newline at end of file
+{%- endif %}
diff --git a/neutron/files/ocata/ml2_conf.ini b/neutron/files/ocata/ml2_conf.ini
index 561f518..3f070d9 100644
--- a/neutron/files/ocata/ml2_conf.ini
+++ b/neutron/files/ocata/ml2_conf.ini
@@ -281,7 +281,15 @@
{%- set network_vlan_ranges = [] %}
{%- for physnet, params in server.backend.get('physnets', {}).iteritems() %}
-{%- do network_vlan_ranges.append([physnet, params.get('vlan_range')]|join(":") if params.get('vlan_range', False) else physnet) if 'vlan' in params.get('types', ['vlan']) %}
+{%- if 'vlan' in params.get('types', ['vlan']) %}
+{%- if params.get('vlan_range', False) %}
+{%- for vlan_range in params.get('vlan_range').split(',') %}
+{%- do network_vlan_ranges.append([physnet, vlan_range]|join(":")) %}
+{%- endfor %}
+{%- else %}
+{%- do network_vlan_ranges.append(physnet) %}
+{%- endif %}
+{%- endif %}
{%- endfor %}
{%- if not network_vlan_ranges %}
diff --git a/neutron/files/pike/ml2_conf.ini b/neutron/files/pike/ml2_conf.ini
index a953f0a..17818ee 100644
--- a/neutron/files/pike/ml2_conf.ini
+++ b/neutron/files/pike/ml2_conf.ini
@@ -284,7 +284,15 @@
{%- set network_vlan_ranges = [] %}
{%- for physnet, params in server.backend.get('physnets', {}).iteritems() %}
-{%- do network_vlan_ranges.append([physnet, params.get('vlan_range')]|join(":") if params.get('vlan_range', False) else physnet) if 'vlan' in params.get('types', ['vlan']) %}
+{%- if 'vlan' in params.get('types', ['vlan']) %}
+{%- if params.get('vlan_range', False) %}
+{%- for vlan_range in params.get('vlan_range').split(',') %}
+{%- do network_vlan_ranges.append([physnet, vlan_range]|join(":")) %}
+{%- endfor %}
+{%- else %}
+{%- do network_vlan_ranges.append(physnet) %}
+{%- endif %}
+{%- endif %}
{%- endfor %}
{%- if not network_vlan_ranges %}
diff --git a/neutron/files/queens/ml2_conf.ini b/neutron/files/queens/ml2_conf.ini
index 6f0ee0d..bb2f126 100644
--- a/neutron/files/queens/ml2_conf.ini
+++ b/neutron/files/queens/ml2_conf.ini
@@ -181,7 +181,15 @@
{%- set network_vlan_ranges = [] %}
{%- for physnet, params in server.backend.get('physnets', {}).iteritems() %}
-{%- do network_vlan_ranges.append([physnet, params.get('vlan_range')]|join(":") if params.get('vlan_range', False) else physnet) if 'vlan' in params.get('types', ['vlan']) %}
+{%- if 'vlan' in params.get('types', ['vlan']) %}
+{%- if params.get('vlan_range', False) %}
+{%- for vlan_range in params.get('vlan_range').split(',') %}
+{%- do network_vlan_ranges.append([physnet, vlan_range]|join(":")) %}
+{%- endfor %}
+{%- else %}
+{%- do network_vlan_ranges.append(physnet) %}
+{%- endif %}
+{%- endif %}
{%- endfor %}
{%- if not network_vlan_ranges %}
diff --git a/neutron/files/queens/neutron-generic.conf b/neutron/files/queens/neutron-generic.conf
index 4eef1a4..30fa7a8 100644
--- a/neutron/files/queens/neutron-generic.conf
+++ b/neutron/files/queens/neutron-generic.conf
@@ -420,6 +420,9 @@
{%- set _data = neutron.identity %}
{%- if 'cacert_file' not in _data.keys() %}{% do _data.update({'cacert_file': neutron.cacert_file}) %}{% endif %}
{%- set auth_type = _data.get('auth_type', 'password') %}
+{%- if neutron.get('cache',{}).members is defined and 'cache' not in _data.keys() %}
+{% do _data.update({'cache': neutron.cache}) %}
+{%- endif %}
{%- include "oslo_templates/files/queens/keystonemiddleware/_auth_token.conf" %}
{%- include "oslo_templates/files/queens/keystoneauth/_type_" + auth_type + ".conf" %}
{%- endif %}
diff --git a/neutron/files/queens/neutron-server.conf b/neutron/files/queens/neutron-server.conf
index f20ac88..e057afd 100644
--- a/neutron/files/queens/neutron-server.conf
+++ b/neutron/files/queens/neutron-server.conf
@@ -458,6 +458,9 @@
{%- set _data = server.identity %}
{%- if 'cacert_file' not in _data.keys() %}{% do _data.update({'cacert_file': server.cacert_file}) %}{% endif %}
{%- set auth_type = _data.get('auth_type', 'password') %}
+{%- if server.get('cache',{}).members is defined and 'cache' not in _data.keys() %}
+{% do _data.update({'cache': server.cache}) %}
+{%- endif %}
{%- include "oslo_templates/files/queens/keystonemiddleware/_auth_token.conf" %}
{%- include "oslo_templates/files/queens/keystoneauth/_type_" + auth_type + ".conf" %}
diff --git a/neutron/upgrade/pkgs_latest.sls b/neutron/upgrade/pkgs_latest.sls
index 6023128..afa31c0 100644
--- a/neutron/upgrade/pkgs_latest.sls
+++ b/neutron/upgrade/pkgs_latest.sls
@@ -33,7 +33,13 @@
{%- do npkgs.append('python-vmware-nsx') %}
{%- endif %}
{% if server.get('bgp_vpn', {}).get('enabled', False) %}
- {%- do npkgs.extend(server.pkgs_bagpipe) %}
+ {%- do npkgs.extend(server.pkgs_bgpvpn) %}
+ {% if server.bgp_vpn.driver == "bagpipe" %}
+ {%- do npkgs.extend(server.pkgs_bagpipe) %}
+ {%- endif %}
+ {%- endif %}
+ {% if server.get('l2gw', {}).get('enabled', False) %}
+ {%- do npkgs.extend(server.pkgs_l2gw) %}
{%- endif %}
{%- if fwaas.get('enabled', False) %}
{%- do npkgs.extend(fwaas.pkgs) %}
@@ -41,9 +47,15 @@
{%- endif %}
{%- if gateway.enabled is defined and gateway.enabled %}
{%- do npkgs.extend(gateway.pkgs) %}
+ {% if gateway.get('l2gw', {}).get('enabled', False) %}
+ {%- do npkgs.extend(gateway.pkgs_l2gw_agent) %}
+ {%- endif %}
{%- endif %}
{%- if compute.enabled is defined and compute.enabled %}
{%- do npkgs.extend(compute.pkgs) %}
+ {% if compute.get('bgp_vpn', {}).get('enabled', False) and compute.bgp_vpn.driver == "bagpipe" %}
+ {%- do npkgs.extend(compute.pkgs_bagpipe) %}
+ {%- endif %}
{%- endif %}
{%- if client.enabled is defined and client.enabled %}
{%- do npkgs.extend(client.pkgs) %}
diff --git a/neutron/upgrade/render_config.sls b/neutron/upgrade/render_config.sls
index 1f5acaa..77bc673 100644
--- a/neutron/upgrade/render_config.sls
+++ b/neutron/upgrade/render_config.sls
@@ -34,6 +34,9 @@
['/etc/neutron/plugins/ml2/openvswitch_agent.ini', "salt://neutron/files/" + gateway.version + "/openvswitch_agent.ini"],
['/etc/neutron/dhcp_agent.ini', "salt://neutron/files/" + gateway.version + "/dhcp_agent.ini"],
['/etc/neutron/metadata_agent.ini',"salt://neutron/files/" + gateway.version + "/metadata_agent.ini"]]) %}
+ {%- if gateway.get('l2gw', {}).get('enabled', False) %}
+ {%- do conf_mapping.append(['/etc/neutron/l2gateway_agent.ini', "salt://neutron/files/" + gateway.version + "/l2gw/l2gateway_agent.ini"]) %}
+ {%- endif %}
{%- elif compute.enabled %}
{% if compute.get('bgp_vpn', {}).get('enabled', False) and server.bgp_vpn.driver == "bagpipe" %}
{%- do conf_mapping.append(['/etc/bagpipe-bgp/bgp.conf', "salt://neutron/files/" + compute.version + "/bagpipe-bgp.conf"]) %}
diff --git a/neutron/upgrade/service_running.sls b/neutron/upgrade/service_running.sls
index d2ac334..1be3502 100644
--- a/neutron/upgrade/service_running.sls
+++ b/neutron/upgrade/service_running.sls
@@ -14,6 +14,9 @@
{%- endif %}
{%- if gateway.enabled is defined and gateway.enabled%}
{%- do nservices.extend(gateway.services) %}
+ {% if gateway.get('l2gw', {}).get('enabled', False) %}
+ {%- do nservices.append('neutron-l2gateway-agent') %}
+ {%- endif %}
{%- endif %}
{%- if compute.enabled is defined and compute.enabled%}
{%- do nservices.extend(compute.services) %}
@@ -26,6 +29,9 @@
{% if compute.backend.sriov is defined %}
{%- do nservices.append('neutron-sriov-agent') %}
{%- endif %}
+ {% if compute.get('bgp_vpn', {}).get('enabled', False) and compute.bgp_vpn.driver == "bagpipe" %}
+ {%- do nservices.append('bagpipe-bgp') %}
+ {%- endif %}
{%- endif %}
{%- for nservice in nservices|unique %}
diff --git a/neutron/upgrade/service_stopped.sls b/neutron/upgrade/service_stopped.sls
index 6e33e5c..1709382 100644
--- a/neutron/upgrade/service_stopped.sls
+++ b/neutron/upgrade/service_stopped.sls
@@ -14,6 +14,9 @@
{%- endif %}
{%- if gateway.enabled is defined and gateway.enabled %}
{%- do nservices.extend(gateway.services) %}
+ {% if gateway.get('l2gw', {}).get('enabled', False) %}
+ {%- do nservices.append('neutron-l2gateway-agent') %}
+ {%- endif %}
{%- endif %}
{%- if compute.enabled is defined and compute.enabled %}
{%- do nservices.extend(compute.services) %}
@@ -26,6 +29,9 @@
{% if compute.backend.sriov is defined %}
{%- do nservices.append('neutron-sriov-agent') %}
{%- endif %}
+ {% if compute.get('bgp_vpn', {}).get('enabled', False) and compute.bgp_vpn.driver == "bagpipe" %}
+ {%- do nservices.append('bagpipe-bgp') %}
+ {%- endif %}
{%- endif %}
diff --git a/tests/pillar/control_single.sls b/tests/pillar/control_single.sls
index f6fb4e2..75113f5 100644
--- a/tests/pillar/control_single.sls
+++ b/tests/pillar/control_single.sls
@@ -25,7 +25,7 @@
- flat
sriov_net:
mtu: 9000 # Optional, defaults to 1500
- vlan_range: '100:200' # Optional
+ vlan_range: '100:200,300:400' # Optional
types:
- vlan
ext_net2: