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/06/16 21:46:53 UTC
svn commit: r1136625 - in /libcloud/trunk: libcloud/compute/providers.py
libcloud/compute/types.py libcloud/data/pricing.json
test/compute/test_elastichosts.py test/compute/test_elasticstack.py
Author: tomaz
Date: Thu Jun 16 19:46:53 2011
New Revision: 1136625
URL: http://svn.apache.org/viewvc?rev=1136625&view=rev
Log:
Add a new compute driver for Skalicloud.com. The driver is based on ElasticStack one.
Added:
libcloud/trunk/test/compute/test_elasticstack.py
- copied, changed from r1136608, libcloud/trunk/test/compute/test_elastichosts.py
Removed:
libcloud/trunk/test/compute/test_elastichosts.py
Modified:
libcloud/trunk/libcloud/compute/providers.py
libcloud/trunk/libcloud/compute/types.py
libcloud/trunk/libcloud/data/pricing.json
Modified: libcloud/trunk/libcloud/compute/providers.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/providers.py?rev=1136625&r1=1136624&r2=1136625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/providers.py (original)
+++ libcloud/trunk/libcloud/compute/providers.py Thu Jun 16 19:46:53 2011
@@ -45,6 +45,8 @@ DRIVERS = {
('libcloud.compute.drivers.elastichosts', 'ElasticHostsUK2NodeDriver'),
Provider.ELASTICHOSTS_US1:
('libcloud.compute.drivers.elastichosts', 'ElasticHostsUS1NodeDriver'),
+ Provider.SKALICLOUD:
+ ('libcloud.compute.drivers.skalicloud', 'SkaliCloudNodeDriver'),
Provider.CLOUDSIGMA:
('libcloud.compute.drivers.cloudsigma', 'CloudSigmaZrhNodeDriver'),
Provider.GOGRID:
Modified: libcloud/trunk/libcloud/compute/types.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/types.py?rev=1136625&r1=1136624&r2=1136625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/types.py (original)
+++ libcloud/trunk/libcloud/compute/types.py Thu Jun 16 19:46:53 2011
@@ -89,6 +89,7 @@ class Provider(object):
GANDI = 29
OPSOURCE = 30
OPENSTACK = 31
+ SKALICLOUD = 32
class NodeState(object):
"""
Modified: libcloud/trunk/libcloud/data/pricing.json
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/data/pricing.json?rev=1136625&r1=1136624&r2=1136625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/data/pricing.json (original)
+++ libcloud/trunk/libcloud/data/pricing.json Thu Jun 16 19:46:53 2011
@@ -113,6 +113,15 @@
"high-cpu-extra-large": 0.770
},
+ "skalicloud": {
+ "small": 0.136,
+ "medium": 0.301,
+ "large": 0.505,
+ "extra-large": 0.654,
+ "high-cpu-medium": 0.249,
+ "high-cpu-extra-large": 0.936
+ },
+
"gogrid": {
"512MB": 0.095,
"1GB": 0.19,
Copied: libcloud/trunk/test/compute/test_elasticstack.py (from r1136608, libcloud/trunk/test/compute/test_elastichosts.py)
URL: http://svn.apache.org/viewvc/libcloud/trunk/test/compute/test_elasticstack.py?p2=libcloud/trunk/test/compute/test_elasticstack.py&p1=libcloud/trunk/test/compute/test_elastichosts.py&r1=1136608&r2=1136625&rev=1136625&view=diff
==============================================================================
--- libcloud/trunk/test/compute/test_elastichosts.py (original)
+++ libcloud/trunk/test/compute/test_elasticstack.py Thu Jun 16 19:46:53 2011
@@ -24,16 +24,18 @@ from libcloud.compute.drivers.elasticsta
ElasticStackBaseNodeDriver as ElasticStack)
from libcloud.compute.drivers.elastichosts import \
(ElasticHostsBaseNodeDriver as ElasticHosts)
+from libcloud.compute.drivers.skalicloud import \
+ (SkaliCloudNodeDriver as SkaliCloud)
from libcloud.common.types import InvalidCredsError, MalformedResponseError
from test import MockHttp
from test.file_fixtures import ComputeFileFixtures
-class ElasticStackTestCase(unittest.TestCase):
+class ElasticStackTestCase(object):
def setUp(self):
# Re-use ElasticHosts fixtures for the base ElasticStack platform tests
- ElasticStack.type = Provider.ELASTICHOSTS
+ """ElasticStack.type = Provider.ELASTICHOSTS
ElasticStack.api_name = 'elastichosts'
ElasticStackBaseConnection.host = 'test.com'
@@ -41,9 +43,11 @@ class ElasticStackTestCase(unittest.Test
ElasticStackMockHttp)
ElasticStack._standard_drives = ElasticHosts._standard_drives
+ self.driver = ElasticStack('foo', 'bar')
+ """
self.mockHttp = ElasticStackMockHttp
self.mockHttp.type = None
- self.driver = ElasticStack('foo', 'bar')
+
self.node = Node(id=72258, name=None, state=None, public_ip=None,
private_ip=None, driver=self.driver)
@@ -110,12 +114,11 @@ class ElasticStackTestCase(unittest.Test
self.assertTrue(isinstance(image.price, float))
def test_list_images(self):
- sizes = self.driver.list_images()
- self.assertEqual(len(sizes), 8)
- size = [s for s in sizes if \
- s.id == '38df0986-4d85-4b76-b502-3878ffc80161'][0]
- self.assertEqual(size.id, '38df0986-4d85-4b76-b502-3878ffc80161')
- self.assertEqual(size.name, 'CentOS Linux 5.5')
+ images = self.driver.list_images()
+ self.assertEqual(len(images), len(self.driver._standard_drives))
+
+ for uuid, values in self.driver._standard_drives.iteritems():
+ self.assertEqual(len([image for image in images if image.id == uuid]), 1)
def test_reboot_node(self):
node = self.driver.list_nodes()[0]
@@ -129,21 +132,41 @@ class ElasticStackTestCase(unittest.Test
sizes = self.driver.list_sizes()
size = [s for s in sizes if \
s.id == 'large'][0]
- images = self.driver.list_images()
- image = [i for i in images if \
- i.id == '38df0986-4d85-4b76-b502-3878ffc80161'][0]
+ image = self.image
self.assertTrue(self.driver.create_node(name="api.ivan.net.nz",
image=image, size=size))
-class ElasticHostsTestCase(ElasticStackTestCase):
+class ElasticHostsTestCase(ElasticStackTestCase, unittest.TestCase):
def setUp(self):
ElasticHosts.connectionCls.conn_classes = (None,
ElasticStackMockHttp)
+
self.driver = ElasticHosts('foo', 'bar')
- super(ElasticHostsTestCase, self).setUp()
+ images = self.driver.list_images()
+ self.image = [i for i in images if \
+ i.id == '38df0986-4d85-4b76-b502-3878ffc80161'][0]
+
+ ElasticStackTestCase.setUp(self)
+ unittest.TestCase.setUp(self)
+
+
+class SkaliCloudTestCase(ElasticStackTestCase, unittest.TestCase):
+
+ def setUp(self):
+ SkaliCloud.connectionCls.conn_classes = (None,
+ ElasticStackMockHttp)
+
+ self.driver = SkaliCloud('foo', 'bar')
+
+ images = self.driver.list_images()
+ self.image = [i for i in images if \
+ i.id == '90aa51f2-15c0-4cff-81ee-e93aa20b9468'][0]
+
+ ElasticStackTestCase.setUp(self)
+ unittest.TestCase.setUp(self)
class ElasticStackMockHttp(MockHttp):
@@ -171,8 +194,14 @@ class ElasticStackMockHttp(MockHttp):
return (httplib.OK, body, {}, httplib.responses[httplib.OK])
def _drives_0012e24a_6eae_4279_9912_3432f698cec8_image_38df0986_4d85_4b76_b502_3878ffc80161_gunzip(self, method, url, body, headers):
+ # ElasticHosts image
return (httplib.NO_CONTENT, body, {}, httplib.responses[httplib.NO_CONTENT])
+ def _drives_0012e24a_6eae_4279_9912_3432f698cec8_image_90aa51f2_15c0_4cff_81ee_e93aa20b9468_gunzip(self, method, url, body, headers):
+ # Skalikloud image
+ return (httplib.NO_CONTENT, body, {}, httplib.responses[httplib.NO_CONTENT])
+
+
def _drives_0012e24a_6eae_4279_9912_3432f698cec8_info(self, method, url, body, headers):
body = self.fixtures.load('drives_info.json')
return (httplib.OK, body, {}, httplib.responses[httplib.OK])