diff --git a/doc/source/config/with-nova.rst b/doc/source/config/with-nova.rst
new file mode 100644
index 0000000..3537588
--- /dev/null
+++ b/doc/source/config/with-nova.rst
@@ -0,0 +1,76 @@
+Full cloud with the Compute service and flat networking
+=======================================================
+
+This section documents running tempest on a full OpenStack cloud with the
+Compute, Image and Networking services enabled. The Bare Metal Introspection
+service (ironic-inspector) is not enabled. Flat networking is used.
+
+Prerequisite
+------------
+
+* `Create a bare metal flavor`_ in the Compute service in advance
+  and record its ID (``<flavor uuid>`` below).
+
+* `Create an image`_ to use for instances and record its ID (``<image uuid>``).
+  It can be either a whole disk or a partition image.
+
+* Create and record the name or UUID of a flat network to use for bare metal
+  instances (``<network name>``).
+
+* Get the minimum and maximum API versions that you want to test against.
+  Check the `API version history`_ to find the appropriate versions for
+  your deployment.
+
+  .. note:: The minimum version can usually be set to ``1.1``.
+
+* Enroll_ at least one node and make it ``available``.
+
+.. _Create a bare metal flavor: https://docs.openstack.org/ironic/latest/install/configure-nova-flavors.html
+.. _Create an image: https://docs.openstack.org/ironic/latest/install/configure-glance-images.html
+.. _API version history: https://docs.openstack.org/ironic/latest/contributor/webapi-version-history.html
+.. _Enroll: https://docs.openstack.org/ironic/latest/install/enrollment.html
+
+Configuration
+-------------
+
+.. code-block:: ini
+
+    [service_available]
+    # Enable ironic tests.
+    ironic = True
+
+    # Disable ironic-inspector tests.
+    ironic-inspector = False
+
+    [baremetal]
+    # Minimum and maximum API versions to test against.
+    min_microversion = <min API version as X.Y>
+    max_microversion = <max API version as X.Y>
+
+    [compute]
+    # Configure the bare metal flavor so that the Compute services provisions
+    # bare metal instances during the tests.
+    flavor_ref = <flavor uuid>
+    flavor_ref_alt = <flavor uuid>
+
+    # Configure the image to use.
+    image_ref = <image uuid>
+    image_ref_alt = <image uuid>
+
+    # Configure the network to use.
+    fixed_network_name = <network name>
+
+    [compute-feature-enabled]
+    # Ironic does not support this feature.
+    disk_config = False
+
+    # Not supported with flat networking.
+    interface_attach = False
+
+    [auth]
+    # Not supported with flat networking.
+    create_isolated_networks = False
+
+    [network]
+    # Required for flat networking.
+    shared_physical_network = True
diff --git a/doc/source/usage.rst b/doc/source/usage.rst
index 8ab88eb..3e3c56e 100644
--- a/doc/source/usage.rst
+++ b/doc/source/usage.rst
@@ -19,7 +19,14 @@
     [service_enabled]
     ironic_inspector = True
 
-.. TODO(dtantsur): I'm pretty sure more configuration is required, fill it in
+See the following example configurations for more details:
+
+.. toctree::
+   :maxdepth: 1
+
+   config/with-nova
+
+.. TODO(dtantsur): cover standalone tests
 
 .. _Tempest configuration: https://docs.openstack.org/tempest/latest/configuration.html
 
diff --git a/ironic_tempest_plugin/common/utils.py b/ironic_tempest_plugin/common/utils.py
index 67c4922..91f2001 100644
--- a/ironic_tempest_plugin/common/utils.py
+++ b/ironic_tempest_plugin/common/utils.py
@@ -11,7 +11,7 @@
 #    under the License.
 
 
-def get_node(client, node_id=None, instance_uuid=None):
+def get_node(client, node_id=None, instance_uuid=None, api_version=None):
     """Get a node by its identifier or instance UUID.
 
     If both node_id and instance_uuid specified, node_id will be used.
@@ -19,15 +19,17 @@
     :param client: an instance of tempest plugin BaremetalClient.
     :param node_id: identifier (UUID or name) of the node.
     :param instance_uuid: UUID of the instance.
+    :param api_version: Ironic API version to use.
     :returns: the requested node.
     :raises: AssertionError, if neither node_id nor instance_uuid was provided
     """
     assert node_id or instance_uuid, ('Either node or instance identifier '
                                       'has to be provided.')
     if node_id:
