diff --git a/etc/tempest.conf.sample b/etc/tempest.conf.sample
index 534f3d9..f9fc1d5 100644
--- a/etc/tempest.conf.sample
+++ b/etc/tempest.conf.sample
@@ -22,6 +22,8 @@
 # Should typically be left as keystone unless you have a non-Keystone
 # authentication API service
 strategy = keystone
+# The identity region
+region = RegionOne
 
 [compute]
 # This section contains configuration options used when executing tests
@@ -54,6 +56,9 @@
 # The above non-administrative user's tenant name
 alt_tenant_name = alt_demo
 
+# The compute region
+region = RegionOne
+
 # Reference data for tests. The ref and ref_alt should be
 # distinct images/flavors.
 image_ref = {$IMAGE_ID}
@@ -261,6 +266,10 @@
 # this value as "object-store"
 catalog_type = object-store
 
+# The object-store region
+region = RegionOne
+
+
 [boto]
 # This section contains configuration options used when executing tests
 # with boto.
diff --git a/tempest/common/rest_client.py b/tempest/common/rest_client.py
index cb18a9c..884d147 100644
--- a/tempest/common/rest_client.py
+++ b/tempest/common/rest_client.py
@@ -44,7 +44,7 @@
         self.token = None
         self.base_url = None
         self.config = config
-        self.region = 0
+        self.region = {'compute': self.config.compute.region}
         self.endpoint_url = 'publicURL'
         self.strategy = self.config.identity.strategy
         self.headers = {'Content-Type': 'application/%s' % self.TYPE,
@@ -142,7 +142,12 @@
             mgmt_url = None
             for ep in auth_data['serviceCatalog']:
                 if ep["type"] == service:
-                    mgmt_url = ep['endpoints'][self.region][self.endpoint_url]
+                    for _ep in ep['endpoints']:
+                        if service in self.region and \
+                                _ep['region'] == self.region[service]:
+                            mgmt_url = _ep[self.endpoint_url]
+                    if not mgmt_url:
+                        mgmt_url = ep['endpoints'][0][self.endpoint_url]
                     tenant_id = auth_data['token']['tenant']['id']
                     break
 
diff --git a/tempest/config.py b/tempest/config.py
index 1d1aa49..fc1bd74 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -96,6 +96,11 @@
         """Which auth method does the environment use? (basic|keystone)"""
         return self.get("strategy", 'keystone')
 
+    @property
+    def region(self):
+        """The identity region name to use."""
+        return self.get("region")
+
 
 class IdentityAdminConfig(BaseConfig):
 
@@ -173,6 +178,11 @@
         return self.get("alt_password")
 
     @property
+    def region(self):
+        """The compute region name to use."""
+        return self.get("region")
+
+    @property
     def image_ref(self):
         """Valid primary image to use in tests."""
         return self.get("image_ref", "{$IMAGE_ID}")
@@ -473,6 +483,11 @@
         """Catalog type of the Object-Storage service."""
         return self.get("catalog_type", 'object-store')
 
+    @property
+    def region(self):
+        """The object-store region name to use."""
+        return self.get("region")
+
 
 class BotoConfig(BaseConfig):
     """Provides configuration information for connecting to EC2/S3."""
