diff --git a/.zuul.yaml b/.zuul.yaml
index 74ebce3..d413e88 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -1,54 +1,23 @@
 - job:
-    name: heat-functional-convg-stein
-    parent: heat-functional-convg-mysql-lbaasv2-py3
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/stein
-    vars:
-      branch_override: stable/stein
-
-- job:
-    name: heat-functional-orig-stein
-    parent: heat-functional-orig-mysql-lbaasv2
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/stein
-    vars:
-      branch_override: stable/stein
-      use_python3: 1
-
-- job:
-    name: heat-functional-convg-train
-    parent: heat-functional-convg-mysql-lbaasv2-py3
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/train
-    vars:
-      branch_override: stable/train
-
-- job:
-    name: heat-functional-orig-train
-    parent: heat-functional-orig-mysql-lbaasv2
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/train
-    vars:
-      branch_override: stable/train
-      use_python3: 1
-
-- job:
-    name: heat-functional-ussuri
+    name: heat-functional-2023-1
     parent: heat-functional
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/ussuri
+    nodeset: openstack-single-node-jammy
+    override-checkout: stable/2023.1
 
 - job:
-    name: heat-functional-victoria
+    name: heat-functional-zed
     parent: heat-functional
-    override-checkout: stable/victoria
+    nodeset: openstack-single-node-focal
+    override-checkout: stable/zed
 
 - job:
-    name: heat-functional-wallaby
+    name: heat-functional-yoga
     parent: heat-functional
-    override-checkout: stable/wallaby
+    nodeset: openstack-single-node-focal
+    override-checkout: stable/yoga
 
 - project:
+    queue: heat
     templates:
       - check-requirements
       - tempest-plugin-jobs
@@ -56,13 +25,10 @@
       jobs:
         - heat-functional
         - heat-functional-legacy
-        - heat-functional-convg-train
-        - heat-functional-orig-train
-        - heat-functional-ussuri
-        - heat-functional-victoria
-        - heat-functional-wallaby
+        - heat-functional-2023-1
+        - heat-functional-zed
+        - heat-functional-yoga
     gate:
-      queue: heat
       jobs:
         - heat-functional
         - heat-functional-legacy
diff --git a/heat_tempest_plugin/common/test.py b/heat_tempest_plugin/common/test.py
index 3858859..ec3310f 100644
--- a/heat_tempest_plugin/common/test.py
+++ b/heat_tempest_plugin/common/test.py
@@ -169,6 +169,9 @@
     def setUp(self):
         super(HeatIntegrationTest, self).setUp()
 
+        if not config.CONF.service_available.heat:
+            raise self.skipException("Heat is not available")
+
         self.conf = config.CONF.heat_plugin
 
         self.assertIsNotNone(self.conf.auth_url,
diff --git a/heat_tempest_plugin/tests/api/fixtures.py b/heat_tempest_plugin/tests/api/fixtures.py
index 6c770c8..217c637 100644
--- a/heat_tempest_plugin/tests/api/fixtures.py
+++ b/heat_tempest_plugin/tests/api/fixtures.py
@@ -16,10 +16,14 @@
 from gabbi import fixture
 from heat_tempest_plugin.services import clients
 from tempest import config
+import unittest.case
 
 
 class AuthenticationFixture(fixture.GabbiFixture):
     def start_fixture(self):
+        if not config.CONF.service_available.heat:
+            raise unittest.case.SkipTest("Heat is not available")
+
         conf = config.CONF.heat_plugin
         manager = clients.ClientManager(conf)
         os.environ['OS_TOKEN'] = manager.identity_client.auth_token
diff --git a/heat_tempest_plugin/tests/api/test_heat_api.py b/heat_tempest_plugin/tests/api/test_heat_api.py
index 214dc35..24e6059 100644
--- a/heat_tempest_plugin/tests/api/test_heat_api.py
+++ b/heat_tempest_plugin/tests/api/test_heat_api.py
@@ -62,8 +62,8 @@
                 keystoneauth1.exceptions.discovery.DiscoveryFailure,
                 keystoneauth1.exceptions.connection.UnknownConnectionError,
                 keystoneauth1.exceptions.connection.ConnectFailure):
-            LOG.warn("Keystone auth exception: %s: %s" % (sys.exc_info()[0],
-                                                          sys.exc_info()[1]))
+            LOG.warning("Keystone auth exception: %s: %s" %
+                        (sys.exc_info()[0], sys.exc_info()[1]))
             # Clear the auth_url, as there is no point in tempest trying
             # to authenticate later with mis-configured or unreachable endpoint
             conf.auth_url = None
