diff --git a/libcloud/dns/drivers/rackspace.py b/libcloud/dns/drivers/rackspace.py
index cc7311e..ad42a67 100644
--- a/libcloud/dns/drivers/rackspace.py
+++ b/libcloud/dns/drivers/rackspace.py
@@ -100,15 +100,23 @@ def get_endpoint(self):
         if self._auth_version == "1.1":
             ep = self.service_catalog.get_endpoint(name="cloudServers")
 
-            if 'publicURL' in ep:
-                return ep['publicURL'].replace("servers", "dns")
-            else:
-                raise LibcloudError('Could not find specified endpoint')
+            return self._construct_dns_endpoint_from_servers_endpoint(ep)
+        elif "2.0" in self._auth_version:
+            ep = self.service_catalog.get_endpoint(name="cloudServers",
+                service_type="compute",
+                region=None)
 
+            return self._construct_dns_endpoint_from_servers_endpoint(ep)
         else:
             raise LibcloudError("Auth version %s not supported" % \
                 self._auth_version)
 
+    def _construct_dns_endpoint_from_servers_endpoint(self, ep):
+        if 'publicURL' in ep:
+            return ep['publicURL'].replace("servers", "dns")
+        else:
+            raise LibcloudError('Could not find specified endpoint')
+
 
 class RackspaceUSDNSConnection(RackspaceDNSConnection):
     auth_url = AUTH_URL_US
diff --git a/libcloud/loadbalancer/drivers/rackspace.py b/libcloud/loadbalancer/drivers/rackspace.py
index 5071767..a54469d 100644
--- a/libcloud/loadbalancer/drivers/rackspace.py
+++ b/libcloud/loadbalancer/drivers/rackspace.py
@@ -229,11 +229,13 @@ class RackspaceConnection(OpenStackBaseConnection, PollingConnection):
     poll_interval = 2
     timeout = 80
 
-    def __init__(self, user_id, key, secure=True, **kwargs):
+    def __init__(self, user_id, key, secure=True, ex_force_region='ord',
+                 **kwargs):
         super(RackspaceConnection, self).__init__(user_id, key, secure,
                                                   **kwargs)
         self.api_version = 'v1.0'
         self.accept_format = 'application/json'
+        self._ex_force_region = ex_force_region
 
     def request(self, action, params=None, data='', headers=None,
                 method='GET'):
@@ -272,15 +274,24 @@ def get_endpoint(self):
         if self._auth_version == "1.1":
             ep = self.service_catalog.get_endpoint(name="cloudServers")
 
-            if 'publicURL' in ep:
-                return ep['publicURL'].replace("servers", "ord.loadbalancers")
-            else:
-                raise LibcloudError('Could not find specified endpoint')
+            return self._construct_loadbalancer_endpoint_from_servers_endpoint(ep)
+        elif "2.0" in self._auth_version:
+            ep = self.service_catalog.get_endpoint(name="cloudServers",
+                service_type="compute",
+                region=None)
 
+            return self._construct_loadbalancer_endpoint_from_servers_endpoint(ep)
         else:
             raise LibcloudError("Auth version %s not supported" % \
                 self._auth_version)
 
+    def _construct_loadbalancer_endpoint_from_servers_endpoint(self, ep):
+        if 'publicURL' in ep:
+            loadbalancer_prefix = "%s.loadbalancers" % self._ex_force_region
+            return ep['publicURL'].replace("servers", loadbalancer_prefix)
+        else:
+            raise LibcloudError('Could not find specified endpoint')
+
 
 class RackspaceUKConnection(RackspaceConnection):
     auth_url = AUTH_URL_UK
