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')