You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2012/03/24 22:44:16 UTC

svn commit: r1304935 - in /libcloud/trunk: CHANGES libcloud/compute/drivers/openstack.py

Author: tomaz
Date: Sat Mar 24 21:44:16 2012
New Revision: 1304935

URL: http://svn.apache.org/viewvc?rev=1304935&view=rev
Log:
Properly handle OpenStack providers which return public IP addresses under
the 'internet' key in the addresses dictionary.

Modified:
    libcloud/trunk/CHANGES
    libcloud/trunk/libcloud/compute/drivers/openstack.py

Modified: libcloud/trunk/CHANGES
URL: http://svn.apache.org/viewvc/libcloud/trunk/CHANGES?rev=1304935&r1=1304934&r2=1304935&view=diff
==============================================================================
--- libcloud/trunk/CHANGES (original)
+++ libcloud/trunk/CHANGES Sat Mar 24 21:44:16 2012
@@ -67,6 +67,10 @@ Changes with Apache Libcloud in developm
       argument to the OpenStack driver constructor.
       [Dave King]
 
+    - Properly handle OpenStack providers which return public IP addresses under
+      the 'internet' key in the addresses dictionary.
+      [Tomaz Muraus]
+
   *) Storage:
 
     - Don't lowercase special header names in the Amazon S3 storage driver. ;

Modified: libcloud/trunk/libcloud/compute/drivers/openstack.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/openstack.py?rev=1304935&r1=1304934&r2=1304935&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/openstack.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/openstack.py Sat Mar 24 21:44:16 2012
@@ -27,6 +27,8 @@ import os
 
 import warnings
 
+from itertools import chain
+
 from libcloud.utils.py3 import httplib
 from libcloud.utils.py3 import b
 from libcloud.utils.py3 import next
@@ -721,13 +723,14 @@ class OpenStack_1_0_NodeDriver(OpenStack
                                       servers=servers)
 
     def _to_ip_addresses(self, el):
-        return OpenStack_1_0_NodeIpAddresses(
-            [ip.get('addr') for ip in
-             findall(findall(el, 'public', self.XML_NAMESPACE)[0],
-             'ip', self.XML_NAMESPACE)],
-            [ip.get('addr') for ip in
-             findall(findall(el, 'private', self.XML_NAMESPACE)[0],
-             'ip', self.XML_NAMESPACE)])
+        public_ips = [ip.get('addr') for ip in findall(findall(el, 'public',
+                                                 self.XML_NAMESPACE)[0],
+                                                 'ip', self.XML_NAMESPACE)]
+        private_ips = [ip.get('addr') for ip in findall(findall(el, 'private',
+                                                 self.XML_NAMESPACE)[0],
+                                                 'ip', self.XML_NAMESPACE)]
+
+        return OpenStack_1_0_NodeIpAddresses(public_ips, private_ips)
 
     def _get_size_price(self, size_id):
         try:
@@ -1026,7 +1029,8 @@ class OpenStack_1_1_NodeDriver(OpenStack
             state=self.NODE_STATE_MAP.get(api_node['status'],
                                           NodeState.UNKNOWN),
             public_ips=[addr_desc['addr'] for addr_desc in
-                       api_node['addresses'].get('public', [])],
+                       chain(api_node['addresses'].get('public', []),
+                           api_node['addresses'].get('internet', []))],
             private_ips=[addr_desc['addr'] for addr_desc in
                         api_node['addresses'].get('private', [])],
             driver=self,