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 2011/10/22 12:10:03 UTC

svn commit: r1187687 - in /libcloud/trunk: libcloud/compute/drivers/opennebula.py test/compute/test_opennebula.py

Author: tomaz
Date: Sat Oct 22 10:10:03 2011
New Revision: 1187687

URL: http://svn.apache.org/viewvc?rev=1187687&view=rev
Log:
Add a custom NodeSize class with "cpu" and "vcpu" attribute to the OpenNebula
3.0 driver. Contributed by Hutson Betts <hut606 at gmail dot com> part of
LIBCLOUD-119.

Modified:
    libcloud/trunk/libcloud/compute/drivers/opennebula.py
    libcloud/trunk/test/compute/test_opennebula.py

Modified: libcloud/trunk/libcloud/compute/drivers/opennebula.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/opennebula.py?rev=1187687&r1=1187686&r2=1187687&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/opennebula.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/opennebula.py Sat Oct 22 10:10:03 2011
@@ -73,6 +73,24 @@ class OpenNebulaConnection(ConnectionUse
         return headers
 
 
+class OpenNebulaNodeSize(NodeSize):
+
+    def __init__(self, id, name, ram, disk, bandwidth, price, driver,
+                 cpu=None, vcpu=None):
+        self.cpu = cpu
+        self.vcpu = vcpu
+        super(OpenNebulaNodeSize, self).__init__(id=id, name=name, ram=ram,
+                                                 disk=disk,
+                                                 bandwidth=bandwidth,
+                                                 price=price, driver=driver)
+
+    def __repr__(self):
+        return (('<NodeSize: id=%s, name=%s, ram=%s, disk=%s, bandwidth=%s, '
+                 'price=%s, driver=%s, cpu=%s ...>')
+                % (self.id, self.name, self.ram, self.disk, self.bandwidth,
+                   self.price, self.driver.name, self.cpu))
+
+
 class OpenNebulaNodeDriver(NodeDriver):
     """
     OpenNebula node driver
@@ -112,27 +130,27 @@ class OpenNebulaNodeDriver(NodeDriver):
 
     def list_sizes(self, location=None):
         return [
-          NodeSize(id=1,
-                   name="small",
-                   ram=None,
-                   disk=None,
-                   bandwidth=None,
-                   price=None,
-                   driver=self),
-          NodeSize(id=2,
-                   name="medium",
-                   ram=None,
-                   disk=None,
-                   bandwidth=None,
-                   price=None,
-                   driver=self),
-          NodeSize(id=3,
-                   name="large",
-                   ram=None,
-                   disk=None,
-                   bandwidth=None,
-                   price=None,
-                   driver=self),
+            OpenNebulaNodeSize(id=1,
+                name='small',
+                ram=None,
+                disk=None,
+                bandwidth=None,
+                price=None,
+                driver=self),
+            OpenNebulaNodeSize(id=2,
+                name='medium',
+                ram=None,
+                disk=None,
+                bandwidth=None,
+                price=None,
+                driver=self),
+            OpenNebulaNodeSize(id=3,
+                name='large',
+                ram=None,
+                disk=None,
+                bandwidth=None,
+                price=None,
+                driver=self),
         ]
 
     def list_nodes(self):
@@ -280,6 +298,42 @@ class OpenNebula_3_0_NodeDriver(OpenNebu
 
         return self._to_node(node)
 
+    def list_sizes(self, location=None):
+        return [
+          OpenNebulaNodeSize(id=1,
+                   name='small',
+                   ram=1024,
+                   cpu=1,
+                   disk=None,
+                   bandwidth=None,
+                   price=None,
+                   driver=self),
+          OpenNebulaNodeSize(id=2,
+                   name='medium',
+                   ram=4096,
+                   cpu=4,
+                   disk=None,
+                   bandwidth=None,
+                   price=None,
+                   driver=self),
+          OpenNebulaNodeSize(id=3,
+                   name='large',
+                   ram=8192,
+                   cpu=8,
+                   disk=None,
+                   bandwidth=None,
+                   price=None,
+                   driver=self),
+          OpenNebulaNodeSize(id=4,
+                   name='custom',
+                   ram=0,
+                   cpu=0,
+                   disk=None,
+                   bandwidth=None,
+                   price=None,
+                   driver=self),
+        ]
+
     def _to_images(self, object):
         images = []
         for element in object.findall("STORAGE"):

Modified: libcloud/trunk/test/compute/test_opennebula.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/test/compute/test_opennebula.py?rev=1187687&r1=1187686&r2=1187687&view=diff
==============================================================================
--- libcloud/trunk/test/compute/test_opennebula.py (original)
+++ libcloud/trunk/test/compute/test_opennebula.py Sat Oct 22 10:10:03 2011
@@ -77,6 +77,24 @@ class OpenNebula_1_4_Tests(unittest.Test
         self.assertEqual(image.name, 'UbuntuServer9.04-Contextualized')
 
 
+class OpenNebula_3_0_Tests(unittest.TestCase):
+
+    def setUp(self):
+        OpenNebulaNodeDriver.connectionCls.conn_classes = (None,
+                                                           OpenNebulaMockHttp)
+        self.driver = OpenNebulaNodeDriver(*OPENNEBULA_PARAMS + ('3.0',))
+
+    def test_list_sizes(self):
+        sizes = self.driver.list_sizes()
+        names = [s.name for s in sizes]
+        self.assertEqual(len(sizes), 4)
+        self.assertTrue('small' in names)
+        self.assertTrue('medium' in names)
+        self.assertTrue('large' in names)
+        self.assertTrue('custom' in names)
+        self.assertEqual([s for s in sizes if s.id == '3'][0].cpu, 8)
+
+
 class OpenNebulaMockHttp(MockHttp):
 
     fixtures = ComputeFileFixtures('opennebula')