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/09/24 13:03:57 UTC

svn commit: r1175156 - in /libcloud/trunk/libcloud: compute/base.py dns/base.py loadbalancer/base.py storage/base.py

Author: tomaz
Date: Sat Sep 24 11:03:56 2011
New Revision: 1175156

URL: http://svn.apache.org/viewvc?rev=1175156&view=rev
Log:
Change all the base driver classes to inherit from BaseDriver and remove a bunch
of duplicated code.

Modified:
    libcloud/trunk/libcloud/compute/base.py
    libcloud/trunk/libcloud/dns/base.py
    libcloud/trunk/libcloud/loadbalancer/base.py
    libcloud/trunk/libcloud/storage/base.py

Modified: libcloud/trunk/libcloud/compute/base.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/base.py?rev=1175156&r1=1175155&r2=1175156&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/base.py (original)
+++ libcloud/trunk/libcloud/compute/base.py Sat Sep 24 11:03:56 2011
@@ -31,6 +31,7 @@ from libcloud.compute.ssh import SSHClie
 # @@TR: are the imports below part of the public api for this
 # module? They aren't used in here ...
 from libcloud.common.base import ConnectionKey, ConnectionUserAndKey
+from libcloud.common.base import BaseDriver
 from libcloud.httplib_ssl import LibcloudHTTPSConnection
 from libcloud.common.base import LibcloudHTTPConnection
 from libcloud.common.types import LibcloudError
@@ -320,7 +321,7 @@ class NodeAuthPassword(object):
         return '<NodeAuthPassword>'
 
 
-class NodeDriver(object):
+class NodeDriver(BaseDriver):
     """
     A base NodeDriver class to derive from
 
@@ -349,46 +350,8 @@ class NodeDriver(object):
     NODE_STATE_MAP = {}
 
     def __init__(self, key, secret=None, secure=True, host=None, port=None):
-        """
-        @keyword    key:    API key or username to used
-        @type       key:    str
-
-        @keyword    secret: Secret password to be used
-        @type       secret: str
-
-        @keyword    secure: Weither to use HTTPS or HTTP. Note: Some providers
-                            only support HTTPS, and it is on by default.
-        @type       secure: bool
-
-        @keyword    host: Override hostname used for connections.
-        @type       host: str
-
-        @keyword    port: Override port used for connections.
-        @type       port: int
-        """
-        self.key = key
-        self.secret = secret
-        self.secure = secure
-        args = [self.key]
-
-        if self.secret != None:
-            args.append(self.secret)
-
-        args.append(secure)
-
-        if host != None:
-            args.append(host)
-
-        if port != None:
-            args.append(port)
-
-        self.connection = self.connectionCls(*args, **self._ex_connection_class_kwargs())
-
-        self.connection.driver = self
-        self.connection.connect()
-
-    def _ex_connection_class_kwargs(self):
-        return {}
+      super(NodeDriver, self).__init__(key=key, secret=secret, secure=secure,
+                                       host=host, port=port)
 
     def create_node(self, **kwargs):
         """Create a new node instance.

Modified: libcloud/trunk/libcloud/dns/base.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/dns/base.py?rev=1175156&r1=1175155&r2=1175156&view=diff
==============================================================================
--- libcloud/trunk/libcloud/dns/base.py (original)
+++ libcloud/trunk/libcloud/dns/base.py Sat Sep 24 11:03:56 2011
@@ -20,7 +20,7 @@ __all__ = [
 ]
 
 
-from libcloud.common.base import ConnectionUserAndKey
+from libcloud.common.base import ConnectionUserAndKey, BaseDriver
 from libcloud.dns.types import RecordType
 
 
@@ -120,7 +120,7 @@ class Record(object):
                  self.data, self.driver.name))
 
 
-class DNSDriver(object):
+class DNSDriver(BaseDriver):
     """
     DNS driver.
     """
