diff -Nru neutron-vpnaas-11.0.0/AUTHORS neutron-vpnaas-12.0.0/AUTHORS --- neutron-vpnaas-11.0.0/AUTHORS 2017-09-05 04:24:16.000000000 +0000 +++ neutron-vpnaas-12.0.0/AUTHORS 2018-01-30 22:35:20.000000000 +0000 @@ -42,6 +42,7 @@ Cao Xuan Hoang Carl Baldwin Cedric Brandily +Chandan Kumar Chang Bo Guo Christian Berendt Chuck Short @@ -61,6 +62,7 @@ Doug Hellmann Doug Wiegley Doug Wiegley +Duong Ha-Quang Edgar Magana Elena Ezhova Emilien Macchi @@ -79,6 +81,7 @@ Henry Gessau HenryVIII Hirofumi Ichihara +Hoang Trung Hieu Hunt Xu Ignacio Scopetta Ihar Hrachyshka @@ -201,6 +204,7 @@ Tyler Smith Van Hung Pham Vladislav Belogrudov +Vu Cong Tuan Wei Hu Weidong Shao Wu Wenxiang @@ -220,6 +224,7 @@ ZhiQiang Fan ZhiQiang Fan Zhongyue Luo +Zuul ajmiller alexpilotti armando-migliaccio @@ -252,6 +257,7 @@ nfedotov nick.zhuyj rabi +rajat29 ricolin rohitagarwalla ronak diff -Nru neutron-vpnaas-11.0.0/ChangeLog neutron-vpnaas-12.0.0/ChangeLog --- neutron-vpnaas-11.0.0/ChangeLog 2017-09-05 04:24:16.000000000 +0000 +++ neutron-vpnaas-12.0.0/ChangeLog 2018-01-30 22:35:20.000000000 +0000 @@ -1,12 +1,38 @@ CHANGES ======= -11.0.0 +12.0.0 ------ -* tox\_install.sh: Update for stable/pike -* Update UPPER\_CONSTRAINTS\_FILE for stable/pike -* Update .gitreview for stable/pike +* Zuul: Remove project name +* Updated from global requirements +* Switch to neutron-tempest-plugin for tempest tests +* [doc] Add testing VPNaaS with devstack +* devstack: adapt to lib/neutron +* [doc] add more info to contributor guide +* [doc] Add more info about vpnaas team +* [doc] Update for devstack configuration +* Move legacy jobs to project +* Updated from global requirements +* Updated from global requirements +* Fix usage of method ensure\_dir +* Remove setting of version/release from releasenotes +* Updated from global requirements +* use flavors api def from neutron-lib +* Updated from global requirements +* Redundant alias in import statement +* Updated from global requirements +* VPN as a Service (VPNaaS) Agent +* Switch to tempest.common.utils.requires\_ext +* Replace the usage of some aliases in tempest +* Cleanup test-requirements +* Update for os-testr 1.0.0 / stestr +* DB migration milestone for Pike +* Updated from global requirements +* Remove vestigate HUDSON\_PUBLISH\_DOCS reference +* devstack: Use entrypoint name for service\_plugin +* Fix to use "." to source script files +* Update reno for stable/pike 11.0.0.0rc1 ----------- @@ -51,6 +77,7 @@ * Add router\_id to query when check subnet is used by vpnservice * Update a py35 environment to tox and classifier * Use replace\_file from neutron-lib +* devstack: Adapt to lib/neutron * Adopt to new model classes' locations * devstack: Add neutron server config explicitly * doc: Fix a warning diff -Nru neutron-vpnaas-11.0.0/debian/changelog neutron-vpnaas-12.0.0/debian/changelog --- neutron-vpnaas-11.0.0/debian/changelog 2017-10-13 13:30:40.000000000 +0000 +++ neutron-vpnaas-12.0.0/debian/changelog 2018-02-14 15:03:56.000000000 +0000 @@ -1,3 +1,18 @@ +neutron-vpnaas (2:12.0.0-0ubuntu1) bionic; urgency=medium + + * New upstream release for OpenStack Queens. + * d/*: wrap-and-sort -bast. + * d/control: Update Standards-Version to 4.1.2. + * d/control: Bump debhelper compat to 10. + * d/control: Align (Build-)Depends with upstream. + * d/rules: Run tests with ostestr. + * d/control, d/rules, d/neutron-vpn-agent.*, python-neutron-vpnaas.install: + Drop neutron-vpn-agent binary as it is now loaded in the L3 agent + extension mechanism. For more info, see the following bug: + https://bugs.launchpad.net/bugs/1692128. + + -- Corey Bryant Wed, 14 Feb 2018 10:03:56 -0500 + neutron-vpnaas (2:11.0.0-0ubuntu1) artful; urgency=medium * d/control: Add rename package to BDs as d/rules needs it and it diff -Nru neutron-vpnaas-11.0.0/debian/compat neutron-vpnaas-12.0.0/debian/compat --- neutron-vpnaas-11.0.0/debian/compat 2017-10-13 13:30:40.000000000 +0000 +++ neutron-vpnaas-12.0.0/debian/compat 2018-02-14 15:03:56.000000000 +0000 @@ -1 +1 @@ -9 +10 diff -Nru neutron-vpnaas-11.0.0/debian/control neutron-vpnaas-12.0.0/debian/control --- neutron-vpnaas-11.0.0/debian/control 2017-10-13 13:30:40.000000000 +0000 +++ neutron-vpnaas-12.0.0/debian/control 2018-02-14 15:03:56.000000000 +0000 @@ -2,73 +2,87 @@ Section: python Priority: optional Maintainer: Ubuntu Developers -Build-Depends: debhelper (>= 9), - dh-python, - dh-systemd, - openstack-pkg-tools (>= 23~), - python-all, - python-pbr (>= 2.0.0), - python-setuptools, - python-sphinx (>= 1.5.1), -Build-Depends-Indep: alembic (>= 0.8.4), - python-coverage (>= 4.0), - python-fixtures (>= 3.0.0), - python-hacking, - python-jinja2 (>= 2.8), - python-mock (>= 1.2), - python-netaddr (>= 0.7.12), - python-neutron (>= 2:9.0.0), - python-neutron-lib (>= 1.3.0), - python-oslo.concurrency (>= 3.8.0), - python-oslo.config (>= 1:4.0.0), - python-oslo.db (>= 4.21.1), - python-oslo.log (>= 3.22.0), - python-oslo.messaging (>= 5.25.0), - python-oslo.serialization (>= 1.10.0), - python-oslo.service (>= 1.10.0), - python-oslo.utils (>= 3.20.0), - python-oslosphinx (>= 4.7.0), - python-oslotest (>= 1.10.0), - python-requests (>= 2.10.0), - python-requests-mock (>= 1.1), - python-six (>= 1.9.0), - python-sqlalchemy (>= 1.0.10), - python-tempest (>= 1:14.0.0), - python-testresources (>= 0.2.4), - python-testscenarios (>= 0.4), - python-testtools (>= 1.4.0), - python-webob (>= 1.7.1), - python-webtest (>= 2.0), - rename, - subunit (>= 0.0.18), - testrepository (>= 0.0.18), -Standards-Version: 3.9.6 +Build-Depends: + debhelper (>= 10~), + dh-python, + openstack-pkg-tools (>= 23~), + python-all, + python-pbr (>= 2.0.0), + python-setuptools, + python-sphinx (>= 1.6.2), +Build-Depends-Indep: + alembic (>= 0.8.10), + python-alembic (>= 0.8.10), + python-astroid, + python-coverage (>= 4.0), + python-fixtures (>= 3.0.0), + python-hacking (>= 0.12.0), + python-jinja2 (>= 2.8), + python-mock (>= 2.0.0), + python-netaddr (>= 0.7.18), + python-neutron (>= 2:9.0.0), + python-neutron-lib (>= 1.13.0), + python-openstackdocstheme (>= 1.18.1), + python-os-testr (>= 1.0.0), + python-oslo.concurrency (>= 3.25.0), + python-oslo.config (>= 1:5.1.0), + python-oslo.db (>= 4.27.0), + python-oslo.log (>= 3.36.0), + python-oslo.messaging (>= 5.29.0), + python-oslo.reports (>= 1.18.0), + python-oslo.serialization (>= 2.18.0), + python-oslo.service (>= 1.24.0), + python-oslo.utils (>= 3.33.0), + python-oslosphinx (>= 4.7.0), + python-oslotest (>= 1:3.2.0), + python-requests (>= 2.14.2), + python-requests-mock (>= 1.1.0), + python-six (>= 1.10.0), + python-sqlalchemy (>= 1.0.10), + python-tempest (>= 1:17.1.0), + python-testresources (>= 2.0.0), + python-testscenarios (>= 0.4), + python-testtools (>= 2.2.0), + python-webob (>= 1:1.7.1), + python-webtest (>= 2.0.27), + rename, + subunit (>= 0.0.18), + testrepository (>= 0.0.18), +Standards-Version: 4.1.2 Vcs-Git: git://git.launchpad.net/~ubuntu-server-dev/ubuntu/+source/neutron-vpnaas Vcs-Browser: https://git.launchpad.net/~ubuntu-server-dev/ubuntu/+source/neutron-vpnaas Homepage: http://github.com/openstack/neutron-vpnaas Package: python-neutron-vpnaas Architecture: all -Depends: alembic (>= 0.8.4), - python-jinja2 (>= 2.8), - python-netaddr (>= 0.7.12), - python-neutron (>= 2:9.0.0), - python-neutron-lib (>= 1.3.0), - python-oslo.concurrency (>= 3.8.0), - python-oslo.config (>= 1:4.0.0), - python-oslo.db (>= 4.21.1), - python-oslo.log (>= 3.22.0), - python-oslo.messaging (>= 5.25.0), - python-oslo.serialization (>= 1.10.0), - python-oslo.service (>= 1.10.0), - python-oslo.utils (>= 3.20.0), - python-requests (>= 2.10.0), - python-six (>= 1.9.0), - python-sqlalchemy (>= 1.0.10), - ${misc:Depends}, - ${python:Depends}, -Breaks: neutron-vpn-agent (<< 2:7.0.0~b3-0ubuntu2~), -Replaces: neutron-vpn-agent (<< 2:7.0.0~b3-0ubuntu2~), +Section: python +Depends: + alembic (>= 0.8.10), + python-alembic (>= 0.8.10), + python-jinja2 (>= 2.8), + python-netaddr (>= 0.7.18), + python-neutron (>= 2:9.0.0), + python-neutron-lib (>= 1.13.0), + python-oslo.concurrency (>= 3.25.0), + python-oslo.config (>= 1:5.1.0), + python-oslo.db (>= 4.27.0), + python-oslo.log (>= 3.36.0), + python-oslo.messaging (>= 5.29.0), + python-oslo.reports (>= 1.18.0), + python-oslo.serialization (>= 2.18.0), + python-oslo.service (>= 1.24.0), + python-oslo.utils (>= 3.33.0), + python-pbr (>= 2.0.0), + python-requests (>= 2.14.2), + python-six (>= 1.10.0), + python-sqlalchemy (>= 1.0.10), + strongswan (>= 5.1) | openswan, + ${misc:Depends}, + ${python:Depends}, +Breaks: + neutron-vpn-agent (<< 2:12.0.0-0ubuntu1~), +Replaces: + neutron-vpn-agent (<< 2:12.0.0-0ubuntu1~), Description: VPN-as-a-Service driver for OpenStack Neutron Neutron is a virtual network service for Openstack, and a part of Netstack. Just like OpenStack Nova provides an API to dynamically @@ -80,32 +94,3 @@ etc.) . This package provices the VPN-as-a-Service driver for Neutron. - -Package: neutron-vpn-agent -Architecture: all -Depends: conntrack, - iputils-arping, - keepalived, - neutron-common, - neutron-metadata-agent, - python-neutron-fwaas, - python-neutron-vpnaas (= ${source:Version}), - radvd, - strongswan (>= 5.1) | openswan, - ${misc:Depends}, - ${python:Depends}, - ${shlibs:Depends}, -Conflicts: neutron-l3-agent, -Breaks: neutron-common (<< 1:2015.1~b1-0ubuntu4~), -Replaces: neutron-common (<< 1:2015.1~b1-0ubuntu4~), -Description: Neutron is a virtual network service for Openstack - VPN agent - Neutron is a virtual network service for Openstack, and a part of - Netstack. Just like OpenStack Nova provides an API to dynamically - request and configure virtual servers, Neutron provides an API to - dynamically request and configure virtual networks. These networks - connect "interfaces" from other OpenStack services (e.g., virtual NICs - from Nova VMs). The Neutron API supports extensions to provide - advanced network capabilities (e.g., QoS, ACLs, network monitoring, - etc.) - . - This package provides the VPN agent, which also provides L3 agent support. diff -Nru neutron-vpnaas-11.0.0/debian/neutron-vpn-agent.init.in neutron-vpnaas-12.0.0/debian/neutron-vpn-agent.init.in --- neutron-vpnaas-11.0.0/debian/neutron-vpn-agent.init.in 2017-10-13 13:30:40.000000000 +0000 +++ neutron-vpnaas-12.0.0/debian/neutron-vpn-agent.init.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -#!/bin/sh -### BEGIN INIT INFO -# Provides: neutron-vpn-agent -# Required-Start: $network $local_fs $remote_fs $syslog -# Required-Stop: $remote_fs -# Should-Start: mysql postgresql rabbitmq-server keystone openvswitch-switch neutron-ovs-cleanup -# Should-Stop: mysql postgresql rabbitmq-server keystone openvswitch-switch -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Neutron VPN Agent agent -# Description: Provides VPN agent for neutron -### END INIT INFO - -# Author: Thomas Goirand - -# PATH should only include /usr/* if it runs after the mountnfs.sh script -PATH=/sbin:/usr/sbin:/bin:/usr/bin -DESC="OpenStack Neutron VPN Agent" -PROJECT_NAME=neutron -NAME=${PROJECT_NAME}-vpn-agent -# --config-file=/etc/neutron/neutron.conf will be happened -# to DAEMON_ARGS later by openstack-pkg-tools -DAEMON_ARGS="--config-file=/etc/neutron/l3_agent.ini --config-file=/etc/neutron/fwaas_driver.ini --config-file=/etc/neutron/vpn_agent.ini" diff -Nru neutron-vpnaas-11.0.0/debian/neutron-vpn-agent.install neutron-vpnaas-12.0.0/debian/neutron-vpn-agent.install --- neutron-vpnaas-11.0.0/debian/neutron-vpn-agent.install 2017-10-13 13:30:40.000000000 +0000 +++ neutron-vpnaas-12.0.0/debian/neutron-vpn-agent.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -etc/neutron/* etc/neutron -etc/vpn_agent.ini etc/neutron -usr/bin/neutron-vpn-agent usr/bin -usr/bin/neutron-vpn-netns-wrapper usr/bin diff -Nru neutron-vpnaas-11.0.0/debian/neutron-vpn-agent.upstart.in neutron-vpnaas-12.0.0/debian/neutron-vpn-agent.upstart.in --- neutron-vpnaas-11.0.0/debian/neutron-vpn-agent.upstart.in 2017-10-13 13:30:40.000000000 +0000 +++ neutron-vpnaas-12.0.0/debian/neutron-vpn-agent.upstart.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -# vim:set ft=upstart ts=2 et: -description "Neutron VPN Agent" -author "Chuck Short " - -start on runlevel [2345] -stop on runlevel [!2345] - -respawn - -chdir /var/run - -pre-start script - mkdir -p /var/run/neutron - chown neutron:root /var/run/neutron - # Check to see if openvswitch plugin in use by checking - # status of cleanup upstart configuration - if status neutron-ovs-cleanup; then - start wait-for-state WAIT_FOR=neutron-ovs-cleanup WAIT_STATE=running WAITER=neutron-vpn-agent - fi -end script - -exec start-stop-daemon --start --chuid neutron --exec /usr/bin/neutron-vpn-agent -- \ - --config-file=/etc/neutron/neutron.conf --config-file=/etc/neutron/vpn_agent.ini \ - --config-file=/etc/neutron/l3_agent.ini --config-file=/etc/neutron/fwaas_driver.ini \ - --log-file=/var/log/neutron/vpn_agent.log diff -Nru neutron-vpnaas-11.0.0/debian/python-neutron-vpnaas.install neutron-vpnaas-12.0.0/debian/python-neutron-vpnaas.install --- neutron-vpnaas-11.0.0/debian/python-neutron-vpnaas.install 2017-10-13 13:30:40.000000000 +0000 +++ neutron-vpnaas-12.0.0/debian/python-neutron-vpnaas.install 2018-02-14 15:03:56.000000000 +0000 @@ -1,2 +1,2 @@ -/usr/lib/python* etc/neutron_vpnaas.conf etc/neutron +etc/neutron/rootwrap.d/vpnaas.filters etc/neutron/rootwrap.d diff -Nru neutron-vpnaas-11.0.0/debian/rules neutron-vpnaas-12.0.0/debian/rules --- neutron-vpnaas-11.0.0/debian/rules 2017-10-13 13:30:40.000000000 +0000 +++ neutron-vpnaas-12.0.0/debian/rules 2018-02-14 15:03:56.000000000 +0000 @@ -6,7 +6,7 @@ include /usr/share/openstack-pkg-tools/pkgos.make %: - dh $@ --with python2,systemd --buildsystem=python_distutils + dh $@ --with python2 --buildsystem=python_distutils override_dh_install: PYTHONPATH=$(CURDIR) $(CURDIR)/tools/generate_config_file_samples.sh @@ -15,15 +15,9 @@ ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS))) override_dh_auto_test: - rm -rf .testrepository - testr init && \ - set -e && \ - TEMP_REZ=`mktemp -t` && \ - testr run --subunit neutron_vpnaas.tests.unit | tee $$TEMP_REZ | subunit2pyunit; \ - rm -f $$TEMP_REZ ; + PYTHONPATH=$(CURDIR) OS_TEST_PATH=./neutron_vpnaas/tests/unit ostestr endif override_dh_auto_clean: dh_auto_clean rm -rf .testrepository - rm -f debian/*.upstart debian/*.init debian/*.service diff -Nru neutron-vpnaas-11.0.0/devstack/lib/l3_agent neutron-vpnaas-12.0.0/devstack/lib/l3_agent --- neutron-vpnaas-11.0.0/devstack/lib/l3_agent 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/devstack/lib/l3_agent 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,18 @@ +# This file is completely based on one in the neutron repository here: +# http://git.openstack.org/cgit/openstack/neutron/tree/devstack/lib/l2_agent + +NEUTRON_L3_CONF=${NEUTRON_L3_CONF:-$Q_L3_CONF_FILE} + +function plugin_agent_add_l3_agent_extension { + local l3_agent_extension=$1 + if [[ -z "$L3_AGENT_EXTENSIONS" ]]; then + L3_AGENT_EXTENSIONS=$l3_agent_extension + elif [[ ! ,${L3_AGENT_EXTENSIONS}, =~ ,${l3_agent_extension}, ]]; then + L3_AGENT_EXTENSIONS+=",$l3_agent_extension" + fi +} + + +function configure_l3_agent { + iniset $NEUTRON_L3_CONF AGENT extensions "$L3_AGENT_EXTENSIONS" +} diff -Nru neutron-vpnaas-11.0.0/devstack/local_AIO.conf.sample neutron-vpnaas-12.0.0/devstack/local_AIO.conf.sample --- neutron-vpnaas-11.0.0/devstack/local_AIO.conf.sample 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/devstack/local_AIO.conf.sample 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,18 @@ +[[local|localrc]] +disable_service n-net +enable_service q-svc +enable_service q-agent +enable_service q-dhcp +enable_service q-l3 +enable_service q-meta +enable_plugin neutron-vpnaas https://git.openstack.org/openstack/neutron-vpnaas + +FIXED_RANGE=10.1.0.0/24 +FIXED_NETWORK_SIZE=256 +NETWORK_GATEWAY=10.1.0.1 +PRIVATE_SUBNET_NAME=privateA + +PUBLIC_SUBNET_NAME=public-subnet +FLOATING_RANGE=172.24.4.0/24 +PUBLIC_NETWORK_GATEWAY=172.24.4.10 +Q_FLOATING_ALLOCATION_POOL="start=172.24.4.11,end=172.24.4.29" diff -Nru neutron-vpnaas-11.0.0/devstack/local.conf.sample neutron-vpnaas-12.0.0/devstack/local.conf.sample --- neutron-vpnaas-11.0.0/devstack/local.conf.sample 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/devstack/local.conf.sample 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,15 @@ +[[local|localrc]] + +enable_plugin neutron-vpnaas https://git.openstack.org/openstack/neutron-vpnaas + +disable_service n-net +enable_service q-svc +enable_service q-agt +enable_service q-dhcp +enable_service q-l3 +enable_service q-meta +# Optional, to enable tempest configuration as part of devstack +enable_service tempest + +# IPsec driver to use. Optional, defaults to strongswan. +IPSEC_PACKAGE="strongswan" diff -Nru neutron-vpnaas-11.0.0/devstack/plugin.sh neutron-vpnaas-12.0.0/devstack/plugin.sh --- neutron-vpnaas-11.0.0/devstack/plugin.sh 2017-09-05 04:20:10.000000000 +0000 +++ neutron-vpnaas-12.0.0/devstack/plugin.sh 2018-01-30 22:29:58.000000000 +0000 @@ -3,9 +3,15 @@ VPNAAS_XTRACE=$(set +o | grep xtrace) set -o xtrace +# Source L3 agent extension management +LIBDIR=$DEST/neutron-vpnaas/devstack/lib +source $LIBDIR/l3_agent + +NEUTRON_L3_CONF=${NEUTRON_L3_CONF:-$Q_L3_CONF_FILE} + function neutron_vpnaas_install { setup_develop $NEUTRON_VPNAAS_DIR - if is_service_enabled q-l3; then + if is_service_enabled q-l3 neutron-l3; then neutron_agent_vpnaas_install_agent_packages fi } @@ -25,52 +31,30 @@ function neutron_vpnaas_configure_common { cp $NEUTRON_VPNAAS_DIR/etc/neutron_vpnaas.conf.sample $NEUTRON_VPNAAS_CONF neutron_server_config_add $NEUTRON_VPNAAS_CONF - _neutron_service_plugin_class_add $VPN_PLUGIN - _neutron_deploy_rootwrap_filters $NEUTRON_VPNAAS_DIR + neutron_service_plugin_class_add $VPN_PLUGIN + neutron_deploy_rootwrap_filters $NEUTRON_VPNAAS_DIR inicomment $NEUTRON_VPNAAS_CONF service_providers service_provider iniadd $NEUTRON_VPNAAS_CONF service_providers service_provider $NEUTRON_VPNAAS_SERVICE_PROVIDER - iniset $NEUTRON_CONF DEFAULT service_plugins $Q_SERVICE_PLUGIN_CLASSES -} - -function neutron_vpnaas_configure_db { - $NEUTRON_BIN_DIR/neutron-db-manage --subproject neutron-vpnaas --config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE upgrade head } function neutron_vpnaas_configure_agent { - local conf_file=${1:-$Q_VPN_CONF_FILE} - cp $NEUTRON_VPNAAS_DIR/etc/vpn_agent.ini.sample $conf_file + plugin_agent_add_l3_agent_extension vpnaas + configure_l3_agent if [[ "$IPSEC_PACKAGE" == "strongswan" ]]; then if is_fedora; then - iniset_multiline $conf_file vpnagent vpn_device_driver neutron_vpnaas.services.vpn.device_drivers.fedora_strongswan_ipsec.FedoraStrongSwanDriver + iniset_multiline $NEUTRON_L3_CONF vpnagent vpn_device_driver neutron_vpnaas.services.vpn.device_drivers.fedora_strongswan_ipsec.FedoraStrongSwanDriver else - iniset_multiline $conf_file vpnagent vpn_device_driver neutron_vpnaas.services.vpn.device_drivers.strongswan_ipsec.StrongSwanDriver + iniset_multiline $NEUTRON_L3_CONF vpnagent vpn_device_driver neutron_vpnaas.services.vpn.device_drivers.strongswan_ipsec.StrongSwanDriver fi elif [[ "$IPSEC_PACKAGE" == "libreswan" ]]; then - iniset_multiline $Q_VPN_CONF_FILE vpnagent vpn_device_driver neutron_vpnaas.services.vpn.device_drivers.libreswan_ipsec.LibreSwanDriver + iniset_multiline $NEUTRON_L3_CONF vpnagent vpn_device_driver neutron_vpnaas.services.vpn.device_drivers.libreswan_ipsec.LibreSwanDriver else - iniset_multiline $conf_file vpnagent vpn_device_driver $NEUTRON_VPNAAS_DEVICE_DRIVER + iniset_multiline $NEUTRON_L3_CONF vpnagent vpn_device_driver $NEUTRON_VPNAAS_DEVICE_DRIVER fi } -function neutron_vpnaas_start { - local cfg_file - local opts="--config-file $NEUTRON_CONF --config-file=$Q_L3_CONF_FILE --config-file=$Q_VPN_CONF_FILE" - for cfg_file in ${Q_VPN_EXTRA_CONF_FILES[@]}; do - opts+=" --config-file $cfg_file" - done - run_process neutron-vpnaas "$AGENT_VPN_BINARY $opts" -} - -function neutron_vpnaas_stop { - local ipsec_data_dir=$DATA_DIR/neutron/ipsec - local pids - if [ -d $ipsec_data_dir ]; then - pids=$(find $ipsec_data_dir -name 'pluto.pid' -exec cat {} \;) - fi - if [ -n "$pids" ]; then - sudo kill $pids - fi - stop_process neutron-vpnaas +function neutron_vpnaas_configure_db { + $NEUTRON_BIN_DIR/neutron-db-manage --subproject neutron-vpnaas --config-file $NEUTRON_CONF upgrade head } function neutron_vpnaas_generate_config_files { @@ -89,26 +73,15 @@ elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then neutron_vpnaas_generate_config_files neutron_vpnaas_configure_common - if is_service_enabled q-svc; then + if is_service_enabled q-svc neutron-api; then echo_summary "Configuring neutron-vpnaas on controller" neutron_vpnaas_configure_db fi - if is_service_enabled q-l3; then + if is_service_enabled q-l3 neutron-l3; then echo_summary "Configuring neutron-vpnaas agent" neutron_vpnaas_configure_agent fi -elif [[ "$1" == "stack" && "$2" == "extra" ]]; then - if is_service_enabled q-l3; then - echo_summary "Initializing neutron-vpnaas" - neutron_vpnaas_start - fi - -elif [[ "$1" == "unstack" ]]; then - if is_service_enabled q-l3; then - neutron_vpnaas_stop - fi - # NOP for clean step fi diff -Nru neutron-vpnaas-11.0.0/devstack/settings neutron-vpnaas-12.0.0/devstack/settings --- neutron-vpnaas-11.0.0/devstack/settings 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/devstack/settings 2018-01-30 22:29:58.000000000 +0000 @@ -1,11 +1,7 @@ # Settings for the VPNaaS devstack plugin -enable_service neutron-vpnaas - -AGENT_VPN_BINARY="$NEUTRON_BIN_DIR/neutron-vpn-agent" - # Plugin -VPN_PLUGIN=${VPN_PLUGIN:-"neutron_vpnaas.services.vpn.plugin.VPNDriverPlugin"} +VPN_PLUGIN=${VPN_PLUGIN:-"vpnaas"} # Service Driver NEUTRON_VPNAAS_SERVICE_PROVIDER=${NEUTRON_VPNAAS_SERVICE_PROVIDER:-"VPN:strongswan:neutron_vpnaas.services.vpn.service_drivers.ipsec.IPsecVPNDriver:default"} @@ -17,9 +13,6 @@ # Config files NEUTRON_CONF_DIR=${NEUTRON_CONF_DIR:-"/etc/neutron"} NEUTRON_VPNAAS_DIR=$DEST/neutron-vpnaas -Q_VPN_CONF_FILE=$NEUTRON_CONF_DIR/vpn_agent.ini NEUTRON_VPNAAS_CONF_FILE=neutron_vpnaas.conf NEUTRON_VPNAAS_CONF=$NEUTRON_CONF_DIR/$NEUTRON_VPNAAS_CONF_FILE - -declare -a Q_VPN_EXTRA_CONF_FILES diff -Nru neutron-vpnaas-11.0.0/doc/source/conf.py neutron-vpnaas-12.0.0/doc/source/conf.py --- neutron-vpnaas-11.0.0/doc/source/conf.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/doc/source/conf.py 2018-01-30 22:29:58.000000000 +0000 @@ -54,10 +54,6 @@ # Add any paths that contain templates here, relative to this directory. templates_path = [] -if os.getenv('HUDSON_PUBLISH_DOCS'): - templates_path = ['_ga', '_templates'] -else: - templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' diff -Nru neutron-vpnaas-11.0.0/doc/source/devref/devstack.rst neutron-vpnaas-12.0.0/doc/source/devref/devstack.rst --- neutron-vpnaas-11.0.0/doc/source/devref/devstack.rst 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/doc/source/devref/devstack.rst 2018-01-30 22:29:58.000000000 +0000 @@ -13,8 +13,8 @@ #. Each controller node requires database migrations in support of running VPNaaS. -#. Each network node that would run the L3 agent needs to run the Neutron - VPNaaS agent in its place. + +#. Each network node that would run VPNaaS L3 agent extension. Therefore, the devstack plugin script needs some extra logic. @@ -49,6 +49,3 @@ #. Apply database migrations on nodes that are running the controller (as determined by enabling the q-svc service), - -#. Run the VPNaaS agent on nodes that would normally be running the L3 agent - (as determined by enabling the q-l3 service). diff -Nru neutron-vpnaas-11.0.0/doc/source/devref/index.rst neutron-vpnaas-12.0.0/doc/source/devref/index.rst --- neutron-vpnaas-11.0.0/doc/source/devref/index.rst 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/doc/source/devref/index.rst 2018-01-30 22:29:58.000000000 +0000 @@ -23,6 +23,38 @@ flavors, design details on VPNaaS internals, and testing. Developers will extend this, as needed, in the future to contain more information. +If you would like to contribute to the development of OpenStack, you must +follow the steps documented at: +https://docs.openstack.org/infra/manual/developers.html + +Once those steps have been completed, changes to OpenStack should be submitted +for review via the Gerrit tool, following the workflow documented at: +https://docs.openstack.org/infra/manual/developers.html#development-workflow + +Pull requests submitted through GitHub will be ignored. + +Bugs should be filed on Launchpad in the `neutron`__ project with ``vpnaas`` tag added. + +New features should be filed on Launchpad in the `neutron`__ project with ``rfe`` tag +added in order to get decision from `neutron drivers`_ team. Before doing that, it is +recommended to check `Request for Feature Enhancements`_ (RFE) process. + +.. __: https://bugs.launchpad.net/neutron/+bugs?field.tag=vpnaas +.. __: https://bugs.launchpad.net/neutron/+bugs?field.tag=rfe +.. _`neutron drivers`: https://review.openstack.org/#/admin/groups/464,members +.. _`Request for Feature Enhancements`: https://docs.openstack.org/neutron/latest/contributor/policies/blueprints.html#neutron-request-for-feature-enhancements + +To get in touch with the neutron-vpnaas community, +look at the following resource: + +- Join the ``#openstack-vpnaas`` IRC channel on Freenode. This is where the + VPNaaS team is available for discussion. +- We will hold for `VPN-as-a-Service (bi-)weekly IRC meeting` + when needed in the near further. + +These are great places to get recommendations on where to start contributing +to neutron-vpnaas. + VPNaaS Team ----------- @@ -62,6 +94,7 @@ :maxdepth: 3 devstack + testing-with-devstack .. todo:: diff -Nru neutron-vpnaas-11.0.0/doc/source/devref/team.rst neutron-vpnaas-12.0.0/doc/source/devref/team.rst --- neutron-vpnaas-11.0.0/doc/source/devref/team.rst 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/doc/source/devref/team.rst 2018-01-30 22:29:58.000000000 +0000 @@ -1,13 +1,23 @@ +===================================== +Core reviewers and Driver maintainers +===================================== + +Core reviewers +-------------- + +The `Neutron VPNaaS Core Reviewer Team `_ +is responsible for many things that same as `Neutron team `_. + Driver maintainers -================== +------------------ The driver maintainers are supposed to try: - - Test the driver - - Fix bugs in the driver - - Keep the driver up-to-date for Neutron - - Keep the driver up-to-date for its backend - - Review relevant patches +- Test the driver +- Fix bugs in the driver +- Keep the driver up-to-date for Neutron +- Keep the driver up-to-date for its backend +- Review relevant patches The following is a list of drivers and their maintainers. It includes both of in-tree and out-of-tree drivers. diff -Nru neutron-vpnaas-11.0.0/doc/source/devref/testing-with-devstack.rst neutron-vpnaas-12.0.0/doc/source/devref/testing-with-devstack.rst --- neutron-vpnaas-11.0.0/doc/source/devref/testing-with-devstack.rst 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/doc/source/devref/testing-with-devstack.rst 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,288 @@ +============================ +Testing VPNaaS with devstack +============================ + +Installation +------------ + +In order to use Neutron-VPNaaS with `devstack `_ a single node setup, +you'll need the following settings in your local.conf. + +.. literalinclude:: ../../../devstack/local.conf.sample + + +You can find an example at `devstack/local.conf.sample +`_ +in the source tree. + +Quick Test Script +----------------- + +This quick test script creates two sites with a router, a network and a subnet connected +with public network. Then, connect both sites via VPN. + +You can find an example at `tools/test_script.sh +`_ +in the source tree. + +Using Two DevStack Nodes for Testing +------------------------------------ + +You can use two DevStack nodes connected by a common "public" network to test VPNaaS. +The second node can be set up with the same public network as the first node, except +it will use a different gateway IP (and hence router IP). In this example, we'll assume +we have two DevStack nodes (``East`` and ``West``), each running on hardware. + +.. note:: + + - You can do the same thing with multiple VM guests, if desired. + - You can also create similar topology using two virtual routers with one devstack. + +Example Topology +^^^^^^^^^^^^^^^^ + +.. code-block:: none + + (10.1.0.0/24 - DevStack East) + | + | 10.1.0.1 + [Neutron Router] + | 172.24.4.226 + | + | 172.24.4.225 + [Internet GW] + | + | + [Internet GW] + | 172.24.4.232 + | + | 172.24.4.233 + [Neutron Router] + | 10.2.0.1 + | + (10.2.0.0/24 DevStack West) + +DevStack Configuration +^^^^^^^^^^^^^^^^^^^^^^ + +For ``East`` you need to append the following lines to the local.conf, which will give you +a private net of 10.1.0.0/24 and public network of 172.24.4.0/24 + +.. code-block:: none + + PUBLIC_SUBNET_NAME=yoursubnet + PRIVATE_SUBNET_NAME=mysubnet + FIXED_RANGE=10.1.0.0/24 + NETWORK_GATEWAY=10.1.0.1 + PUBLIC_NETWORK_GATEWAY=172.24.4.225 + Q_FLOATING_ALLOCATION_POOL=start=172.24.4.226,end=172.24.4.231 + +For ``West`` you can add the following lines to local.conf to use a different local network, +public GW (and implicitly router) IP. + +.. code-block:: none + + PUBLIC_SUBNET_NAME=yoursubnet + PRIVATE_SUBNET_NAME=mysubnet + FIXED_RANGE=10.2.0.0/24 + NETWORK_GATEWAY=10.2.0.1 + PUBLIC_NETWORK_GATEWAY=172.24.4.232 + Q_FLOATING_ALLOCATION_POOL=start=172.24.4.233,end=172.24.4.238 + +VPNaaS Configuration +^^^^^^^^^^^^^^^^^^^^ + +With DevStack running on ``East`` and ``West`` and connectivity confirmed (make sure +you can ping one router/GW from the other), you can perform these VPNaaS CLI commands. + +On ``East`` + +.. code-block:: none + + neutron vpn-ikepolicy-create ikepolicy1 + neutron vpn-ipsecpolicy-create ipsecpolicy1 + neutron vpn-service-create --name myvpn --description "My vpn service" router1 + neutron vpn-endpoint-group-create --name my-locals --type subnet --value mysubnet + neutron vpn-endpoint-group-create --name my-peers --type cidr --value 10.2.0.0/24 + neutron ipsec-site-connection-create --name vpnconnection1 --vpnservice-id myvpn \ + --ikepolicy-id ikepolicy1 --ipsecpolicy-id ipsecpolicy1 --peer-address 172.24.4.233 \ + --peer-id 172.24.4.233 --local-ep-group my-locals --peer-ep-group my-peers --psk secret + +On ``West`` + +.. code-block:: none + + neutron vpn-ikepolicy-create ikepolicy1 + neutron vpn-ipsecpolicy-create ipsecpolicy1 + neutron vpn-service-create --name myvpn --description "My vpn service" router1 + neutron vpn-endpoint-group-create --name my-locals --type subnet --value mysubnet + neutron vpn-endpoint-group-create --name my-peers --type cidr --value 10.1.0.0/24 + neutron ipsec-site-connection-create --name vpnconnection1 --vpnservice-id myvpn \ + --ikepolicy-id ikepolicy1 --ipsecpolicy-id ipsecpolicy1 --peer-address 172.24.4.226 \ + --peer-id 172.24.4.226 --local-ep-group my-locals --peer-ep-group my-peers --psk secret + +.. note:: + + Make sure setup security group (open icmp for vpn subnet etc) + +Verification +^^^^^^^^^^^^ + +You can spin up VMs on each node, and then from the VM ping to the other one. +With tcpdump running on one of the nodes, you can see that pings appear +as encrypted packets (ESP). Note that BOOTP, IGMP, and the keepalive packets between +the two nodes are not encrypted (nor are pings between the two external IP addresses). + +Once stacked, VMs were created for testing, VPN IPsec commands used to establish connections +between the nodes, and security group rules added to allow ICMP and SSH. + +Using single DevStack and two routers for testing +------------------------------------------------- + +Simple instructions on how to setup a test environment where a VPNaaS IPsec +connection can be established using the reference implementation (StrongSwan). +This example uses VirtualBox running on laptop to provide a VM for running +DevStack. + +The idea here is to have a single OpenStack cloud created using DevStack, +two routers (one created automatically), two private networks (one created automatically) +10.1.0.0/24 and 10.2.0.0/24, a VM in each private network, and establish a VPN connection +between the two private nets, using the public network (172.24.4.0/24). + +Preparation +^^^^^^^^^^^ + +Create a VM (e.g. 4 GB RAM, 2 CPUs) running Ubuntu 16.04, with NAT I/F for +access to the Internet. Clone a DevStack repo with latest. + +DevStack Configuration +^^^^^^^^^^^^^^^^^^^^^^ + +For single DevStack and two routers case, You can find an example at `devstack/local_AIO.conf.sample +`_ +in the source tree. + +Start up the cloud using ``./stack.sh`` and ensure it completes successfully. +Once stacked, you can change ``RECLONE`` option in local.conf to No. + +Cloud Configuration +^^^^^^^^^^^^^^^^^^^ + +Once stacking is completed, you'll have a private network (10.1.0.0/24), and a router (router1). +To prepare for establishing a VPN connection, a second network, subnet, and router needs +to be created, and a VM spun up in each private network. + +.. code-block:: none + + # Create second net, subnet, router + source ~/devstack/openrc admin demo + neutron net-create privateB + neutron subnet-create --name subB privateB 10.2.0.0/24 --gateway 10.2.0.1 + neutron router-create routerB + neutron router-interface-add routerB subB + neutron router-gateway-set routerB public + + # Start up a VM in the privateA subnet. + PRIVATE_NET=`neutron net-list | grep 'private ' | cut -f 2 -d' '` + nova boot --flavor 1 --image cirros-0.3.5-x86_64-uec --nic net-id=$PRIVATE_NET peter + + # Start up a VM in the privateB subnet + PRIVATE_NETB=`neutron net-list | grep privateB | cut -f 2 -d' '` + nova boot --flavor 1 --image cirros-0.3.5-x86_64-uec --nic net-id=$PRIVATE_NETB paul + +At this point, you can verify that you have basic connectivity. + +.. note:: + + DevStack will create a static route that will allow you to ping the private interface IP of + router1 from privateB network. You can remove the route, if desired. + +IPsec Site-to-site Connection Creation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following commands will create the IPsec connection: + +.. code-block:: none + + # Create VPN connections + neutron vpn-ikepolicy-create ikepolicy + neutron vpn-ipsecpolicy-create ipsecpolicy + neutron vpn-service-create --name myvpn --description "My vpn service" router1 + neutron vpn-endpoint-group-create --name my-localsA --type subnet --value privateA + neutron vpn-endpoint-group-create --name my-peersA --type cidr --value 10.2.0.0/24 + neutron ipsec-site-connection-create --name vpnconnection1 --vpnservice-id myvpn \ + --ikepolicy-id ikepolicy --ipsecpolicy-id ipsecpolicy --peer-address 172.24.4.13 \ + --peer-id 172.24.4.13 --local-ep-group my-localsA --peer-ep-group my-peersA --psk secret + + neutron vpn-service-create --name myvpnB --description "My vpn serviceB" routerB + neutron vpn-endpoint-group-create --name my-localsB --type subnet --value subB + neutron vpn-endpoint-group-create --name my-peersB --type cidr --value 10.1.0.0/24 + neutron ipsec-site-connection-create --name vpnconnection2 --vpnservice-id myvpnB \ + --ikepolicy-id ikepolicy --ipsecpolicy-id ipsecpolicy --peer-address 172.24.4.11 \ + --peer-id 172.24.4.11 --local-ep-group my-localsB --peer-ep-group my-peersB --psk secret + +At this point (once the connections become active - which can take up to 30 seconds or so), +you should be able to ping from the VM in the privateA network, to the VM in the privateB +network. You'll see encrypted packets, if you tcpdump using the qg-# interface from one +of the router namespaces. If you delete one of the connections, you'll see that the pings +fail (if all works out correctly :)). + +.. note:: + + Because routerB is created manually, its public IP address may change (172.24.4.13 + in this case). + + +Multiple Local Subnets +^^^^^^^^^^^^^^^^^^^^^^ + +Early in Mitaka, IPsec site-to-site connections will support multiple local subnets, +in addition to the current multiple peer CIDRs. The multiple local subnet feature +is triggered by not specifying a local subnet, when creating a VPN service. +Backwards compatibility is maintained with single local subnets, by providing +the subnet in the VPN service creation. + +To support multiple local subnets, a new capability has been provided (since Liberty), +called "Endpoint Groups". Each endpoint group will define one or more endpoints of +a specific type, and can be used to specify both local and peer endpoints for +IPsec connections. The Endpoint Groups separate the "what gets connected" from +the "how to connect" for a VPN service, and can be used for different flavors +of VPN, in the future. An example: + +.. code-block:: none + + # Create VPN connections + neutron vpn-ikepolicy-create ikepolicy + neutron vpn-ipsecpolicy-create ipsecpolicy + neutron vpn-service-create --name myvpnC --description "My vpn service" router1 + +To prepare for an IPsec site-to-site, one would create an endpoint group for +the local subnets, and an endpoint group for the peer CIDRs, like so: + +.. code-block:: none + + neutron vpn-endpoint-group-create --name my-locals --type subnet --value privateA --value privateA2 + neutron vpn-endpoint-group-create --name my-peers --type cidr --value 10.2.0.0/24 --value 20.2.0.0/24 + +where privateA and privateA2 are two local (private) subnets, and 10.2.0.0/24 and 20.2.0.0/24 +are two CIDRs representing peer (private) subnets that will be used by a connection. +Then, when creating the IPsec site-to-site connection, these endpoint group IDs would +be specified, instead of the peer-cidrs attribute: + +.. code-block:: none + + neutron ipsec-site-connection-create --name vpnconnection3 --vpnservice-id myvpnC \ + --ikepolicy-id ikepolicy --ipsecpolicy-id ipsecpolicy --peer-address 172.24.4.11 \ + --peer-id 172.24.4.11 --local-ep-group my-locals --peer-ep-group my-peers --psk secret + +.. note:: + - The validation logic makes sure that endpoint groups and peer CIDRs are not intermixed. + - Endpoint group types are subnet, cidr, network, router, and vlan. + However, only subnet and cidr are implemented (for IPsec use). + - The endpoints in a group must be of the same type, although It can mix IP versions. + - For IPsec connections, validation currently enforces that the local and peer + endpoints all use the same IP version. + - IPsec connection validation requires that local endpoints are subnets, + and peer endpoints are CIDRs. + - Migration will convert information for any existing VPN services and connections to endpoint groups. + - The original APIs will work for backward compatibility. diff -Nru neutron-vpnaas-11.0.0/doc/source/devref/vpnaas-tempest-test.rst neutron-vpnaas-12.0.0/doc/source/devref/vpnaas-tempest-test.rst --- neutron-vpnaas-11.0.0/doc/source/devref/vpnaas-tempest-test.rst 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/doc/source/devref/vpnaas-tempest-test.rst 2018-01-30 22:29:58.000000000 +0000 @@ -33,7 +33,7 @@ +----------------------+--------------------------------------------------------+ | Name | EntryPoint | +----------------------+--------------------------------------------------------+ - | neutron_tests | neutron.tests.tempest.plugin:NeutronTempestPlugin | + | neutron_tests | neutron_tempest_plugin.plugin:NeutronTempestPlugin | | neutron_vpnaas_tests | neutron_vpnaas.tests.tempest.plugin:VPNTempestPlugin | +----------------------+--------------------------------------------------------+ diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/cmd/eventlet/agent.py neutron-vpnaas-12.0.0/neutron_vpnaas/cmd/eventlet/agent.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/cmd/eventlet/agent.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/cmd/eventlet/agent.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -# 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. - -from neutron_vpnaas.services.vpn import agent - - -def main(): - agent.main() diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/db/migration/alembic_migrations/versions/newton/contract/b6a2519ab7dc_rename_tenant_to_project.py neutron-vpnaas-12.0.0/neutron_vpnaas/db/migration/alembic_migrations/versions/newton/contract/b6a2519ab7dc_rename_tenant_to_project.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/db/migration/alembic_migrations/versions/newton/contract/b6a2519ab7dc_rename_tenant_to_project.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/db/migration/alembic_migrations/versions/newton/contract/b6a2519ab7dc_rename_tenant_to_project.py 2018-01-30 22:29:58.000000000 +0000 @@ -32,7 +32,7 @@ down_revision = '2cb4ee992b41' # milestone identifier, used by neutron-db-manage -neutron_milestone = [migration.NEWTON, migration.OCATA] +neutron_milestone = [migration.NEWTON, migration.OCATA, migration.PIKE] _INSPECTOR = None diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/db/migration/alembic_migrations/versions/pike/expand/95601446dbcc_add_flavor_id_to_vpnservices.py neutron-vpnaas-12.0.0/neutron_vpnaas/db/migration/alembic_migrations/versions/pike/expand/95601446dbcc_add_flavor_id_to_vpnservices.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/db/migration/alembic_migrations/versions/pike/expand/95601446dbcc_add_flavor_id_to_vpnservices.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/db/migration/alembic_migrations/versions/pike/expand/95601446dbcc_add_flavor_id_to_vpnservices.py 2018-01-30 22:29:58.000000000 +0000 @@ -28,6 +28,12 @@ from alembic import op import sqlalchemy as sa +from neutron.db import migration + + +# milestone identifier, used by neutron-db-manage +neutron_milestone = [migration.PIKE] + def upgrade(): op.add_column('vpnservices', diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/extensions/vpnaas.py neutron-vpnaas-12.0.0/neutron_vpnaas/extensions/vpnaas.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/extensions/vpnaas.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/extensions/vpnaas.py 2018-01-30 22:29:58.000000000 +0000 @@ -17,7 +17,7 @@ from neutron_lib.api import converters from neutron_lib.api import extensions -from neutron_lib.api import validators as validators +from neutron_lib.api import validators from neutron_lib.db import constants as db_const from neutron_lib import exceptions as nexception from neutron_lib.plugins import constants as nconstants diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/services/vpn/agent.py neutron-vpnaas-12.0.0/neutron_vpnaas/services/vpn/agent.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/services/vpn/agent.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/services/vpn/agent.py 2018-01-30 22:29:58.000000000 +0000 @@ -1,4 +1,5 @@ # Copyright 2013, Nachi Ueno, NTT I3, Inc. +# Copyright 2017, Fujitsu Limited # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -14,13 +15,15 @@ # under the License. -from neutron.agent.l3 import agent as l3_agent -from neutron.agent import l3_agent as entry +from neutron_lib.agent import l3_extension from oslo_config import cfg +from oslo_log import log as logging from neutron_vpnaas._i18n import _ from neutron_vpnaas.services.vpn import vpn_service +LOG = logging.getLogger(__name__) + vpn_agent_opts = [ cfg.MultiStrOpt( 'vpn_device_driver', @@ -43,19 +46,52 @@ cfg.CONF.register_opts(vpn_agent_opts, 'vpnagent') -class VPNAgent(l3_agent.L3NATAgentWithStateReport): - """VPNAgent class which can handle vpn service drivers.""" - def __init__(self, host, conf=None): - super(VPNAgent, self).__init__(host=host, conf=conf) - self.agent_state['binary'] = 'neutron-vpn-agent' +class VPNAgent(l3_extension.L3AgentExtension): + """VPNaaS Agent support to be used by Neutron L3 agent.""" + + def initialize(self, connection, driver_type): + LOG.debug("Loading VPNaaS") + + def consume_api(self, agent_api): + LOG.debug("Loading consume_api for VPNaaS") + self.agent_api = agent_api + + def __init__(self, host, conf): + LOG.debug("Initializing VPNaaS agent") + self.agent_api = None + self.conf = conf + self.host = host self.service = vpn_service.VPNService(self) - self.device_drivers = self.service.load_device_drivers(host) + self.device_drivers = self.service.load_device_drivers(self.host) + + def add_router(self, context, data): + """Handles router add event""" + ri = self.agent_api.get_router_info(data['id']) + if ri is not None: + for device_driver in self.device_drivers: + device_driver.create_router(ri) + device_driver.sync(context, [ri.router]) + else: + LOG.debug("Router %s was concurrently deleted while " + "creating VPN for it", data['id']) + + def update_router(self, context, data): + """Handles router update event""" + for device_driver in self.device_drivers: + device_driver.sync(context, [data]) + + def delete_router(self, context, data): + """Handles router delete event""" + for device_driver in self.device_drivers: + device_driver.destroy_router(data) - def process_state_change(self, router_id, state): + def ha_state_change(self, context, data): """Enable the vpn process when router transitioned to master. - And disable vpn process for backup router. + And disable vpn process for backup router. """ + router_id = data['router_id'] + state = data['state'] for device_driver in self.device_drivers: if router_id in device_driver.processes: process = device_driver.processes[router_id] @@ -64,11 +100,13 @@ else: process.disable() - def enqueue_state_change(self, router_id, state): - """Handle HA router state changes for vpn process""" - self.process_state_change(router_id, state) - super(VPNAgent, self).enqueue_state_change(router_id, state) +class L3WithVPNaaS(VPNAgent): -def main(): - entry.main(manager='neutron_vpnaas.services.vpn.agent.VPNAgent') + def __init__(self, conf=None): + if conf: + self.conf = conf + else: + self.conf = cfg.CONF + super(L3WithVPNaaS, self).__init__( + host=self.conf.host, conf=self.conf) diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/services/vpn/device_drivers/ipsec.py neutron-vpnaas-12.0.0/neutron_vpnaas/services/vpn/device_drivers/ipsec.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/services/vpn/device_drivers/ipsec.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/services/vpn/device_drivers/ipsec.py 2018-01-30 22:29:58.000000000 +0000 @@ -26,7 +26,6 @@ from neutron.agent.linux import ip_lib from neutron.agent.linux import utils as agent_utils from neutron.common import rpc as n_rpc -from neutron.common import utils as n_utils from neutron.plugins.common import utils as plugin_utils from neutron_lib.api import validators from neutron_lib import constants @@ -38,6 +37,7 @@ from oslo_log import log as logging import oslo_messaging from oslo_service import loopingcall +from oslo_utils import fileutils import six from neutron_vpnaas._i18n import _ @@ -238,10 +238,10 @@ def ensure_config_dir(self, vpnservice): """Create config directory if it does not exist.""" - n_utils.ensure_dir(self.config_dir) + fileutils.ensure_tree(self.config_dir, 0o755) for subdir in self.CONFIG_DIRS: dir_path = os.path.join(self.config_dir, subdir) - n_utils.ensure_dir(dir_path) + fileutils.ensure_tree(dir_path, 0o755) def _gen_config_content(self, template_file, vpnservice): template = _get_template(template_file) diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/services/vpn/plugin.py neutron-vpnaas-12.0.0/neutron_vpnaas/services/vpn/plugin.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/services/vpn/plugin.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/services/vpn/plugin.py 2018-01-30 22:29:58.000000000 +0000 @@ -15,11 +15,12 @@ # under the License. from neutron.db import servicetype_db as st_db -from neutron.extensions import flavors from neutron.services.flavors import flavors_plugin from neutron.services import provider_configuration as pconf from neutron.services import service_base from neutron_lib import context as ncontext +from neutron_lib import exceptions as lib_exc +from neutron_lib.exceptions import flavors as flav_exc from neutron_lib.plugins import constants from neutron_lib.plugins import directory from oslo_log import log as logging @@ -124,10 +125,10 @@ fl_db = flavors_plugin.FlavorsPlugin.get_flavor( self._flavors_plugin, context, flavor_id) if fl_db['service_type'] != constants.VPN: - raise flavors.InvalidFlavorServiceType( + raise lib_exc.InvalidServiceType( service_type=fl_db['service_type']) if not fl_db['enabled']: - raise flavors.FlavorDisabled() + raise flav_exc.FlavorDisabled() providers = flavors_plugin.FlavorsPlugin.get_flavor_next_provider( self._flavors_plugin, context, fl_db['id']) provider = providers[0].get('provider') diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/services/vpn/vpn_service.py neutron-vpnaas-12.0.0/neutron_vpnaas/services/vpn/vpn_service.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/services/vpn/vpn_service.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/services/vpn/vpn_service.py 2018-01-30 22:29:58.000000000 +0000 @@ -14,9 +14,6 @@ # under the License. from neutron.services import provider_configuration as provconfig -from neutron_lib.callbacks import events -from neutron_lib.callbacks import registry -from neutron_lib.callbacks import resources from oslo_log import log as logging from oslo_utils import importutils @@ -31,16 +28,7 @@ """VPN Service observer.""" def __init__(self, l3_agent): - """Creates a VPN Service instance with context.""" - # TODO(pc_m): Replace l3_agent argument with config, once none of the - # device driver implementations need the L3 agent. self.conf = l3_agent.conf - registry.subscribe( - router_added_actions, resources.ROUTER, events.AFTER_CREATE) - registry.subscribe( - router_removed_actions, resources.ROUTER, events.BEFORE_DELETE) - registry.subscribe( - router_updated_actions, resources.ROUTER, events.AFTER_UPDATE) def load_device_drivers(self, host): """Loads one or more device drivers for VPNaaS.""" @@ -57,25 +45,3 @@ raise vpnaas.DeviceDriverImportError( device_driver=device_driver) return drivers - - -def router_added_actions(resource, event, l3_agent, **kwargs): - """Create the router and sync for each loaded device driver.""" - router = kwargs['router'] - for device_driver in l3_agent.device_drivers: - device_driver.create_router(router) - device_driver.sync(l3_agent.context, [router.router]) - - -def router_removed_actions(resource, event, l3_agent, **kwargs): - """Remove the router from each loaded device driver.""" - router = kwargs['router'] - for device_driver in l3_agent.device_drivers: - device_driver.destroy_router(router.router_id) - - -def router_updated_actions(resource, event, l3_agent, **kwargs): - """Perform a sync on each loaded device driver.""" - router = kwargs['router'] - for device_driver in l3_agent.device_drivers: - device_driver.sync(l3_agent.context, [router.router]) diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/tests/contrib/post_test_hook.sh neutron-vpnaas-12.0.0/neutron_vpnaas/tests/contrib/post_test_hook.sh --- neutron-vpnaas-11.0.0/neutron_vpnaas/tests/contrib/post_test_hook.sh 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/tests/contrib/post_test_hook.sh 2018-01-30 22:29:58.000000000 +0000 @@ -11,11 +11,11 @@ function generate_testr_results { # Give job user rights to access tox logs sudo -H -u $owner chmod o+rw . - sudo -H -u $owner chmod o+rw -R .testrepository - if [ -f ".testrepository/0" ] ; then - .tox/$VENV/bin/subunit-1to2 < .testrepository/0 > ./testrepository.subunit - $SCRIPTS_DIR/subunit2html ./testrepository.subunit testr_results.html - gzip -9 ./testrepository.subunit + sudo -H -u $owner chmod o+rw -R .stestr + if [ -f ".stestr/0" ] ; then + .tox/$VENV/bin/subunit-1to2 < .stestr/0 > ./stestr.subunit + $SCRIPTS_DIR/subunit2html ./stestr.subunit testr_results.html + gzip -9 ./stestr.subunit gzip -9 ./testr_results.html sudo mv ./*.gz /opt/stack/logs/ fi diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/tests/functional/common/test_scenario.py neutron-vpnaas-12.0.0/neutron_vpnaas/tests/functional/common/test_scenario.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/tests/functional/common/test_scenario.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/tests/functional/common/test_scenario.py 2018-01-30 22:29:58.000000000 +0000 @@ -13,11 +13,12 @@ import collections import copy import functools -import os import mock import netaddr from neutron.agent.common import ovs_lib +from neutron.agent.l3 import agent as neutron_l3_agent +from neutron.agent.l3 import l3_agent_extensions_manager as ext_manager from neutron.agent.l3 import namespaces as n_namespaces from neutron.agent.l3 import router_info from neutron.agent import l3_agent as l3_agent_main @@ -189,6 +190,7 @@ 'id': _uuid(), 'admin_state_up': True, 'network_id': _uuid(), + 'mtu': 1500, 'mac_address': n_utils.get_random_mac(MAC_BASE), 'subnets': [ { @@ -211,6 +213,7 @@ def generate_router_info(self): self.info = copy.deepcopy(FAKE_ROUTER) self.info['id'] = _uuid() + self.info['project_id'] = _uuid() self.info['_interfaces'] = [ self._generate_private_interface_for_router(subnet) for subnet in self.private_nets] @@ -281,13 +284,13 @@ class TestIPSecBase(base.BaseSudoTestCase): - vpn_agent_ini = os.environ.get('VPN_AGENT_INI', - '/etc/neutron/vpn_agent.ini') NESTED_NAMESPACE_SEPARATOR = '@' def setUp(self): super(TestIPSecBase, self).setUp() mock.patch('neutron.agent.l3.agent.L3PluginApi').start() + mock.patch('neutron_vpnaas.services.vpn.device_drivers.ipsec.' + 'IPsecVpnDriverApi').start() # avoid report_status running periodically mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall').start() # Both the vpn agents try to use execute_rootwrap_daemon's socket @@ -306,7 +309,10 @@ # Can reproduce the exception in the test only ip_lib.send_ip_addr_adv_notif = mock.Mock() - self.vpn_agent = self._configure_agent('agent1') + self.conf = self._configure_agent('agent1') + self.agent = neutron_l3_agent.L3NATAgentWithStateReport('agent1', + self.conf) + self.vpn_agent = vpn_agent.L3WithVPNaaS(self.conf) self.driver = self.vpn_agent.device_drivers[0] self.driver.agent_rpc.get_vpn_services_on_host = mock.Mock( return_value=[]) @@ -340,6 +346,7 @@ logging.register_options(config) agent_config.register_process_monitor_opts(config) + ext_manager.register_opts(config) return config def _configure_agent(self, host): @@ -348,6 +355,7 @@ l3_agent_main.register_opts(config) cfg.CONF.set_override('debug', True) agent_config.setup_logging() + config.set_override('extensions', ['vpnaas'], 'agent') config.set_override( 'interface_driver', 'neutron.agent.linux.interface.OVSInterfaceDriver') @@ -372,13 +380,11 @@ config.set_override('config_base_dir', ipsec_config_base_dir, group='ipsec') - config(['--config-file', self.vpn_agent_ini]) - # Assign ip address to br-ex port because it is a gateway ex_port = ip_lib.IPDevice(br_ex.br_name) ex_port.addr.add(str(PUBLIC_NET[1])) - return vpn_agent.VPNAgent(host, config) + return config def _setup_failover_agent(self): self.failover_agent = self._configure_agent('agent2') @@ -456,12 +462,12 @@ """ if l3ha: site = SiteInfoWithHaRouter(public_net, private_nets, - self.vpn_agent.host, + self.agent.host, self.failover_agent.host) else: site = SiteInfo(public_net, private_nets) - site.router = self.create_router(self.vpn_agent, site.info) + site.router = self.create_router(self.agent, site.info) if l3ha: backup_info = site.generate_backup_router_info() site.backup_router = self.create_router(self.failover_agent, @@ -503,6 +509,8 @@ peer_router_id = site2.router.router_id self.driver.sync(mock.Mock(), [{'id': local_router_id}, {'id': peer_router_id}]) + self.agent._process_updated_router(site1.router.router) + self.agent._process_updated_router(site2.router.router) self.addCleanup(self.driver._delete_vpn_processes, [local_router_id, peer_router_id], []) diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/tests/functional/strongswan/test_strongswan_driver.py neutron-vpnaas-12.0.0/neutron_vpnaas/tests/functional/strongswan/test_strongswan_driver.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/tests/functional/strongswan/test_strongswan_driver.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/tests/functional/strongswan/test_strongswan_driver.py 2018-01-30 22:29:58.000000000 +0000 @@ -16,6 +16,7 @@ import os import mock +from neutron.agent.l3 import agent as neutron_l3_agent from neutron.agent.l3 import legacy_router from neutron.conf.agent.l3 import config as l3_config from neutron.tests.functional import base @@ -23,6 +24,7 @@ from oslo_config import cfg from oslo_utils import uuidutils +from neutron_vpnaas.services.vpn import agent as vpn_agent from neutron_vpnaas.services.vpn.device_drivers import ipsec from neutron_vpnaas.services.vpn.device_drivers import strongswan_ipsec from neutron_vpnaas.tests.functional.common import test_scenario @@ -167,6 +169,24 @@ class TestStrongSwanScenario(test_scenario.TestIPSecBase): + def setUp(self): + super(TestStrongSwanScenario, self).setUp() + self.conf.register_opts(strongswan_ipsec.strongswan_opts, + 'strongswan') + VPNAAS_STRONGSWAN_DEVICE = ('neutron_vpnaas.services.vpn.' + 'device_drivers.strongswan_ipsec.' + 'StrongSwanDriver') + cfg.CONF.set_override('vpn_device_driver', + [VPNAAS_STRONGSWAN_DEVICE], + 'vpnagent') + self.agent = neutron_l3_agent.L3NATAgentWithStateReport('agent1', + self.conf) + self.vpn_agent = vpn_agent.L3WithVPNaaS(self.conf) + vpn_service = mock.Mock() + vpn_service.conf = self.conf + self.driver = strongswan_ipsec.StrongSwanDriver( + vpn_service, host=mock.sentinel.host) + def _override_ikepolicy_for_site(self, site, ikepolicy): ipsec_connection = site.vpn_service['ipsec_site_connections'][0] ipsec_connection['ikepolicy'] = ikepolicy diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/tests/tempest/api/base.py neutron-vpnaas-12.0.0/neutron_vpnaas/tests/tempest/api/base.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/tests/tempest/api/base.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/tests/tempest/api/base.py 2018-01-30 22:29:58.000000000 +0000 @@ -16,8 +16,8 @@ from tempest.lib.common.utils import data_utils -from neutron.tests.tempest.api import base -from neutron.tests.tempest import config +from neutron_tempest_plugin.api import base +from neutron_tempest_plugin import config from neutron_vpnaas.tests.tempest.api import clients @@ -157,5 +157,5 @@ @classmethod def setup_clients(cls): super(BaseAdminNetworkTest, cls).setup_clients() - cls.admin_client = cls.os_adm.network_client - cls.identity_admin_client = cls.os_adm.tenants_client + cls.admin_client = cls.os_admin.network_client + cls.identity_admin_client = cls.os_admin.tenants_client diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/tests/tempest/api/clients.py neutron-vpnaas-12.0.0/neutron_vpnaas/tests/tempest/api/clients.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/tests/tempest/api/clients.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/tests/tempest/api/clients.py 2018-01-30 22:29:58.000000000 +0000 @@ -14,9 +14,9 @@ # License for the specific language governing permissions and limitations # under the License. -from neutron.tests.tempest.api import clients as manager -from neutron.tests.tempest import config -from neutron.tests.tempest.services.network.json import network_client +from neutron_tempest_plugin.api import clients as manager +from neutron_tempest_plugin import config +from neutron_tempest_plugin.services.network.json import network_client CONF = config.CONF diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/tests/tempest/api/test_vpnaas.py neutron-vpnaas-12.0.0/neutron_vpnaas/tests/tempest/api/test_vpnaas.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/tests/tempest/api/test_vpnaas.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/tests/tempest/api/test_vpnaas.py 2018-01-30 22:29:58.000000000 +0000 @@ -19,7 +19,7 @@ from tempest.lib import exceptions as lib_exc from tempest import test -from neutron.tests.tempest import config +from neutron_tempest_plugin import config from neutron_vpnaas.tests.tempest.api import base diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/tests/tempest/scenario/base.py neutron-vpnaas-12.0.0/neutron_vpnaas/tests/tempest/scenario/base.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/tests/tempest/scenario/base.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/tests/tempest/scenario/base.py 2018-01-30 22:29:58.000000000 +0000 @@ -13,7 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. -from neutron.tests.tempest.scenario import base +from neutron_tempest_plugin.scenario import base from neutron_vpnaas.tests.tempest.api import base as base_api diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/tests/tempest/scenario/test_vpnaas.py neutron-vpnaas-12.0.0/neutron_vpnaas/tests/tempest/scenario/test_vpnaas.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/tests/tempest/scenario/test_vpnaas.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/tests/tempest/scenario/test_vpnaas.py 2018-01-30 22:29:58.000000000 +0000 @@ -15,15 +15,14 @@ import netaddr +from tempest.common import utils from tempest.common import waiters - from tempest.lib.common import ssh from tempest.lib.common.utils import data_utils from tempest.lib import decorators -from tempest import test -from neutron.tests.tempest import config -from neutron.tests.tempest.scenario import constants +from neutron_tempest_plugin import config +from neutron_tempest_plugin.scenario import constants from neutron_vpnaas.tests.tempest.scenario import base @@ -57,13 +56,13 @@ credentials = ['primary', 'admin'] @classmethod - @test.requires_ext(extension="vpnaas", service="network") + @utils.requires_ext(extension="vpnaas", service="network") def resource_setup(cls): super(Vpnaas, cls).resource_setup() # common cls.keypair = cls.create_keypair() - cls.secgroup = cls.manager.network_client.create_security_group( + cls.secgroup = cls.os_primary.network_client.create_security_group( name=data_utils.rand_name('secgroup-'))['security_group'] cls.security_groups.append(cls.secgroup) cls.create_loginable_secgroup_rule(secgroup_id=cls.secgroup['id']) @@ -113,7 +112,7 @@ image_ref=CONF.compute.image_ref, key_name=self.keypair['name'], networks=[{'port': port['id']}])['server'] - waiters.wait_for_server_status(self.manager.servers_client, + waiters.wait_for_server_status(self.os_primary.servers_client, server['id'], constants.SERVER_STATUS_ACTIVE) return {'port': port, 'fip': fip, 'server': server} diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/tests/unit/services/vpn/test_plugin.py neutron-vpnaas-12.0.0/neutron_vpnaas/tests/unit/services/vpn/test_plugin.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/tests/unit/services/vpn/test_plugin.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/tests/unit/services/vpn/test_plugin.py 2018-01-30 22:29:58.000000000 +0000 @@ -16,13 +16,14 @@ import mock from neutron.db import servicetype_db as st_db -from neutron.extensions import flavors from neutron.services.flavors.flavors_plugin import FlavorsPlugin from neutron.tests.unit.db import test_agentschedulers_db from neutron.tests.unit.extensions import test_agent as test_agent_ext_plugin from neutron_lib import constants as lib_constants from neutron_lib import context +from neutron_lib import exceptions as lib_exc +from neutron_lib.exceptions import flavors as flav_exc from neutron_lib.plugins import constants as p_constants from neutron_lib.plugins import directory from oslo_utils import uuidutils @@ -288,7 +289,7 @@ with self.vpnservices_providers_set(): driver_plugin = vpn_plugin.VPNDriverPlugin() self.assertRaises( - flavors.InvalidFlavorServiceType, + lib_exc.InvalidServiceType, driver_plugin._get_provider_for_flavor, self.adminContext, _uuid()) @@ -303,7 +304,7 @@ with self.vpnservices_providers_set(): driver_plugin = vpn_plugin.VPNDriverPlugin() self.assertRaises( - flavors.FlavorDisabled, + flav_exc.FlavorDisabled, driver_plugin._get_provider_for_flavor, self.adminContext, _uuid()) diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas/tests/unit/services/vpn/test_vpn_service.py neutron-vpnaas-12.0.0/neutron_vpnaas/tests/unit/services/vpn/test_vpn_service.py --- neutron-vpnaas-11.0.0/neutron_vpnaas/tests/unit/services/vpn/test_vpn_service.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas/tests/unit/services/vpn/test_vpn_service.py 2018-01-30 22:29:58.000000000 +0000 @@ -14,7 +14,6 @@ # under the License. import mock -from neutron.agent.l3 import legacy_router from neutron_lib.callbacks import registry from oslo_config import cfg from oslo_utils import uuidutils @@ -90,43 +89,3 @@ 'vpnagent') self.assertRaises(vpnaas.DeviceDriverImportError, self.service.load_device_drivers, 'host') - - -class TestVPNServiceEventHandlers(VPNBaseTestCase): - - def setUp(self): - super(TestVPNServiceEventHandlers, self).setUp() - self.l3_agent = mock.Mock() - self.l3_agent.context = mock.sentinel.context - mock.patch.object(registry, 'subscribe').start() - self.service = vpn_service.VPNService(mock.Mock()) - self.device_driver = mock.Mock() - self.l3_agent.device_drivers = [self.device_driver] - - def test_router_added_actions(self): - ri = legacy_router.LegacyRouter(router_id=FAKE_ROUTER_ID, - agent=self.l3_agent, - **self.ri_kwargs) - vpn_service.router_added_actions(mock.Mock(), mock.Mock(), - self.l3_agent, router=ri) - self.device_driver.create_router.assert_called_once_with(ri) - self.device_driver.sync.assert_called_once_with(self.l3_agent.context, - [ri.router]) - - def test_router_removed_actions(self): - ri = legacy_router.LegacyRouter(router_id=FAKE_ROUTER_ID, - agent=self.l3_agent, - **self.ri_kwargs) - vpn_service.router_removed_actions(mock.Mock(), mock.Mock(), - self.l3_agent, router=ri) - self.device_driver.destroy_router.assert_called_once_with( - FAKE_ROUTER_ID) - - def test_router_updated_actions(self): - ri = legacy_router.LegacyRouter(router_id=FAKE_ROUTER_ID, - agent=self.l3_agent, - **self.ri_kwargs) - vpn_service.router_updated_actions(mock.Mock(), mock.Mock(), - self.l3_agent, router=ri) - self.device_driver.sync.assert_called_once_with(self.l3_agent.context, - [ri.router]) diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas.egg-info/entry_points.txt neutron-vpnaas-12.0.0/neutron_vpnaas.egg-info/entry_points.txt --- neutron-vpnaas-11.0.0/neutron_vpnaas.egg-info/entry_points.txt 2017-09-05 04:24:16.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas.egg-info/entry_points.txt 2018-01-30 22:35:20.000000000 +0000 @@ -1,5 +1,4 @@ [console_scripts] -neutron-vpn-agent = neutron_vpnaas.cmd.eventlet.agent:main neutron-vpn-netns-wrapper = neutron_vpnaas.services.vpn.common.netns_wrapper:main neutron-vyatta-agent = neutron_vpnaas.cmd.eventlet.vyatta_agent:main @@ -8,6 +7,9 @@ neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver = neutron_vpnaas.services.vpn.device_drivers.ipsec:OpenSwanDriver neutron.services.vpn.device_drivers.vyatta_ipsec.VyattaIPsecDriver = neutron_vpnaas.services.vpn.device_drivers.vyatta_ipsec:VyattaIPsecDriver +[neutron.agent.l3.extensions] +vpnaas = neutron_vpnaas.services.vpn.agent:L3WithVPNaaS + [neutron.db.alembic_migrations] neutron-vpnaas = neutron_vpnaas.db.migration:alembic_migrations diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas.egg-info/pbr.json neutron-vpnaas-12.0.0/neutron_vpnaas.egg-info/pbr.json --- neutron-vpnaas-11.0.0/neutron_vpnaas.egg-info/pbr.json 2017-09-05 04:24:16.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas.egg-info/pbr.json 2018-01-30 22:35:20.000000000 +0000 @@ -1 +1 @@ -{"git_version": "60e4e71", "is_release": true} \ No newline at end of file +{"git_version": "1ec25e8", "is_release": true} \ No newline at end of file diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas.egg-info/PKG-INFO neutron-vpnaas-12.0.0/neutron_vpnaas.egg-info/PKG-INFO --- neutron-vpnaas-11.0.0/neutron_vpnaas.egg-info/PKG-INFO 2017-09-05 04:24:16.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas.egg-info/PKG-INFO 2018-01-30 22:35:20.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: neutron-vpnaas -Version: 11.0.0 +Version: 12.0.0 Summary: OpenStack Networking VPN as a Service Home-page: https://www.openstack.org/ Author: OpenStack diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas.egg-info/requires.txt neutron-vpnaas-12.0.0/neutron_vpnaas.egg-info/requires.txt --- neutron-vpnaas-11.0.0/neutron_vpnaas.egg-info/requires.txt 2017-09-05 04:24:16.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas.egg-info/requires.txt 2018-01-30 22:35:20.000000000 +0000 @@ -1,17 +1,17 @@ pbr!=2.1.0,>=2.0.0 requests>=2.14.2 Jinja2!=2.9.0,!=2.9.1,!=2.9.2,!=2.9.3,!=2.9.4,>=2.8 -netaddr!=0.7.16,>=0.7.13 +netaddr>=0.7.18 SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 alembic>=0.8.10 -six>=1.9.0 -neutron-lib>=1.9.0 -oslo.concurrency>=3.8.0 -oslo.config!=4.3.0,!=4.4.0,>=4.0.0 -oslo.db>=4.24.0 -oslo.log>=3.22.0 -oslo.messaging!=5.25.0,>=5.24.2 -oslo.reports>=0.6.0 -oslo.serialization!=2.19.1,>=1.10.0 -oslo.service>=1.10.0 -oslo.utils>=3.20.0 +six>=1.10.0 +neutron-lib>=1.13.0 +oslo.concurrency>=3.25.0 +oslo.config>=5.1.0 +oslo.db>=4.27.0 +oslo.log>=3.36.0 +oslo.messaging>=5.29.0 +oslo.reports>=1.18.0 +oslo.serialization!=2.19.1,>=2.18.0 +oslo.service!=1.28.1,>=1.24.0 +oslo.utils>=3.33.0 diff -Nru neutron-vpnaas-11.0.0/neutron_vpnaas.egg-info/SOURCES.txt neutron-vpnaas-12.0.0/neutron_vpnaas.egg-info/SOURCES.txt --- neutron-vpnaas-11.0.0/neutron_vpnaas.egg-info/SOURCES.txt 2017-09-05 04:24:18.000000000 +0000 +++ neutron-vpnaas-12.0.0/neutron_vpnaas.egg-info/SOURCES.txt 2018-01-30 22:35:24.000000000 +0000 @@ -1,7 +1,9 @@ .coveragerc .mailmap .pylintrc +.stestr.conf .testr.conf +.zuul.yaml AUTHORS CONTRIBUTING.rst ChangeLog @@ -16,8 +18,11 @@ test-requirements.txt tox.ini devstack/README.md +devstack/local.conf.sample +devstack/local_AIO.conf.sample devstack/plugin.sh devstack/settings +devstack/lib/l3_agent devstack/upgrade/resources.sh devstack/upgrade/settings devstack/upgrade/shutdown.sh @@ -28,6 +33,7 @@ doc/source/devref/index.rst doc/source/devref/multiple-local-subnets.rst doc/source/devref/team.rst +doc/source/devref/testing-with-devstack.rst doc/source/devref/vpnaas-rally-test.rst doc/source/devref/vpnaas-tempest-test.rst etc/README.txt @@ -48,7 +54,6 @@ neutron_vpnaas.egg-info/top_level.txt neutron_vpnaas/cmd/__init__.py neutron_vpnaas/cmd/eventlet/__init__.py -neutron_vpnaas/cmd/eventlet/agent.py neutron_vpnaas/cmd/eventlet/vyatta_agent.py neutron_vpnaas/db/__init__.py neutron_vpnaas/db/migration/__init__.py @@ -173,6 +178,12 @@ neutron_vpnaas/tests/unit/services/vpn/service_drivers/test_cisco_ipsec.py neutron_vpnaas/tests/unit/services/vpn/service_drivers/test_ipsec.py neutron_vpnaas/tests/unit/services/vpn/service_drivers/test_vyatta_ipsec.py +playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/post.yaml +playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/run.yaml +playbooks/legacy/neutron-vpnaas-dsvm-rally/post.yaml +playbooks/legacy/neutron-vpnaas-dsvm-rally/run.yaml +playbooks/legacy/neutron-vpnaas-dsvm-tempest/post.yaml +playbooks/legacy/neutron-vpnaas-dsvm-tempest/run.yaml rally-jobs/__init__.py rally-jobs/plugins/__init__.py rally-jobs/plugins/test_vpn_connectivity.py @@ -193,6 +204,7 @@ releasenotes/source/mitaka.rst releasenotes/source/newton.rst releasenotes/source/ocata.rst +releasenotes/source/pike.rst releasenotes/source/unreleased.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholder @@ -208,5 +220,6 @@ tools/install_venv.py tools/install_venv_common.py tools/ostestr_compat_shim.sh +tools/test_script.sh tools/tox_install.sh tools/with_venv.sh \ No newline at end of file diff -Nru neutron-vpnaas-11.0.0/PKG-INFO neutron-vpnaas-12.0.0/PKG-INFO --- neutron-vpnaas-11.0.0/PKG-INFO 2017-09-05 04:24:18.000000000 +0000 +++ neutron-vpnaas-12.0.0/PKG-INFO 2018-01-30 22:35:24.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: neutron-vpnaas -Version: 11.0.0 +Version: 12.0.0 Summary: OpenStack Networking VPN as a Service Home-page: https://www.openstack.org/ Author: OpenStack diff -Nru neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/post.yaml neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/post.yaml --- neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/post.yaml 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/post.yaml 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,80 @@ +- hosts: primary + tasks: + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=**/*nose_results.html + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=**/*testr_results.html.gz + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/.testrepository/tmp* + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=**/*testrepository.subunit.gz + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}/tox' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/.tox/*/log/* + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/logs/** + - --include=*/ + - --exclude=* + - --prune-empty-dirs diff -Nru neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/run.yaml neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/run.yaml --- neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/run.yaml 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/run.yaml 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,56 @@ +- hosts: all + name: Autoconverted job legacy-neutron-vpnaas-dsvm-functional-sswan from old job + gate-neutron-vpnaas-dsvm-functional-sswan-ubuntu-xenial + tasks: + + - name: Ensure legacy workspace directory + file: + path: '{{ ansible_user_dir }}/workspace' + state: directory + + - shell: + cmd: | + set -e + set -x + cat > clonemap.yaml << EOF + clonemap: + - name: openstack-infra/devstack-gate + dest: devstack-gate + EOF + /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \ + git://git.openstack.org \ + openstack-infra/devstack-gate + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + export PYTHONUNBUFFERED=true + export DEVSTACK_GATE_UNSTACK=1 + export DEVSTACK_GATE_TEMPEST=0 + export DEVSTACK_GATE_EXERCISES=0 + export DEVSTACK_GATE_NEUTRON=1 + export DEVSTACK_GATE_INSTALL_TESTONLY=1 + export BRANCH_OVERRIDE=default + if [ "$BRANCH_OVERRIDE" != "default" ] ; then + export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE + fi + + function gate_hook { + bash -xe $BASE/new/neutron-vpnaas/neutron_vpnaas/tests/contrib/gate_hook.sh dsvm-functional-sswan + } + export -f gate_hook + + function post_test_hook { + bash -xe $BASE/new/neutron-vpnaas/neutron_vpnaas/tests/contrib/post_test_hook.sh dsvm-functional-sswan + } + export -f post_test_hook + + cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh + ./safe-devstack-vm-gate-wrap.sh + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' diff -Nru neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-rally/post.yaml neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-rally/post.yaml --- neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-rally/post.yaml 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-rally/post.yaml 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,106 @@ +- hosts: primary + tasks: + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=**/*nose_results.html + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=**/*testr_results.html.gz + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/.testrepository/tmp* + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=**/*testrepository.subunit.gz + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}/tox' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/.tox/*/log/* + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/logs/** + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/rally-plot/** + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/rally-plot/extra/index.html + - --include=*/ + - --exclude=* + - --prune-empty-dirs diff -Nru neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-rally/run.yaml neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-rally/run.yaml --- neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-rally/run.yaml 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-rally/run.yaml 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,63 @@ +- hosts: all + name: Autoconverted job legacy-neutron-vpnaas-dsvm-rally from old job gate-neutron-vpnaas-dsvm-rally-ubuntu-xenial + tasks: + + - name: Ensure legacy workspace directory + file: + path: '{{ ansible_user_dir }}/workspace' + state: directory + + - shell: + cmd: | + set -e + set -x + cat > clonemap.yaml << EOF + clonemap: + - name: openstack-infra/devstack-gate + dest: devstack-gate + EOF + /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \ + git://git.openstack.org \ + openstack-infra/devstack-gate + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + cat << 'EOF' >>"/tmp/dg-local.conf" + [[local|localrc]] + enable_plugin neutron-vpnaas git://git.openstack.org/openstack/neutron-vpnaas + enable_plugin rally git://git.openstack.org/openstack/rally + + EOF + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + export PYTHONUNBUFFERED=true + export DEVSTACK_GATE_NEUTRON=1 + export RALLY_SCENARIO=neutron-vpnaas + export BRANCH_OVERRIDE=default + if [ "$BRANCH_OVERRIDE" != "default" ] ; then + export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE + fi + export PROJECTS="openstack/neutron-vpnaas $PROJECTS" + export PROJECTS="openstack/rally $PROJECTS" + + function post_test_hook { + $BASE/new/rally/tests/ci/rally-gate.sh + } + export -f post_test_hook + + cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh + ./safe-devstack-vm-gate-wrap.sh + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' diff -Nru neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-tempest/post.yaml neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-tempest/post.yaml --- neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-tempest/post.yaml 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-tempest/post.yaml 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,80 @@ +- hosts: primary + tasks: + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=**/*nose_results.html + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=**/*testr_results.html.gz + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/.testrepository/tmp* + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=**/*testrepository.subunit.gz + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}/tox' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/.tox/*/log/* + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/logs/** + - --include=*/ + - --exclude=* + - --prune-empty-dirs diff -Nru neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-tempest/run.yaml neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-tempest/run.yaml --- neutron-vpnaas-11.0.0/playbooks/legacy/neutron-vpnaas-dsvm-tempest/run.yaml 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/playbooks/legacy/neutron-vpnaas-dsvm-tempest/run.yaml 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,67 @@ +- hosts: all + name: Autoconverted job legacy-neutron-dsvm-tempest-vpnaas from old job gate-neutron-dsvm-tempest-vpnaas-ubuntu-xenial + tasks: + + - name: Ensure legacy workspace directory + file: + path: '{{ ansible_user_dir }}/workspace' + state: directory + + - shell: + cmd: | + set -e + set -x + cat > clonemap.yaml << EOF + clonemap: + - name: openstack-infra/devstack-gate + dest: devstack-gate + EOF + /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \ + git://git.openstack.org \ + openstack-infra/devstack-gate + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + cat << 'EOF' >>"/tmp/dg-local.conf" + [[local|localrc]] + enable_plugin neutron-tempest-plugin git://git.openstack.org/openstack/neutron-tempest-plugin + EOF + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + export PYTHONUNBUFFERED=true + export DEVSTACK_GATE_TEMPEST=1 + export DEVSTACK_GATE_TEMPEST_REGEX="^neutron_vpnaas\." + export DEVSTACK_GATE_TEMPEST_ALL_PLUGINS=1 + export DEVSTACK_GATE_NEUTRON=1 + export PROJECTS="openstack/neutron-tempest-plugin $PROJECTS" + export BRANCH_OVERRIDE=default + if [ "$BRANCH_OVERRIDE" != "default" ] ; then + export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE + fi + + function gate_hook { + bash -xe $BASE/new/neutron-vpnaas/neutron_vpnaas/tests/contrib/gate_hook.sh tempest + } + export -f gate_hook + + function post_test_hook { + bash -xe $BASE/new/neutron-vpnaas/neutron_vpnaas/tests/contrib/post_test_hook.sh tempest + } + export -f post_test_hook + + cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh + ./safe-devstack-vm-gate-wrap.sh + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' diff -Nru neutron-vpnaas-11.0.0/rally-jobs/plugins/test_vpn_connectivity.py neutron-vpnaas-12.0.0/rally-jobs/plugins/test_vpn_connectivity.py --- neutron-vpnaas-11.0.0/rally-jobs/plugins/test_vpn_connectivity.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/rally-jobs/plugins/test_vpn_connectivity.py 2018-01-30 22:29:58.000000000 +0000 @@ -14,7 +14,7 @@ from rally.common import logging from rally.task import scenario -from rally.task import types as types +from rally.task import types import vpn_base LOG = logging.getLogger(__name__) diff -Nru neutron-vpnaas-11.0.0/rally-jobs/plugins/test_vpn_status.py neutron-vpnaas-12.0.0/rally-jobs/plugins/test_vpn_status.py --- neutron-vpnaas-11.0.0/rally-jobs/plugins/test_vpn_status.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/rally-jobs/plugins/test_vpn_status.py 2018-01-30 22:29:58.000000000 +0000 @@ -15,7 +15,7 @@ from rally.common import logging from rally.task import scenario -from rally.task import types as types +from rally.task import types import vpn_base diff -Nru neutron-vpnaas-11.0.0/rally-jobs/plugins/test_vpn_tenant_scenario.py neutron-vpnaas-12.0.0/rally-jobs/plugins/test_vpn_tenant_scenario.py --- neutron-vpnaas-11.0.0/rally-jobs/plugins/test_vpn_tenant_scenario.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/rally-jobs/plugins/test_vpn_tenant_scenario.py 2018-01-30 22:29:58.000000000 +0000 @@ -15,7 +15,7 @@ from rally.common import logging from rally.task import scenario -from rally.task import types as types +from rally.task import types import vpn_base diff -Nru neutron-vpnaas-11.0.0/releasenotes/source/conf.py neutron-vpnaas-12.0.0/releasenotes/source/conf.py --- neutron-vpnaas-11.0.0/releasenotes/source/conf.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/releasenotes/source/conf.py 2018-01-30 22:29:58.000000000 +0000 @@ -58,16 +58,11 @@ project = u'Neutron VPNaaS Release Notes' copyright = u'2015, Neutron VPNaaS Developers' -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -from neutron_vpnaas.version import version_info as neutron_vpnaas_version +# Release notes are version independent. # The full version, including alpha/beta/rc tags. -release = neutron_vpnaas_version.version_string_with_vcs() +release = '' # The short X.Y version. -version = neutron_vpnaas_version.canonical_version_string() +version = '' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff -Nru neutron-vpnaas-11.0.0/releasenotes/source/index.rst neutron-vpnaas-12.0.0/releasenotes/source/index.rst --- neutron-vpnaas-11.0.0/releasenotes/source/index.rst 2017-09-05 04:20:10.000000000 +0000 +++ neutron-vpnaas-12.0.0/releasenotes/source/index.rst 2018-01-30 22:29:58.000000000 +0000 @@ -6,6 +6,7 @@ :maxdepth: 1 unreleased + pike ocata newton mitaka diff -Nru neutron-vpnaas-11.0.0/releasenotes/source/pike.rst neutron-vpnaas-12.0.0/releasenotes/source/pike.rst --- neutron-vpnaas-11.0.0/releasenotes/source/pike.rst 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/releasenotes/source/pike.rst 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,6 @@ +=================================== + Pike Series Release Notes +=================================== + +.. release-notes:: + :branch: stable/pike diff -Nru neutron-vpnaas-11.0.0/requirements.txt neutron-vpnaas-12.0.0/requirements.txt --- neutron-vpnaas-11.0.0/requirements.txt 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/requirements.txt 2018-01-30 22:30:16.000000000 +0000 @@ -5,20 +5,20 @@ requests>=2.14.2 # Apache-2.0 Jinja2!=2.9.0,!=2.9.1,!=2.9.2,!=2.9.3,!=2.9.4,>=2.8 # BSD License (3 clause) -netaddr!=0.7.16,>=0.7.13 # BSD +netaddr>=0.7.18 # BSD SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 # MIT alembic>=0.8.10 # MIT -six>=1.9.0 # MIT -neutron-lib>=1.9.0 # Apache-2.0 -oslo.concurrency>=3.8.0 # Apache-2.0 -oslo.config!=4.3.0,!=4.4.0,>=4.0.0 # Apache-2.0 -oslo.db>=4.24.0 # Apache-2.0 -oslo.log>=3.22.0 # Apache-2.0 -oslo.messaging!=5.25.0,>=5.24.2 # Apache-2.0 -oslo.reports>=0.6.0 # Apache-2.0 -oslo.serialization!=2.19.1,>=1.10.0 # Apache-2.0 -oslo.service>=1.10.0 # Apache-2.0 -oslo.utils>=3.20.0 # Apache-2.0 +six>=1.10.0 # MIT +neutron-lib>=1.13.0 # Apache-2.0 +oslo.concurrency>=3.25.0 # Apache-2.0 +oslo.config>=5.1.0 # Apache-2.0 +oslo.db>=4.27.0 # Apache-2.0 +oslo.log>=3.36.0 # Apache-2.0 +oslo.messaging>=5.29.0 # Apache-2.0 +oslo.reports>=1.18.0 # Apache-2.0 +oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0 +oslo.service!=1.28.1,>=1.24.0 # Apache-2.0 +oslo.utils>=3.33.0 # Apache-2.0 # This project does depend on neutron as a library, but the # openstack tooling does not play nicely with projects that diff -Nru neutron-vpnaas-11.0.0/setup.cfg neutron-vpnaas-12.0.0/setup.cfg --- neutron-vpnaas-11.0.0/setup.cfg 2017-09-05 04:24:18.000000000 +0000 +++ neutron-vpnaas-12.0.0/setup.cfg 2018-01-30 22:35:24.000000000 +0000 @@ -32,8 +32,9 @@ [entry_points] console_scripts = neutron-vpn-netns-wrapper = neutron_vpnaas.services.vpn.common.netns_wrapper:main - neutron-vpn-agent = neutron_vpnaas.cmd.eventlet.agent:main neutron-vyatta-agent = neutron_vpnaas.cmd.eventlet.vyatta_agent:main +neutron.agent.l3.extensions = + vpnaas = neutron_vpnaas.services.vpn.agent:L3WithVPNaaS device_drivers = neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver = neutron_vpnaas.services.vpn.device_drivers.ipsec:OpenSwanDriver neutron.services.vpn.device_drivers.cisco_ipsec.CiscoCsrIPsecDriver = neutron_vpnaas.services.vpn.device_drivers.cisco_ipsec:CiscoCsrIPsecDriver diff -Nru neutron-vpnaas-11.0.0/.stestr.conf neutron-vpnaas-12.0.0/.stestr.conf --- neutron-vpnaas-11.0.0/.stestr.conf 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/.stestr.conf 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,3 @@ +[DEFAULT] +test_path=${OS_TEST_PATH:-./neutron_vpnaas/tests/unit} +top_dir=./ diff -Nru neutron-vpnaas-11.0.0/test-requirements.txt neutron-vpnaas-12.0.0/test-requirements.txt --- neutron-vpnaas-11.0.0/test-requirements.txt 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/test-requirements.txt 2018-01-30 22:30:16.000000000 +0000 @@ -7,19 +7,17 @@ coverage!=4.4,>=4.0 # Apache-2.0 fixtures>=3.0.0 # Apache-2.0/BSD flake8-import-order==0.12 # LGPLv3 -mock>=2.0 # BSD +mock>=2.0.0 # BSD pylint==1.4.5 # GPLv2 -python-subunit>=0.0.18 # Apache-2.0/BSD -requests-mock>=1.1 # Apache-2.0 -sphinx>=1.6.2 # BSD -openstackdocstheme>=1.16.0 # Apache-2.0 -testrepository>=0.0.18 # Apache-2.0/BSD -tempest>=16.1.0 # Apache-2.0 -testtools>=1.4.0 # MIT -testresources>=0.2.4 # Apache-2.0/BSD +requests-mock>=1.1.0 # Apache-2.0 +sphinx!=1.6.6,>=1.6.2 # BSD +openstackdocstheme>=1.18.1 # Apache-2.0 +tempest>=17.1.0 # Apache-2.0 +testtools>=2.2.0 # MIT +testresources>=2.0.0 # Apache-2.0/BSD testscenarios>=0.4 # Apache-2.0/BSD WebOb>=1.7.1 # MIT -WebTest>=2.0 # MIT -oslotest>=1.10.0 # Apache-2.0 -reno!=2.3.1,>=1.8.0 # Apache-2.0 -os-testr>=0.8.0 # Apache-2.0 +WebTest>=2.0.27 # MIT +oslotest>=3.2.0 # Apache-2.0 +reno>=2.5.0 # Apache-2.0 +os-testr>=1.0.0 # Apache-2.0 diff -Nru neutron-vpnaas-11.0.0/tools/configure_for_vpn_func_testing.sh neutron-vpnaas-12.0.0/tools/configure_for_vpn_func_testing.sh --- neutron-vpnaas-11.0.0/tools/configure_for_vpn_func_testing.sh 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/tools/configure_for_vpn_func_testing.sh 2018-01-30 22:29:58.000000000 +0000 @@ -40,17 +40,6 @@ neutron_agent_vpnaas_install_agent_packages } - -function _configure_vpn_ini_file { - echo_summary "Configuring VPN ini file" - local temp_ini=$(mktemp) - neutron_vpnaas_generate_config_files - neutron_vpnaas_configure_agent $temp_ini - sudo install -d -o $STACK_USER /etc/neutron/ - sudo install -m 644 -o $STACK_USER $temp_ini $Q_VPN_CONF_FILE -} - - function configure_host_for_vpn_func_testing { echo_summary "Configuring for VPN functional testing" if [ "$IS_GATE" == "True" ]; then @@ -60,7 +49,6 @@ # oslo-config-generator present (as this script runs before tox.ini). sudo pip install --force oslo.config _install_vpn_package - _configure_vpn_ini_file } diff -Nru neutron-vpnaas-11.0.0/tools/deploy_rootwrap.sh neutron-vpnaas-12.0.0/tools/deploy_rootwrap.sh --- neutron-vpnaas-11.0.0/tools/deploy_rootwrap.sh 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/tools/deploy_rootwrap.sh 2018-01-30 22:29:58.000000000 +0000 @@ -55,4 +55,5 @@ cp -p ${src_conf} ${dst_conf} sed -i "s:^filters_path=.*$:filters_path=${dst_rootwrap_path}:" ${dst_conf} sed -i "s:^\(exec_dirs=.*\)$:\1,${venv_path}/bin:" ${dst_conf} +sudo mkdir -p /etc/neutron/ sudo cp ${dst_conf} /etc/neutron/ diff -Nru neutron-vpnaas-11.0.0/tools/install_venv.py neutron-vpnaas-12.0.0/tools/install_venv.py --- neutron-vpnaas-11.0.0/tools/install_venv.py 2017-09-05 04:20:09.000000000 +0000 +++ neutron-vpnaas-12.0.0/tools/install_venv.py 2018-01-30 22:29:58.000000000 +0000 @@ -39,7 +39,7 @@ To activate the Neutron virtualenv for the extent of your current shell session you can run: - $ source .venv/bin/activate + $ . .venv/bin/activate Or, if you prefer, you can run commands in the virtualenv on a case by case basis by running: diff -Nru neutron-vpnaas-11.0.0/tools/test_script.sh neutron-vpnaas-12.0.0/tools/test_script.sh --- neutron-vpnaas-11.0.0/tools/test_script.sh 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/tools/test_script.sh 2018-01-30 22:29:58.000000000 +0000 @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +EXT_NW_ID=`neutron net-list | awk '/public/{print $2}'` +WEST_SUBNET='192.168.1.0/24' +EAST_SUBNET='192.168.2.0/24' + +function setup_site(){ + local site_name=$1 + local cidr=$2 + neutron net-create net_$site_name + neutron subnet-create --name subnet_$site_name net_$site_name $2 + neutron router-create router_$site_name + neutron router-interface-add router_$site_name subnet_$site_name + neutron router-gateway-set router_$site_name $EXT_NW_ID + neutron vpn-service-create --name vpn_$site_name router_$site_name subnet_$site_name +} + +function get_external_ip(){ + local router_id=`neutron router-show $1 | awk '/ id /{print $4}'` + echo `neutron port-list -c fixed_ips -c device_id -c device_owner|grep router_gateway | awk '/'.$router_id.'/{print $5}' | sed 's/["}]//g'` +} + +function clean_site(){ + local site_name=$1 + neutron ipsec-site-connection-delete conn_$site_name + neutron vpn-service-list | awk '/vpn_'$site_name'/{print "neutron vpn-service-delete " $2}' | bash + neutron router-gateway-clear router_$site_name + neutron router-interface-delete router_$site_name subnet_$site_name + neutron router-list | awk '/router_'$site_name'/{print "neutron router-delete " $2}' | bash + neutron subnet-list | awk '/subnet_'$site_name'/{print "neutron subnet-delete " $2}' | bash + neutron net-list | awk '/net_'$site_name'/{print "neutron net-delete " $2}' | bash +} + +function setup(){ + neutron vpn-ikepolicy-create ikepolicy1 + neutron vpn-ipsecpolicy-create ipsecpolicy1 + setup_site west $WEST_SUBNET + WEST_IP=$(get_external_ip router_west) + setup_site east $EAST_SUBNET + EAST_IP=$(get_external_ip router_east) + neutron ipsec-site-connection-create --name conn_east --vpnservice-id vpn_east --ikepolicy-id ikepolicy1 --ipsecpolicy-id ipsecpolicy1 --peer-address $WEST_IP --peer-id $WEST_IP --peer-cidr $WEST_SUBNET --psk secret + neutron ipsec-site-connection-create --name conn_west --vpnservice-id vpn_west --ikepolicy-id ikepolicy1 --ipsecpolicy-id ipsecpolicy1 --peer-address $EAST_IP --peer-id $EAST_IP --peer-cidr $EAST_SUBNET --psk secret +} + +function cleanup(){ + clean_site west + clean_site east + neutron vpn-ikepolicy-delete ikepolicy1 + neutron vpn-ipsecpolicy-delete ipsecpolicy1 +} + +cleanup +setup diff -Nru neutron-vpnaas-11.0.0/tools/tox_install.sh neutron-vpnaas-12.0.0/tools/tox_install.sh --- neutron-vpnaas-11.0.0/tools/tox_install.sh 2017-09-05 04:20:10.000000000 +0000 +++ neutron-vpnaas-12.0.0/tools/tox_install.sh 2018-01-30 22:29:58.000000000 +0000 @@ -14,7 +14,7 @@ # pip install {opts} {packages} ZUUL_CLONER=/usr/zuul-env/bin/zuul-cloner -BRANCH_NAME=stable/pike +BRANCH_NAME=master neutron_installed=$(echo "import neutron" | python 2>/dev/null ; echo $?) NEUTRON_DIR=$HOME/neutron diff -Nru neutron-vpnaas-11.0.0/tox.ini neutron-vpnaas-12.0.0/tox.ini --- neutron-vpnaas-11.0.0/tox.ini 2017-09-05 04:20:10.000000000 +0000 +++ neutron-vpnaas-12.0.0/tox.ini 2018-01-30 22:29:58.000000000 +0000 @@ -7,7 +7,7 @@ setenv = VIRTUAL_ENV={envdir} PYTHONWARNINGS=default::DeprecationWarning usedevelop = True -install_command = {toxinidir}/tools/tox_install.sh {env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=stable/pike} {opts} {packages} +install_command = {toxinidir}/tools/tox_install.sh {env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages} deps = -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt whitelist_externals = sh diff -Nru neutron-vpnaas-11.0.0/.zuul.yaml neutron-vpnaas-12.0.0/.zuul.yaml --- neutron-vpnaas-11.0.0/.zuul.yaml 1970-01-01 00:00:00.000000000 +0000 +++ neutron-vpnaas-12.0.0/.zuul.yaml 2018-01-30 22:30:16.000000000 +0000 @@ -0,0 +1,56 @@ +- project: + check: + jobs: + - neutron-vpnaas-dsvm-functional-sswan + - neutron-vpnaas-dsvm-tempest + gate: + jobs: + - neutron-vpnaas-dsvm-functional-sswan + - neutron-vpnaas-dsvm-tempest + experimental: + jobs: + - neutron-vpnaas-dsvm-rally + +- job: + name: neutron-vpnaas-dsvm-tempest + parent: legacy-dsvm-base + run: playbooks/legacy/neutron-vpnaas-dsvm-tempest/run.yaml + post-run: playbooks/legacy/neutron-vpnaas-dsvm-tempest/post.yaml + timeout: 3900 + required-projects: + - openstack-infra/devstack-gate + - openstack/neutron + - openstack/tempest + - openstack/neutron-tempest-plugin + +- job: + name: neutron-vpnaas-dsvm-functional-sswan + parent: legacy-dsvm-base + run: playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/run.yaml + post-run: playbooks/legacy/neutron-vpnaas-dsvm-functional-sswan/post.yaml + timeout: 7800 + required-projects: + - openstack-infra/devstack-gate + - openstack/neutron + - openstack/neutron-vpnaas + irrelevant-files: + - ^.*\.rst$ + - ^doc/.*$ + - ^neutron-vpnaas/tests/unit/.*$ + +- job: + name: neutron-vpnaas-dsvm-rally + parent: legacy-dsvm-base + run: playbooks/legacy/neutron-vpnaas-dsvm-rally/run.yaml + post-run: playbooks/legacy/neutron-vpnaas-dsvm-rally/post.yaml + timeout: 7800 + required-projects: + - openstack-infra/devstack-gate + - openstack/neutron + - openstack/neutron-vpnaas + - openstack/rally + irrelevant-files: + - ^.*\.rst$ + - ^doc/.*$ + - ^neutron-vpnaas/tests/unit/.*$ +