diff --git a/HACKING.rst b/HACKING.rst
index ca7b5cd..eac83a4 100644
--- a/HACKING.rst
+++ b/HACKING.rst
@@ -1,4 +1,4 @@
 ironic-tempest-plugin Style Commandments
 ===============================================
 
-Read the OpenStack Style Commandments http://docs.openstack.org/developer/hacking/
+Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/
diff --git a/doc/source/config/with-nova.rst b/doc/source/config/with-nova.rst
index 3537588..67dcc62 100644
--- a/doc/source/config/with-nova.rst
+++ b/doc/source/config/with-nova.rst
@@ -46,6 +46,8 @@
     # Minimum and maximum API versions to test against.
     min_microversion = <min API version as X.Y>
     max_microversion = <max API version as X.Y>
+    # Driver to use for API tests for Queens and newer:
+    driver = fake-hardware
 
     [compute]
     # Configure the bare metal flavor so that the Compute services provisions
diff --git a/doc/source/usage.rst b/doc/source/usage.rst
index 3e3c56e..27b5ebe 100644
--- a/doc/source/usage.rst
+++ b/doc/source/usage.rst
@@ -38,11 +38,20 @@
 
 ``ironic``
     all bare metal tests
+``ironic_tempest_plugin.tests.api``
+    only API tests using fake hardware, without other OpenStack services (these
+    tests are run by jobs starting with ``tempest-dsvm-ironic-functional``)
+``ironic_tempest_plugin.tests.scenario``
+    all integration tests, excluding the API tests with fake hardware (these
+    tests are run by most of the jobs)
 ``ironic_standalone``
     standalone bare metal tests that do not use the Compute service
+    (these tests are run by the job ``ironic-dsvm-standalone``)
 ``InspectorBasicTest``
-    basic introspection tests
+    basic introspection tests (these tests are run by most of the jobs with
+    ``ironic-inspector`` in their name)
 ``InspectorDiscoveryTest``
-    introspection auto-discovery tests
+    introspection auto-discovery tests (these tests are run by the job
+    ``ironic-inspector-tempest-dsvm-discovery`` and require additional set up)
 
 .. _Tempest documentation: https://docs.openstack.org/tempest/latest/run.html
diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py
index c4fb185..7cabf69 100644
--- a/ironic_tempest_plugin/config.py
+++ b/ironic_tempest_plugin/config.py
@@ -129,6 +129,9 @@
     cfg.ListOpt('enabled_rescue_interfaces',
                 default=['no-rescue'],
                 help="List of Ironic enabled rescue interfaces."),
+    cfg.ListOpt('enabled_boot_interfaces',
+                default=['fake', 'pxe'],
+                help="List of Ironic enabled boot interfaces."),
     cfg.StrOpt('default_rescue_interface',
                help="Ironic default rescue interface."),
     cfg.IntOpt('adjusted_root_disk_size_gb',
diff --git a/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py b/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
index c7d6b50..94780a8 100644
--- a/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
+++ b/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py
@@ -418,6 +418,12 @@
     # been set via a different test).
     rescue_interface = None
 
+    # The boot interface to use by the HW type. The boot interface of the
+    # node used in the test will be set to this value. If set to None, the
+    # node will retain its existing boot_interface value (which may have been
+    # set via a different test).
+    boot_interface = None
+
     # Boolean value specify if image is wholedisk or not.
     wholedisk_image = None
 
@@ -463,6 +469,13 @@
                 "in the list of enabled rescue interfaces %(enabled)s" % {
                     'iface': cls.rescue_interface,
                     'enabled': CONF.baremetal.enabled_rescue_interfaces})
+        if (cls.boot_interface and cls.boot_interface not in
+                CONF.baremetal.enabled_boot_interfaces):
+            raise cls.skipException(
+                "Boot interface %(iface)s required by test is not "
+                "in the list of enabled boot interfaces %(enabled)s" % {
+                    'iface': cls.boot_interface,
+                    'enabled': CONF.baremetal.enabled_boot_interfaces})
         if not cls.wholedisk_image and CONF.baremetal.use_provision_network:
             raise cls.skipException(
                 'Partitioned images are not supported with multitenancy.')
@@ -497,6 +510,8 @@
             boot_kwargs['deploy_interface'] = cls.deploy_interface
         if cls.rescue_interface:
             boot_kwargs['rescue_interface'] = cls.rescue_interface
+        if cls.boot_interface:
+            boot_kwargs['boot_interface'] = cls.boot_interface
 
         # just get an available node
         cls.node = cls.get_and_reserve_node()
