Tempest linuxbridge scenario switch to Zuul v3 template

This patch switches linuxbridge scenario job definition to
the new Zuul v3.
It also adds new abstract template for neutron-scenario jobs.
This abstract template is used by new linuxbridge scenario
definition and by neutron-tempest-plugin-designate-scenario

Change-Id: I0fd4eb4df2e78b498962d9d42715f0cd18f81714
diff --git a/.zuul.yaml b/.zuul.yaml
index 1d7e323..32e565c 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -1,4 +1,86 @@
 - job:
+    name: neutron-tempest-plugin-scenario
+    parent: devstack-tempest
+    abstract: true
+    description: |
+        Perform setup common to all tempest scenario test jobs.
+    roles:
+      - zuul: openstack-dev/devstack
+    required-projects:
+      - openstack-infra/devstack-gate
+      - openstack/neutron
+      - openstack/neutron-tempest-plugin
+      - openstack/tempest
+    vars:
+      tempest_test_regex: ^neutron_tempest_plugin\.scenario
+      tempest_concurrency: 4
+      tox_envlist: all
+      devstack_localrc:
+          TEMPEST_PLUGINS: /opt/stack/neutron-tempest-plugin
+          PHYSICAL_NETWORK: default
+          DOWNLOAD_DEFAULT_IMAGES: false
+          IMAGE_URLS: "http://cloud-images.ubuntu.com/releases/16.04/release-20170113/ubuntu-16.04-server-cloudimg-amd64-disk1.img,"
+          DEFAULT_INSTANCE_TYPE: ds512M
+          DEFAULT_INSTANCE_USER: ubuntu
+          BUILD_TIMEOUT: 784
+      devstack_plugins:
+        neutron: git://git.openstack.org/openstack/neutron.git
+        neutron-tempest-plugin: git://git.openstack.org/openstack/neutron-tempest-plugin.git
+      devstack_services:
+        cinder: true
+        tempest: true
+        neutron-dns: true
+        neutron-qos: true
+        neutron-segments: true
+        neutron-trunk: true
+      devstack_local_conf:
+        post-config:
+          $NEUTRON_CONF:
+            QUOTAS:
+              quota_router: 100
+              quota_floatingip: 500
+              quota_security_group: 100
+              quota_security_group_rule: 1000
+          # NOTE(slaweq): We can get rid of this hardcoded absolute path when
+          # devstack-tempest job will be switched to use lib/neutron instead of
+          # lib/neutron-legacy
+          "/$NEUTRON_CORE_PLUGIN_CONF":
+            ml2:
+              type_drivers: flat,vlan,local,vxlan
+            ml2_type_vlan:
+              network_vlan_ranges: foo:1:10
+            ml2_type_vxlan:
+              vni_ranges: 1:2000
+          $NEUTRON_L3_CONF:
+            agent:
+              availability_zone: nova
+          $NEUTRON_DHCP_CONF:
+            agent:
+              availability_zone: nova
+          "/etc/neutron/api-paste.ini":
+            "composite:neutronapi_v2_0":
+              use: "call:neutron.auth:pipeline_factory"
+              noauth: "cors request_id catch_errors osprofiler extensions neutronapiapp_v2_0"
+              keystone: "cors request_id catch_errors osprofiler authtoken keystonecontext extensions neutronapiapp_v2_0"
+        test-config:
+          $TEMPEST_CONFIG:
+            neutron_plugin_options:
+              provider_vlans: foo,
+              agent_availability_zone: nova
+              image_is_advanced: true
+              available_type_drivers: flat,vlan,local,vxlan
+    irrelevant-files:
+      - ^(test-|)requirements.txt$
+      - ^releasenotes/.*$
+      - ^doc/.*$
+      - ^setup.cfg$
+      - ^.*\.rst$
+      - ^neutron/locale/.*$
+      - ^neutron/tests/unit/.*$
+      - ^tools/.*$
+      - ^tox.ini$
+
+- job:
     name: neutron-tempest-plugin-api
     parent: legacy-dsvm-base
     run: playbooks/neutron-tempest-plugin-api/run.yaml
@@ -22,25 +104,19 @@
 
 - job:
     name: neutron-tempest-plugin-scenario-linuxbridge
-    parent: legacy-dsvm-base
-    run: playbooks/neutron-tempest-plugin-scenario-linuxbridge/run.yaml
-    post-run: playbooks/neutron-tempest-plugin-scenario-linuxbridge/post.yaml
+    parent: neutron-tempest-plugin-scenario
     timeout: 10000
-    required-projects:
-      - openstack-infra/devstack-gate
-      - openstack/neutron
-      - openstack/neutron-tempest-plugin
-      - openstack/tempest
-    irrelevant-files:
-      - ^(test-|)requirements.txt$
-      - ^releasenotes/.*$
-      - ^doc/.*$
-      - ^setup.cfg$
-      - ^.*\.rst$
-      - ^neutron/locale/.*$
-      - ^neutron/tests/unit/.*$
-      - ^tools/.*$
-      - ^tox.ini$
+    vars:
+      devstack_localrc:
+          NETWORK_API_EXTENSIONS: "address-scope,agent,allowed-address-pairs,auto-allocated-topology,availability_zone,binding,default-subnetpools,dhcp_agent_scheduler,dns-integration,ext-gw-mode,external-net,extra_dhcp_opt,extraroute,flavors,ip-substring-filtering,l3-flavors,l3-ha,l3_agent_scheduler,logging,metering,multi-provider,net-mtu,net-mtu-writable,network-ip-availability,network_availability_zone,pagination,port-security,project-id,provider,qos,quotas,quota_details,rbac-policies,router,router_availability_zone,security-group,port-security-groups-filtering,segment,service-type,sorting,standard-attr-description,standard-attr-revisions,standard-attr-timestamp,standard-attr-tag,subnet_allocation,tag,tag-ext,trunk,trunk-details"
+          Q_AGENT: linuxbridge
+      devstack_local_conf:
+        post-config:
+          $NEUTRON_CONF:
+            DEFAULT:
+              enable_dvr: false
+            AGENT:
+              debug_iptables_rules: true
 
 - job:
     name: neutron-tempest-plugin-dvr-multinode-scenario
@@ -68,32 +144,24 @@
 
 - job:
     name: neutron-tempest-plugin-designate-scenario
-    parent: devstack-tempest
+    parent: neutron-tempest-plugin-scenario
     description: Neutron designate integration scenario
     required-projects:
       - openstack/designate
       - openstack/designate-dashboard
       - openstack/designate-tempest-plugin
-      - openstack/neutron
-      - openstack/neutron-tempest-plugin
-      - openstack/tempest
     timeout: 3600
-    roles:
-      - zuul: openstack-dev/devstack
     vars:
       devstack_localrc:
+        TEMPEST_PLUGINS: '"/opt/stack/designate-tempest-plugin
+                           /opt/stack/neutron-tempest-plugin"'
         DESIGNATE_BACKEND_DRIVER: bind9
       devstack_plugins:
         designate: git://git.openstack.org/openstack/designate.git
-        neutron: git://git.openstack.org/openstack/neutron.git
-        neutron-tempest-plugin: git://git.openstack.org/openstack/neutron-tempest-plugin.git
       devstack_services:
         cinder: false
         designate: true
-        neutron-dns: true
-        tempest: true
       tempest_test_regex: ^neutron_tempest_plugin\.scenario\.test_dns_integration
-      tox_envlist: all-plugin
     irrelevant-files:
       - ^(test-|)requirements.txt$
       - ^releasenotes/.*$