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 453ccfa..5901d20 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
@@ -25,96 +25,6 @@
 CONF = config.CONF
 
 
-class BaremetalAgentIpmitoolWholedisk(bsm.BaremetalStandaloneScenarioTest):
-
-    driver = 'agent_ipmitool'
-    image_ref = CONF.baremetal.whole_disk_image_ref
-    wholedisk_image = True
-
-    @decorators.idempotent_id('defff515-a6ff-44f6-9d8d-2ded51196d98')
-    @utils.services('image', 'network', 'object_storage')
-    def test_ip_access_to_server(self):
-        self.boot_and_verify_node()
-
-
-class BaremetalAgentIpmitoolWholediskHttpLink(
-        bsm.BaremetalStandaloneScenarioTest):
-
-    driver = 'agent_ipmitool'
-    image_ref = CONF.baremetal.whole_disk_image_url
-    image_checksum = CONF.baremetal.whole_disk_image_checksum
-    wholedisk_image = True
-
-    @classmethod
-    def skip_checks(cls):
-        super(BaremetalAgentIpmitoolWholediskHttpLink, cls).skip_checks()
-        if not CONF.baremetal_feature_enabled.ipxe_enabled:
-            skip_msg = ("HTTP server is not available when ipxe is disabled.")
-            raise cls.skipException(skip_msg)
-
-    @decorators.idempotent_id('d926c683-1a32-44df-afd0-e60134346fd0')
-    @utils.services('network')
-    def test_ip_access_to_server(self):
-        self.boot_and_verify_node()
-
-
-class BaremetalAgentIpmitoolPartitioned(bsm.BaremetalStandaloneScenarioTest):
-
-    driver = 'agent_ipmitool'
-    image_ref = CONF.baremetal.partition_image_ref
-    wholedisk_image = False
-
-    @decorators.idempotent_id('27b86130-d8dc-419d-880a-fbbbe4ce3f8c')
-    @utils.services('image', 'network', 'object_storage')
-    def test_ip_access_to_server(self):
-        self.boot_and_verify_node()
-
-
-class BaremetalPxeIpmitoolWholedisk(bsm.BaremetalStandaloneScenarioTest):
-
-    driver = 'pxe_ipmitool'
-    image_ref = CONF.baremetal.whole_disk_image_ref
-    wholedisk_image = True
-
-    @decorators.idempotent_id('d8c5badd-45db-4d05-bbe8-35babbed6e86')
-    @utils.services('image', 'network')
-    def test_ip_access_to_server(self):
-        self.boot_and_verify_node()
-
-
-class BaremetalPxeIpmitoolWholediskHttpLink(
-        bsm.BaremetalStandaloneScenarioTest):
-
-    driver = 'pxe_ipmitool'
-    image_ref = CONF.baremetal.whole_disk_image_url
-    image_checksum = CONF.baremetal.whole_disk_image_checksum
-    wholedisk_image = True
-
-    @classmethod
-    def skip_checks(cls):
-        super(BaremetalPxeIpmitoolWholediskHttpLink, cls).skip_checks()
-        if not CONF.baremetal_feature_enabled.ipxe_enabled:
-            skip_msg = ("HTTP server is not available when ipxe is disabled.")
-            raise cls.skipException(skip_msg)
-
-    @decorators.idempotent_id('71ccf06f-6765-40fd-8252-1b1bfa423b9b')
-    @utils.services('network')
-    def test_ip_access_to_server(self):
-        self.boot_and_verify_node()
-
-
-class BaremetalPxeIpmitoolPartitioned(bsm.BaremetalStandaloneScenarioTest):
-
-    driver = 'pxe_ipmitool'
-    image_ref = CONF.baremetal.partition_image_ref
-    wholedisk_image = False
-
-    @decorators.idempotent_id('ea85e19c-6869-4577-b9bb-2eb150f77c90')
-    @utils.services('image', 'network')
-    def test_ip_access_to_server(self):
-        self.boot_and_verify_node()
-
-
 class BaremetalDriverIscsiWholedisk(bsm.BaremetalStandaloneScenarioTest):
 
     api_microversion = '1.31'  # to set the deploy_interface
diff --git a/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_cleaning.py b/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_cleaning.py
index 7496cf8..a18f8e9 100644
--- a/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_cleaning.py
+++ b/ironic_tempest_plugin/tests/scenario/ironic_standalone/test_cleaning.py
@@ -33,36 +33,6 @@
 CONF = config.CONF
 
 
-class BaremetalCleaningAgentIpmitoolWholedisk(
-        bsm.BaremetalStandaloneScenarioTest):
-
-    driver = 'agent_ipmitool'
-    image_ref = CONF.baremetal.whole_disk_image_ref
-    wholedisk_image = True
-    delete_node = False
-    api_microversion = '1.28'
-
-    @decorators.idempotent_id('0d82cedd-9697-4cf7-8e4a-80d510f53615')
-    @utils.services('image', 'network')
-    def test_manual_cleaning(self):
-        self.check_manual_partition_cleaning(self.node)
-
-
-class BaremetalCleaningPxeIpmitoolWholedisk(
-        bsm.BaremetalStandaloneScenarioTest):
-
-    driver = 'pxe_ipmitool'
-    image_ref = CONF.baremetal.whole_disk_image_ref
-    wholedisk_image = True
-    delete_node = False
-    api_microversion = '1.28'
-
-    @decorators.idempotent_id('fb03abfa-cdfc-41ec-aaa8-c70402786a85')
-    @utils.services('image', 'network')
-    def test_manual_cleaning(self):
-        self.check_manual_partition_cleaning(self.node)
-
-
 class BaremetalCleaningIpmiWholedisk(
         bsm.BaremetalStandaloneScenarioTest):
 