diff --git a/ironic_tempest_plugin/tests/scenario/introspection_manager.py b/ironic_tempest_plugin/tests/scenario/introspection_manager.py
index eb31327..21b9911 100644
--- a/ironic_tempest_plugin/tests/scenario/introspection_manager.py
+++ b/ironic_tempest_plugin/tests/scenario/introspection_manager.py
@@ -201,8 +201,7 @@
         while True:
             time.sleep(CONF.baremetal_introspection.hypervisor_update_sleep)
             stats = self.hypervisor_stats()
-            expected_cpus = self.baremetal_flavor()['vcpus']
-            if int(stats['hypervisor_statistics']['vcpus']) >= expected_cpus:
+            if int(stats['hypervisor_statistics']['count']):
                 break
 
             timeout = CONF.baremetal_introspection.hypervisor_update_timeout
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 5aa7543..45b5271 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
@@ -237,3 +237,99 @@
         self.unrescue_node(self.node['uuid'])
         self.assertTrue(self.ping_ip_address(self.node_ip,
                                              should_succeed=True))
+
+
+class BaremetalIloDirectWholediskHttpLink(
+        bsm.BaremetalStandaloneScenarioTest):
+
+    api_microversion = '1.31'  # to set the deploy_interface
+    driver = 'ilo'
+    deploy_interface = 'direct'
+    boot_interface = 'ilo-virtual-media'
+    image_ref = CONF.baremetal.whole_disk_image_url
+    image_checksum = CONF.baremetal.whole_disk_image_checksum
+    wholedisk_image = True
+
+    @decorators.idempotent_id('c2db24e7-b9bb-44df-6765-e60134346fd0')
+    @utils.services('network')
+    def test_ip_access_to_server(self):
+        self.boot_and_verify_node()
+
+
+class BaremetalIloDirectPartitioned(bsm.BaremetalStandaloneScenarioTest):
+
+    api_microversion = '1.31'  # to set the deploy_interface
+    driver = 'ilo'
+    deploy_interface = 'direct'
+    boot_interface = 'ilo-virtual-media'
+    image_ref = CONF.baremetal.partition_image_ref
+    wholedisk_image = False
+
+    @decorators.idempotent_id('ea85e19c-d8dc-4577-4d05-fbbbe4ce3f8c')
+    @utils.services('image', 'network')
+    def test_ip_access_to_server(self):
+        self.boot_and_verify_node()
+
+
+class BaremetalIloIscsiWholediskHttpLink(
+        bsm.BaremetalStandaloneScenarioTest):
+
+    api_microversion = '1.31'  # to set the deploy_interface
+    driver = 'ilo'
+    deploy_interface = 'iscsi'
+    boot_interface = 'ilo-virtual-media'
+    image_ref = CONF.baremetal.whole_disk_image_url
+    image_checksum = CONF.baremetal.whole_disk_image_checksum
+    wholedisk_image = True
+
+    @decorators.idempotent_id('71ccf06f-45db-8f93-afd0-d4efae2bfd4e')
+    @utils.services('network')
+    def test_ip_access_to_server(self):
+        self.boot_and_verify_node()
+
+
+class BaremetalIloIscsiPartitioned(bsm.BaremetalStandaloneScenarioTest):
+
+    api_microversion = '1.31'  # to set the deploy_interface
+    driver = 'ilo'
+    deploy_interface = 'iscsi'
+    boot_interface = 'ilo-virtual-media'
+    image_ref = CONF.baremetal.partition_image_ref
+    wholedisk_image = False
+
+    @decorators.idempotent_id('d926c683-4d05-8252-b9bb-35babbed6e86')
+    @utils.services('image', 'network')
+    def test_ip_access_to_server(self):
+        self.boot_and_verify_node()
+
+
+class BaremetalIloPxeWholediskHttpLink(
+        bsm.BaremetalStandaloneScenarioTest):
+
+    api_microversion = '1.31'  # to set the deploy_interface
+    driver = 'ilo'
+    deploy_interface = 'direct'
+    boot_interface = 'ilo-pxe'
+    image_ref = CONF.baremetal.whole_disk_image_url
+    image_checksum = CONF.baremetal.whole_disk_image_checksum
+    wholedisk_image = True
+
+    @decorators.idempotent_id('d926c683-1a32-edbc-07dc-95cd74eefecb')
+    @utils.services('network')
+    def test_ip_access_to_server(self):
+        self.boot_and_verify_node()
+
+
+class BaremetalIloPxePartitioned(bsm.BaremetalStandaloneScenarioTest):
+
+    api_microversion = '1.31'  # to set the deploy_interface
+    driver = 'ilo'
+    deploy_interface = 'direct'
+    boot_interface = 'ilo-pxe'
+    image_ref = CONF.baremetal.partition_image_ref
+    wholedisk_image = False
+
+    @decorators.idempotent_id('71ccf06f-07dc-4577-6869-1b1bfa423b9b')
+    @utils.services('image', 'network')
+    def test_ip_access_to_server(self):
+        self.boot_and_verify_node()
