You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by an...@apache.org on 2015/12/09 11:19:28 UTC

[10/11] libcloud git commit: Update the test to check gateway addresses, added ipv6 details to the VLAN object. changed the ex_create_vlan to return the VLAN object on response. Check for begin_port when establishing firewall rules.

Update the test to check gateway addresses, added ipv6 details to the VLAN object. changed the ex_create_vlan to return the VLAN object on response. Check for begin_port when establishing firewall rules.

Signed-off-by: Anthony Shaw <an...@gmail.com>


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

Branch: refs/heads/trunk
Commit: 5d6907686e3e324b42cb907d8c33236051b23652
Parents: 325f52e
Author: Anthony Shaw <an...@gmail.com>
Authored: Wed Dec 9 09:43:53 2015 +1100
Committer: Anthony Shaw <an...@gmail.com>
Committed: Wed Dec 9 21:19:16 2015 +1100

----------------------------------------------------------------------
 libcloud/common/dimensiondata.py                | 26 +++++++++++++--
 libcloud/compute/drivers/dimensiondata.py       | 34 +++++++++++---------
 ...d8a_9cbc_8dabe5a7d0e4_network_deployVlan.xml |  2 +-
 libcloud/test/compute/test_dimensiondata.py     |  8 +++--
 4 files changed, 49 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/5d690768/libcloud/common/dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/common/dimensiondata.py b/libcloud/common/dimensiondata.py
index 66075af..c734b75 100644
--- a/libcloud/common/dimensiondata.py
+++ b/libcloud/common/dimensiondata.py
@@ -460,7 +460,9 @@ class DimensionDataVlan(object):
     """
 
     def __init__(self, id, name, description, location, network_domain,
-                 status, private_ipv4_range_address, private_ipv4_range_size):
+                 status, private_ipv4_range_address, private_ipv4_range_size,
+                 ipv6_range_address, ipv6_range_size, ipv4_gateway,
+                 ipv6_gateway):
         """
         Initialize an instance of ``DimensionDataVlan``
 
@@ -486,9 +488,23 @@ class DimensionDataVlan(object):
                                             IP space
         :type  private_ipv4_range_address: ``str``
 
-        :param private_ipv4_range_address: The size (e.g. '24') of the VLAN
+        :param private_ipv4_range_size: The size (e.g. '24') of the VLAN
                                             as a CIDR range size
-        :type  private_ipv4_range_address: ``str``
+        :type  private_ipv4_range_size: ``int``
+
+        :param ipv6_range_address: The host address of the VLAN
+                                            IP space
+        :type  ipv6_range_address: ``str``
+
+        :param ipv6_range_size: The size (e.g. '32') of the VLAN
+                                            as a CIDR range size
+        :type  ipv6_range_size: ``int``
+
+        :param ipv4_gateway: The IPv4 default gateway addres
+        :type  ipv4_gateway: ``str``
+
+        :param ipv6_gateway: The IPv6 default gateway addres
+        :type  ipv6_gateway: ``str``
         """
         self.id = str(id)
         self.name = name
@@ -498,6 +514,10 @@ class DimensionDataVlan(object):
         self.status = status
         self.private_ipv4_range_address = private_ipv4_range_address
         self.private_ipv4_range_size = private_ipv4_range_size
+        self.ipv6_range_address = ipv6_range_address
+        self.ipv6_range_size = ipv6_range_size
+        self.ipv4_gateway = ipv4_gateway
+        self.ipv6_gateway = ipv6_gateway
 
     def __repr__(self):
         return (('<DimensionDataVlan: id=%s, name=%s, '

http://git-wip-us.apache.org/repos/asf/libcloud/blob/5d690768/libcloud/compute/drivers/dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/dimensiondata.py b/libcloud/compute/drivers/dimensiondata.py
index 27f3a66..8440baf 100644
--- a/libcloud/compute/drivers/dimensiondata.py
+++ b/libcloud/compute/drivers/dimensiondata.py
@@ -751,16 +751,7 @@ class DimensionDataNodeDriver(NodeDriver):
             if info.get('name') == 'vlanId':
                 vlan_id = info.get('value')
 
-        return DimensionDataVlan(
-            id=vlan_id,
-            name=name,
-            description=description,
-            network_domain=network_domain,
-            location=network_domain.location,
-            status=NodeState.RUNNING,
-            private_ipv4_range_address=private_ipv4_base_address,
-            private_ipv4_range_size=private_ipv4_prefix_size
-        )
+        return self.ex_get_vlan(vlan_id)
 
     def ex_get_vlan(self, vlan_id):
         """
@@ -941,8 +932,9 @@ class DimensionDataNodeDriver(NodeDriver):
         else:
             source_ip.set('address', rule.source.ip_address)
             source_ip.set('prefixSize', rule.source.ip_prefix_size)
