You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by pq...@apache.org on 2010/08/13 02:41:46 UTC

svn commit: r985055 - /incubator/libcloud/trunk/libcloud/drivers/slicehost.py

Author: pquerna
Date: Fri Aug 13 00:41:45 2010
New Revision: 985055

URL: http://svn.apache.org/viewvc?rev=985055&view=rev
Log:
Handle Malformed Responses in Slicehost

Modified:
    incubator/libcloud/trunk/libcloud/drivers/slicehost.py

Modified: incubator/libcloud/trunk/libcloud/drivers/slicehost.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/libcloud/drivers/slicehost.py?rev=985055&r1=985054&r2=985055&view=diff
==============================================================================
--- incubator/libcloud/trunk/libcloud/drivers/slicehost.py (original)
+++ incubator/libcloud/trunk/libcloud/drivers/slicehost.py Fri Aug 13 00:41:45 2010
@@ -15,7 +15,7 @@
 """
 Slicehost Driver
 """
-from libcloud.types import NodeState, Provider, InvalidCredsError
+from libcloud.types import NodeState, Provider, InvalidCredsError, MalformedResponseError
 from libcloud.base import ConnectionKey, Response, NodeDriver, Node
 from libcloud.base import NodeSize, NodeImage, NodeLocation
 from libcloud.base import is_private_subnet
@@ -31,17 +31,24 @@ class SlicehostResponse(Response):
         # a 1 byte response with a "Content-Type: application/xml" header. booya.
         if not self.body or len(self.body) <= 1:
             return None
-        return ET.XML(self.body)
+        try:
+          body = ET.XML(self.body)
+        except:
+          raise MalformedResponseError("Failed to parse XML", body=self.body, driver=SlicehostNodeDriver)
+        return body
 
     def parse_error(self):
         if self.status == 401:
             raise InvalidCredsError(self.body)
 
         try:
-            object = ET.XML(self.body)
+          body = ET.XML(self.body)
+        except:
+          raise MalformedResponseError("Failed to parse XML", body=self.body, driver=SlicehostNodeDriver)
+        try:
             return "; ".join([ err.text
                                for err in
-                               object.findall('error') ])
+                               body.findall('error') ])
         except ExpatError:
             return self.body