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