Depend on and update for requests>1.0 (Matching {keystone,cinder,nova}client)

Change-Id: I17ca5e802108fcf6dc906ff23b6b61f53a25eac1
This commit is contained in:
Kiall Mac Innes 2012-12-30 00:01:03 +00:00
parent 4e9729e066
commit 13c601cc9c
6 changed files with 24 additions and 44 deletions

View File

@ -75,20 +75,3 @@ class KeystoneAuth(AuthBase):
ks = self.get_ksclient() ks = self.get_ksclient()
self.token = ks.auth_token self.token = ks.auth_token
self.service_catalog = ks.service_catalog self.service_catalog = ks.service_catalog
def args_hook(self, args):
url = urlparse(args['url'])
if str(url.scheme) == '':
if not self.token:
self.refresh_token()
endpoints = self.get_endpoints()
if url.netloc in endpoints.keys():
args['url'] = '%s/%s?%s' % (
self.get_url(),
url.path.lstrip('/'),
url.query
)

View File

@ -14,7 +14,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import requests import requests
from urlparse import urlparse
from monikerclient import exceptions from monikerclient import exceptions
from monikerclient.auth import KeystoneAuth from monikerclient.auth import KeystoneAuth
from monikerclient.v1 import domains from monikerclient.v1 import domains
@ -42,25 +41,18 @@ class Client(object):
if auth_url: if auth_url:
auth = KeystoneAuth(auth_url, username, password, tenant_id, auth = KeystoneAuth(auth_url, username, password, tenant_id,
tenant_name, token, 'dns', endpoint_type) tenant_name, token, 'dns', endpoint_type)
endpoint = auth.get_url() self.endpoint = auth.get_url()
elif endpoint: elif endpoint:
auth = None auth = None
self.endpoint = endpoint
else: else:
raise ValueError('Either an endpoint or auth_url must be supplied') raise ValueError('Either an endpoint or auth_url must be supplied')
headers = {'Content-Type': 'application/json'} headers = {'Content-Type': 'application/json'}
def _ensure_url_hook(args): self.requests = requests.Session()
url_ = urlparse(args['url']) self.requests.auth = auth
if not url_.scheme: self.requests.headers.update(headers)
args['url'] = endpoint + url_.path
hooks = {'args': _ensure_url_hook}
self.requests = requests.session(
auth=auth,
headers=headers,
hooks=hooks)
self.domains = domains.DomainsController(client=self) self.domains = domains.DomainsController(client=self)
self.records = records.RecordsController(client=self) self.records = records.RecordsController(client=self)
@ -72,10 +64,15 @@ class Client(object):
:param func: The function to wrap :param func: The function to wrap
""" """
# Prepend the endpoint URI
args = list(args)
args[0] = '%s/%s' % (self.endpoint, args[0])
# Trigger the request
response = func(*args, **kw) response = func(*args, **kw)
if response.status_code == 400: if response.status_code == 400:
raise exceptions.BadRequest(response.json['errors']) raise exceptions.BadRequest(response.json()['errors'])
elif response.status_code in (401, 403): elif response.status_code in (401, 403):
raise exceptions.Forbidden() raise exceptions.Forbidden()
elif response.status_code == 404: elif response.status_code == 404:

View File

@ -31,7 +31,7 @@ class DomainsController(Controller):
""" """
response = self.client.get('/domains') response = self.client.get('/domains')
return [Domain(i) for i in response.json['domains']] return [Domain(i) for i in response.json()['domains']]
def get(self, domain_id): def get(self, domain_id):
""" """
@ -42,7 +42,7 @@ class DomainsController(Controller):
""" """
response = self.client.get('/domains/%s' % domain_id) response = self.client.get('/domains/%s' % domain_id)
return Domain(response.json) return Domain(response.json())
def create(self, domain): def create(self, domain):
""" """
@ -53,7 +53,7 @@ class DomainsController(Controller):
""" """
response = self.client.post('/domains', data=json.dumps(domain)) response = self.client.post('/domains', data=json.dumps(domain))
return Domain(response.json) return Domain(response.json())
def update(self, domain): def update(self, domain):
""" """
@ -65,7 +65,7 @@ class DomainsController(Controller):
response = self.client.put('/domains/%s' % domain.id, response = self.client.put('/domains/%s' % domain.id,
data=json.dumps(domain.changes)) data=json.dumps(domain.changes))
return Domain(response.json) return Domain(response.json())
def delete(self, domain): def delete(self, domain):
""" """

View File

@ -37,7 +37,7 @@ class RecordsController(Controller):
'domain_id': domain_id 'domain_id': domain_id
}) })
return [Record(i) for i in response.json['records']] return [Record(i) for i in response.json()['records']]
def get(self, domain, record_id): def get(self, domain, record_id):
""" """
@ -56,7 +56,7 @@ class RecordsController(Controller):
response = self.client.get(uri) response = self.client.get(uri)
return Record(response.json) return Record(response.json())
def create(self, domain, record): def create(self, domain, record):
""" """
@ -74,7 +74,7 @@ class RecordsController(Controller):
response = self.client.post(uri, data=json.dumps(record)) response = self.client.post(uri, data=json.dumps(record))
return Record(response.json) return Record(response.json())
def update(self, domain, record): def update(self, domain, record):
""" """
@ -93,7 +93,7 @@ class RecordsController(Controller):
response = self.client.put(uri, data=json.dumps(record.changes)) response = self.client.put(uri, data=json.dumps(record.changes))
return Record(response.json) return Record(response.json())
def delete(self, domain, record): def delete(self, domain, record):
""" """

View File

@ -31,7 +31,7 @@ class ServersController(Controller):
""" """
response = self.client.get('/servers') response = self.client.get('/servers')
return [Server(i) for i in response.json['servers']] return [Server(i) for i in response.json()['servers']]
def get(self, server_id): def get(self, server_id):
""" """
@ -42,7 +42,7 @@ class ServersController(Controller):
""" """
response = self.client.get('/servers/%s' % server_id) response = self.client.get('/servers/%s' % server_id)
return Server(response.json) return Server(response.json())
def create(self, server): def create(self, server):
""" """
@ -53,7 +53,7 @@ class ServersController(Controller):
""" """
response = self.client.post('/servers', data=json.dumps(server)) response = self.client.post('/servers', data=json.dumps(server))
return Server(response.json) return Server(response.json())
def update(self, server): def update(self, server):
""" """
@ -65,7 +65,7 @@ class ServersController(Controller):
response = self.client.put('/servers/%s' % server.id, response = self.client.put('/servers/%s' % server.id,
data=json.dumps(server.changes)) data=json.dumps(server.changes))
return Server(response.json) return Server(response.json())
def delete(self, server): def delete(self, server):
""" """

View File

@ -1,4 +1,4 @@
cliff>=1.2.1 cliff>=1.2.1
jsonschema>=0.7 jsonschema>=0.7
requests requests>1.0
python-keystoneclient>=0.2.0 python-keystoneclient>=0.2.0