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 2013/04/13 08:14:37 UTC

svn commit: r1467555 - in /libcloud/trunk: CHANGES libcloud/compute/drivers/vcloud.py libcloud/test/compute/test_vcloud.py

Author: tomaz
Date: Sat Apr 13 06:14:37 2013
New Revision: 1467555

URL: http://svn.apache.org/r1467555
Log:
Add support for API version 5.1 to the vCloud driver and accept any value
which is a multiple of four for ex_vm_memory kwarg in create_node method.

Contributed by Trevor Powell part of LIBCLOUD-314.

Modified:
    libcloud/trunk/CHANGES
    libcloud/trunk/libcloud/compute/drivers/vcloud.py
    libcloud/trunk/libcloud/test/compute/test_vcloud.py

Modified: libcloud/trunk/CHANGES
URL: http://svn.apache.org/viewvc/libcloud/trunk/CHANGES?rev=1467555&r1=1467554&r2=1467555&view=diff
==============================================================================
--- libcloud/trunk/CHANGES (original)
+++ libcloud/trunk/CHANGES Sat Apr 13 06:14:37 2013
@@ -21,6 +21,11 @@ Changes with Apache Libcloud in developm
       from a file.
       [Rudolf J Streif]
 
+    - Add support for API version 5.1 to the vCloud driver and accept any value
+      which is a multiple of four for ex_vm_memory kwarg in create_node method.
+      (LIBCLOUD-314)
+      [Trevor Powell]
+
 Changes with Apache Libcloud 0.12.3:
 
   *) General

Modified: libcloud/trunk/libcloud/compute/drivers/vcloud.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/vcloud.py?rev=1467555&r1=1467554&r2=1467555&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/vcloud.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/vcloud.py Sat Apr 13 06:14:37 2013
@@ -380,6 +380,8 @@ class VCloudNodeDriver(NodeDriver):
                 cls = VCloudNodeDriver
             elif api_version == '1.5':
                 cls = VCloud_1_5_NodeDriver
+            elif api_version == '5.1':
+                cls = VCloud_1_5_NodeDriver
             else:
                 raise NotImplementedError(
                     "No VCloudNodeDriver found for API version %s" %
@@ -1858,3 +1860,15 @@ class VCloud_1_5_NodeDriver(VCloudNodeDr
                    cpu=cpu,
                    memory=memory,
                    storage=storage)
+
+
+class VCloud_5_1_NodeDriver(VCloud_1_5_NodeDriver):
+
+    @staticmethod
+    def _validate_vm_memory(vm_memory):
+        if vm_memory is None:
+            return None
+        elif (vm_memory % 4) != 0:
+            #The vcd 5.1 virtual machine memory size must be a multiple of 4 MB
+            raise ValueError(
+                '%s is not a valid vApp VM memory value' % (vm_memory))

Modified: libcloud/trunk/libcloud/test/compute/test_vcloud.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/test/compute/test_vcloud.py?rev=1467555&r1=1467554&r2=1467555&view=diff
==============================================================================
--- libcloud/trunk/libcloud/test/compute/test_vcloud.py (original)
+++ libcloud/trunk/libcloud/test/compute/test_vcloud.py Sat Apr 13 06:14:37 2013
@@ -271,6 +271,60 @@ class VCloud_1_5_Tests(unittest.TestCase
         self.driver.ex_set_control_access(node, control_access)
 
 
+class VCloud_5_1_Tests(unittest.TestCase, TestCaseMixin):
+
+    def setUp(self):
+        VCloudNodeDriver.connectionCls.host = 'test'
+        VCloudNodeDriver.connectionCls.conn_classes = (None, VCloud_1_5_MockHttp)
+        VCloud_1_5_MockHttp.type = None
+        self.driver = VCloud_1_5_NodeDriver(*VCLOUD_PARAMS, api_version='5.1')
+
+    def _test_create_node_valid_ex_vm_memory(self):
+        # TODO: Hook up the fixture
+        values = [4, 1024, 4096]
+
+        image = self.driver.list_images()[0]
+        size = self.driver.list_sizes()[0]
+
+        for value in values:
+            self.driver.create_node(
+                name='testerpart2',
+                image=image,
+                size=size,
+                vdc='https://services.vcloudexpress.terremark.com/api/v0.8/vdc/224',
+                network='https://services.vcloudexpress.terremark.com/api/v0.8/network/725',
+                cpus=2,
+                ex_vm_memory=value
+            )
+
+    def test_create_node_invalid_ex_vm_memory(self):
+        values = [1, 3, 7]
+
+        image = self.driver.list_images()[0]
+        size = self.driver.list_sizes()[0]
+
+        for value in values:
+            try:
+                self.driver.create_node(
+                    name='testerpart2',
+                    image=image,
+                    size=size,
+                    vdc='https://services.vcloudexpress.terremark.com/api/v0.8/vdc/224',
+                    network='https://services.vcloudexpress.terremark.com/api/v0.8/network/725',
+                    cpus=2,
+                    ex_vm_memory=value
+                )
+            except ValueError:
+               pass
+            else:
+               self.fail('Exception was not thrown')
+
+
+    def test_list_images(self):
+        ret = self.driver.list_images()
+        self.assertEqual('https://vm-vcloud/api/vAppTemplate/vappTemplate-ac1bc027-bf8c-4050-8643-4971f691c158', ret[0].id)
+
+
 class TerremarkMockHttp(MockHttp):
 
     fixtures = ComputeFileFixtures('terremark')