-        _, body = client.show_node(node_id)
+        _, body = client.show_node(node_id, api_version=api_version)
         return body
     elif instance_uuid:
-        _, body = client.show_node_by_instance_uuid(instance_uuid)
+        _, body = client.show_node_by_instance_uuid(instance_uuid,
+                                                    api_version=api_version)
         if body['nodes']:
             return body['nodes'][0]
diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py
index 887e6ad..7f42598 100644
--- a/ironic_tempest_plugin/config.py
+++ b/ironic_tempest_plugin/config.py
@@ -80,6 +80,12 @@
                help="Timeout for unprovisioning an Ironic node. "
                     "Takes longer since Kilo as Ironic performs an extra "
                     "step in Node cleaning."),
+    cfg.IntOpt('rescue_timeout',
+               default=300,
+               help="Timeout for rescuing an Ironic node."),
+    cfg.IntOpt('unrescue_timeout',
+               default=300,
+               help="Timeout for unrescuing an Ironic node."),
     cfg.StrOpt('min_microversion',
                help="Lower version of the test target microversion range. "
                     "The format is 'X.Y', where 'X' and 'Y' are int values. "
@@ -116,6 +122,9 @@
     cfg.ListOpt('enabled_deploy_interfaces',
                 default=['iscsi', 'direct'],
                 help="List of Ironic enabled deploy interfaces."),
+    cfg.ListOpt('enabled_rescue_interfaces',
+                default=['no-rescue'],
+                help="List of Ironic enabled rescue interfaces."),
     cfg.IntOpt('adjusted_root_disk_size_gb',
                min=0,
                help="Ironic adjusted disk size to use in the standalone tests "
diff --git a/ironic_tempest_plugin/services/baremetal/base.py b/ironic_tempest_plugin/services/baremetal/base.py
index 757a770..c588a70 100644
--- a/ironic_tempest_plugin/services/baremetal/base.py
+++ b/ironic_tempest_plugin/services/baremetal/base.py
@@ -10,9 +10,9 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import functools
 
 from oslo_serialization import jsonutils as json
+import six
 from six.moves import http_client
 from six.moves.urllib import parse as urllib
 from tempest.lib.common import api_version_utils
@@ -36,7 +36,7 @@
 def handle_errors(f):
     """A decorator that allows to ignore certain types of errors."""
 
-    @functools.wraps(f)
+    @six.wraps(f)
     def wrapper(*args, **kwargs):
         param_name = 'ignore_errors'
         ignored_errors = kwargs.get(param_name, tuple())
@@ -154,10 +154,14 @@
                       resource,
                       uuid=None,
                       permanent=False,
+                      headers=None,
+                      extra_headers=False,
                       **kwargs):
         """Gets a specific object of the specified type.
 
         :param uuid: Unique identifier of the object in UUID format.
+        :param headers: List of headers to use in request.
+        :param extra_headers: Specify whether to use headers.
         :returns: Serialized object as a dictionary.
 
         """
@@ -165,7 +169,8 @@
             uri = kwargs['uri']
         else:
             uri = self._get_uri(resource, uuid=uuid, permanent=permanent)
-        resp, body = self.get(uri)
+        resp, body = self.get(uri, headers=headers,
+                              extra_headers=extra_headers)
         self.expected_success(http_client.OK, resp.status)
 
         return resp, self.deserialize(body)
diff --git a/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py b/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py
index 550128a..11fdebf 100644
--- a/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py
+++ b/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py
@@ -20,6 +20,24 @@
     version = '1'
     uri_prefix = 'v1'
 
+    @staticmethod
+    def _get_headers(api_version):
+        """Return headers for a request.
+
+        Currently supports a header specifying the API version to use.
+
+        :param api_version: Ironic API version to use.
+        :return: a 2-tuple of (extra_headers, headers), where 'extra_headers'
+            is whether to use headers, and 'headers' is a list of headers to
+            use in the request.
+        """
+        extra_headers = False
+        headers = None
+        if api_version is not None:
+            extra_headers = True
+            headers = {'x-openstack-ironic-api-version': api_version}
+        return extra_headers, headers
+
     @base.handle_errors
     def list_nodes(self, **kwargs):
         """List all existing nodes."""
@@ -81,28 +99,33 @@
         return self._list_request('drivers')
 
     @base.handle_errors
-    def show_node(self, uuid):
+    def show_node(self, uuid, api_version=None):
         """Gets a specific node.
 
         :param uuid: Unique identifier of the node in UUID format.
+        :param api_version: Ironic API version to use.
         :return: Serialized node as a dictionary.
 
         """
-        return self._show_request('nodes', uuid)
+        extra_headers, headers = self._get_headers(api_version)
+        return self._show_request('nodes', uuid, headers=headers,
+                                  extra_headers=extra_headers)
 
     @base.handle_errors
-    def show_node_by_instance_uuid(self, instance_uuid):
+    def show_node_by_instance_uuid(self, instance_uuid, api_version=None):
         """Gets a node associated with given instance uuid.
 
         :param instance_uuid: Unique identifier of the instance in UUID format.
+        :param api_version: Ironic API version to use.
         :return: Serialized node as a dictionary.
 
         """
         uri = '/nodes/detail?instance_uuid=%s' % instance_uuid
-
+        extra_headers, headers = self._get_headers(api_version)
         return self._show_request('nodes',
                                   uuid=None,
-                                  uri=uri)
+                                  uri=uri, headers=headers,
+                                  extra_headers=extra_headers)
 
     @base.handle_errors
     def show_chassis(self, uuid):
