using http codes in sol005 client whenever possible
[osm/osmclient.git] / osmclient / sol005 / package.py
index 9fd734a..172ee45 100644 (file)
@@ -26,6 +26,7 @@ import yaml
 from osmclient.common.exceptions import ClientException
 from osmclient.common.exceptions import NotFound
 from osmclient.common import utils
+import json
 
 
 class Package(object):
@@ -57,11 +58,22 @@ class Package(object):
         http_header = ['{}: {}'.format(key,val)
                       for (key,val) in headers.items()]
         self._http.set_http_header(http_header)
-        resp = self._http.post_cmd(endpoint=endpoint, filename=filename)
-        #print 'RESP: {}'.format(yaml.safe_dump(resp))
-        if not resp or 'id' not in resp:
-            raise ClientException("failed to upload package")
-        else:
+        http_code, resp = self._http.post_cmd(endpoint=endpoint, filename=filename)
+        #print 'HTTP CODE: {}'.format(http_code)
+        #print 'RESP: {}'.format(resp)
+        if http_code in (200, 201, 202, 204):
+            if resp:
+                resp = json.loads(resp)
+            if not resp or 'id' not in resp:
+                raise ClientException('unexpected response from server - {}'.format(
+                                      resp))
             print resp['id']
-
+        else:
+            msg = ""
+            if resp:
+                try:
+                     msg = json.loads(resp)
+                except ValueError:
+                    msg = resp
+            raise ClientException("failed to delete ns {} - {}".format(name, msg))