-            source_port = ET.SubElement(source, 'port')
-            source_port.set('begin', rule.source.port_begin)
+            if rule.source.port_begin is not None:
+                source_port = ET.SubElement(source, 'port')
+                source_port.set('begin', rule.source.port_begin)
             if rule.source.port_end is not None:
                 source_port.set('end', rule.source.port_end)
         # Setup destination port rule
@@ -953,8 +945,9 @@ class DimensionDataNodeDriver(NodeDriver):
         else:
             dest_ip.set('address', rule.destination.ip_address)
             dest_ip.set('prefixSize', rule.destination.ip_prefix_size)
-            dest_port = ET.SubElement(dest, 'port')
-            dest_port.set('begin', rule.destination.port_begin)
+            if rule.destination.port_begin is not None:
+                dest_port = ET.SubElement(dest, 'port')
+                dest_port.set('begin', rule.destination.port_begin)
             if rule.destination.port_end is not None:
                 dest_port.set('end', rule.destination.port_end)
         ET.SubElement(create_node, "enabled").text = 'true'
@@ -1577,6 +1570,7 @@ class DimensionDataNodeDriver(NodeDriver):
         location = list(filter(lambda x: x.id == location_id,
                                locations))[0]
         ip_range = element.find(fixxpath('privateIpv4Range', TYPES_URN))
+        ip6_range = element.find(fixxpath('ipv6Range', TYPES_URN))
         network_domain_el = element.find(
             fixxpath('networkDomain', TYPES_URN))
         network_domain = self.ex_get_network_domain(
@@ -1588,7 +1582,17 @@ class DimensionDataNodeDriver(NodeDriver):
                                  TYPES_URN),
             network_domain=network_domain,
             private_ipv4_range_address=ip_range.get('address'),
-            private_ipv4_range_size=ip_range.get('prefixSize'),
+            private_ipv4_range_size=int(ip_range.get('prefixSize')),
+            ipv6_range_address=ip6_range.get('address'),
+            ipv6_range_size=int(ip6_range.get('prefixSize')),
+            ipv4_gateway=findtext(
+                element,
+                'ipv4GatewayAddress',
+                TYPES_URN),
+            ipv6_gateway=findtext(
+                element,
+                'ipv6GatewayAddress',
+                TYPES_URN),
             location=location,
             status=findtext(element, 'state', TYPES_URN))
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/5d690768/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployVlan.xml
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployVlan.xml b/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployVlan.xml
index eb37402..946a505 100644
--- a/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployVlan.xml
+++ b/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_deployVlan.xml
@@ -5,5 +5,5 @@ xmlns="urn:didata.com:api:cloud:types" requestId="NA9/2015-02-13T05:58:00.905-05
 <responseCode>IN_PROGRESS</responseCode>
 <message>Request to deploy VLAN 'Production VLAN' has been accepted and is
 being processed.</message>
-<info name="vlanId" value="cee8df03-9117-44cc-baaa-631ffa099683"/>
+<info name="vlanId" value="0e56433f_d808_4669_821d_812769517ff8"/>
 </response>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/5d690768/libcloud/test/compute/test_dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_dimensiondata.py b/libcloud/test/compute/test_dimensiondata.py
index ad93b7d..02eb663 100644
--- a/libcloud/test/compute/test_dimensiondata.py
+++ b/libcloud/test/compute/test_dimensiondata.py
@@ -311,7 +311,7 @@ class DimensionDataTests(unittest.TestCase, TestCaseMixin):
                                           name='test',
                                           private_ipv4_base_address='10.3.4.0',
                                           private_ipv4_prefix_size='24')
-        self.assertEqual(vlan.id, 'cee8df03-9117-44cc-baaa-631ffa099683')
+        self.assertEqual(vlan.id, '0e56433f-d808-4669-821d-812769517ff8')
 
     def test_ex_get_vlan(self):
         vlan = self.driver.ex_get_vlan('0e56433f-d808-4669-821d-812769517ff8')
@@ -320,7 +320,11 @@ class DimensionDataTests(unittest.TestCase, TestCaseMixin):
         self.assertEqual(vlan.status, 'NORMAL')
         self.assertEqual(vlan.name, 'Production VLAN')
         self.assertEqual(vlan.private_ipv4_range_address, '10.0.3.0')
-        self.assertEqual(vlan.private_ipv4_range_size, '24')
+        self.assertEqual(vlan.private_ipv4_range_size, 24)
+        self.assertEqual(vlan.ipv6_range_size, 64)
+        self.assertEqual(vlan.ipv6_range_address, '2607:f480:1111:1153:0:0:0:0')
+        self.assertEqual(vlan.ipv4_gateway, '10.0.3.1')
+        self.assertEqual(vlan.ipv6_gateway, '2607:f480:1111:1153:0:0:0:1')
 
     def test_ex_wait_for_state(self):
         self.driver.ex_wait_for_state('NORMAL',