Author: tomaz
Date: Sun Oct 30 22:55:02 2011
New Revision: 1195269
URL: http://svn.apache.org/viewvc?rev=1195269&view=rev
Log:
Fix public and private ip address handling in the EC2 compute driver. Assign an
empty list to the node object if no public / ip address is found instead of
assigning a list with a "None" element.
Modified:
libcloud/trunk/libcloud/compute/drivers/ec2.py
Modified: libcloud/trunk/libcloud/compute/drivers/ec2.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/ec2.py?rev=1195269&r1=1195268&r2=1195269&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/ec2.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/ec2.py Sun Oct 30 22:55:02 2011
@@ -319,15 +319,20 @@ class EC2NodeDriver(NodeDriver):
name = tags.get('Name', instance_id)
+ public_ip = findtext(element=element, xpath='ipAddress',
+ namespace=NAMESPACE)
+ public_ips = [public_ip] if public_ip else []
+ private_ip = findtext(element=element, xpath='privateIpAddress',
+ namespace=NAMESPACE)
+ private_ips = [private_ip] if private_ip else []
+
n = Node(
id=findtext(element=element, xpath='instanceId',
namespace=NAMESPACE),
name=name,
state=state,
- public_ip=[findtext(element=element, xpath='ipAddress',
- namespace=NAMESPACE)],
- private_ip=[findtext(element=element, xpath='privateIpAddress',
- namespace=NAMESPACE)],
+ public_ip=public_ips,
+ private_ip=private_ips,
driver=self.connection.driver,
extra={
'dns_name': findattr(element=element, xpath="dnsName",
@@ -431,7 +436,8 @@ class EC2NodeDriver(NodeDriver):
nodes_elastic_ips_mappings = self.ex_describe_addresses(nodes)
for node in nodes:
- node.public_ip.extend(nodes_elastic_ips_mappings[node.id])
+ ips = nodes_elastic_ips_mappings[node.id]
+ node.public_ip.extend(ips)
return nodes
def list_sizes(self, location=None):