diff --git a/tempest/tests/base_compute_test.py b/tempest/tests/base_compute_test.py
new file mode 100644
index 0000000..216f506
--- /dev/null
+++ b/tempest/tests/base_compute_test.py
@@ -0,0 +1,83 @@
+from tempest import exceptions
+from tempest import openstack
+from tempest.config import TempestConfig
+
+import unittest2 as unittest
+
+
+class BaseComputeTest(unittest.TestCase):
+
+    os = openstack.Manager()
+    servers_client = os.servers_client
+    flavors_client = os.flavors_client
+    images_client = os.images_client
+    extensions_client = os.extensions_client
+    floating_ips_client = os.floating_ips_client
+    keypairs_client = os.keypairs_client
+    floating_ips_client = os.floating_ips_client
+    security_groups_client = os.security_groups_client
+    limits_client = os.limits_client
+    config = os.config
+    build_interval = config.compute.build_interval
+    build_timeout = config.compute.build_timeout
+
+    # Validate reference data exists
+    # If not, attempt to auto-configure
+    try:
+        image_ref = config.compute.image_ref
+        image_ref_alt = config.compute.image_ref_alt
+        images_client.get_image(image_ref)
+        images_client.get_image(image_ref_alt)
+    except:
+        # Make a reasonable attempt to get usable images
+        params = {'status': 'ACTIVE'}
+        _, images = images_client.list_images_with_detail(params)
+        if len(images) is 0:
+            message = "No usable image exists. Upload an image to Glance."
+            raise exceptions.InvalidConfiguration(message=message)
+        if len(images) is 1:
+            image_ref = images[0]['id']
+            image_ref_alt = images[0]['id']
+        else:
+            # Try to determine if this is a devstack environment.
+            # If so, some of the images are not usable
+
+            # For now, the useable image in devstack has this property
+            usable = [i for i in images if 'ramdisk_id' in i['metadata']]
+            if len(usable) > 0:
+                # We've found at least one image we can use
+                image_ref = usable[0]['id']
+                image_ref_alt = usable[0]['id']
+            else:
+                # We've done our due dillegence, take the first two images
+                image_ref = images[0]['id']
+                image_ref_alt = images[1]['id']
+
+    try:
+        flavor_ref = config.compute.flavor_ref
+        flavor_ref_alt = config.compute.flavor_ref_alt
+        flavors_client.get_flavor_details(flavor_ref)
+        flavors_client.get_flavor_details(flavor_ref_alt)
+    except:
+        # Reload both with new values
+        # Sort so the smallest flavors are used. This is for efficiency.
+        _, flavors = flavors_client.list_flavors_with_detail()
+        flavors = sorted(flavors, key=lambda k: k['ram'])
+
+        if len(flavors) is 0:
+            message = "No flavors exists. Add flavors via the admin API."
+            raise exceptions.InvalidConfiguration(message=message)
+        if len(flavors) is 1:
+            flavor_ref = flavors[0]['id']
+            flavor_ref_alt = flavors[0]['id']
+        else:
+            flavor_ref = flavors[0]['id']
+            # Make sure the second flavor does not have the same RAM
+            for i in range(1, len(flavors)):
+                if flavors[i] == flavors[-1]:
+                    # We've tried. Take the last flavor
+                    flavor_ref_alt = flavors[i]['id']
+                else:
+                    if flavors[i]['ram'] > flavors[0]['ram']:
+                        flavor_ref_alt = flavors[i]['id']
+                        break
diff --git a/tempest/tests/test_authorization.py b/tempest/tests/test_authorization.py
index 5b2eeca..9f3c34d 100644
--- a/tempest/tests/test_authorization.py
+++ b/tempest/tests/test_authorization.py
@@ -153,15 +153,15 @@
         A create server request should fail if the tenant id does not match
         the current user
         """
+        saved_base_url = self.other_client.base_url
         try:
-            saved_base_url = self.other_client.client.base_url
             # Change the base URL to impersonate another user
-            self.other_client.client.base_url = self.client.client.base_url
+            self.other_client.base_url = self.client.base_url
             self.other_client.create_server('test', self.image['id'],
                                                     self.flavor_ref)
         finally:
             # Reset the base_url...
-            self.other_client.client.base_url = saved_base_url
+            self.other_client.base_url = saved_base_url
 
     @classmethod
     def _parse_image_id(self, image_ref):
diff --git a/tempest/tests/test_extensions.py b/tempest/tests/test_extensions.py
index 9bfffe3..9c1bac6 100644
--- a/tempest/tests/test_extensions.py
+++ b/tempest/tests/test_extensions.py
@@ -1,16 +1,14 @@
 from nose.plugins.attrib import attr
 from tempest import openstack
 import tempest.config
-import unittest2 as unittest
+from base_compute_test import BaseComputeTest
 
 
-class ExtentionsTest(unittest.TestCase):
+class ExtentionsTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.extensions_client
-        cls.config = cls.os.config
+        cls.client = cls.extensions_client
 
     @attr(type='smoke')
     def test_list_extensions(self):
diff --git a/tempest/tests/test_flavors.py b/tempest/tests/test_flavors.py
index 187fac7..34aa68c 100644
--- a/tempest/tests/test_flavors.py
+++ b/tempest/tests/test_flavors.py
@@ -3,16 +3,15 @@
 from tempest import exceptions
 from tempest import openstack
 import tempest.config
+from base_compute_test import BaseComputeTest
 
 
-class FlavorsTest(unittest.TestCase):
+class FlavorsTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.flavors_client
-        cls.config = cls.os.config
-        cls.flavor_id = cls.config.compute.flavor_ref
+        cls.client = cls.flavors_client
+        cls.flavor_id = cls.flavor_ref
 
     @attr(type='smoke')
     def test_list_flavors(self):
diff --git a/tempest/tests/test_floating_ips_actions.py b/tempest/tests/test_floating_ips_actions.py
index 9d7ed6c..cc69048 100644
--- a/tempest/tests/test_floating_ips_actions.py
+++ b/tempest/tests/test_floating_ips_actions.py
@@ -1,22 +1,20 @@
 from nose.plugins.attrib import attr
 from tempest import openstack
-import unittest2 as unittest
 from tempest import exceptions
 from tempest.common.utils.data_utils import rand_name
+from base_compute_test import BaseComputeTest
 
 
-class FloatingIPsTest(unittest.TestCase):
+class FloatingIPsTest(BaseComputeTest):
     server_id = None
     floating_ip = None
 
     @classmethod
     def setUpClass(cls):
         cls.os = openstack.Manager()
-        cls.client = cls.os.floating_ips_client
-        cls.servers_client = cls.os.servers_client
-        cls.config = cls.os.config
-        cls.image_ref = cls.config.compute.image_ref
-        cls.flavor_ref = cls.config.compute.flavor_ref
+        cls.client = cls.floating_ips_client
+        cls.servers_client = cls.servers_client
+
         #Server creation
         resp, server = cls.servers_client.create_server('floating-server',
                                                         cls.image_ref,
diff --git a/tempest/tests/test_image_metadata.py b/tempest/tests/test_image_metadata.py
index bf8b509..7309bcb 100644
--- a/tempest/tests/test_image_metadata.py
+++ b/tempest/tests/test_image_metadata.py
@@ -1,20 +1,16 @@
 from nose.plugins.attrib import attr
 from tempest import openstack
 from tempest.common.utils.data_utils import rand_name
-import unittest2 as unittest
 from tempest import exceptions
+from base_compute_test import BaseComputeTest
 
 
-class ImagesMetadataTest(unittest.TestCase):
+class ImagesMetadataTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.servers_client = cls.os.servers_client
-        cls.client = cls.os.images_client
-        cls.config = cls.os.config
-        cls.image_ref = cls.config.compute.image_ref
-        cls.flavor_ref = cls.config.compute.flavor_ref
+        cls.servers_client = cls.servers_client
+        cls.client = cls.images_client
 
         name = rand_name('server')
         resp, server = cls.servers_client.create_server(name, cls.image_ref,
diff --git a/tempest/tests/test_images.py b/tempest/tests/test_images.py
index 8217d2a..716da65 100644
--- a/tempest/tests/test_images.py
+++ b/tempest/tests/test_images.py
@@ -2,6 +2,7 @@
 import unittest2 as unittest
 
 from tempest.common.utils.data_utils import rand_name
+from base_compute_test import BaseComputeTest
 import tempest.config
 from tempest import openstack
 
@@ -11,19 +12,15 @@
     return temp[1]
 
 
-class ImagesTest(unittest.TestCase):
+class ImagesTest(BaseComputeTest):
 
     create_image_enabled = tempest.config.TempestConfig().\
             compute.create_image_enabled
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.images_client
-        cls.servers_client = cls.os.servers_client
-        cls.config = cls.os.config
-        cls.image_ref = cls.config.compute.image_ref
-        cls.flavor_ref = cls.config.compute.flavor_ref
+        cls.client = cls.images_client
+        cls.servers_client = cls.servers_client
         cls.create_image_enabled = cls.config.compute.create_image_enabled
 
     @attr(type='smoke')
diff --git a/tempest/tests/test_keypairs.py b/tempest/tests/test_keypairs.py
index 40d00dc..14e1317 100644
--- a/tempest/tests/test_keypairs.py
+++ b/tempest/tests/test_keypairs.py
@@ -1,16 +1,17 @@
 from nose.plugins.attrib import attr
 import unittest2 as unittest
 from tempest import openstack
+from base_compute_test import BaseComputeTest
 from tempest.common.utils.data_utils import rand_name
 from tempest import exceptions
 
 
-class KeyPairsTest(unittest.TestCase):
+class KeyPairsTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
         cls.os = openstack.Manager()
-        cls.client = cls.os.keypairs_client
+        cls.client = cls.keypairs_client
 
     @attr(type='smoke')
     def test_keypairs_create_list_delete(self):
diff --git a/tempest/tests/test_list_floating_ips.py b/tempest/tests/test_list_floating_ips.py
index e22dd58..d100c01 100644
--- a/tempest/tests/test_list_floating_ips.py
+++ b/tempest/tests/test_list_floating_ips.py
@@ -1,16 +1,16 @@
 from nose.plugins.attrib import attr
 from tempest import openstack
-import unittest2 as unittest
 from tempest import exceptions
+from base_compute_test import BaseComputeTest
 from tempest.common.utils.data_utils import rand_name
+import unittest2 as unittest
 
 
-class FloatingIPDetailsTest(unittest.TestCase):
+class FloatingIPDetailsTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.floating_ips_client
+        cls.client = cls.floating_ips_client
         cls.floating_ip = []
         cls.floating_ip_id = []
         cls.random_number = 0
diff --git a/tempest/tests/test_list_images.py b/tempest/tests/test_list_images.py
index e63c447..9d2bb1b 100644
--- a/tempest/tests/test_list_images.py
+++ b/tempest/tests/test_list_images.py
@@ -1,9 +1,8 @@
-import unittest2 as unittest
-
 from nose.plugins.attrib import attr
 
 from tempest import exceptions
 from tempest import openstack
+from base_compute_test import BaseComputeTest
 from tempest.common.utils.data_utils import rand_name
 
 
@@ -12,16 +11,11 @@
     return temp[len(temp) - 1]
 
 
-class ListImagesTest(unittest.TestCase):
+class ListImagesTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.images_client
-        cls.servers_client = cls.os.servers_client
-        cls.config = cls.os.config
-        cls.image_ref = cls.config.compute.image_ref
-        cls.flavor_ref = cls.config.compute.flavor_ref
+        cls.client = cls.images_client
 
         name = rand_name('server')
         resp, cls.server1 = cls.servers_client.create_server(name,
diff --git a/tempest/tests/test_list_servers.py b/tempest/tests/test_list_servers.py
index de69cb3..fbdce4b 100644
--- a/tempest/tests/test_list_servers.py
+++ b/tempest/tests/test_list_servers.py
@@ -4,22 +4,16 @@
 
 from tempest import openstack
 from tempest import exceptions
+from base_compute_test import BaseComputeTest
 from tempest.common.utils.data_utils import rand_name
 from tempest.tests import utils
 
 
-class ServerDetailsTest(unittest.TestCase):
+class ServerDetailsTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.servers_client
-        cls.images_client = cls.os.images_client
-        cls.config = cls.os.config
-        cls.image_ref = cls.config.compute.image_ref
-        cls.flavor_ref = cls.config.compute.flavor_ref
-        cls.image_ref_alt = cls.config.compute.image_ref_alt
-        cls.flavor_ref_alt = cls.config.compute.flavor_ref_alt
+        cls.client = cls.servers_client
 
         # Check to see if the alternate image ref actually exists...
         images_client = cls.os.images_client
diff --git a/tempest/tests/test_security_group_rules.py b/tempest/tests/test_security_group_rules.py
index c07f869..6c8cb8f 100644
--- a/tempest/tests/test_security_group_rules.py
+++ b/tempest/tests/test_security_group_rules.py
@@ -1,17 +1,16 @@
 from nose.plugins.attrib import attr
 from tempest import openstack
-import unittest2 as unittest
 from tempest import exceptions
+from base_compute_test import BaseComputeTest
 from tempest.common.utils.data_utils import rand_name
 import time
 
 
-class SecurityGroupsTest(unittest.TestCase):
+class SecurityGroupsTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.security_groups_client
+        cls.client = cls.security_groups_client
 
     @attr(type='positive')
     def test_security_group_rules_create(self):
diff --git a/tempest/tests/test_security_groups.py b/tempest/tests/test_security_groups.py
index bbbe777..fdd0077 100644
--- a/tempest/tests/test_security_groups.py
+++ b/tempest/tests/test_security_groups.py
@@ -1,17 +1,16 @@
 from nose.plugins.attrib import attr
 from tempest import openstack
-import unittest2 as unittest
 from tempest import exceptions
+from base_compute_test import BaseComputeTest
 from tempest.common.utils.data_utils import rand_name
 import time
 
 
-class SecurityGroupsTest(unittest.TestCase):
+class SecurityGroupsTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.security_groups_client
+        cls.client = cls.security_groups_client
 
     @attr(type='positive')
     def test_security_groups_create_list_delete(self):
diff --git a/tempest/tests/test_server_actions.py b/tempest/tests/test_server_actions.py
index e15fd10..4515b5e 100644
--- a/tempest/tests/test_server_actions.py
+++ b/tempest/tests/test_server_actions.py
@@ -1,29 +1,23 @@
 import base64
 import time
-
-from nose.plugins.attrib import attr
 import unittest2 as unittest
+
 from tempest import exceptions
+from base_compute_test import BaseComputeTest
 from tempest.common.utils.data_utils import rand_name
 import tempest.config
 from tempest import openstack
 
+from nose.plugins.attrib import attr
 
-class ServerActionsTest(unittest.TestCase):
+
+class ServerActionsTest(BaseComputeTest):
 
     resize_available = tempest.config.TempestConfig().compute.resize_available
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.servers_client
-        cls.config = cls.os.config
-        cls.image_ref = cls.config.compute.image_ref
-        cls.image_ref_alt = cls.config.compute.image_ref_alt
-        cls.flavor_ref = cls.config.compute.flavor_ref
-        cls.flavor_ref_alt = cls.config.compute.flavor_ref_alt
-        cls.build_interval = cls.config.compute.build_interval
-        cls.build_timeout = cls.config.compute.build_timeout
+        cls.client = cls.servers_client
 
     def setUp(self):
         self.name = rand_name('server')
diff --git a/tempest/tests/test_server_metadata.py b/tempest/tests/test_server_metadata.py
index e2dc111..61254f2 100644
--- a/tempest/tests/test_server_metadata.py
+++ b/tempest/tests/test_server_metadata.py
@@ -1,18 +1,14 @@
 from nose.plugins.attrib import attr
 from tempest import openstack
+from base_compute_test import BaseComputeTest
 from tempest.common.utils.data_utils import rand_name
-import unittest2 as unittest
 
 
-class ServerMetadataTest(unittest.TestCase):
+class ServerMetadataTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.servers_client
-        cls.config = cls.os.config
-        cls.image_ref = cls.config.compute.image_ref
-        cls.flavor_ref = cls.config.compute.flavor_ref
+        cls.client = cls.servers_client
 
         #Create a server to be used for all read only tests
         name = rand_name('server')
diff --git a/tempest/tests/test_server_personality.py b/tempest/tests/test_server_personality.py
index 3b516c5..0d90857 100644
--- a/tempest/tests/test_server_personality.py
+++ b/tempest/tests/test_server_personality.py
@@ -1,21 +1,17 @@
 from nose.plugins.attrib import attr
 from tempest import openstack
 from tempest import exceptions
+from base_compute_test import BaseComputeTest
 from tempest.common.utils.data_utils import rand_name
 import base64
-import unittest2 as unittest
 
 
-class ServerPersonalityTest(unittest.TestCase):
+class ServerPersonalityTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.servers_client
-        cls.config = cls.config = cls.os.config
-        cls.image_ref = cls.config.compute.image_ref
-        cls.flavor_ref = cls.config.compute.flavor_ref
-        cls.user_client = cls.os.limits_client
+        cls.client = cls.servers_client
+        cls.user_client = cls.limits_client
 
     def test_personality_files_exceed_limit(self):
         """
