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/17 23:50:32 UTC
svn commit: r1137046 - in /libcloud/trunk:
libcloud/compute/drivers/serverlove.py libcloud/compute/providers.py
libcloud/compute/types.py test/compute/test_elasticstack.py
Author: tomaz
Date: Fri Jun 17 21:50:31 2011
New Revision: 1137046
URL: http://svn.apache.org/viewvc?rev=1137046&view=rev
Log:
Add new compute driver for serverlove.
Added:
libcloud/trunk/libcloud/compute/drivers/serverlove.py
Modified:
libcloud/trunk/libcloud/compute/providers.py
libcloud/trunk/libcloud/compute/types.py
libcloud/trunk/test/compute/test_elasticstack.py
Added: libcloud/trunk/libcloud/compute/drivers/serverlove.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/serverlove.py?rev=1137046&view=auto
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/serverlove.py (added)
+++ libcloud/trunk/libcloud/compute/drivers/serverlove.py Fri Jun 17 21:50:31 2011
@@ -0,0 +1,82 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""
+ServerLove Driver
+"""
+
+from libcloud.compute.types import Provider
+from libcloud.compute.drivers.elasticstack import ElasticStackBaseNodeDriver
+from libcloud.compute.drivers.elasticstack import ElasticStackBaseConnection
+
+
+# API end-points
+API_ENDPOINTS = {
+ 'uk-1': {
+ 'name': 'United Kingdom, Manchester',
+ 'country': 'United Kingdom',
+ 'host': 'api.z1-man.serverlove.com'
+ }
+}
+
+# Default API end-point for the base connection class.
+DEFAULT_ENDPOINT = 'uk-1'
+
+# Retrieved from http://www.serverlove.com/cloud-server-faqs/api-questions/
+STANDARD_DRIVES = {
+ '679f5f44-0be7-4745-a658-cccd4334c1aa': {
+ 'uuid': '679f5f44-0be7-4745-a658-cccd4334c1aa',
+ 'description': 'CentOS 5.5',
+ 'size_gunzipped': '1GB',
+ 'supports_deployment': True,
+ },
+ '5f2e0e29-2937-42b9-b362-d2d07eddbdeb': {
+ 'uuid': '5f2e0e29-2937-42b9-b362-d2d07eddbdeb',
+ 'description': 'Ubuntu Linux 10.04',
+ 'size_gunzipped': '1GB',
+ 'supports_deployment': True,
+ },
+ '5795b68f-ed26-4639-b41d-c93235062b6b': {
+ 'uuid': '5795b68f-ed26-4639-b41d-c93235062b6b',
+ 'description': 'Debian Linux 5',
+ 'size_gunzipped': '1GB',
+ 'supports_deployment': True,
+ },
+ '41993a02-0b22-4e49-bb47-0aa8975217e4': {
+ 'uuid': '41993a02-0b22-4e49-bb47-0aa8975217e4',
+ 'description': 'Windows Server 2008 R2 Standard',
+ 'size_gunzipped': '15GB',
+ 'supports_deployment': False,
+ },
+ '85623ca1-9c2a-4398-a771-9a43c347e86b': {
+ 'uuid': '85623ca1-9c2a-4398-a771-9a43c347e86b',
+ 'description': 'Windows Web Server 2008 R2',
+ 'size_gunzipped': '15GB',
+ 'supports_deployment': False,
+ }
+}
+
+
+class ServerLoveConnection(ElasticStackBaseConnection):
+ host = API_ENDPOINTS[DEFAULT_ENDPOINT]['host']
+
+
+class ServerLoveNodeDriver(ElasticStackBaseNodeDriver):
+ type = Provider.SERVERLOVE
+ api_name = 'serverlove'
+ name = 'ServerLove'
+ connectionCls = ServerLoveConnection
+ features = {'create_node': ['generates_password']}
+ _standard_drives = STANDARD_DRIVES
Modified: libcloud/trunk/libcloud/compute/providers.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/providers.py?rev=1137046&r1=1137045&r2=1137046&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/providers.py (original)
+++ libcloud/trunk/libcloud/compute/providers.py Fri Jun 17 21:50:31 2011
@@ -47,6 +47,8 @@ DRIVERS = {
('libcloud.compute.drivers.elastichosts', 'ElasticHostsUS1NodeDriver'),
Provider.SKALICLOUD:
('libcloud.compute.drivers.skalicloud', 'SkaliCloudNodeDriver'),
+ Provider.SERVERLOVE:
+ ('libcloud.compute.drivers.serverlove', 'ServerLoveNodeDriver'),
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=1137046&r1=1137045&r2=1137046&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/types.py (original)
+++ libcloud/trunk/libcloud/compute/types.py Fri Jun 17 21:50:31 2011
@@ -90,6 +90,7 @@ class Provider(object):
OPSOURCE = 30
OPENSTACK = 31
SKALICLOUD = 32
+ SERVERLOVE = 33
class NodeState(object):
"""
Modified: libcloud/trunk/test/compute/test_elasticstack.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/test/compute/test_elasticstack.py?rev=1137046&r1=1137045&r2=1137046&view=diff
==============================================================================
--- libcloud/trunk/test/compute/test_elasticstack.py (original)
+++ libcloud/trunk/test/compute/test_elasticstack.py Fri Jun 17 21:50:31 2011
@@ -26,6 +26,8 @@ from libcloud.compute.drivers.elastichos
(ElasticHostsBaseNodeDriver as ElasticHosts)
from libcloud.compute.drivers.skalicloud import \
(SkaliCloudNodeDriver as SkaliCloud)
+from libcloud.compute.drivers.serverlove import \
+ (ServerLoveNodeDriver as ServerLove)
from libcloud.common.types import InvalidCredsError, MalformedResponseError
from test import MockHttp
@@ -169,6 +171,22 @@ class SkaliCloudTestCase(ElasticStackTes
unittest.TestCase.setUp(self)
+class ServerLoveTestCase(ElasticStackTestCase, unittest.TestCase):
+
+ def setUp(self):
+ ServerLove.connectionCls.conn_classes = (None,
+ ElasticStackMockHttp)
+
+ self.driver = ServerLove('foo', 'bar')
+
+ images = self.driver.list_images()
+ self.image = [i for i in images if \
+ i.id == '679f5f44-0be7-4745-a658-cccd4334c1aa'][0]
+
+ ElasticStackTestCase.setUp(self)
+ unittest.TestCase.setUp(self)
+
+
class ElasticStackMockHttp(MockHttp):
fixtures = ComputeFileFixtures('elastichosts')
@@ -201,6 +219,9 @@ class ElasticStackMockHttp(MockHttp):
# Skalikloud image
return (httplib.NO_CONTENT, body, {}, httplib.responses[httplib.NO_CONTENT])
+ def _drives_0012e24a_6eae_4279_9912_3432f698cec8_image_679f5f44_0be7_4745_a658_cccd4334c1aa_gunzip(self, method, url, body, headers):
+ # ServerLove 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')