diff --git a/_modules/runtest/tempest_sections/heat_plugin.py b/_modules/runtest/tempest_sections/heat_plugin.py
index 4feab0f..3a34d04 100644
--- a/_modules/runtest/tempest_sections/heat_plugin.py
+++ b/_modules/runtest/tempest_sections/heat_plugin.py
@@ -160,15 +160,26 @@
 
     @property
     def instance_type(self):
-        c = conditions.BaseRule('nova.client.enabled', 'eq', True)
-        flavors = self.get_item_when_condition_match(
-            'nova.client.server.admin_identity.flavor', c)
-        if not flavors:
+        c = conditions.BaseRule(field='keystone.client.enabled', op='eq',
+                                val=True)
+        nodes = self.get_nodes_where_condition_match(c)
+        keystone_profile_admin = self.runtest_opts.get(
+            'keystone_profile_admin', {})
+        res = self.authenticated_openstack_module_call(
+            nodes[0],
+            'novang.flavor_list',
+            profile=keystone_profile_admin)[nodes[0]]
+        try:
+            # Need to have > 3 GB disk, but baremetal deployments
+            # can have 120 GB disk flavor, so better to select < 10 Gb.
+            flavors = [f for f in res
+                       if (res[f]['disk'] > 3) and (res[f]['disk'] < 10)]
+        except (ValueError, TypeError, KeyError):
+            flavors = None
+        if flavors:
+            return flavors[0]
+        else:
             return
-        flavor = [f for f in flavors if flavors[f]['disk'] > 3]
-        if not flavor:
-            return
-        return flavor[0]
 
     @property
     def ip_version_for_ssh(self):
