diff --git a/tempest/common/rest_client.py b/tempest/common/rest_client.py
index 119494d..754a1f6 100644
--- a/tempest/common/rest_client.py
+++ b/tempest/common/rest_client.py
@@ -128,6 +128,11 @@
             self._log(req_url, body, resp, resp_body)
             raise exceptions.BadRequest(resp_body['badRequest']['message'])
 
+        if resp.status == 409:
+            resp_body = json.loads(resp_body)
+            self._log(req_url, body, resp, resp_body)
+            raise exceptions.Duplicate(resp_body)
+
         if resp.status == 413:
             resp_body = json.loads(resp_body)
             self._log(req_url, body, resp, resp_body)
@@ -150,4 +155,9 @@
                 message = resp_body['computeFault']['message']
             raise exceptions.ComputeFault(message)
 
+        if resp.status >= 400:
+            resp_body = json.loads(resp_body)
+            self._log(req_url, body, resp, resp_body)
+            raise exceptions.TempestException(str(resp.status))
+
         return resp, resp_body
diff --git a/tempest/tests/test_keypairs.py b/tempest/tests/test_keypairs.py
index 4b75524..53fcd0b 100644
--- a/tempest/tests/test_keypairs.py
+++ b/tempest/tests/test_keypairs.py
@@ -2,10 +2,14 @@
 import unittest2 as unittest
 from tempest import openstack
 from tempest.common.utils.data_utils import rand_name
+import tempest.config
+from tempest import exceptions
 
 
 class KeyPairsTest(unittest.TestCase):
 
+    release = tempest.config.TempestConfig().env.release_name
+
     @classmethod
     def setUpClass(cls):
         cls.os = openstack.Manager()
@@ -62,26 +66,6 @@
         self.assertEqual(202, resp.status)
 
     @attr(type='smoke')
-    def test_keypair_create_get_delete(self):
-        """Keypair should be created, fetched and deleted"""
-        k_name = rand_name('keypair-')
-        resp, keypair = self.client.create_keypair(k_name)
-        self.assertEqual(200, resp.status)
-        #Need to pop these keys so that our compare doesn't fail later,
-        #as the keypair dicts from get API doesn't have them.
-        keypair.pop('private_key')
-        keypair.pop('user_id')
-        #Now fetch the created keypair by its name
-        resp, fetched_key = self.client.get_keypair(k_name)
-        self.assertEqual(200, resp.status)
-
-        self.assertEqual(keypair, fetched_key,
-                    "The fetched keypair is different from the created key")
-        #Delete the keypair
-        resp, _ = self.client.delete_keypair(k_name)
-        self.assertEqual(202, resp.status)
-
-    @attr(type='smoke')
     def test_keypair_create_with_pub_key(self):
         """Keypair should be created with a given public key"""
         k_name = rand_name('keypair-')
@@ -109,23 +93,23 @@
         """Keypair should not be created with a non RSA public key"""
         k_name = rand_name('keypair-')
         pub_key = "ssh-rsa JUNK nova@ubuntu"
-        resp, _ = self.client.create_keypair(k_name, pub_key)
-        self.assertEqual(400, resp.status)
-
-    @attr(type='negative')
-    def test_keypair_create_with_empty_pub_key(self):
-        """Keypair should not be created with an empty public key"""
-        k_name = rand_name('keypair-')
-        pub_key = ""
-        resp, _ = self.client.create_keypair(k_name, pub_key)
-        self.assertEqual(400, resp.status)
+        try:
+            resp, _ = self.client.create_keypair(k_name, pub_key)
+        except exceptions.BadRequest:
+            pass
+        else:
+            self.fail('Expected BadRequest for invalid public key')
 
     @attr(type='negative')
     def test_keypair_delete_nonexistant_key(self):
         """Non-existant key deletion should throw a proper error"""
         k_name = rand_name("keypair-non-existant-")
-        resp, _ = self.client.delete_keypair(k_name)
-        self.assertEqual(400, resp.status)
+        try:
+            resp, _ = self.client.delete_keypair(k_name)
+        except exceptions.NotFound:
+            pass
+        else:
+            self.fail('nonexistent key')
 
     @attr(type='negative')
     def test_create_keypair_with_duplicate_name(self):
@@ -134,19 +118,34 @@
         resp, _ = self.client.create_keypair(k_name)
         self.assertEqual(200, resp.status)
         #Now try the same keyname to ceate another key
-        resp, _ = self.client.create_keypair(k_name)
-        #Expect a HTTP 409 Conflict Error
-        self.assertEqual(409, resp.status)
+        try:
+            resp, _ = self.client.create_keypair(k_name)
+            #Expect a HTTP 409 Conflict Error
+        except exceptions.Duplicate:
+            pass
+        else:
+            self.fail('duplicate name')
+        resp, _ = self.client.delete_keypair(k_name)
+        self.assertEqual(202, resp.status)
 
     @attr(type='negative')
     def test_create_keypair_with_empty_name_string(self):
         """Keypairs with name being an empty string should not be created"""
-        resp, _ = self.client.create_keypair('')
-        self.assertEqual(400, resp.status)
+        try:
+            resp, _ = self.client.create_keypair('')
+        except exceptions.BadRequest:
+            pass
+        else:
+            self.fail('empty string')
 
+    @unittest.skipIf(release == 'diablo', 'bug in diablo')
     @attr(type='negative')
     def test_create_keypair_with_long_keynames(self):
         """Keypairs with name longer than 255 chars should not be created"""
         k_name = 'keypair-'.ljust(260, '0')
-        resp, _ = self.client.create_keypair(k_name)
-        self.assertEqual(400, resp.status)
+        try:
+            resp, _ = self.client.create_keypair(k_name)
+        except exceptions.BadRequest:
+            pass
+        else:
+            self.fail('too long')
diff --git a/tempest/tests/test_server_actions.py b/tempest/tests/test_server_actions.py
index 3581845..ab7c801 100644
--- a/tempest/tests/test_server_actions.py
+++ b/tempest/tests/test_server_actions.py
@@ -123,8 +123,7 @@
         Negative Test: The server reboot on non existant server should return
         an error
         """
-        resp, body = self.client.reboot(999, 'SOFT')
-        self.assertEqual(404, resp.status)
+        self.assertRaises(exceptions.NotFound, self.client.reboot, 999, 'SOFT')
 
     @attr(type='negative')
     def test_rebuild_nonexistant_server(self):
diff --git a/tempest/tools/conf_from_devstack b/tempest/tools/conf_from_devstack
index 15346d9..8baa8fb 100755
--- a/tempest/tools/conf_from_devstack
+++ b/tempest/tools/conf_from_devstack
@@ -159,7 +159,7 @@
 
 [environment]
 image_ref=%(base_image_uuid)s
-image_ref_alt=4
+image_ref_alt=%(base_image_uuid)s
 flavor_ref=1
 flavor_ref_alt=2
 create_image_enabled=true
