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 2016/04/13 19:13:53 UTC

[2/4] libcloud git commit: Improve OpenStack IP type resolution and improve tests

Improve OpenStack IP type resolution and improve tests

Closes #738

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/6bb66097
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/6bb66097
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/6bb66097

Branch: refs/heads/trunk
Commit: 6bb6609720a661907212a23669227cbc4caee2bd
Parents: 0bcc7d6
Author: lionel <li...@sixsq.com>
Authored: Wed Apr 13 15:55:59 2016 +0200
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Apr 13 19:03:23 2016 +0200

----------------------------------------------------------------------
 libcloud/compute/drivers/openstack.py           | 30 ++++++++------------
 .../openstack_v1.1/_servers_detail.json         | 22 ++++++++++++++
 libcloud/test/compute/test_openstack.py         | 13 +++++++--
 3 files changed, 44 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/6bb66097/libcloud/compute/drivers/openstack.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/openstack.py b/libcloud/compute/drivers/openstack.py
index 51adf75..b4daa57 100644
--- a/libcloud/compute/drivers/openstack.py
+++ b/libcloud/compute/drivers/openstack.py
@@ -2061,29 +2061,23 @@ class OpenStack_1_1_NodeDriver(OpenStackNodeDriver):
         for label, values in api_node['addresses'].items():
             for value in values:
                 ip = value['addr']
-
                 is_public_ip = False
 
                 try:
-                    public_subnet = is_public_subnet(ip)
+                    is_public_ip = is_public_subnet(ip)
                 except:
                     # IPv6
-                    public_subnet = False
-
-                # Openstack Icehouse sets 'OS-EXT-IPS:type' to 'floating' for
-                # public and 'fixed' for private
-                explicit_ip_type = value.get('OS-EXT-IPS:type', None)
-
-                if public_subnet:
-                    # Check for public subnet
-                    is_public_ip = True
-                elif explicit_ip_type == 'floating':
-                    is_public_ip = True
-                elif explicit_ip_type == 'fixed':
-                    is_public_ip = False
-                elif label in public_networks_labels:
-                    # Try label next
-                    is_public_ip = True
+
+                    # Openstack Icehouse sets 'OS-EXT-IPS:type' to 'floating' for
+                    # public and 'fixed' for private
+                    explicit_ip_type = value.get('OS-EXT-IPS:type', None)
+
+                    if label in public_networks_labels:
+                        is_public_ip = True
+                    elif explicit_ip_type == 'floating':
+                        is_public_ip = True
+                    elif explicit_ip_type == 'fixed':
+                        is_public_ip = False
 
                 if is_public_ip:
                     public_ips.append(ip)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/6bb66097/libcloud/test/compute/fixtures/openstack_v1.1/_servers_detail.json
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/openstack_v1.1/_servers_detail.json b/libcloud/test/compute/fixtures/openstack_v1.1/_servers_detail.json
index 4c31b27..cddb138 100644
--- a/libcloud/test/compute/fixtures/openstack_v1.1/_servers_detail.json
+++ b/libcloud/test/compute/fixtures/openstack_v1.1/_servers_detail.json
@@ -58,6 +58,28 @@
                         "addr": "10.3.3.3",
                         "version": 4
                     }
+                ],
+                "pubnet": [
+                    {
+                        "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:79:90:aa",
+                        "OS-EXT-IPS:type": "fixed",
+                        "addr": "1.1.1.1",
+                        "version": 4
+                    },
+                    {
+                        "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:79:90:aa",
+                        "OS-EXT-IPS:type": "floating",
+                        "addr": "2.2.2.2",
+                        "version": 4
+                    }
+                ],
+                "privnet": [
+                    {
+                        "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:79:90:aa",
+                        "OS-EXT-IPS:type": "floating",
+                        "addr": "172.16.1.1",
+                        "version": 4
+                    }
                 ]
             },
             "tenant_id": "rs-reach-project",

http://git-wip-us.apache.org/repos/asf/libcloud/blob/6bb66097/libcloud/test/compute/test_openstack.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_openstack.py b/libcloud/test/compute/test_openstack.py
index ee2469d..f5941b0 100644
--- a/libcloud/test/compute/test_openstack.py
+++ b/libcloud/test/compute/test_openstack.py
@@ -758,8 +758,11 @@ class OpenStack_1_1_Tests(unittest.TestCase, TestCaseMixin):
         self.assertTrue('12.16.18.28' in node.public_ips)
         self.assertTrue('50.57.94.35' in node.public_ips)
 
-        # floating ip
-        self.assertTrue('192.168.3.3' in node.public_ips)
+        # fixed public ip
+        self.assertTrue('1.1.1.1' in node.public_ips)
+
+        # floating public ip
+        self.assertTrue('2.2.2.2' in node.public_ips)
 
         # test public IPv6
         self.assertTrue(
@@ -768,9 +771,13 @@ class OpenStack_1_1_Tests(unittest.TestCase, TestCaseMixin):
         # test private IPv4
         self.assertTrue('10.182.64.34' in node.private_ips)
 
-        # floating ip
+        # fixed private ip
         self.assertTrue('10.3.3.3' in node.private_ips)
 
+        # floating private ip
+        self.assertTrue('192.168.3.3' in node.private_ips)
+        self.assertTrue('172.16.1.1' in node.private_ips)
+
         # test private IPv6
         self.assertTrue(
             'fec0:4801:7808:52:16:3eff:fe60:187d' in node.private_ips)