--- trunk/libcloud/compute/drivers/opennebula.py	2011-10-16 19:35:15.000000000 -0500
+++ opennebula.py	2011-10-21 17:03:34.138454523 -0500
@@ -73,6 +73,28 @@
         return headers
 
 
+class OpenNebulaNodeSize(NodeSize):
+
+    def __init__(self, id, name, ram, disk, bandwidth, price, driver,
+        cpu=None, vcpu=None):
+
+        self.id = str(id)
+        self.name = name
+        self.ram = ram
+        self.disk = disk
+        self.bandwidth = bandwidth
+        self.price = price
+        self.driver = driver
+        self.cpu = cpu
+        self.vcpu = vcpu
+
+    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 +134,27 @@
 
     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 +302,42 @@
 
         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"):