diff --git a/test/dns/fixtures/rackspace/auth_2_0.json b/test/dns/fixtures/rackspace/auth_2_0.json
new file mode 100644
index 0000000..05edc47
--- /dev/null
+++ b/test/dns/fixtures/rackspace/auth_2_0.json
@@ -0,0 +1,71 @@
+{
+    "access": {
+        "token": {
+            "id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+            "expires": "2012-03-14T08:10:14.000-05:00"
+        },
+        "serviceCatalog": [
+            {
+                "endpoints": [
+                    {
+                        "region": "DFW",
+                        "tenantId": "MossoCloudFS_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
+                        "publicURL": "https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
+                        "internalURL": "https://snet-storage101.dfw1.clouddrive.com/v1/MossoCloudFS_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+                    }
+                ],
+                "name": "cloudFiles",
+                "type": "object-store"
+            },
+            {
+                "endpoints": [
+                    {
+                        "region": "DFW",
+                        "tenantId": "11111",
+                        "publicURL": "https://dfw.servers.api.rackspacecloud.com/v2/11111",
+                        "versionInfo": "https://dfw.servers.api.rackspacecloud.com/v2/",
+                        "versionList": "https://dfw.servers.api.rackspacecloud.com/",
+                        "versionId": "2"
+                    }
+                ],
+                "name": "cloudServersOpenStack",
+                "type": "compute"
+            },
+            {
+                "endpoints": [
+                    {
+                        "tenantId": "11111",
+                        "publicURL": "https://servers.api.rackspacecloud.com/v1.0/11111",
+                        "versionInfo": "https://servers.api.rackspacecloud.com/v1.0/",
+                        "versionList": "https://servers.api.rackspacecloud.com/",
+                        "versionId": "1.0"
+                    }
+                ],
+                "name": "cloudServers",
+                "type": "compute"
+            },
+            {
+                "endpoints": [
+                    {
+                        "region": "DFW",
+                        "tenantId": "MossoCloudFS_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
+                        "publicURL": "https://cdn1.clouddrive.com/v1/MossoCloudFS_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+                    }
+                ],
+                "name": "cloudFilesCDN",
+                "type": "object-store"
+            }
+        ],
+        "user": {
+            "id": "9586",
+            "roles": [
+                {
+                    "id": "identity:default",
+                    "description": "Default Role.",
+                    "name": "identity:default"
+                }
+            ],
+            "name": "libclouduser"
+        }
+    }
+}
diff --git a/test/dns/test_rackspace.py b/test/dns/test_rackspace.py
index 7999227..0acd6ea 100644
--- a/test/dns/test_rackspace.py
+++ b/test/dns/test_rackspace.py
@@ -40,6 +40,23 @@ def setUp(self):
         # normally authentication happens lazily, but we force it here
         self.driver.connection._populate_hosts_and_request_paths()
 
+    def test_gets_auth_2_0_endpoint(self):
+        class RackspaceDNSAuth20PasswordDriver(RackspaceUSDNSDriver):
+            def _ex_connection_class_kwargs(self):
+                return {
+                    'ex_force_auth_version': '2.0_password'
+                }
+
+        RackspaceDNSAuth20PasswordDriver.connectionCls.conn_classes = (
+            None, RackspaceMockHttp
+        )
+
+        driver = RackspaceDNSAuth20PasswordDriver(*DNS_PARAMS_RACKSPACE)
+        driver.connection._populate_hosts_and_request_paths()
+
+        self.assertEquals('https://dns.api.rackspacecloud.com/v1.0/11111',
+            driver.connection.get_endpoint())
+
     def test_list_record_types(self):
         record_types = self.driver.list_record_types()
         self.assertEqual(len(record_types), 7)
@@ -272,9 +289,10 @@ class RackspaceMockHttp(MockHttp):
     fixtures = DNSFileFixtures('rackspace')
     base_headers = {'content-type': 'application/json'}
 
-    # fake auth token response
+
     def _v1_1_auth(self, method, url, body, headers):
         body = self.fixtures.load('auth_1_1.json')
+        # fake auth token response
         headers = {'content-length': '657', 'vary': 'Accept,Accept-Encoding',
                    'server': 'Apache/2.2.13 (Red Hat)',
                    'connection': 'Keep-Alive',
@@ -283,6 +301,14 @@ def _v1_1_auth(self, method, url, body, headers):
         return (httplib.OK, body, headers,
                 httplib.responses[httplib.OK])
 
+    def _v2_0_tokens(self, method, url, body, headers):
+        body = self.fixtures.load('auth_2_0.json')
+        headers = {
+            'content-type': 'application/json'
+        }
+        return (httplib.OK, body, headers,
+                httplib.responses[httplib.OK])
+
     def _v1_0_11111_domains(self, method, url, body, headers):
         body = self.fixtures.load('list_zones_success.json')
         return (httplib.OK, body, self.base_headers,
diff --git a/test/loadbalancer/fixtures/rackspace/auth_2_0.json b/test/loadbalancer/fixtures/rackspace/auth_2_0.json
new file mode 100644
index 0000000..05edc47
--- /dev/null
+++ b/test/loadbalancer/fixtures/rackspace/auth_2_0.json
@@ -0,0 +1,71 @@
+{
+    "access": {
+        "token": {
+            "id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+            "expires": "2012-03-14T08:10:14.000-05:00"
+        },
+        "serviceCatalog": [
+            {
+                "endpoints": [
+                    {
+                        "region": "DFW",
+                        "tenantId": "MossoCloudFS_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
+                        "publicURL": "https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
+                        "internalURL": "https://snet-storage101.dfw1.clouddrive.com/v1/MossoCloudFS_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+                    }
+                ],
+                "name": "cloudFiles",
+                "type": "object-store"
+            },
+            {
+                "endpoints": [
+                    {
+                        "region": "DFW",
+                        "tenantId": "11111",
+                        "publicURL": "https://dfw.servers.api.rackspacecloud.com/v2/11111",
+                        "versionInfo": "https://dfw.servers.api.rackspacecloud.com/v2/",
+                        "versionList": "https://dfw.servers.api.rackspacecloud.com/",
+                        "versionId": "2"
+                    }
+                ],
+                "name": "cloudServersOpenStack",
+                "type": "compute"
+            },
+            {
+                "endpoints": [
+                    {
+                        "tenantId": "11111",
+                        "publicURL": "https://servers.api.rackspacecloud.com/v1.0/11111",
+                        "versionInfo": "https://servers.api.rackspacecloud.com/v1.0/",
+                        "versionList": "https://servers.api.rackspacecloud.com/",
+                        "versionId": "1.0"
+                    }
+                ],
+                "name": "cloudServers",
+                "type": "compute"
+            },
+            {
+                "endpoints": [
+                    {
+                        "region": "DFW",
+                        "tenantId": "MossoCloudFS_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
+                        "publicURL": "https://cdn1.clouddrive.com/v1/MossoCloudFS_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+                    }
+                ],
+                "name": "cloudFilesCDN",
+                "type": "object-store"
+            }
+        ],
+        "user": {
+            "id": "9586",
+            "roles": [
+                {
+                    "id": "identity:default",
+                    "description": "Default Role.",
+                    "name": "identity:default"
+                }
+            ],
+            "name": "libclouduser"
+        }
+    }
+}
diff --git a/test/loadbalancer/test_rackspace.py b/test/loadbalancer/test_rackspace.py
index 6a38b4c..7a7d2e3 100644
--- a/test/loadbalancer/test_rackspace.py
+++ b/test/loadbalancer/test_rackspace.py
@@ -48,6 +48,41 @@ def setUp(self):
         # normally authentication happens lazily, but we force it here
         self.driver.connection._populate_hosts_and_request_paths()
 
+    def test_gets_auth_2_0_endpoint_defaults_to_ord_region(self):
+        class RackspaceLoadbalancerAuth20PasswordDriver(RackspaceLBDriver):
+            def _ex_connection_class_kwargs(self):
+                return {
+                    'ex_force_auth_version': '2.0_password'
+                }
+
+        RackspaceLoadbalancerAuth20PasswordDriver.connectionCls.conn_classes = (
+            None, RackspaceLBMockHttp
+        )
+
+        driver = RackspaceLoadbalancerAuth20PasswordDriver('user', 'key')
+        driver.connection._populate_hosts_and_request_paths()
+
+        self.assertEquals('https://ord.loadbalancers.api.rackspacecloud.com/v1.0/11111',
+            driver.connection.get_endpoint())
+
+    def test_gets_auth_2_0_endpoint_for_dfw(self):
+        class RackspaceLoadbalancerAuth20PasswordDriver(RackspaceLBDriver):
+            def _ex_connection_class_kwargs(self):
+                return {
+                    'ex_force_auth_version': '2.0_password',
+                    'ex_force_region': 'dfw'
+                }
+
+        RackspaceLoadbalancerAuth20PasswordDriver.connectionCls.conn_classes = (
+            None, RackspaceLBMockHttp
+        )
+
+        driver = RackspaceLoadbalancerAuth20PasswordDriver('user', 'key')
+        driver.connection._populate_hosts_and_request_paths()
+
+        self.assertEquals('https://dfw.loadbalancers.api.rackspacecloud.com/v1.0/11111',
+            driver.connection.get_endpoint())
+
     def test_list_protocols(self):
         protocols = self.driver.list_protocols()
 
@@ -1283,5 +1318,13 @@ def _v1_1_auth(self, method, url, body, headers):
         body = self.auth_fixtures.load('_v1_1__auth.json')
         return (httplib.OK, body, headers, httplib.responses[httplib.OK])
 
+    def _v2_0_tokens(self, method, url, body, headers):
+        body = self.fixtures.load('auth_2_0.json')
+        headers = {
+            'content-type': 'application/json'
+        }
+        return (httplib.OK, body, headers,
+                httplib.responses[httplib.OK])
+
 if __name__ == "__main__":
     sys.exit(unittest.main())