diff --git a/heat_tempest_plugin/tests/functional/test_lbaasv2.py b/heat_tempest_plugin/tests/functional/test_lbaasv2.py
deleted file mode 100644
index 3439179..0000000
--- a/heat_tempest_plugin/tests/functional/test_lbaasv2.py
+++ /dev/null
@@ -1,159 +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 tempest.lib import decorators
-
-from heat_tempest_plugin.tests.functional import functional_base
-
-
-class LoadBalancerv2Test(functional_base.FunctionalTestsBase):
-
-    create_template = '''
-heat_template_version: 2016-04-08
-parameters:
-    subnet:
-        type: string
-resources:
-  loadbalancer:
-    type: OS::Neutron::LBaaS::LoadBalancer
-    properties:
-      description: aLoadBalancer
-      vip_subnet: { get_param: subnet }
-  listener:
-    type: OS::Neutron::LBaaS::Listener
-    properties:
-      description: aListener
-      loadbalancer: { get_resource: loadbalancer }
-      protocol: HTTP
-      protocol_port: 80
-      connection_limit: 5555
-  pool:
-    type: OS::Neutron::LBaaS::Pool
-    properties:
-      description: aPool
-      lb_algorithm: ROUND_ROBIN
-      protocol: HTTP
-      listener: { get_resource: listener }
-  poolmember:
-    type: OS::Neutron::LBaaS::PoolMember
-    properties:
-      address: 1.1.1.1
-      pool: { get_resource: pool }
-      protocol_port: 1111
-      subnet: { get_param: subnet }
-      weight: 255
-  # pm2
-  healthmonitor:
-    type: OS::Neutron::LBaaS::HealthMonitor
-    properties:
-      delay: 3
-      type: HTTP
-      timeout: 3
-      max_retries: 3
-      pool: { get_resource: pool }
-outputs:
-  loadbalancer:
-    value: { get_attr: [ loadbalancer, show ] }
-  pool:
-    value: { get_attr: [ pool, show ] }
-  poolmember:
-    value: { get_attr: [ poolmember, show ] }
-  listener:
-    value: { get_attr: [ listener, show ] }
-  healthmonitor:
-    value: { get_attr: [ healthmonitor, show ] }
-'''
-
-    add_member = '''
-  poolmember2:
-    type: OS::Neutron::LBaaS::PoolMember
-    properties:
-      address: 2.2.2.2
-      pool: { get_resource: pool }
-      protocol_port: 2222
-      subnet: { get_param: subnet }
-      weight: 222
-'''
-
-    def setUp(self):
-        super(LoadBalancerv2Test, self).setUp()
-        if not self.is_network_extension_supported('lbaasv2'):
-            self.skipTest('LBaasv2 extension not available, skipping')
-
-    @decorators.idempotent_id('2f4a476c-cba7-448b-a7c1-85f7284f0293')
-    def test_create_update_loadbalancer(self):
-        parameters = {
-            'subnet': self.conf.fixed_subnet_name,
-        }
-        stack_identifier = self.stack_create(template=self.create_template,
-                                             parameters=parameters)
-        stack = self.client.stacks.get(stack_identifier)
-        output = self._stack_output(stack, 'loadbalancer')
-        self.assertEqual('ONLINE', output['operating_status'])
-
-        template = self.create_template.replace('ROUND_ROBIN', 'SOURCE_IP')
-        template = template.replace('3', '6')
-        template = template.replace('255', '256')
-        template = template.replace('5555', '7777')
-        template = template.replace('aLoadBalancer', 'updatedLoadBalancer')
-        template = template.replace('aPool', 'updatedPool')
-        template = template.replace('aListener', 'updatedListener')
-        self.update_stack(stack_identifier, template=template,
-                          parameters=parameters)
-        stack = self.client.stacks.get(stack_identifier)
-
-        output = self._stack_output(stack, 'loadbalancer')
-        self.assertEqual('ONLINE', output['operating_status'])
-        self.assertEqual('updatedLoadBalancer', output['description'])
-        output = self._stack_output(stack, 'pool')
-        self.assertEqual('SOURCE_IP', output['lb_algorithm'])
-        self.assertEqual('updatedPool', output['description'])
-        output = self._stack_output(stack, 'poolmember')
-        self.assertEqual(256, output['weight'])
-        output = self._stack_output(stack, 'healthmonitor')
-        self.assertEqual(6, output['delay'])
-        self.assertEqual(6, output['timeout'])
-        self.assertEqual(6, output['max_retries'])
-        output = self._stack_output(stack, 'listener')
-        self.assertEqual(7777, output['connection_limit'])
-        self.assertEqual('updatedListener', output['description'])
-
-    @decorators.idempotent_id('104f59ae-a3c8-4c12-98e5-a7bc0007878d')
-    def test_add_delete_poolmember(self):
-        parameters = {
-            'subnet': self.conf.fixed_subnet_name,
-        }
-        stack_identifier = self.stack_create(template=self.create_template,
-                                             parameters=parameters)
-        stack = self.client.stacks.get(stack_identifier)
-        output = self._stack_output(stack, 'loadbalancer')
-        self.assertEqual('ONLINE', output['operating_status'])
-        output = self._stack_output(stack, 'pool')
-        self.assertEqual(1, len(output['members']))
-        # add pool member
-        template = self.create_template.replace('# pm2', self.add_member)
-        self.update_stack(stack_identifier, template=template,
-                          parameters=parameters)
-        stack = self.client.stacks.get(stack_identifier)
-        output = self._stack_output(stack, 'loadbalancer')
-        self.assertEqual('ONLINE', output['operating_status'])
-        output = self._stack_output(stack, 'pool')
-        self.assertEqual(2, len(output['members']))
-        # delete pool member
-        self.update_stack(stack_identifier, template=self.create_template,
-                          parameters=parameters)
-        stack = self.client.stacks.get(stack_identifier)
-        output = self._stack_output(stack, 'loadbalancer')
-        self.assertEqual('ONLINE', output['operating_status'])
-        output = self._stack_output(stack, 'pool')
-        self.assertEqual(1, len(output['members']))
diff --git a/heat_tempest_plugin/tests/scenario/templates/app_server_lbv2_neutron.yaml b/heat_tempest_plugin/tests/scenario/templates/app_server_lbv2_neutron.yaml
deleted file mode 100644
index ca4117b..0000000
--- a/heat_tempest_plugin/tests/scenario/templates/app_server_lbv2_neutron.yaml
+++ /dev/null
@@ -1,76 +0,0 @@
-heat_template_version: 2015-10-15
-
-description: |
-  App server that is a member of Neutron Pool.
-
-parameters:
-
-  image:
-    type: string
-
-  flavor:
-    type: string
-
-  net:
-    type: string
-
-  sec_group:
-    type: string
-
-  pool:
-    type: string
-
-  app_port:
-    type: number
-
-  timeout:
-    type: number
-
-  subnet:
-    type: string
-
-  wc_extra_args:
-    type: string
-    default: ""
-
-resources:
-
-  config:
-    type: OS::Test::WebAppConfig
-    properties:
-      app_port: { get_param: app_port }
-      wc_curl_cli:
-        list_join:
-          - " "
-          - [ get_attr: [ handle, curl_cli ], get_param: wc_extra_args ]
-
-  server:
-    type: OS::Nova::Server
-    properties:
-      image: { get_param: image }
-      flavor: { get_param: flavor }
-      networks:
-        - network: { get_param: net }
-      security_groups:
-        - { get_param: sec_group }
-      user_data_format: RAW
-      user_data: { get_resource: config }
-
-  handle:
-    type: OS::Heat::WaitConditionHandle
-
-  waiter:
-    type: OS::Heat::WaitCondition
-    depends_on: server
-    properties:
-      timeout: { get_param: timeout }
-      handle: { get_resource: handle }
-
-  pool_member:
-    type: OS::Neutron::LBaaS::PoolMember
-    depends_on: waiter
-    properties:
-      address: { get_attr: [ server, networks, { get_param: net }, 0 ] }
-      pool: { get_param: pool }
-      protocol_port: { get_param: app_port }
-      subnet: { get_param: subnet }
diff --git a/heat_tempest_plugin/tests/scenario/templates/id_ed25519.pub b/heat_tempest_plugin/tests/scenario/templates/id_ed25519.pub
new file mode 100644
index 0000000..621bc23
--- /dev/null
+++ b/heat_tempest_plugin/tests/scenario/templates/id_ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFY6/FsBXBr5pe5s6jwkN3Tj0O0a6lh4XrilchQKyPRZ heat-test
diff --git a/heat_tempest_plugin/tests/scenario/templates/lb_member.yaml b/heat_tempest_plugin/tests/scenario/templates/lb_member.yaml
deleted file mode 100644
index a974968..0000000
--- a/heat_tempest_plugin/tests/scenario/templates/lb_member.yaml
+++ /dev/null
@@ -1,69 +0,0 @@
-heat_template_version: pike
-parameters:
-  image:
-    type: string
-  flavor:
-    type: string
-  network:
-    type: string
-  sec_group:
-    type: string
-  pool:
-    type: string
-  app_port:
-    type: number
-  timeout:
-    type: number
-    default: 120
-  subnet:
-    type: string
-
-resources:
-  server:
-    type: OS::Nova::Server
-    properties:
-      image: {get_param: image}
-      flavor: {get_param: flavor}
-      networks:
-        - network: {get_param: network}
-      security_groups:
-        - {get_param: sec_group}
-      user_data_format: RAW
-      user_data:
-        str_replace:
-          template: |
-            #! /bin/sh -v
-            Body=$(hostname)
-            Response="HTTP/1.1 200 OK\r\nContent-Length: ${#Body}\r\n\r\n$Body"
-            while true; do
-                wc_notify --data-binary '{"status": "SUCCESS"}'
-                if [ $? -eq 0 ]; then
-                    break
-                fi
-                sleep 10
-            done
-            while true ; do
-                echo -e $Response | nc -llp PORT
-            done
-          params:
-            PORT: {get_param: app_port}
-            wc_notify: { get_attr: [handle, curl_cli]}
-
-  handle:
-    type: OS::Heat::WaitConditionHandle
-
-  waiter:
-    type: OS::Heat::WaitCondition
-    depends_on: server
-    properties:
-      timeout: {get_param: timeout}
-      handle: {get_resource: handle}
-
-  pool_member:
-    type: OS::Octavia::PoolMember
-    depends_on: waiter
-    properties:
-      address: {get_attr: [server, networks, {get_param: network}, 0]}
-      pool: {get_param: pool}
-      protocol_port: {get_param: app_port}
-      subnet: {get_param: subnet}
diff --git a/heat_tempest_plugin/tests/scenario/templates/test_autoscaling_lb_neutron.yaml b/heat_tempest_plugin/tests/scenario/templates/test_autoscaling_lb_neutron.yaml
deleted file mode 100644
index 033581a..0000000
--- a/heat_tempest_plugin/tests/scenario/templates/test_autoscaling_lb_neutron.yaml
+++ /dev/null
@@ -1,117 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: |
-  Template which tests Neutron load balancing requests to members of
-  Heat AutoScalingGroup.
-  Instances must be running some webserver on a given app_port
-  producing HTTP response that is different between servers
-  but stable over time for given server.
-
-parameters:
-  flavor:
-    type: string
-  image:
-    type: string
-  net:
-    type: string
-  subnet:
-    type: string
-  public_net:
-    type: string
-  app_port:
-    type: number
-    default: 8080
-  lb_port:
-    type: number
-    default: 80
-  timeout:
-    type: number
-    default: 600
-  wc_extra_args:
-    type: string
-    default: ""
-
-resources:
-
-  sec_group:
-    type: OS::Neutron::SecurityGroup
-    properties:
-      rules:
-      - remote_ip_prefix: 0.0.0.0/0
-        protocol: tcp
-        port_range_min: { get_param: app_port }
-        port_range_max: { get_param: app_port }
-
-  asg:
-    type: OS::Heat::AutoScalingGroup
-    properties:
-      desired_capacity: 1
-      max_size: 2
-      min_size: 1
-      resource:
-        type: OS::Test::NeutronAppServer
-        properties:
-          image: { get_param: image }
-          flavor: { get_param: flavor }
-          net: { get_param: net}
-          sec_group: { get_resource: sec_group }
-          app_port: { get_param: app_port }
-          pool_id: { get_resource: pool }
-          timeout: { get_param: timeout }
-          wc_extra_args: { get_param: wc_extra_args }
-
-  scale_up:
-    type: OS::Heat::ScalingPolicy
-    properties:
-      adjustment_type: change_in_capacity
-      auto_scaling_group_id: { get_resource: asg }
-      scaling_adjustment: 1
-
-  scale_down:
-    type: OS::Heat::ScalingPolicy
-    properties:
-      adjustment_type: change_in_capacity
-      auto_scaling_group_id: { get_resource: asg }
-      scaling_adjustment: -1
-
-  health_monitor:
-    type: OS::Neutron::HealthMonitor
-    properties:
-      delay: 3
-      type: HTTP
-      timeout: 3
-      max_retries: 3
-
-  pool:
-    type: OS::Neutron::Pool
-    properties:
-      lb_method: ROUND_ROBIN
-      protocol: HTTP
-      subnet: { get_param: subnet }
-      monitors:
-      - { get_resource: health_monitor }
-      vip:
-        protocol_port: { get_param: lb_port }
-
-  floating_ip:
-     type: OS::Neutron::FloatingIP
-     properties:
-       floating_network: { get_param: public_net }
-       port_id:
-         { get_attr: [pool, vip, 'port_id'] }
-
-  loadbalancer:
-    type: OS::Neutron::LoadBalancer
-    properties:
-      pool_id: { get_resource: pool }
-      protocol_port: { get_param: app_port }
-
-outputs:
-  lburl:
-    description: URL of the loadbalanced app
-    value:
-      str_replace:
-        template: http://IP_ADDRESS:PORT
-        params:
-          IP_ADDRESS: { get_attr: [ floating_ip, floating_ip_address ] }
-          PORT: { get_param: lb_port }
diff --git a/heat_tempest_plugin/tests/scenario/templates/test_autoscaling_lbv2_neutron.yaml b/heat_tempest_plugin/tests/scenario/templates/test_autoscaling_lbv2_neutron.yaml
deleted file mode 100644
index a26f7f7..0000000
--- a/heat_tempest_plugin/tests/scenario/templates/test_autoscaling_lbv2_neutron.yaml
+++ /dev/null
@@ -1,120 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: |
-  Template which tests Neutron load balancing requests to members of
-  Heat AutoScalingGroup. This uses LBaas V2.
-  Instances must be running some webserver on a given app_port
-  producing HTTP response that is different between servers
-  but stable over time for given server.
-
-parameters:
-  flavor:
-    type: string
-  image:
-    type: string
-  net:
-    type: string
-  subnet:
-    type: string
-  public_net:
-    type: string
-  app_port:
-    type: number
-    default: 8080
-  lb_port:
-    type: number
-    default: 80
-  timeout:
-    type: number
-    default: 600
-  wc_extra_args:
-    type: string
-    default: ""
-
-resources:
-
-  sec_group:
-    type: OS::Neutron::SecurityGroup
-    properties:
-      rules:
-      - remote_ip_prefix: 0.0.0.0/0
-        protocol: tcp
-        port_range_min: { get_param: app_port }
-        port_range_max: { get_param: app_port }
-
-  asg:
-    type: OS::Heat::AutoScalingGroup
-    properties:
-      desired_capacity: 1
-      max_size: 2
-      min_size: 1
-      resource:
-        type: OS::Test::NeutronAppServer
-        properties:
-          image: { get_param: image }
-          flavor: { get_param: flavor }
-          net: { get_param: net}
-          sec_group: { get_resource: sec_group }
-          app_port: { get_param: app_port }
-          pool: { get_resource: pool }
-          subnet: { get_param: subnet }
-          timeout: { get_param: timeout }
-          wc_extra_args: { get_param: wc_extra_args }
-
-  scale_up:
-    type: OS::Heat::ScalingPolicy
-    properties:
-      adjustment_type: change_in_capacity
-      auto_scaling_group_id: { get_resource: asg }
-      scaling_adjustment: 1
-
-  scale_down:
-    type: OS::Heat::ScalingPolicy
-    properties:
-      adjustment_type: change_in_capacity
-      auto_scaling_group_id: { get_resource: asg }
-      scaling_adjustment: -1
-
-  health_monitor:
-    type: OS::Neutron::LBaaS::HealthMonitor
-    properties:
-      delay: 3
-      type: HTTP
-      timeout: 3
-      max_retries: 3
-      pool: { get_resource: pool }
-
-  pool:
-    type: OS::Neutron::LBaaS::Pool
-    properties:
-      lb_algorithm: ROUND_ROBIN
-      protocol: HTTP
-      listener: { get_resource: listener }
-
-  listener:
-    type: OS::Neutron::LBaaS::Listener
-    properties:
-      loadbalancer: { get_resource: loadbalancer }
-      protocol: HTTP
-      protocol_port: { get_param: lb_port }
-
-  loadbalancer:
-    type: OS::Neutron::LBaaS::LoadBalancer
-    properties:
-      vip_subnet: { get_param: subnet }
-
-  floating_ip:
-    type: OS::Neutron::FloatingIP
-    properties:
-      floating_network: { get_param: public_net }
-      port_id: { get_attr: [loadbalancer, vip_port_id] }
-
-outputs:
-  lburl:
-    description: URL of the loadbalanced app
-    value:
-      str_replace:
-        template: http://IP_ADDRESS:PORT
-        params:
-          IP_ADDRESS: { get_attr: [ floating_ip, floating_ip_address ] }
-          PORT: { get_param: lb_port }
diff --git a/heat_tempest_plugin/tests/scenario/templates/test_base_resources.yaml b/heat_tempest_plugin/tests/scenario/templates/test_base_resources.yaml
index bff6185..a430205 100644
--- a/heat_tempest_plugin/tests/scenario/templates/test_base_resources.yaml
+++ b/heat_tempest_plugin/tests/scenario/templates/test_base_resources.yaml
@@ -8,7 +8,7 @@
   key_name:
     type: string
     default: key-01