@@ -388,6 +411,7 @@
                            'properties/memory_mb',
                            'driver',
                            'deploy_interface',
+                           'rescue_interface',
                            'instance_uuid',
                            'resource_class')
         if not patch:
@@ -460,7 +484,7 @@
 
     @base.handle_errors
     def set_node_provision_state(self, node_uuid, state, configdrive=None,
-                                 clean_steps=None):
+                                 clean_steps=None, rescue_password=None):
         """Set provision state of the specified node.
 
         :param node_uuid: The unique identifier of the node.
@@ -469,6 +493,7 @@
         :param configdrive: A gzipped, base64-encoded
             configuration drive string.
         :param clean_steps: A list with clean steps to execute.
+        :param rescue_password: user password used to rescue.
         """
         data = {'target': state}
         # NOTE (vsaienk0): Add both here if specified, do not check anything.
@@ -477,6 +502,8 @@
             data['configdrive'] = configdrive
         if clean_steps is not None:
             data['clean_steps'] = clean_steps
+        if rescue_password is not None:
+            data['rescue_password'] = rescue_password
         return self._put_request('nodes/%s/states/provision' % node_uuid,
                                  data)
 
diff --git a/ironic_tempest_plugin/tests/api/admin/base.py b/ironic_tempest_plugin/tests/api/admin/base.py
index 2e7a4ff..6bedae4 100644
--- a/ironic_tempest_plugin/tests/api/admin/base.py
+++ b/ironic_tempest_plugin/tests/api/admin/base.py
@@ -10,8 +10,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import functools
-
+import six
 from tempest import config
 from tempest.lib.common import api_version_utils
 from tempest.lib.common.utils import data_utils
@@ -41,7 +40,7 @@
     """Decorator that adds resources to the appropriate cleanup list."""
 
     def decorator(f):
-        @functools.wraps(f)
+        @six.wraps(f)
         def wrapper(cls, *args, **kwargs):
             resp, body = f(cls, *args, **kwargs)
 
diff --git a/ironic_tempest_plugin/tests/scenario/baremetal_manager.py b/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
index b4a8169..c220619 100644
--- a/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
+++ b/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
@@ -69,6 +69,7 @@
     DELETED = 'deleted'
     ERROR = 'error'
     MANAGEABLE = 'manageable'
