Call _raise_for_status every time we make a request

This commit is contained in:
Aanand Prasad 2013-09-01 23:48:04 -04:00
parent 6d728157d6
commit f35cc69994
1 changed files with 18 additions and 6 deletions

View File

@ -227,6 +227,7 @@ class Client(requests.Session):
} }
u = self._url("/containers/{0}/attach".format(container)) u = self._url("/containers/{0}/attach".format(container))
res = self.post(u, None, params=params, stream=True) res = self.post(u, None, params=params, stream=True)
self._raise_for_status(res)
# hijack the underlying socket from requests, icky # hijack the underlying socket from requests, icky
# but for some reason requests.iter_contents and ilk # but for some reason requests.iter_contents and ilk
# eventually block # eventually block
@ -258,6 +259,7 @@ class Client(requests.Session):
headers = { 'Content-Type': 'application/tar' } headers = { 'Content-Type': 'application/tar' }
res = self._result(self.post(u, context, params=params, res = self._result(self.post(u, context, params=params,
headers=headers, stream=True)) headers=headers, stream=True))
res._raise_for_status()
if context is not None: if context is not None:
context.close() context.close()
srch = r'Successfully built ([0-9a-f]+)' srch = r'Successfully built ([0-9a-f]+)'
@ -315,12 +317,14 @@ class Client(requests.Session):
def export(self, container): def export(self, container):
res = self.get(self._url("/containers/{0}/export".format(container)), res = self.get(self._url("/containers/{0}/export".format(container)),
stream=True) stream=True)
self._raise_for_status(res)
return res.raw return res.raw
def history(self, image): def history(self, image):
res = self.get(self._url("/images/{0}/history".format(image))) res = self.get(self._url("/images/{0}/history".format(image)))
if res.status_code == 500 and res.text.find("Image does not exist") != -1: if res.status_code == 500 and res.text.find("Image does not exist") != -1:
raise KeyError(res.text) raise KeyError(res.text)
self._raise_for_status(res)
return self._result(res) return self._result(res)
def images(self, name=None, quiet=False, all=False, viz=False): def images(self, name=None, quiet=False, all=False, viz=False):
@ -371,7 +375,8 @@ class Client(requests.Session):
def kill(self, *args): def kill(self, *args):
for name in args: for name in args:
url = self._url("/containers/{0}/kill".format(name)) url = self._url("/containers/{0}/kill".format(name))
self.post(url, None) res = self.post(url, None)
self._raise_for_status(res)
def login(self, username, password=None, email=None): def login(self, username, password=None, email=None):
url = self._url("/auth") url = self._url("/auth")
@ -401,6 +406,7 @@ class Client(requests.Session):
def port(self, container, private_port): def port(self, container, private_port):
res = self.get(self._url("/containers/{0}/json".format(container))) res = self.get(self._url("/containers/{0}/json".format(container)))
self._raise_for_status(res)
json_ = res.json() json_ = res.json()
s_port = str(private_port) s_port = str(private_port)
f_port = None f_port = None
@ -441,10 +447,12 @@ class Client(requests.Session):
res = self.delete(self._url("/containers/" + container), params=params) res = self.delete(self._url("/containers/" + container), params=params)
if res.status_code >= 400: if res.status_code >= 400:
raise RuntimeError(res.text) raise RuntimeError(res.text)
self._raise_for_status(res)
def remove_image(self, *args): def remove_image(self, *args):
for image in args: for image in args:
self.delete(self._url("/images/" + image)) res = self.delete(self._url("/images/" + image))
self._raise_for_status(res)
def restart(self, *args, **kwargs): def restart(self, *args, **kwargs):
params = { params = {
@ -452,7 +460,8 @@ class Client(requests.Session):
} }
for name in args: for name in args:
url = self._url("/containers/{0}/restart".format(name)) url = self._url("/containers/{0}/restart".format(name))
self.post(url, None, params=params) res = self.post(url, None, params=params)
self._raise_for_status(res)
def search(self, term): def search(self, term):
return self._result(self.get(self._url("/images/search"), return self._result(self.get(self._url("/images/search"),
@ -469,7 +478,8 @@ class Client(requests.Session):
for name in args: for name in args:
url = self._url("/containers/{0}/start".format(name)) url = self._url("/containers/{0}/start".format(name))
self._post_json(url, start_config) res = self._post_json(url, start_config)
self._raise_for_status(res)
def stop(self, *args, **kwargs): def stop(self, *args, **kwargs):
params = { params = {
@ -477,7 +487,8 @@ class Client(requests.Session):
} }
for name in args: for name in args:
url = self._url("/containers/{0}/stop".format(name)) url = self._url("/containers/{0}/stop".format(name))
self.post(url, None, params=params) res = self.post(url, None, params=params)
self._raise_for_status(res)
def tag(self, image, repository, tag=None, force=False): def tag(self, image, repository, tag=None, force=False):
params = { params = {
@ -487,7 +498,7 @@ class Client(requests.Session):
} }
url = self._url("/images/{0}/tag".format(image)) url = self._url("/images/{0}/tag".format(image))
res = self.post(url, None, params=params) res = self.post(url, None, params=params)
res.raise_for_status() self._raise_for_status(res)
return res.status_code == 201 return res.status_code == 201
def version(self): def version(self):
@ -498,6 +509,7 @@ class Client(requests.Session):
for name in args: for name in args:
url = self._url("/containers/{0}/wait".format(name)) url = self._url("/containers/{0}/wait".format(name))
res = self.post(url, None, timeout=None) res = self.post(url, None, timeout=None)
self._raise_for_status(res)
json_ = res.json() json_ = res.json()
if 'StatusCode' in json_: if 'StatusCode' in json_:
result.append(json_['StatusCode']) result.append(json_['StatusCode'])