-    description: Name of an existing key pair to use for the server
+    description: Name of the key pair to use for the server
   flavor:
     type: string
     description: Flavor for the server to be created
@@ -75,6 +75,7 @@
     type: OS::Nova::KeyPair
     properties:
       name: { get_param: key_name }
+      public_key: { get_file: id_ed25519.pub }
 
   server:
     type: OS::Nova::Server
diff --git a/heat_tempest_plugin/tests/scenario/test_autoscaling_lb.py b/heat_tempest_plugin/tests/scenario/test_autoscaling_lb.py
deleted file mode 100644
index 3323bc5..0000000
--- a/heat_tempest_plugin/tests/scenario/test_autoscaling_lb.py
+++ /dev/null
@@ -1,114 +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.
-
-import time
-
-import requests
-from tempest.lib import decorators
-
-from heat_tempest_plugin.common import test
-from heat_tempest_plugin.tests.scenario import scenario_base
-
-
-class AutoscalingLoadBalancerTest(scenario_base.ScenarioTestsBase):
-    """The class is responsible for testing ASG + LBv1 scenario.
-
-    The very common use case tested is an autoscaling group
-    of some web application servers behind a loadbalancer.
-    """
-
-    def setUp(self):
-        super(AutoscalingLoadBalancerTest, self).setUp()
-        self.template_name = 'test_autoscaling_lb_neutron.yaml'
-        self.app_server_template_name = 'app_server_neutron.yaml'
-        self.webapp_template_name = 'netcat-webapp.yaml'
-        if not self.is_network_extension_supported('lbaas'):
-            self.skipTest('LBaas v1 extension not available, skipping')
-
-    def check_num_responses(self, url, expected_num, retries=10):
-        resp = set()
-        for count in range(retries):
-            time.sleep(1)
-            try:
-                r = requests.get(url, verify=self.verify_cert)
-            except requests.exceptions.ConnectionError:
-                # The LB may not be up yet, let's retry
-                continue
-            # skip unsuccessful requests
-            if r.status_code == 200:
-                resp.add(r.text)
-        self.assertEqual(expected_num, len(resp))
-
-    @decorators.idempotent_id('48ddbc45-cef6-4640-acd6-7efc281833b9')
-    def test_autoscaling_loadbalancer_neutron(self):
-        """Check work of AutoScaing and Neutron LBaaS v1 resource in Heat.
-
-        The scenario is the following:
-            1. Launch a stack with a load balancer and autoscaling group
-               of one server, wait until stack create is complete.
-            2. Check that there is only one distinctive response from
-               loadbalanced IP.
-            3. Signal the scale_up policy, wait until all resources in
-               autoscaling group are complete.
-            4. Check that now there are two distinctive responses from
-               loadbalanced IP.
-        """
-
-        parameters = {
-            'flavor': self.conf.minimal_instance_type,
-            'image': self.conf.minimal_image_ref,
-            'net': self.conf.fixed_network_name,
-            'subnet': self.conf.fixed_subnet_name,
-            'public_net': self.conf.floating_network_name,
-            'app_port': 8080,
-            'lb_port': 80,
-            'timeout': 600
-        }
-        if self.conf.vm_to_heat_api_insecure:
-            parameters['wc_extra_args'] = '--insecure'
-
-        app_server_template = self._load_template(
-            __file__, self.app_server_template_name, self.sub_dir
-        )
-        webapp_template = self._load_template(
-            __file__, self.webapp_template_name, self.sub_dir
-        )
-        files = {'appserver.yaml': app_server_template,
-                 'webapp.yaml': webapp_template}
-        env = {'resource_registry':
-               {'OS::Test::NeutronAppServer': 'appserver.yaml',
-                'OS::Test::WebAppConfig': 'webapp.yaml'}}
-        # Launch stack
-        sid = self.launch_stack(
-            template_name=self.template_name,
-            parameters=parameters,
-            files=files,
-            environment=env
-        )
-        stack = self.client.stacks.get(sid)
-        lb_url = self._stack_output(stack, 'lburl')
-        # Check number of distinctive responces, must be 1
-        self.check_num_responses(lb_url, 1)
-
-        # Signal the scaling hook
-        self.client.resources.signal(sid, 'scale_up')
-
-        # Wait for AutoScalingGroup update to finish
-        asg = self.client.resources.get(sid, 'asg')
-        test.call_until_true(self.conf.build_timeout,
-                             self.conf.build_interval,
-                             self.check_autoscale_complete,
-                             asg.physical_resource_id, 2, sid, 'asg')
-
-        # Check number of distinctive responses, must now be 2
-        self.check_num_responses(lb_url, 2)
diff --git a/heat_tempest_plugin/tests/scenario/test_autoscaling_lbv2.py b/heat_tempest_plugin/tests/scenario/test_autoscaling_lbv2.py
deleted file mode 100644
index eee1fbc..0000000
--- a/heat_tempest_plugin/tests/scenario/test_autoscaling_lbv2.py
+++ /dev/null
@@ -1,114 +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.
-
-import time
-
-import requests
-from tempest.lib import decorators
-
-from heat_tempest_plugin.common import test
-from heat_tempest_plugin.tests.scenario import scenario_base
-
-
-class AutoscalingLoadBalancerv2Test(scenario_base.ScenarioTestsBase):
-    """The class is responsible for testing ASG + LBv2 scenario.
-
-    The very common use case tested is an autoscaling group
-    of some web application servers behind a loadbalancer.
-    """
-
-    def setUp(self):
-        super(AutoscalingLoadBalancerv2Test, self).setUp()
-        self.template_name = 'test_autoscaling_lbv2_neutron.yaml'
-        self.app_server_template_name = 'app_server_lbv2_neutron.yaml'
-        self.webapp_template_name = 'netcat-webapp.yaml'
-        if not self.is_network_extension_supported('lbaasv2'):
-            self.skipTest('LBaasv2 extension not available, skipping')
-
-    def check_num_responses(self, url, expected_num, retries=20):
-        resp = set()
-        for count in range(retries):
-            time.sleep(2)
-            try:
-                r = requests.get(url, verify=self.verify_cert)
-            except requests.exceptions.ConnectionError:
-                # The LB may not be up yet, let's retry
-                continue
-            # skip unsuccessful requests
-            if r.status_code == 200:
-                resp.add(r.text)
-                if len(resp) == expected_num:
-                    break
-        self.assertEqual(expected_num, len(resp))
-
-    @decorators.idempotent_id('89459930-aa61-4557-989b-3429d3b3b612')
-    def test_autoscaling_loadbalancer_neutron(self):
-        """Check work of AutoScaing and Neutron LBaaS v2 resource in Heat.
-
-        The scenario is the following:
-            1. Launch a stack with a load balancer and autoscaling group
-               of one server, wait until stack create is complete.
-            2. Check that there is only one distinctive response from
-               loadbalanced IP.
-            3. Signal the scale_up policy, wait until all resources in
-               autoscaling group are complete.
-            4. Check that now there are two distinctive responses from
-               loadbalanced IP.
-        """
-
-        parameters = {
-            'flavor': self.conf.minimal_instance_type,
-            'image': self.conf.minimal_image_ref,
-            'net': self.conf.fixed_network_name,
-            'subnet': self.conf.fixed_subnet_name,
-            'public_net': self.conf.floating_network_name
-        }
-        if self.conf.vm_to_heat_api_insecure:
-            parameters['wc_extra_args'] = '--insecure'
-
-        app_server_template = self._load_template(
-            __file__, self.app_server_template_name, self.sub_dir
-        )
-        webapp_template = self._load_template(
-            __file__, self.webapp_template_name, self.sub_dir
-        )
-        files = {'appserver.yaml': app_server_template,
-                 'webapp.yaml': webapp_template}
-        env = {'resource_registry':
-               {'OS::Test::NeutronAppServer': 'appserver.yaml',
-                'OS::Test::WebAppConfig': 'webapp.yaml'}}
-
-        # Launch stack
-        sid = self.launch_stack(
-            template_name=self.template_name,
-            parameters=parameters,
-            files=files,
-            environment=env
-        )
-        stack = self.client.stacks.get(sid)
-        lb_url = self._stack_output(stack, 'lburl')
-        # Check number of distinctive responces, must be 1
-        self.check_num_responses(lb_url, 1)
-
-        # Signal the scaling hook
-        self.client.resources.signal(sid, 'scale_up')
-
-        # Wait for AutoScalingGroup update to finish
-        asg = self.client.resources.get(sid, 'asg')
-        test.call_until_true(self.conf.build_timeout,
-                             self.conf.build_interval,
-                             self.check_autoscale_complete,
-                             asg.physical_resource_id, 2, sid, 'asg')
-
-        # Check number of distinctive responses, must now be 2
-        self.check_num_responses(lb_url, 2)
diff --git a/heat_tempest_plugin/tests/scenario/test_base_resources.py b/heat_tempest_plugin/tests/scenario/test_base_resources.py
index ddd8564..44de5b1 100644
--- a/heat_tempest_plugin/tests/scenario/test_base_resources.py
+++ b/heat_tempest_plugin/tests/scenario/test_base_resources.py
@@ -21,10 +21,10 @@
 
     def setUp(self):
         super(BasicResourcesTest, self).setUp()
