From f99f313672073f9d657912ca27e89844f47d371e Mon Sep 17 00:00:00 2001
From: Kiall Mac Innes <kiall@managedit.ie>
Date: Tue, 11 Dec 2012 06:24:48 -0800
Subject: [PATCH] Handle HTTP 400 errors somewhat more sanely.

Change-Id: I49c4225adfd552f0dd01c80cc3053ff2599eb47f
---
 monikerclient/exceptions.py  | 4 ++++
 monikerclient/v1/__init__.py | 4 +++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/monikerclient/exceptions.py b/monikerclient/exceptions.py
index bf0ea252..1e0a9fdd 100644
--- a/monikerclient/exceptions.py
+++ b/monikerclient/exceptions.py
@@ -31,6 +31,10 @@ class Unknown(RemoteError):
     pass
 
 
+class BadRequest(RemoteError):
+    pass
+
+
 class Forbidden(RemoteError):
     pass
 
diff --git a/monikerclient/v1/__init__.py b/monikerclient/v1/__init__.py
index 70a7617e..7eba9b67 100644
--- a/monikerclient/v1/__init__.py
+++ b/monikerclient/v1/__init__.py
@@ -74,7 +74,9 @@ class Client(object):
         """
         response = func(*args, **kw)
 
-        if response.status_code in (401, 403):
+        if response.status_code == 400:
+            raise exceptions.BadRequest(response.json['errors'])
+        elif response.status_code in (401, 403):
             raise exceptions.Forbidden()
         elif response.status_code == 404:
             raise exceptions.NotFound()