json default for transport and resource __repr__

Make json default for the transport and add a __repr__ method
for the resource which will be useful for some basic printing.

Change-Id: If006cbdaa5c50b948e118f3c8f5d5ab3c259905d
This commit is contained in:
Terry Howe 2014-06-17 14:53:35 -06:00
parent 947c2a6fc2
commit 8c41089dea
3 changed files with 14 additions and 10 deletions

View File

@ -125,6 +125,9 @@ class Resource(collections.MutableMapping):
self._dirty = set() if loaded else set(attrs.keys())
self._loaded = loaded
def __repr__(self):
return "%s: %s" % (self.resource_key, self._attrs)
##
# CONSTRUCTORS
##
@ -288,8 +291,8 @@ class Resource(collections.MutableMapping):
if not cls.allow_delete:
raise exceptions.MethodNotSupported('delete')
session.delete(utils.urljoin(cls.base_path, r_id), service=cls.service,
accept=None)
url = utils.urljoin(cls.base_path, r_id)
session.delete(url, service=cls.service, accept=None)
def delete(self, session):
self.delete_by_id(session, self.id)

View File

@ -24,7 +24,7 @@ from openstack import transport
fake_request = 'Now is the time...'
fake_response = 'for the quick brown fox...'
fake_response = '{"response": "for the quick brown fox..."}'
fake_redirect = 'redirect text'
fake_record1 = {
@ -77,9 +77,9 @@ class TestTransport(base.TestTransportBase):
@httpretty.activate
def test_head(self):
self.stub_url(httpretty.HEAD, body=fake_response)
self.stub_url(httpretty.HEAD, body='')
xport = transport.Transport()
resp = xport.head(self.TEST_URL)
resp = xport.head(self.TEST_URL, accept=None)
self.assertEqual(httpretty.HEAD, httpretty.last_request().method)
self.assertResponseOK(resp, body='')
@ -141,7 +141,7 @@ class TestTransport(base.TestTransportBase):
fake_record1_str = json.dumps(fake_record1)
self.stub_url(httpretty.POST, body=fake_record1_str)
xport = transport.Transport()
resp = xport.post(self.TEST_URL, json=fake_record2)
resp = xport.post(self.TEST_URL, json=fake_record2, accept=None)
self.assertRequestHeaderEqual('Accept', '*/*')
self.assertEqual(fake_record1, resp.json())
@ -478,7 +478,7 @@ class TestTransportRedirects(base.TestTransportBase):
def test_no_redirect(self):
self.setup_redirects()
xport = transport.Transport(redirect=False)
resp = xport.get(self.REDIRECT_CHAIN[0])
resp = xport.get(self.REDIRECT_CHAIN[0], accept=None)
self.assertEqual(305, resp.status_code)
self.assertEqual(self.REDIRECT_CHAIN[0], resp.url)
@ -487,7 +487,7 @@ class TestTransportRedirects(base.TestTransportBase):
self.setup_redirects()
for i in (1, 2):
xport = transport.Transport(redirect=i)
resp = xport.get(self.REDIRECT_CHAIN[0])
resp = xport.get(self.REDIRECT_CHAIN[0], accept=None)
self.assertResponseOK(resp, status=305, body=fake_redirect)
self.assertEqual(self.REDIRECT_CHAIN[i], resp.url)

View File

@ -49,7 +49,7 @@ class Transport(requests.Session):
user_agent=None,
verify=True,
redirect=DEFAULT_REDIRECT_LIMIT,
accept=None,
accept=JSON,
):
"""Wraps requests.Session to add some OpenStack-specific features
@ -153,7 +153,8 @@ class Transport(requests.Session):
except requests.RequestException as e:
raise exceptions.HttpException(six.text_type(e), details=resp.text)
if accept == JSON:
resp.body = resp.json()
if not resp.is_redirect:
resp.body = resp.json()
return resp