-        if not self.conf.image_ref:
-            raise self.skipException("No image configured to test")
-        if not self.conf.instance_type:
-            raise self.skipException("No flavor configured to test")
+        if not self.conf.minimal_image_ref:
+            raise self.skipException("No minimal image configured to test")
+        if not self.conf.minimal_instance_type:
+            raise self.skipException("No minimal flavor configured to test")
 
     def check_stack(self):
         sid = self.stack_identifier
@@ -55,8 +55,8 @@
         self.private_net_name = test.rand_name('heat-net')
         parameters = {
             'key_name': test.rand_name('heat-key'),
-            'flavor': self.conf.instance_type,
-            'image': self.conf.image_ref,
+            'flavor': self.conf.minimal_instance_type,
+            'image': self.conf.minimal_image_ref,
             'vol_size': self.conf.volume_size,
             'private_net_name': self.private_net_name
         }
diff --git a/heat_tempest_plugin/tests/scenario/test_octavia_lbaas.py b/heat_tempest_plugin/tests/scenario/test_octavia_lbaas.py
index ce07262..46781d0 100644
--- a/heat_tempest_plugin/tests/scenario/test_octavia_lbaas.py
+++ b/heat_tempest_plugin/tests/scenario/test_octavia_lbaas.py
@@ -23,6 +23,10 @@
         self.template_name = 'octavia_lbaas.yaml'
         self.member_template_name = 'lb_member.yaml'
         self.sub_dir = 'templates'
