Skip to content

Commit

Permalink
add first pass at handling Mosso Cloud Servers (i.e., Rackspace Cloud…
Browse files Browse the repository at this point in the history
… Servers)
  • Loading branch information
tswicegood committed Feb 1, 2010
1 parent 1794236 commit 089da6f
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions dolt/apis/mosso.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from dolt import Dolt
import httplib2

MOSSO_AUTH_URL = "https://auth.api.rackspacecloud.com"

class MossoHttp(object):
def __init__(self, username=None, api_key=None, version="1.0", http=None, *args, **kwargs):
self.http = http or httplib2.Http()
self.username = username
self.api_key = api_key
self.version = "1.0"
self.auth_token = None

def request(self, uri, method='GET', body=None, headers=None, redirections=5, connection_type=None):
if not self.auth_token:
self.initialize_auth_token()
if not headers:
headers = {}
headers['X-Auth-Token'] = self.auth_token
return self.http.request(uri, method, body, headers, redirections, connection_type)

def initialize_auth_token(self):
if self.auth_token:
return
url = "%s/v%s" % (MOSSO_AUTH_URL, self.version)
response, _body = self.http.request(url, headers = {
'X-Auth-User': self.username,
'X-Auth-Key': self.api_key,
})
# TODO: handle non-204 requests
self.server_url = response['x-server-management-url']
self.auth_token = response['x-auth-token']


class MossoServers(Dolt):
def __init__(self, username, api_key, **kwargs):
http = MossoHttp(username=username, api_key=api_key)
super(MossoServers, self).__init__(http=http)

def get_url(self):
self._http.initialize_auth_token()
self._api_url = self._http.server_url
return super(MossoServers, self).get_url()

0 comments on commit 089da6f

Please sign in to comment.