+    RESCUE = 'rescue'
 
 
 class BaremetalScenarioTest(manager.ScenarioTest):
@@ -119,8 +120,9 @@
                                                       instance_id)
 
     @classmethod
-    def get_node(cls, node_id=None, instance_id=None):
-        return utils.get_node(cls.baremetal_client, node_id, instance_id)
+    def get_node(cls, node_id=None, instance_id=None, api_version=None):
+        return utils.get_node(cls.baremetal_client, node_id, instance_id,
+                              api_version)
 
     def get_ports(self, node_uuid):
         ports = []
@@ -153,9 +155,10 @@
     @classmethod
     @retry_on_conflict
     def set_node_provision_state(cls, node_id, state, configdrive=None,
-                                 clean_steps=None):
+                                 clean_steps=None, rescue_password=None):
         cls.baremetal_client.set_node_provision_state(
-            node_id, state, configdrive=configdrive, clean_steps=clean_steps)
+            node_id, state, configdrive=configdrive,
+            clean_steps=clean_steps, rescue_password=rescue_password)
 
     def verify_connectivity(self, ip=None):
         if ip:
diff --git a/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py b/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
index 0137db8..50eea65 100644
--- a/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
+++ b/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
@@ -146,6 +146,18 @@
         return floating_ip['floating_ip_address']
 
     @classmethod
+    def get_server_ip(cls, node_id):
+        """Get the server fixed IP.
+
+        :param node_id: Name or UUID of the node.
+        :returns: IP address of associated fixed IP.
+        """
+        vif = cls.get_node_vifs(node_id)[0]
+        body = cls.ports_client.show_port(vif)['port']
+        fixed_ip = body['fixed_ips'][0]
+        return fixed_ip['ip_address']
+
+    @classmethod
     def cleanup_floating_ip(cls, ip_address):
         """Removes floating IP."""
         body = cls.os_admin.floating_ips_client.list_floatingips()
@@ -272,6 +284,27 @@
             timeout=CONF.baremetal.unprovision_timeout,
             interval=1)
 
+    @classmethod
+    def rescue_node(cls, node_id, rescue_password):
+        """Rescue the node."""
+        cls.set_node_provision_state(node_id, 'rescue',
+                                     rescue_password=rescue_password)
+        cls.wait_provisioning_state(
+            node_id,
+            bm.BaremetalProvisionStates.RESCUE,
+            timeout=CONF.baremetal.rescue_timeout,
+            interval=1)
+
+    @classmethod
+    def unrescue_node(cls, node_id):
+        """Unrescue the node."""
+        cls.set_node_provision_state(node_id, 'unrescue')
+        cls.wait_provisioning_state(
+            node_id,
+            bm.BaremetalProvisionStates.ACTIVE,
+            timeout=CONF.baremetal.unrescue_timeout,
+            interval=1)
+
 
 class BaremetalStandaloneScenarioTest(BaremetalStandaloneManager):
 
@@ -284,6 +317,9 @@
     # The deploy interface to use by the HW type
     deploy_interface = None
 
+    # The rescue interface to use by the HW type
+    rescue_interface = None
+
     # User image ref to boot node with.
     image_ref = None
 
@@ -318,6 +354,13 @@
                 "in the list of enabled deploy interfaces %(enabled)s" % {
                     'iface': cls.deploy_interface,
                     'enabled': CONF.baremetal.enabled_deploy_interfaces})
+        if (cls.rescue_interface and cls.rescue_interface not in
+                CONF.baremetal.enabled_rescue_interfaces):
+            raise cls.skipException(
+                "Rescue interface %(iface)s required by test is not "
+                "in the list of enabled rescue interfaces %(enabled)s" % {
+                    'iface': cls.rescue_interface,
+                    'enabled': CONF.baremetal.enabled_rescue_interfaces})
         if not cls.wholedisk_image and CONF.baremetal.use_provision_network:
             raise cls.skipException(
                 'Partitioned images are not supported with multitenancy.')
