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/05/07 22:24:32 UTC

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

Author: pquerna
Date: Fri May  7 20:24:31 2010
New Revision: 942205

URL: http://svn.apache.org/viewvc?rev=942205&view=rev
Log:
Properly handle multiple IP addresses from 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=942205&r1=942204&r2=942205&view=diff
==============================================================================
--- incubator/libcloud/trunk/libcloud/drivers/slicehost.py (original)
+++ incubator/libcloud/trunk/libcloud/drivers/slicehost.py Fri May  7 20:24:31 2010
@@ -166,8 +166,9 @@ class SlicehostNodeDriver(NodeDriver):
 
         # slicehost does not determine between public and private, so we
         # have to figure it out
-        public_ip = element.findtext('ip-address')
-        private_ip = None
+        primary_ip = element.findtext('ip-address')
+        public_ip = []
+        private_ip = []
         for addr in element.findall('addresses/address'):
             ip = addr.text
             try:
@@ -176,9 +177,13 @@ class SlicehostNodeDriver(NodeDriver):
                 # not a valid ip
                 continue
             if is_private_subnet(ip):
-                private_ip = ip
+                private_ip.append(ip)
             else:
-                public_ip = ip
+                public_ip.append(ip)
+
+        public_ip.append(primary_ip)
+
+        public_ip = list(set(public_ip))
 
         try:
             state = self.NODE_STATE_MAP[element.findtext('status')]
@@ -194,8 +199,8 @@ class SlicehostNodeDriver(NodeDriver):
         n = Node(id=element.findtext('id'),
                  name=element.findtext('name'),
                  state=state,
-                 public_ip=[public_ip],
-                 private_ip=[private_ip],
+                 public_ip=public_ip,
+                 private_ip=private_ip,
                  driver=self.connection.driver,
                  extra=extra)
         return n