diff --git a/tempest/tests/test_servers.py b/tempest/tests/test_servers.py
index cdb2e89..414d58a 100644
--- a/tempest/tests/test_servers.py
+++ b/tempest/tests/test_servers.py
@@ -1,19 +1,15 @@
 from nose.plugins.attrib import attr
 from tempest import openstack
+from base_compute_test import BaseComputeTest
 from tempest.common.utils.data_utils import rand_name
 import base64
-import unittest2 as unittest
 
 
-class ServersTest(unittest.TestCase):
+class ServersTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.servers_client
-        cls.config = cls.os.config
-        cls.image_ref = cls.config.compute.image_ref
-        cls.flavor_ref = cls.config.compute.flavor_ref
+        cls.client = cls.servers_client
 
     @attr(type='smoke')
     def test_create_delete_server(self):
diff --git a/tempest/tests/test_servers_negative.py b/tempest/tests/test_servers_negative.py
index 6c738ea..0d97532 100644
--- a/tempest/tests/test_servers_negative.py
+++ b/tempest/tests/test_servers_negative.py
@@ -1,19 +1,15 @@
-import unittest2 as unittest
 from tempest import openstack
 from tempest.common.utils.data_utils import rand_name
+from base_compute_test import BaseComputeTest
 from tempest import exceptions
 import tempest.config
 
 
-class ServersNegativeTest(unittest.TestCase):
+class ServersNegativeTest(BaseComputeTest):
 
     @classmethod
     def setUpClass(cls):
-        cls.os = openstack.Manager()
-        cls.client = cls.os.servers_client
-        cls.config = cls.os.config
-        cls.image_ref = cls.config.compute.image_ref
-        cls.flavor_ref = cls.config.compute.flavor_ref
+        cls.client = cls.servers_client
 
     def test_server_name_blank(self):
         """Create a server with name parameter empty"""