@@ -336,12 +379,22 @@
         boot_kwargs = {'image_checksum': image_checksum}
         if cls.deploy_interface:
             boot_kwargs['deploy_interface'] = cls.deploy_interface
+        if cls.rescue_interface:
+            boot_kwargs['rescue_interface'] = cls.rescue_interface
         cls.node = cls.boot_node(cls.driver, cls.image_ref, **boot_kwargs)
-        cls.node_ip = cls.add_floatingip_to_node(cls.node['uuid'])
+        if CONF.validation.connect_method == 'floating':
+            cls.node_ip = cls.add_floatingip_to_node(cls.node['uuid'])
+        elif CONF.validation.connect_method == 'fixed':
+            cls.node_ip = cls.get_server_ip(cls.node['uuid'])
+        else:
+            m = ('Configuration option "[validation]/connect_method" '
+                 'must be set.')
+            raise lib_exc.InvalidConfiguration(m)
 
     @classmethod
     def resource_cleanup(cls):
-        cls.cleanup_floating_ip(cls.node_ip)
+        if CONF.validation.connect_method == 'floating':
+            cls.cleanup_floating_ip(cls.node_ip)
         vifs = cls.get_node_vifs(cls.node['uuid'])
         # Remove ports before deleting node, to catch regression for cases
         # when user did this prior unprovision node.
diff --git a/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_basic_ops.py b/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_basic_ops.py
index 62a0605..de0a17c 100644
--- a/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_basic_ops.py
+++ b/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_basic_ops.py
@@ -119,7 +119,22 @@
                                              should_succeed=True))
 
 
-class BaremetalIpmiWholedisk(bsm.BaremetalStandaloneScenarioTest):
+class BaremetalIpmiIscsiWholedisk(bsm.BaremetalStandaloneScenarioTest):
+
+    api_microversion = '1.31'  # to set the deploy_interface
+    driver = 'ipmi'
+    deploy_interface = 'iscsi'
+    image_ref = CONF.baremetal.whole_disk_image_ref
+    wholedisk_image = True
+
+    @decorators.idempotent_id('f25b71df-2150-45d7-a780-7f5b07124808')
+    @utils.services('image', 'network')
+    def test_ip_access_to_server(self):
+        self.assertTrue(self.ping_ip_address(self.node_ip,
+                                             should_succeed=True))
+
+
+class BaremetalIpmiDirectWholedisk(bsm.BaremetalStandaloneScenarioTest):
 
     api_microversion = '1.31'  # to set the deploy_interface
     driver = 'ipmi'
@@ -134,7 +149,7 @@
                                              should_succeed=True))
 
 
-class BaremetalIpmiPartitioned(bsm.BaremetalStandaloneScenarioTest):
+class BaremetalIpmiIscsiPartitioned(bsm.BaremetalStandaloneScenarioTest):
 
     api_microversion = '1.31'  # to set the deploy_interface
     driver = 'ipmi'
@@ -149,6 +164,21 @@
                                              should_succeed=True))
 
 
+class BaremetalIpmiDirectPartitioned(bsm.BaremetalStandaloneScenarioTest):
+
+    api_microversion = '1.31'  # to set the deploy_interface
+    driver = 'ipmi'
+    deploy_interface = 'direct'
+    image_ref = CONF.baremetal.partition_image_ref
+    wholedisk_image = False
+
+    @decorators.idempotent_id('7b4b2dcd-2bbb-44f5-991f-0964300af6b7')
+    @utils.services('image', 'network')
+    def test_ip_access_to_server(self):
+        self.assertTrue(self.ping_ip_address(self.node_ip,
+                                             should_succeed=True))
+
+
 class BaremetalIpmiAnsibleWholedisk(bsm.BaremetalStandaloneScenarioTest):
 
     api_microversion = '1.31'  # to set the deploy_interface
@@ -162,3 +192,51 @@
     def test_ip_access_to_server(self):
         self.assertTrue(self.ping_ip_address(self.node_ip,
                                              should_succeed=True))