@@ -128,27 +128,8 @@ class DNSDriver(object):
     name = None
 
     def __init__(self, key, secret=None, secure=True, host=None, port=None):
-        # TODO: Refactor into BaseDriver class
-        self.key = key
-        self.secret = secret
-        self.secure = secure
-        args = [self.key]
-
-        if self.secret != None:
-            args.append(self.secret)
-
-        args.append(secure)
-
-        if host != None:
-            args.append(host)
-
-        if port != None:
-            args.append(port)
-
-        self.connection = self.connectionCls(*args)
-
-        self.connection.driver = self
-        self.connection.connect()
+      super(DNSDriver, self).__init__(key=key, secret=secret, secure=secure,
+                                      host=host, port=port)
 
     def list_zones(self):
         """

Modified: libcloud/trunk/libcloud/loadbalancer/base.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/loadbalancer/base.py?rev=1175156&r1=1175155&r2=1175156&view=diff
==============================================================================
--- libcloud/trunk/libcloud/loadbalancer/base.py (original)
+++ libcloud/trunk/libcloud/loadbalancer/base.py Sat Sep 24 11:03:56 2011
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from libcloud.common.base import ConnectionKey
+from libcloud.common.base import ConnectionKey, BaseDriver
 from libcloud.common.types import LibcloudError
 
 __all__ = [
@@ -71,7 +71,7 @@ class LoadBalancer(object):
                 self.name, self.state))
 
 
-class Driver(object):
+class Driver(BaseDriver):
     """
     A base LBDriver class to derive from
 
@@ -84,24 +84,8 @@ class Driver(object):
     _VALUE_TO_ALGORITHM_MAP = {}
 
     def __init__(self, key, secret=None, secure=True, host=None, port=None):
-        self.key = key
-        self.secret = secret
-        args = [self.key]
-
-        if self.secret is not None:
-            args.append(self.secret)
-
-        args.append(secure)
-
-        if host != None:
-            args.append(host)
-
-        if port != None:
-            args.append(port)
-
-        self.connection = self.connectionCls(*args)
-        self.connection.driver = self
-        self.connection.connect()
+        super(Driver, self).__init__(key=key, secret=secret, secure=secure,
+                                     host=host, port=port)
 
     def list_protocols(self):
         """

Modified: libcloud/trunk/libcloud/storage/base.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/storage/base.py?rev=1175156&r1=1175155&r2=1175156&view=diff
==============================================================================
--- libcloud/trunk/libcloud/storage/base.py (original)
+++ libcloud/trunk/libcloud/storage/base.py Sat Sep 24 11:03:56 2011
@@ -27,7 +27,7 @@ from os.path import join as pjoin
 
 from libcloud import utils
 from libcloud.common.types import LibcloudError
-from libcloud.common.base import ConnectionUserAndKey
+from libcloud.common.base import ConnectionUserAndKey, BaseDriver
 from libcloud.storage.types import ObjectDoesNotExistError
 
 CHUNK_SIZE = 8096
@@ -151,7 +151,7 @@ class Container(object):
         return ('<Container: name=%s, provider=%s>'
                 % (self.name, self.driver.name))
 
-class StorageDriver(object):
+class StorageDriver(BaseDriver):
     """
     A base StorageDriver to derive from.
     """
@@ -161,26 +161,8 @@ class StorageDriver(object):
     hash_type = 'md5'
 
     def __init__(self, key, secret=None, secure=True, host=None, port=None):
-        self.key = key
-        self.secret = secret
-        self.secure = secure
-        args = [self.key]
-
-        if self.secret != None:
-            args.append(self.secret)
-
-        args.append(secure)
-
-        if host != None:
-            args.append(host)
-
-        if port != None:
-            args.append(port)
-
-        self.connection = self.connectionCls(*args)
-
-        self.connection.driver = self
-        self.connection.connect()
+      super(StorageDriver, self).__init__(key=key, secret=secret, secure=secure,
+                                          host=host, port=port)
 
     def list_containters(self):
         """