From a87738b7cb74562c4302c7d7953dca26dfbece7e Mon Sep 17 00:00:00 2001 From: Aymeric Barantal Date: Sun, 7 Aug 2011 16:41:52 +0200 Subject: [PATCH 1/7] pep8 compliance --- libcloud/compute/drivers/gandi.py | 92 +++++++++++++++++++++---------------- 1 files changed, 52 insertions(+), 40 deletions(-) diff --git a/libcloud/compute/drivers/gandi.py b/libcloud/compute/drivers/gandi.py index d4dd375..b3a650b 100644 --- a/libcloud/compute/drivers/gandi.py +++ b/libcloud/compute/drivers/gandi.py @@ -21,7 +21,8 @@ import xmlrpclib import libcloud from libcloud.compute.types import Provider, NodeState -from libcloud.compute.base import NodeDriver, Node, NodeLocation, NodeSize, NodeImage +from libcloud.compute.base import NodeDriver, Node, \ + NodeLocation, NodeSize, NodeImage # Global constants API_VERSION = '2.0' @@ -34,34 +35,39 @@ NODE_STATE_MAP = { 'running': NodeState.RUNNING, 'halted': NodeState.TERMINATED, 'paused': NodeState.TERMINATED, - 'locked' : NodeState.TERMINATED, - 'being_created' : NodeState.PENDING, - 'invalid' : NodeState.UNKNOWN, - 'legally_locked' : NodeState.PENDING, - 'deleted' : NodeState.TERMINATED + 'locked': NodeState.TERMINATED, + 'being_created': NodeState.PENDING, + 'invalid': NodeState.UNKNOWN, + 'legally_locked': NodeState.PENDING, + 'deleted': NodeState.TERMINATED } NODE_PRICE_HOURLY_USD = 0.02 + class GandiException(Exception): """ Exception class for Gandi driver """ def __str__(self): return "(%u) %s" % (self.args[0], self.args[1]) + def __repr__(self): return "" % (self.args[0], self.args[1]) + class GandiSafeTransport(xmlrpclib.SafeTransport): pass + class GandiTransport(xmlrpclib.Transport): pass + class GandiProxy(xmlrpclib.ServerProxy): transportCls = (GandiTransport, GandiSafeTransport) - def __init__(self,user_agent, verbose=0): + def __init__(self, user_agent, verbose=0): cls = self.transportCls[0] if API_PREFIX.startswith("https://"): cls = self.transportCls[1] @@ -75,6 +81,7 @@ class GandiProxy(xmlrpclib.ServerProxy): allow_none=True ) + class GandiConnection(object): """ Connection class for the Gandi driver @@ -103,10 +110,10 @@ class GandiConnection(object): def user_agent_append(self, s): self.ua.append(s) - def request(self,method,*args): + def request(self, method, *args): """ Request xmlrpc method with given args""" try: - return getattr(self._proxy, method)(self.api_key,*args) + return getattr(self._proxy, method)(self.api_key, *args) except xmlrpclib.Fault, e: raise GandiException(1001, e) @@ -123,7 +130,7 @@ class GandiNodeDriver(NodeDriver): country = 'FR' type = Provider.GANDI # TODO : which features to enable ? - features = { } + features = {} def __init__(self, key, secret=None, secure=False): self.key = key @@ -132,7 +139,8 @@ class GandiNodeDriver(NodeDriver): self.connection.driver = self # Specific methods for gandi - def _wait_operation(self, id, timeout=DEFAULT_TIMEOUT, check_interval=DEFAULT_INTERVAL): + def _wait_operation(self, id, \ + timeout=DEFAULT_TIMEOUT, check_interval=DEFAULT_INTERVAL): """ Wait for an operation to succeed""" for i in range(0, timeout, check_interval): @@ -141,7 +149,7 @@ class GandiNodeDriver(NodeDriver): if op['step'] == 'DONE': return True - if op['step'] in ['ERROR','CANCEL']: + if op['step'] in ['ERROR', 'CANCEL']: return False except (KeyError, IndexError): pass @@ -151,11 +159,11 @@ class GandiNodeDriver(NodeDriver): time.sleep(check_interval) return False - def _node_info(self,id): + def _node_info(self, id): try: - obj = self.connection.request('vm.info',int(id)) + obj = self.connection.request('vm.info', int(id)) return obj - except Exception,e: + except Exception, e: raise GandiException(1003, e) return None @@ -172,9 +180,9 @@ class GandiNodeDriver(NodeDriver): private_ip='', driver=self, extra={ - 'ai_active' : vm.get('ai_active'), - 'datacenter_id' : vm.get('datacenter_id'), - 'description' : vm.get('description') + 'ai_active': vm.get('ai_active'), + 'datacenter_id': vm.get('datacenter_id'), + 'description': vm.get('description') } ) @@ -193,9 +201,9 @@ class GandiNodeDriver(NodeDriver): return nodes def reboot_node(self, node): - op = self.connection.request('vm.reboot',int(node.id)) + op = self.connection.request('vm.reboot', int(node.id)) op_res = self._wait_operation(op['id']) - vm = self.connection.request('vm.info',int(node.id)) + vm = self.connection.request('vm.info', int(node.id)) if vm['state'] == 'running': return True return False @@ -204,18 +212,18 @@ class GandiNodeDriver(NodeDriver): vm = self._node_info(node.id) if vm['state'] == 'running': # Send vm_stop and wait for accomplish - op_stop = self.connection.request('vm.stop',int(node.id)) + op_stop = self.connection.request('vm.stop', int(node.id)) if not self._wait_operation(op_stop['id']): raise GandiException(1010, 'vm.stop failed') # Delete - op = self.connection.request('vm.delete',int(node.id)) + op = self.connection.request('vm.delete', int(node.id)) if self._wait_operation(op['id']): return True return False def deploy_node(self, **kwargs): - raise NotImplementedError, \ - 'deploy_node not implemented for gandi driver' + raise NotImplementedError( + 'deploy_node not implemented for gandi driver') def create_node(self, **kwargs): """Create a new Gandi node @@ -234,7 +242,7 @@ class GandiNodeDriver(NodeDriver): (required) @type size: L{NodeSize} - @keyword login: user name to create for login on this machine (required) + @keyword login: user name to create for login on machine (required) @type login: String @keyword password: password for user that'll be created (required) @@ -245,17 +253,20 @@ class GandiNodeDriver(NodeDriver): """ if kwargs.get('login') is None or kwargs.get('password') is None: - raise GandiException(1020, 'login and password must be defined for node creation') + raise GandiException(1020, + 'login and password must be defined for node creation') location = kwargs.get('location') - if location and isinstance(location,NodeLocation): + if location and isinstance(location, NodeLocation): dc_id = int(location.id) else: - raise GandiException(1021, 'location must be a subclass of NodeLocation') + raise GandiException(1021, + 'location must be a subclass of NodeLocation') size = kwargs.get('size') - if not size and not isinstance(size,NodeSize): - raise GandiException(1022, 'size must be a subclass of NodeSize') + if not size and not isinstance(size, NodeSize): + raise GandiException(1022, + 'size must be a subclass of NodeSize') src_disk_id = int(kwargs['image'].id) @@ -271,20 +282,21 @@ class GandiNodeDriver(NodeDriver): 'password': kwargs['password'], # TODO : use NodeAuthPassword 'memory': int(size.ram), 'cores': int(size.id), - 'bandwidth' : int(size.bandwidth), - 'ip_version': kwargs.get('inet_family',4), + 'bandwidth': int(size.bandwidth), + 'ip_version': kwargs.get('inet_family', 4), } # Call create_from helper api. Return 3 operations : disk_create, # iface_create,vm_create - (op_disk,op_iface,op_vm) = self.connection.request( + (op_disk, op_iface, op_vm) = self.connection.request( 'vm.create_from', - vm_spec,disk_spec,src_disk_id + vm_spec, disk_spec, src_disk_id ) # We wait for vm_create to finish if self._wait_operation(op_vm['id']): - # after successful operation, get ip information thru first interface + # after successful operation, get ip information + # thru first interface node = self._node_info(op_vm['vm_id']) ifaces = node.get('ifaces') if len(ifaces) > 0: @@ -305,10 +317,10 @@ class GandiNodeDriver(NodeDriver): def list_images(self, location=None): try: if location: - filtering = { 'datacenter_id' : int(location.id) } + filtering = {'datacenter_id': int(location.id)} else: filtering = {} - images = self.connection.request('image.list', filtering ) + images = self.connection.request('image.list', filtering) return [self._to_image(i) for i in images] except Exception, e: raise GandiException(1011, e) @@ -340,8 +352,8 @@ class GandiNodeDriver(NodeDriver): if available_res['servers'] < 1: # No server quota, no way return shares - for i in range(1,max_core + 1): - share = {id:i} + for i in range(1, max_core + 1): + share = {id: i} share_is_available = True for k in ['memory', 'disk', 'bandwidth']: if share_def[k] * i > available_res[k]: @@ -351,7 +363,7 @@ class GandiNodeDriver(NodeDriver): share[k] = share_def[k] * i if share_is_available: nb_core = i - shares.append(self._to_size(nb_core,share)) + shares.append(self._to_size(nb_core, share)) return shares def _to_loc(self, loc): -- 1.7.6.1