+
+
+class BaremetalIpmiRescueWholedisk(bsm.BaremetalStandaloneScenarioTest):
+
+    api_microversion = '1.38'
+    min_microversion = '1.38'
+    driver = 'ipmi'
+    rescue_interface = 'agent'
+    image_ref = CONF.baremetal.whole_disk_image_ref
+    wholedisk_image = True
+
+    # NOTE(tiendc) Using direct deploy interface and a whole disk
+    # image may lead to the bug:
+    # https://bugs.launchpad.net/ironic/+bug/1750958
+    # This is a workaround by using iscsi deploy interface.
+    deploy_interface = 'iscsi'
+
+    @decorators.idempotent_id('d6a1780f-c4bb-4136-8144-29e822e14d66')
+    @utils.services('image', 'network')
+    def test_rescue_mode(self):
+        self.rescue_node(self.node['uuid'], 'abc123')
+        self.assertTrue(self.ping_ip_address(self.node_ip,
+                                             should_succeed=True))
+
+        self.unrescue_node(self.node['uuid'])
+        self.assertTrue(self.ping_ip_address(self.node_ip,
+                                             should_succeed=True))
+
+
+class BaremetalIpmiRescuePartitioned(bsm.BaremetalStandaloneScenarioTest):
+
+    api_microversion = '1.38'
+    min_microversion = '1.38'
+    driver = 'ipmi'
+    rescue_interface = 'agent'
+    image_ref = CONF.baremetal.partition_image_ref
+    wholedisk_image = False
+
+    @decorators.idempotent_id('113acd0a-9872-4631-b3ee-54da7e3bb262')
+    @utils.services('image', 'network')
+    def test_rescue_mode(self):
+        self.rescue_node(self.node['uuid'], 'abc123')
+        self.assertTrue(self.ping_ip_address(self.node_ip,
+                                             should_succeed=True))
+
+        self.unrescue_node(self.node['uuid'])
+        self.assertTrue(self.ping_ip_address(self.node_ip,
+                                             should_succeed=True))
diff --git a/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py b/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py
index 47fc07e..f78155d 100644
--- a/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py
+++ b/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py
@@ -35,6 +35,7 @@
         * Monitors the associated Ironic node for power and
           expected state transitions
         * Validates Ironic node's port data has been properly updated
+        * Validates Ironic node's resource class and traits have been honoured
         * Verifies SSH connectivity using created keypair via fixed IP
         * Associates a floating ip
         * Verifies SSH connectivity using created keypair via floating IP
