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):


Reply via email to