+        if not self.conf.minimal_image_ref:
+            raise self.skipException("No minimal image configured to test")
+        if not self.conf.minimal_instance_type:
+            raise self.skipException("No minimal flavor configured to test")
 
     def _create_stack(self):
         self.parameters = {
diff --git a/heat_tempest_plugin/tests/scenario/test_server_signal.py b/heat_tempest_plugin/tests/scenario/test_server_signal.py
index 167dfa0..c4deb3c 100644
--- a/heat_tempest_plugin/tests/scenario/test_server_signal.py
+++ b/heat_tempest_plugin/tests/scenario/test_server_signal.py
@@ -81,6 +81,10 @@
 
     @decorators.idempotent_id('8da0f6cc-60e6-4298-9e54-e1f905c5552a')
     def test_server_signal_userdata_format_raw(self):
+        if not self.conf.minimal_image_ref:
+            raise self.skipException("No minimal image configured to test")
+        if not self.conf.minimal_instance_type:
+            raise self.skipException("No minimal flavor configured to test")
         self._test_server_signal(image=self.conf.minimal_image_ref,
                                  flavor=self.conf.minimal_instance_type)
 
@@ -88,6 +92,8 @@
     def test_server_signal_userdata_format_software_config(self):
         if not self.conf.image_ref:
             raise self.skipException("No image configured to test")
+        if not self.conf.instance_type:
+            raise self.skipException("No flavor configured to test")
         self._test_server_signal(user_data_format='SOFTWARE_CONFIG',
                                  image=self.conf.image_ref,
                                  flavor=self.conf.instance_type)
diff --git a/releasenotes/notes/honor-service_available-heat-03755bb4b092e753.yaml b/releasenotes/notes/honor-service_available-heat-03755bb4b092e753.yaml
new file mode 100644
index 0000000..d0d273d
--- /dev/null
+++ b/releasenotes/notes/honor-service_available-heat-03755bb4b092e753.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    The ``[service_available] heat`` parameter now takes effect and disables
+    all tests when it is set to ``False``.
diff --git a/requirements.txt b/requirements.txt
index 43abf78..ed5a98c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,3 @@
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
 keystoneauth1>=3.4.0 # Apache-2.0
 oslo.config>=5.2.0 # Apache-2.0
 oslo.log>=3.36.0 # Apache-2.0
diff --git a/setup.cfg b/setup.cfg
index 8776610..1b262e9 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,11 +1,12 @@
 [metadata]
 name = heat-tempest-plugin
 summary = OpenStack Orchestration Tempest Plugin
-description-file =
+description_file =
     README.rst
 author = OpenStack
-author-email = openstack-discuss@lists.openstack.org
-home-page = http://docs.openstack.org/developer/heat-tempest-plugin
+author_email = openstack-discuss@lists.openstack.org
+home_page = http://docs.openstack.org/developer/heat-tempest-plugin
+python_requires = >=3.6
 classifier =
     Environment :: OpenStack
     Intended Audience :: Information Technology
@@ -14,30 +15,20 @@
     Operating System :: POSIX :: Linux
     Programming Language :: Python
     Programming Language :: Python :: 3
-    Programming Language :: Python :: 3.5
     Programming Language :: Python :: 3.6
     Programming Language :: Python :: 3.7
+    Programming Language :: Python :: 3.8
+    Programming Language :: Python :: 3.9
+    Programming Language :: Python :: 3.10
 
 keywords =
     setup
     distutils
 
 [files]
-packages = 
+packages =
     heat_tempest_plugin
 
 [entry_points]
-tempest.test_plugins = 
+tempest.test_plugins =
     heat = heat_tempest_plugin.plugin:HeatTempestPlugin
-
-[global]
-setup-hooks =
-    pbr.hooks.setup_hook
-
-[egg_info]
-tag_build =
-tag_date = 0
-tag_svn_revision = 0
-
-[wheel]
-universal = 1
diff --git a/setup.py b/setup.py
index 566d844..cd35c3c 100644
--- a/setup.py
+++ b/setup.py
@@ -13,17 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
 import setuptools
 
-# In python < 2.7.4, a lazy loading of package `pbr` will break
-# setuptools if some other modules registered functions in `atexit`.
-# solution from: http://bugs.python.org/issue15881#msg170215
-try:
-    import multiprocessing  # noqa
-except ImportError:
-    pass
-
 setuptools.setup(
     setup_requires=['pbr>=2.0.0'],
     pbr=True)
diff --git a/test-requirements.txt b/test-requirements.txt
index 23614af..ffa8f45 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -1,7 +1,3 @@
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-
 # Hacking already pins down pep8, pyflakes and flake8
 hacking>=2.0,<2.1.0 # Apache-2.0
 # remove this pyflakes from here once you bump the