@@ -44,6 +45,16 @@
           expected state transitions
     """
 
+    @staticmethod
+    def _is_version_supported(version):
+        """Return whether an API microversion is supported."""
+        min_version = api_version_request.APIVersionRequest(
+            CONF.baremetal.min_microversion)
+        max_version = api_version_request.APIVersionRequest(
+            CONF.baremetal.max_microversion)
+        version = api_version_request.APIVersionRequest(version)
+        return min_version <= version <= max_version
+
     def rebuild_instance(self, preserve_ephemeral=False):
         self.rebuild_server(server_id=self.instance['id'],
                             preserve_ephemeral=preserve_ephemeral,
@@ -105,9 +116,7 @@
         vifs = []
         # TODO(vsaienko) switch to get_node_vifs() when all stable releases
         # supports Ironic API 1.28
-        if (api_version_request.APIVersionRequest(
-            CONF.baremetal.max_microversion) >=
-                api_version_request.APIVersionRequest('1.28')):
+        if self._is_version_supported('1.28'):
             vifs = self.get_node_vifs(node_uuid)
         else:
             for port in self.get_ports(self.node['uuid']):
@@ -124,12 +133,65 @@
             self.assertEqual(n_port['device_id'], self.instance['id'])
             self.assertIn(n_port['mac_address'], ir_ports_addresses)
 
+    def validate_scheduling(self):
+        """Validate scheduling attributes of the node against the flavor.
+
+        Validates the resource class and traits requested by the flavor against
+        those set on the node. Does not assume that resource classes and traits
+        are in use.
+        """
+        # Try to get a node with resource class (1.21) and traits (1.37).
+        # TODO(mgoddard): Remove this when all stable releases support these
+        # API versions.
+        for version in ('1.37', '1.21'):
+            if self._is_version_supported(version):
+                node = self.get_node(instance_id=self.instance['id'],
+                                     api_version=version)
+                break
+        else:
+            # Neither API is supported - cannot test.
+            LOG.warning("Cannot validate resource class and trait based "
+                        "scheduling as these require API version 1.21 and "
+                        "1.37 respectively")
+            return
+
+        f_id = self.instance['flavor']['id']
+        extra_specs = self.flavors_client.list_flavor_extra_specs(f_id)
+        extra_specs = extra_specs['extra_specs']
+
+        # Pull the requested resource class and traits from the flavor.
+        resource_class = None
+        traits = set()
+        for key, value in extra_specs.items():
+            if key.startswith('resources:CUSTOM_') and value == '1':
+                resource_class = key.partition(':')[2]
+            if key.startswith('trait:') and value == 'required':
+                trait = key.partition(':')[2]
+                traits.add(trait)
+
+        # Validate requested resource class and traits against the node.
+        if resource_class is not None:
+            # The resource class in ironic may be lower case, and must omit the
+            # CUSTOM_ prefix. Normalise it.
+            node_resource_class = node['resource_class']
+            node_resource_class = node_resource_class.upper()
+            node_resource_class = 'CUSTOM_' + node_resource_class
+            self.assertEqual(resource_class, node_resource_class)
+
+        if 'traits' in node and traits:
+            self.assertIn('traits', node['instance_info'])
+            # All flavor traits should be added as instance traits.
+            self.assertEqual(traits, set(node['instance_info']['traits']))
+            # Flavor traits should be a subset of node traits.
+            self.assertTrue(traits.issubset(set(node['traits'])))
+
     @decorators.idempotent_id('549173a5-38ec-42bb-b0e2-c8b9f4a08943')
     @utils.services('compute', 'image', 'network')
     def test_baremetal_server_ops(self):
         self.add_keypair()
         self.instance, self.node = self.boot_instance()
         self.validate_ports()
+        self.validate_scheduling()
         ip_address = self.get_server_ip(self.instance)
         self.get_remote_client(ip_address).validate_authentication()
         vm_client = self.get_remote_client(ip_address)
diff --git a/ironic_tempest_plugin/tests/scenario/test_introspection_basic.py b/ironic_tempest_plugin/tests/scenario/test_introspection_basic.py
index 8ae92e9..f97316d 100644
--- a/ironic_tempest_plugin/tests/scenario/test_introspection_basic.py
+++ b/ironic_tempest_plugin/tests/scenario/test_introspection_basic.py
@@ -57,6 +57,7 @@
             interval=self.wait_provisioning_state_interval)
 
     @decorators.idempotent_id('03bf7990-bee0-4dd7-bf74-b97ad7b52a4b')
+    @decorators.attr(type='smoke')
     @utils.services('compute', 'image', 'network')
     def test_baremetal_introspection(self):
         """This smoke test case follows this set of operations:
@@ -144,33 +145,3 @@
         # verify nodes status and provision state
         for node_id in self.node_ids:
             self.verify_introspection_aborted(node_id)
-
-
-class InspectorSmokeTest(introspection_manager.InspectorScenarioTest):
-
-    @decorators.idempotent_id('a702d1f1-88e4-42ce-88ef-cba2d9e3312e')
-    @decorators.attr(type='smoke')
-    @utils.services('object_storage')
-    def test_baremetal_introspection(self):
-        """This smoke test case follows this very basic set of operations:
-
-            * Fetches expected properties from baremetal flavor
-            * Removes all properties from one node
-            * Sets the node to manageable state
-            * Inspects the node
-            * Sets the node to available state
-
-        """
-        # NOTE(dtantsur): we can't silently skip this test because it runs in
-        # grenade with several other tests, and we won't have any indication
-        # that it was not run.
-        assert self.node_ids, "No available nodes"
-        node_id = next(iter(self.node_ids))
-        self.introspect_node(node_id)
-
-        # settle down introspection
-        self.wait_for_introspection_finished([node_id])
-        self.wait_provisioning_state(
-            node_id, 'manageable',
-            timeout=CONF.baremetal_introspection.ironic_sync_timeout,
-            interval=self.wait_provisioning_state_interval)
diff --git a/requirements.txt b/requirements.txt
index 70272dc..54751e4 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,7 +3,7 @@
 # process, which may cause wedges in the gate later.
 
 pbr!=2.1.0,>=2.0.0 # Apache-2.0
