diff --git a/storm/common/rest_client.py b/storm/common/rest_client.py
index 88f1fb4..170e523 100644
--- a/storm/common/rest_client.py
+++ b/storm/common/rest_client.py
@@ -1,14 +1,15 @@
-from storm import exceptions
-import httplib2
 import json
+
+import httplib2
+
+from storm import exceptions
 import storm.config
 
 
 class RestClient(object):
 
-    def __init__(self, user, key, auth_url, tenant_name=None):
-        self.config = storm.config.StormConfig()
-
+    def __init__(self, config, user, key, auth_url, tenant_name=None):
+        self.config = config
         if self.config.env.authentication == 'keystone_v2':
             self.token, self.base_url = self.keystone_v2_auth(user,
                                                               key,
@@ -55,21 +56,24 @@
         resp, body = self.http_obj.request(auth_url, 'POST',
                                            headers=headers, body=body)
 
-        try:
-            auth_data = json.loads(body)['access']
-            token = auth_data['token']['id']
-            endpoints = auth_data['serviceCatalog'][0]['endpoints']
-            mgmt_url = endpoints[0]['publicURL']
+        if resp.status == 200:
+            try:
+                auth_data = json.loads(body)['access']
+                token = auth_data['token']['id']
+                endpoints = auth_data['serviceCatalog'][0]['endpoints']
+                mgmt_url = endpoints[0]['publicURL']
 
-            #TODO (dwalleck): This is a horrible stopgap.
-            #Need to join strings more cleanly
-            temp = mgmt_url.rsplit('/')
-            service_url = temp[0] + '//' + temp[2] + '/' + temp[3] + '/'
-            management_url = service_url + tenant_name
-            return token, management_url
-        except KeyError:
-            print "Failed to authenticate user"
-            raise
+                #TODO (dwalleck): This is a horrible stopgap.
+                #Need to join strings more cleanly
+                temp = mgmt_url.rsplit('/')
+                service_url = temp[0] + '//' + temp[2] + '/' + temp[3] + '/'
+                management_url = service_url + tenant_name
+                return token, management_url
+            except Exception, e:
+                print "Failed to authenticate user: %s" % e
+                raise
+        elif resp.status == 401:
+            raise exceptions.AuthenticationFailure(user=user, password=api_key)
 
     def post(self, url, body, headers):
         return self.request('POST', url, headers, body)
diff --git a/storm/config.py b/storm/config.py
index 454f684..42b9894 100644
--- a/storm/config.py
+++ b/storm/config.py
@@ -1,4 +1,8 @@
 import ConfigParser
+import logging
+import os
+
+LOG = logging.getLogger(__name__)
 
 
 class NovaConfig(object):
@@ -119,15 +123,24 @@
 class StormConfig(object):
     """Provides OpenStack configuration information."""
 
-    _path = "etc/storm.conf"
+    def __init__(self, conf_dir, conf_file):
+        """
+        Initialize a configuration from a conf directory and conf file.
 
-    def __init__(self, path=None):
-        """Initialize a configuration from a path."""
-        self._conf = self.load_config(self._path)
+        :param conf_dir: Directory to look for config files
+        :param conf_file: Name of config file to use
+        """
+        path = os.path.join(conf_dir, conf_file)
+
+        if not os.path.exists(path):
+            msg = "Config file %(path)s not found" % locals()
+            raise RuntimeError(msg)
+
+        self._conf = self.load_config(path)
         self.nova = NovaConfig(self._conf)
         self.env = EnvironmentConfig(self._conf)
 
-    def load_config(self, path=None):
+    def load_config(self, path):
         """Read configuration from given path and return a config object."""
         config = ConfigParser.SafeConfigParser()
         config.read(path)
diff --git a/storm/exceptions.py b/storm/exceptions.py
index 93ffa91..9290cf7 100644
--- a/storm/exceptions.py
+++ b/storm/exceptions.py
@@ -16,3 +16,10 @@
 
     def __str__(self):
         return repr(self.message)
+
+
+class AuthenticationFailure(Exception):
+    msg = ("Authentication with user %(user)s and password "
+           "%(password)s failed.")
+    def __init__(self, **kwargs):
+        self.message = self.msg % kwargs
diff --git a/storm/openstack.py b/storm/openstack.py
index 97c5b7d..78f8c03 100644
--- a/storm/openstack.py
+++ b/storm/openstack.py
@@ -1,3 +1,5 @@
+import os
+
 from storm.services.nova.json.images_client import ImagesClient
 from storm.services.nova.json.flavors_client import FlavorsClient
 from storm.services.nova.json.servers_client import ServersClient
@@ -7,38 +9,57 @@
 
 class Manager(object):
 
+    DEFAULT_CONFIG_DIR = os.path.join(
+        os.path.abspath(
+          os.path.dirname(
+            os.path.dirname(__file__))),
+        "etc")
+
+    DEFAULT_CONFIG_FILE = "storm.conf"
+
     def __init__(self):
         """
         Top level manager for all Openstack APIs
         """
-
-        self.config = storm.config.StormConfig()
+        # Environment variables override defaults...
+        config_dir = os.environ.get('TEMPEST_CONFIG_DIR',
+            self.DEFAULT_CONFIG_DIR)
+        config_file = os.environ.get('TEMPEST_CONFIG',
+            self.DEFAULT_CONFIG_FILE)
+        self.config = storm.config.StormConfig(config_dir, config_file)
         self.auth_url = data_utils.build_url(self.config.nova.host,
                                         self.config.nova.port,
                                         self.config.nova.apiVer,
                                         self.config.nova.path)
 
         if self.config.env.authentication == 'keystone_v2':
-            self.servers_client = ServersClient(self.config.nova.username,
+            self.servers_client = ServersClient(self.config,
+                                                self.config.nova.username,
                                                 self.config.nova.api_key,
                                                 self.auth_url,
                                                 self.config.nova.tenant_name)
-            self.flavors_client = FlavorsClient(self.config.nova.username,
+            self.flavors_client = FlavorsClient(self.config,
+                                                self.config.nova.username,
                                                 self.config.nova.api_key,
                                                 self.auth_url,
                                                 self.config.nova.tenant_name)
-            self.images_client = ImagesClient(self.config.nova.username,
+            self.images_client = ImagesClient(self.config,
+                                              self.config.nova.username,
                                               self.config.nova.api_key,
                                               self.auth_url,
                                               self.config.nova.tenant_name)
         else:
             #Assuming basic/native authentication
-            self.servers_client = ServersClient(self.config.nova.username,
+            self.servers_client = ServersClient(self.config,
+                                                self.config.nova.username,
                                                 self.config.nova.api_key,
                                                 self.auth_url)
-            self.flavors_client = FlavorsClient(self.config.nova.username,
+            self.flavors_client = FlavorsClient(self.config,
+                                                self.config.nova.username,
                                                 self.config.nova.api_key,
                                                 self.auth_url)
-            self.images_client = ImagesClient(self.config.nova.username,
+            self.images_client = ImagesClient(self.config,
+                                              self.config.nova.username,
+                                              self.config.nova.auth_url,
                                               self.config.nova.api_key,
                                               self.auth_url)
diff --git a/storm/services/nova/json/flavors_client.py b/storm/services/nova/json/flavors_client.py
index 223644c..d6526c8 100644
--- a/storm/services/nova/json/flavors_client.py
+++ b/storm/services/nova/json/flavors_client.py
@@ -5,8 +5,9 @@
 
 class FlavorsClient(object):
 
-    def __init__(self, username, key, auth_url, tenant_name=None):
-        self.client = rest_client.RestClient(username, key,
+    def __init__(self, config, username, key, auth_url, tenant_name=None):
+        self.config = config
+        self.client = rest_client.RestClient(config, username, key,
                                              auth_url, tenant_name)
 
     def list_flavors(self, params=None):
diff --git a/storm/services/nova/json/images_client.py b/storm/services/nova/json/images_client.py
index e8a1326..59e9269 100644
--- a/storm/services/nova/json/images_client.py
+++ b/storm/services/nova/json/images_client.py
@@ -6,10 +6,10 @@
 
 class ImagesClient(object):
 
-    def __init__(self, username, key, auth_url, tenant_name=None):
-        self.client = rest_client.RestClient(username, key,
+    def __init__(self, config, username, key, auth_url, tenant_name=None):
+        self.config = config
+        self.client = rest_client.RestClient(config, username, key,
                                              auth_url, tenant_name)
-        self.config = storm.config.StormConfig()
         self.build_interval = self.config.nova.build_interval
         self.build_timeout = self.config.nova.build_timeout
         self.headers = {'Content-Type': 'application/json',
diff --git a/storm/services/nova/json/servers_client.py b/storm/services/nova/json/servers_client.py
index e65173f..b587ee0 100644
--- a/storm/services/nova/json/servers_client.py
+++ b/storm/services/nova/json/servers_client.py
@@ -7,10 +7,10 @@
 
 class ServersClient(object):
 
-    def __init__(self, username, key, auth_url, tenant_name=None):
-        self.client = rest_client.RestClient(username, key,
+    def __init__(self, config, username, key, auth_url, tenant_name=None):
+        self.config = config
+        self.client = rest_client.RestClient(config, username, key,
                                              auth_url, tenant_name)
-        self.config = storm.config.StormConfig()
         self.build_interval = self.config.nova.build_interval
         self.build_timeout = self.config.nova.build_timeout
         self.headers = {'Content-Type': 'application/json',
diff --git a/storm/tests/test_flavors.py b/storm/tests/test_flavors.py
index 590bac3..5153693 100644
--- a/storm/tests/test_flavors.py
+++ b/storm/tests/test_flavors.py
@@ -10,7 +10,7 @@
     def setUpClass(cls):
         cls.os = openstack.Manager()
         cls.client = cls.os.flavors_client
-        cls.config = storm.config.StormConfig()
+        cls.config = cls.os.config
         cls.flavor_id = cls.config.env.flavor_ref
 
     @attr(type='smoke')
diff --git a/storm/tests/test_image_metadata.py b/storm/tests/test_image_metadata.py
index 263a771..c8dff27 100644
--- a/storm/tests/test_image_metadata.py
+++ b/storm/tests/test_image_metadata.py
@@ -12,7 +12,7 @@
         cls.os = openstack.Manager()
         cls.servers_client = cls.os.servers_client
         cls.client = cls.os.images_client
-        cls.config = storm.config.StormConfig()
+        cls.config = cls.os.config
         cls.image_ref = cls.config.env.image_ref
         cls.flavor_ref = cls.config.env.flavor_ref
         cls.ssh_timeout = cls.config.nova.ssh_timeout
diff --git a/storm/tests/test_images.py b/storm/tests/test_images.py
index 635dc62..e1349b7 100644
--- a/storm/tests/test_images.py
+++ b/storm/tests/test_images.py
@@ -4,18 +4,21 @@
 import unittest2 as unittest
 import storm.config
 
+# Some module-level skip conditions
+create_image_enabled = False
+
 
 class ImagesTest(unittest.TestCase):
-    create_image_enabled = storm.config.StormConfig().env.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 = storm.config.StormConfig()
+        cls.config = cls.os.config
         cls.image_ref = cls.config.env.image_ref
         cls.flavor_ref = cls.config.env.flavor_ref
+        create_image_enabled = cls.config.env.create_image_enabled
 
     def _parse_image_id(self, image_ref):
         temp = image_ref.rsplit('/')
diff --git a/storm/tests/test_server_actions.py b/storm/tests/test_server_actions.py
index d6ff11c..d7c9db4 100644
--- a/storm/tests/test_server_actions.py
+++ b/storm/tests/test_server_actions.py
@@ -4,19 +4,21 @@
 import storm.config
 from storm.common.utils.data_utils import rand_name
 
+# Some module-level skip conditions
+resize_available = False
 
 class ServerActionsTest(unittest.TestCase):
-    resize_available = storm.config.StormConfig().env.resize_available
 
     @classmethod
     def setUpClass(cls):
         cls.os = openstack.Manager()
         cls.client = cls.os.servers_client
-        cls.config = storm.config.StormConfig()
+        cls.config = cls.os.config
         cls.image_ref = cls.config.env.image_ref
         cls.image_ref_alt = cls.config.env.image_ref_alt
         cls.flavor_ref = cls.config.env.flavor_ref
         cls.flavor_ref_alt = cls.config.env.flavor_ref_alt
+        resize_available = cls.config.env.resize_available
 
     def setUp(self):
         self.name = rand_name('server')
diff --git a/storm/tests/test_server_details.py b/storm/tests/test_server_details.py
index a27d838..b042ea2 100644
--- a/storm/tests/test_server_details.py
+++ b/storm/tests/test_server_details.py
@@ -11,7 +11,7 @@
     def setUpClass(cls):
         cls.os = openstack.Manager()
         cls.client = cls.os.servers_client
-        cls.config = storm.config.StormConfig()
+        cls.config = cls.os.config
         cls.image_ref = cls.config.env.image_ref
         cls.flavor_ref = cls.config.env.flavor_ref
         cls.image_ref_alt = cls.config.env.image_ref_alt
diff --git a/storm/tests/test_server_metadata.py b/storm/tests/test_server_metadata.py
index 3b569f6..397599a 100644
--- a/storm/tests/test_server_metadata.py
+++ b/storm/tests/test_server_metadata.py
@@ -11,7 +11,7 @@
     def setUpClass(cls):
         cls.os = openstack.Manager()
         cls.client = cls.os.servers_client
-        cls.config = storm.config.StormConfig()
+        cls.config = cls.os.config
         cls.image_ref = cls.config.env.image_ref
         cls.flavor_ref = cls.config.env.flavor_ref
 
diff --git a/storm/tests/test_servers.py b/storm/tests/test_servers.py
index 8f4bae7..fead6aa 100644
--- a/storm/tests/test_servers.py
+++ b/storm/tests/test_servers.py
@@ -13,7 +13,7 @@
     def setUpClass(cls):
         cls.os = openstack.Manager()
         cls.client = cls.os.servers_client
-        cls.config = storm.config.StormConfig()
+        cls.config = cls.os.config
         cls.image_ref = cls.config.env.image_ref
         cls.flavor_ref = cls.config.env.flavor_ref
         cls.ssh_timeout = cls.config.nova.ssh_timeout
diff --git a/storm/tests/test_servers_negative.py b/storm/tests/test_servers_negative.py
index 72de6c0..068ca5d 100644
--- a/storm/tests/test_servers_negative.py
+++ b/storm/tests/test_servers_negative.py
@@ -14,7 +14,7 @@
     def setUpClass(cls):
         cls.os = openstack.Manager()
         cls.client = cls.os.servers_client
-        cls.config = storm.config.StormConfig()
+        cls.config = cls.os.config
         cls.image_ref = cls.config.env.image_ref
         cls.flavor_ref = cls.config.env.flavor_ref
         cls.ssh_timeout = cls.config.nova.ssh_timeout
