diff --git a/patrole_tempest_plugin/rbac_utils.py b/patrole_tempest_plugin/rbac_utils.py
index 1ada69b..b3cb271 100644
--- a/patrole_tempest_plugin/rbac_utils.py
+++ b/patrole_tempest_plugin/rbac_utils.py
@@ -216,7 +216,7 @@
     def skip_rbac_checks(cls):
         if not CONF.patrole.enable_rbac:
             raise cls.skipException(
-                '%s skipped as Patrole testing not enabled.' % cls.__name__)
+                'Patrole testing not enabled so skipping %s.' % cls.__name__)
 
     @classmethod
     def setup_rbac_utils(cls):
diff --git a/patrole_tempest_plugin/tests/api/compute/test_aggregates_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_aggregates_rbac.py
index 12ac058..b7cd392 100644
--- a/patrole_tempest_plugin/tests/api/compute/test_aggregates_rbac.py
+++ b/patrole_tempest_plugin/tests/api/compute/test_aggregates_rbac.py
@@ -13,7 +13,10 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import testtools
+
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
@@ -21,6 +24,8 @@
 from patrole_tempest_plugin import rbac_rule_validation
 from patrole_tempest_plugin.tests.api.compute import rbac_base
 
+CONF = config.CONF
+
 
 class AggregatesRbacTest(rbac_base.BaseV2ComputeRbacTest):
 
@@ -36,6 +41,29 @@
         super(AggregatesRbacTest, cls).setup_clients()
         cls.hosts_client = cls.os_primary.hosts_client
 
+    @classmethod
+    def resource_setup(cls):
+        super(AggregatesRbacTest, cls).resource_setup()
+        cls.host = None
+        hypers = cls.hypervisor_client.list_hypervisors(
+            detail=True)['hypervisors']
+
+        if CONF.compute.hypervisor_type:
+            hypers = [hyper for hyper in hypers
+                      if (hyper['hypervisor_type'] ==
+                          CONF.compute.hypervisor_type)]
+
+        hosts_available = [hyper['service']['host'] for hyper in hypers
+                           if (hyper['state'] == 'up' and
+                               hyper['status'] == 'enabled')]
+        if hosts_available:
+            cls.host = hosts_available[0]
+        else:
+            msg = "no available compute node found"
+            if CONF.compute.hypervisor_type:
+                msg += " for hypervisor_type %s" % CONF.compute.hypervisor_type
+            raise testtools.TestCase.failureException(msg)
+
     def _create_aggregate(self):
         agg_name = data_utils.rand_name(self.__class__.__name__ + '-aggregate')
         aggregate = self.aggregates_client.create_aggregate(name=agg_name)
@@ -46,13 +74,11 @@
         return aggregate_id
 
     def _add_host_to_aggregate(self, aggregate_id):
-        host_name = self.hosts_client.list_hosts()['hosts'][0]['host_name']
-        self.aggregates_client.add_host(aggregate_id, host=host_name)
+        self.aggregates_client.add_host(aggregate_id, host=self.host)
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                         self.aggregates_client.remove_host,
                         aggregate_id,
-                        host=host_name)
-        return host_name
+                        host=self.host)
 
     @rbac_rule_validation.action(
         service="nova", rule="os_compute_api:os-aggregates:create")
@@ -107,9 +133,9 @@
     @decorators.idempotent_id('5b035a25-75d2-4d72-b4d6-0f0337335628')
     def test_remove_host_from_aggregate_rbac(self):
         aggregate_id = self._create_aggregate()
-        host_name = self._add_host_to_aggregate(aggregate_id)
+        self._add_host_to_aggregate(aggregate_id)
         with self.rbac_utils.override_role(self):
-            self.aggregates_client.remove_host(aggregate_id, host=host_name)
+            self.aggregates_client.remove_host(aggregate_id, host=self.host)
 
     @rbac_rule_validation.action(
         service="nova", rule="os_compute_api:os-aggregates:set_metadata")
diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_volume_attachments_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_volume_attachments_rbac.py
index ed0c7a2..b803fe3 100644
--- a/patrole_tempest_plugin/tests/api/compute/test_server_volume_attachments_rbac.py
+++ b/patrole_tempest_plugin/tests/api/compute/test_server_volume_attachments_rbac.py
@@ -12,6 +12,7 @@
 #    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 testtools
 
 from tempest.common import waiters
 from tempest import config
@@ -72,6 +73,8 @@
                 self.server['id'], attachment['id'])
 
     @decorators.attr(type='slow')
+    @testtools.skipUnless(CONF.compute_feature_enabled.swap_volume,
+                          'In-place swapping of volumes not supported.')
     @rbac_rule_validation.action(
         service="nova",
         rule="os_compute_api:os-volumes-attachments:update")
diff --git a/patrole_tempest_plugin/tests/unit/test_rbac_utils.py b/patrole_tempest_plugin/tests/unit/test_rbac_utils.py
index 55db501..5e730d3 100644
--- a/patrole_tempest_plugin/tests/unit/test_rbac_utils.py
+++ b/patrole_tempest_plugin/tests/unit/test_rbac_utils.py
@@ -254,6 +254,6 @@
 
         with testtools.ExpectedException(
                 testtools.TestCase.skipException,
-                value_re=('%s skipped as Patrole testing not enabled.'
+                value_re=('Patrole testing not enabled so skipping %s.'
                           % ChildRbacTest.__name__)):
             child_test.setUpClass()