-oslo.config>=5.1.0 # Apache-2.0
+oslo.config>=5.2.0 # Apache-2.0
 oslo.log>=3.36.0 # Apache-2.0
 oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
 oslo.utils>=3.33.0 # Apache-2.0
diff --git a/test-requirements.txt b/test-requirements.txt
index ed43223..1b68194 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -4,7 +4,7 @@
 
 hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
 
-sphinx>=1.6.2 # BSD
+sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
 oslosphinx>=4.7.0 # Apache-2.0
 
 # releasenotes
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index 6bb6b07..a1f312c 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -2,24 +2,26 @@
     check:
       jobs:
         - ironic-dsvm-standalone
+        - ironic-dsvm-standalone-queens
         - ironic-dsvm-standalone-pike
         - ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa
+        - ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa-queens
         - ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa-pike
         - ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa-ocata
         - ironic-tempest-dsvm-ironic-inspector
+        - ironic-tempest-dsvm-ironic-inspector-queens
         - ironic-tempest-dsvm-ironic-inspector-pike
         - ironic-tempest-dsvm-ironic-inspector-ocata
-        - ironic-inspector-grenade-dsvm
-        - ironic-inspector-grenade-dsvm-pike
     gate:
       jobs:
         - ironic-dsvm-standalone
+        - ironic-dsvm-standalone-queens
         - ironic-dsvm-standalone-pike
         - ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa
+        - ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa-queens
         - ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa-pike
         - ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa-ocata
         - ironic-tempest-dsvm-ironic-inspector
+        - ironic-tempest-dsvm-ironic-inspector-queens
         - ironic-tempest-dsvm-ironic-inspector-pike
         - ironic-tempest-dsvm-ironic-inspector-ocata
-        - ironic-inspector-grenade-dsvm
-        - ironic-inspector-grenade-dsvm-pike
diff --git a/zuul.d/stable-jobs.yaml b/zuul.d/stable-jobs.yaml
index 5e055f9..7a9150a 100644
--- a/zuul.d/stable-jobs.yaml
+++ b/zuul.d/stable-jobs.yaml
@@ -1,36 +1,40 @@
 ---
 - job:
+    name: ironic-dsvm-standalone-queens
+    parent: ironic-dsvm-standalone
+    override-checkout: stable/queens
+
+- job:
     name: ironic-dsvm-standalone-pike
     parent: ironic-dsvm-standalone
-    vars:
-      branch_override: stable/pike
+    override-checkout: stable/pike
+
+- job:
+    name: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa-queens
+    parent: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa
+    override-checkout: stable/queens
 
 - job:
     name: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa-pike
     parent: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa
-    vars:
-      branch_override: stable/pike
+    override-checkout: stable/pike
 
 - job:
     name: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa-ocata
     parent: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa
-    vars:
-      branch_override: stable/ocata
+    override-checkout: stable/ocata
+
+- job:
+    name: ironic-tempest-dsvm-ironic-inspector-queens
+    parent: ironic-tempest-dsvm-ironic-inspector
+    override-checkout: stable/queens
 
 - job:
     name: ironic-tempest-dsvm-ironic-inspector-pike
     parent: ironic-tempest-dsvm-ironic-inspector
-    vars:
-      branch_override: stable/pike
+    override-checkout: stable/pike
 
 - job:
     name: ironic-tempest-dsvm-ironic-inspector-ocata
     parent: ironic-tempest-dsvm-ironic-inspector
-    vars:
-      branch_override: stable/ocata
-
-- job:
-    name: ironic-inspector-grenade-dsvm-pike
-    parent: ironic-inspector-grenade-dsvm
-    vars:
-      branch_override: stable/pike
+    override-checkout: stable/ocata
