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 2016/03/12 22:52:39 UTC
[05/10] libcloud git commit: [LIBCLOUD-802] Refactor codes according
to the project convention
http://git-wip-us.apache.org/repos/asf/libcloud/blob/ae4c482b/libcloud/compute/providers.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/providers.py b/libcloud/compute/providers.py
index 9ac944c..dfe7e5d 100644
--- a/libcloud/compute/providers.py
+++ b/libcloud/compute/providers.py
@@ -173,7 +173,7 @@ DRIVERS = {
('libcloud.compute.drivers.ciscoccs', 'CiscoCCSNodeDriver'),
Provider.NTTA:
('libcloud.compute.drivers.ntta', 'NTTAmericaNodeDriver'),
- Provider.ECS:
+ Provider.ALIYUN_ECS:
('libcloud.compute.drivers.ecs', 'ECSDriver'),
# Deprecated
http://git-wip-us.apache.org/repos/asf/libcloud/blob/ae4c482b/libcloud/compute/types.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/types.py b/libcloud/compute/types.py
index 34884e0..226966f 100644
--- a/libcloud/compute/types.py
+++ b/libcloud/compute/types.py
@@ -100,7 +100,7 @@ class Provider(Type):
:cvar VULTR: vultr driver.
:cvar AZURE: Azure driver.
:cvar AURORACOMPUTE: Aurora Compute driver.
- :cvar ECS: Aliyun ECS driver.
+ :cvar ALIYUN_ECS: Aliyun ECS driver.
"""
AZURE = 'azure'
DUMMY = 'dummy'
@@ -160,7 +160,7 @@ class Provider(Type):
NTTA = 'ntta'
MEDONE = 'medone'
CISCOCCS = 'ciscoccs'
- ECS = 'ecs'
+ ALIYUN_ECS = 'ecs'
# OpenStack based providers
HPCLOUD = 'hpcloud'
http://git-wip-us.apache.org/repos/asf/libcloud/blob/ae4c482b/libcloud/loadbalancer/drivers/slb.py
----------------------------------------------------------------------
diff --git a/libcloud/loadbalancer/drivers/slb.py b/libcloud/loadbalancer/drivers/slb.py
index a7eab40..03ca6be 100644
--- a/libcloud/loadbalancer/drivers/slb.py
+++ b/libcloud/loadbalancer/drivers/slb.py
@@ -14,6 +14,7 @@
# limitations under the License.
__all__ = [
+ 'SLB_API_VERSION',
'SLBDriver'
]
@@ -313,19 +314,23 @@ class SLBDriver(Driver):
def list_protocols(self):
return list(PROTOCOL_TO_LISTENER_MAP.keys())
- def list_balancers(self, ex_balancer_ids=[], ex_filters=None):
+ def list_balancers(self, ex_balancer_ids=None, ex_filters=None):
"""
List all loadbalancers
+
@inherits :class:`Driver.list_balancers`
+
:keyword ex_balancer_ids: a list of balancer ids to filter results
Only balancers which's id in this list
will be returned
- :type ex_balancer_ids: ``list``
+ :type ex_balancer_ids: ``list`` of ``str``
+
:keyword ex_filters: attributes to filter results. Only balancers
which have all the desired attributes
and values will be returned
:type ex_filters: ``dict``
"""
+
params = {'Action': 'DescribeLoadBalancers',
'RegionId': self.region}
if ex_balancer_ids and isinstance(ex_balancer_ids, list):
@@ -338,7 +343,41 @@ class SLBDriver(Driver):
return self._to_balancers(resp_body)
def create_balancer(self, name, port, protocol, algorithm, members,
+ ex_bandwidth=None, ex_internet_charge_type=None,
+ ex_address_type=None, ex_vswitch_id=None,
+ ex_master_zone_id=None, ex_slave_zone_id=None,
+ ex_client_token=None,
**kwargs):
+ """
+ Create a new load balancer instance
+
+ @inherits: :class:`Driver.create_balancer`
+
+ :keyword ex_bandwidth: The max bandwidth limit for `paybybandwidth`
+ internet charge type, in Mbps unit
+ :type ex_bandwidth: ``int`` in range [1, 1000]
+
+ :keyword ex_internet_charge_type: The internet charge type
+ :type ex_internet_charge_type: a ``str`` of `paybybandwidth`
+ or `paybytraffic`
+
+ :keyword ex_address_type: The listening IP address type
+ :type ex_address_type: a ``str`` of `internet` or `intranet`
+
+ :keyword ex_vswitch_id: The vswitch id in a VPC network
+ :type ex_vswitch_id: ``str``
+
+ :keyword ex_master_zone_id: The id of the master availability zone
+ :type ex_master_zone_id: ``str``
+
+ :keyword ex_slave_zone_id: The id of the slave availability zone
+ :type ex_slave_zone_id: ``str``
+
+ :keyword ex_client_token: The token generated by client to
+ identify requests
+ :type ex_client_token: ``str``
+ """
+
# 1.Create load balancer
params = {'Action': 'CreateLoadBalancer',
'RegionId': self.region}
@@ -352,30 +391,39 @@ class SLBDriver(Driver):
if protocol not in PROTOCOL_TO_LISTENER_MAP:
raise AttributeError('unsupport protocol %s' % protocol)
- extra_param_keys = [
- 'AddressType',
- 'VSwitchId',
- 'InternetChargeType',
- 'Bandwidth',
- 'ClientToken',
- 'MasterZoneId',
- 'SlaveZoneId'
- ]
- extra = self._get_extra_params(extra_param_keys, kwargs)
# Bandwidth in range [1, 1000] Mbps
bandwidth = -1
- if 'Bandwidth' in extra and extra['Bandwidth']:
+ if ex_bandwidth:
try:
- bandwidth = int(extra['Bandwidth'])
+ bandwidth = int(ex_bandwidth)
except ValueError:
- raise AttributeError('Bandwidth should be a integer in '
+ raise AttributeError('ex_bandwidth should be a integer in '
'range [1, 1000].')
+ params['Bandwidth'] = bandwidth
- charge_type = extra.get('InternetChargeType', None)
- if charge_type and charge_type.lower() == 'paybybandwidth':
- if bandwidth == -1:
- raise AttributeError('PayByBandwidth need Bandwidth be set')
- params.update(extra)
+ if ex_internet_charge_type:
+ if ex_internet_charge_type.lower() == 'paybybandwidth':
+ if bandwidth == -1:
+ raise AttributeError('PayByBandwidth internet charge type'
+ ' need ex_bandwidth be set')
+ params['InternetChargeType'] = ex_internet_charge_type
+
+ if ex_address_type:
+ if ex_address_type.lower() not in ('internet', 'intranet'):
+ raise AttributeError('ex_address_type should be "internet" '
+ 'or "intranet"')
+ params['AddressType'] = ex_address_type
+
+ if ex_vswitch_id:
+ params['VSwitchId'] = ex_vswitch_id
+
+ if ex_master_zone_id:
+ params['MasterZoneId'] = ex_master_zone_id
+ if ex_slave_zone_id:
+ params['SlaveZoneId'] = ex_slave_zone_id
+
+ if ex_client_token:
+ params['ClientToken'] = ex_client_token
if members and isinstance(members, list):
backend_ports = [member.port for member in members]
@@ -461,11 +509,14 @@ class SLBDriver(Driver):
def ex_get_balancer_attribute(self, balancer):
"""
Get balancer attribute
+
:param balancer: the balancer to get attribute
:type balancer: ``LoadBalancer``
+
:return: the balancer attribute
:rtype: ``SLBLoadBalancerAttribute``
"""
+
params = {'Action': 'DescribeLoadBalancerAttribute',
'LoadBalancerId': balancer.id}
resp_body = self.connection.request(self.path, params).object
@@ -475,11 +526,14 @@ class SLBDriver(Driver):
def ex_list_listeners(self, balancer):
"""
Get all listener related to the given balancer
+
:param balancer: the balancer to list listeners
:type balancer: ``LoadBalancer``
+
:return: a list of listeners
:rtype: ``list`` of ``SLBLoadBalancerListener``
"""
+
attribute = self.ex_get_balancer_attribute(balancer)
listeners = [SLBLoadBalancerListener(each['ListenerPort'], None,
None, None)
@@ -490,22 +544,29 @@ class SLBDriver(Driver):
bandwidth, **kwargs):
"""
Create load balancer listening rule.
+
:param balancer: the balancer which the rule belongs to.
The listener created will listen on the port of the
the balancer as default. 'ListenerPort' in kwargs
will *OVERRIDE* it.
:type balancer: ``LoadBalancer``
+
:param backend_port: the backend server port
:type backend_port: ``int``
+
:param protocol: the balancer protocol, default to http
:type protocol: ``str``
+
:param algorithm: the balancer routing algorithm
:type algorithm: ``Algorithm``
+
:param bandwidth: the listener bandwidth limits
:type bandwidth: ``str``
+
:return: the created listener
:rtype: ``SLBLoadBalancerListener``
"""
+
cls = PROTOCOL_TO_LISTENER_MAP.get(protocol,
SLBLoadBalancerHttpListener)
if 'ListenerPort' in kwargs:
@@ -523,13 +584,17 @@ class SLBDriver(Driver):
def ex_start_listener(self, balancer, port):
"""
Start balancer's listener listening the given port.
+
:param balancer: a load balancer
:type balancer: ``LoadBalancer``
+
:param port: listening port
:type port: ``int``
+
:return: whether operation is success
:rtype: ``bool``
"""
+
params = {'Action': 'StartLoadBalancerListener',
'LoadBalancerId': balancer.id,
'ListenerPort': port}
@@ -539,13 +604,17 @@ class SLBDriver(Driver):
def ex_stop_listener(self, balancer, port):
"""
Stop balancer's listener listening the given port.
+
:param balancer: a load balancer
:type balancer: ``LoadBalancer``
+
:param port: listening port
:type port: ``int``
+
:return: whether operation is success
:rtype: ``bool``
"""
+
params = {'Action': 'StopLoadBalancerListener',
'LoadBalancerId': balancer.id,
'ListenerPort': port}
@@ -556,17 +625,22 @@ class SLBDriver(Driver):
private_key):
"""
Upload certificate and private key for https load balancer listener
+
:param name: the certificate name
:type name: ``str``
+
:param server_certificate: the content of the certificate to upload
in PEM format
:type server_certificate: ``str``
+
:param private_key: the content of the private key to upload
in PEM format
:type private_key: ``str``
+
:return: new created certificate info
:rtype: ``SLBServerCertificate``
"""
+
params = {'Action': 'UploadServerCertificate',
'RegionId': self.region,
'ServerCertificate': server_certificate,
@@ -579,11 +653,14 @@ class SLBDriver(Driver):
def ex_list_certificates(self, certificate_ids=[]):
"""
List all server certificates
+
:param certificate_ids: certificate ids to filter results
:type certificate_ids: ``str``
+
:return: certificates
:rtype: ``SLBServerCertificate``
"""
+
params = {'Action': 'DescribeServerCertificates',
'RegionId': self.region}
if certificate_ids and isinstance(certificate_ids, list):
@@ -600,11 +677,14 @@ class SLBDriver(Driver):
def ex_delete_certificate(self, certificate_id):
"""
Delete the given server certificate
+
:param certificate_id: the id of the certificate to delete
:type certificate_id: ``str``
+
:return: whether process is success
:rtype: ``bool``
"""
+
params = {'Action': 'DeleteServerCertificate',
'RegionId': self.region,
'ServerCertificateId': certificate_id}
@@ -614,13 +694,17 @@ class SLBDriver(Driver):
def ex_set_certificate_name(self, certificate_id, name):
"""
Set server certificate name.
+
:param certificate_id: the id of the server certificate to update
:type certificate_id: ``str``
+
:param name: the new name
:type name: ``str``
+
:return: whether updating is success
:rtype: ``bool``
"""
+
params = {'Action': 'SetServerCertificateName',
'RegionId': self.region,
'ServerCertificateId': certificate_id,
@@ -740,13 +824,6 @@ class SLBDriver(Driver):
return SLBServerCertificate(id=_id, name=name,
fingerprint=fingerprint)
- def _get_extra_params(self, extra_param_keys, kwargs):
- params = {}
- for key in extra_param_keys:
- if key in kwargs:
- params[key] = kwargs[key]
- return params
-
def _list_to_json(self, value):
try:
return json.dumps(value)
http://git-wip-us.apache.org/repos/asf/libcloud/blob/ae4c482b/libcloud/loadbalancer/providers.py
----------------------------------------------------------------------
diff --git a/libcloud/loadbalancer/providers.py b/libcloud/loadbalancer/providers.py
index b619c9d..f60e6d3 100644
--- a/libcloud/loadbalancer/providers.py
+++ b/libcloud/loadbalancer/providers.py
@@ -42,7 +42,7 @@ DRIVERS = {
('libcloud.loadbalancer.drivers.softlayer', 'SoftlayerLBDriver'),
Provider.DIMENSIONDATA:
('libcloud.loadbalancer.drivers.dimensiondata', 'DimensionDataLBDriver'),
- Provider.SLB:
+ Provider.ALIYUN_SLB:
('libcloud.loadbalancer.drivers.slb', 'SLBDriver'),
# Deprecated
http://git-wip-us.apache.org/repos/asf/libcloud/blob/ae4c482b/libcloud/loadbalancer/types.py
----------------------------------------------------------------------
diff --git a/libcloud/loadbalancer/types.py b/libcloud/loadbalancer/types.py
index 0d5deec..45d6c6a 100644
--- a/libcloud/loadbalancer/types.py
+++ b/libcloud/loadbalancer/types.py
@@ -33,7 +33,7 @@ class LibcloudLBImmutableError(LibcloudLBError):
class Provider(object):
"""
- :cvar SLB: Aliyun SLB loadbalancer driver
+ :cvar ALIYUN_SLB: Aliyun SLB loadbalancer driver
"""
RACKSPACE = 'rackspace'
GOGRID = 'gogrid'
@@ -44,7 +44,7 @@ class Provider(object):
GCE = 'gce'
SOFTLAYER = 'softlayer'
DIMENSIONDATA = 'dimensiondata'
- SLB = 'slb'
+ ALIYUN_SLB = 'slb'
# Deprecated
RACKSPACE_US = 'rackspace_us'
http://git-wip-us.apache.org/repos/asf/libcloud/blob/ae4c482b/libcloud/storage/providers.py
----------------------------------------------------------------------
diff --git a/libcloud/storage/providers.py b/libcloud/storage/providers.py
index 0bf1e41..1cb31e4 100644
--- a/libcloud/storage/providers.py
+++ b/libcloud/storage/providers.py
@@ -58,7 +58,7 @@ DRIVERS = {
('libcloud.storage.drivers.auroraobjects', 'AuroraObjectsStorageDriver'),
Provider.BACKBLAZE_B2:
('libcloud.storage.drivers.backblaze_b2', 'BackblazeB2StorageDriver'),
- Provider.OSS:
+ Provider.ALIYUN_OSS:
('libcloud.storage.drivers.oss', 'OSSStorageDriver'),
# Deprecated
http://git-wip-us.apache.org/repos/asf/libcloud/blob/ae4c482b/libcloud/storage/types.py
----------------------------------------------------------------------
diff --git a/libcloud/storage/types.py b/libcloud/storage/types.py
index 9c536e3..247e59f 100644
--- a/libcloud/storage/types.py
+++ b/libcloud/storage/types.py
@@ -43,7 +43,7 @@ class Provider(object):
:cvar NIMBUS: Nimbus.io driver
:cvar LOCAL: Local storage driver
:cvar AURORAOBJECTS: AuroraObjects storage driver
- :cvar OSS: Aliyun OSS storage driver
+ :cvar ALIYUN_OSS: Aliyun OSS storage driver
"""
DUMMY = 'dummy'
S3 = 's3'
@@ -65,7 +65,7 @@ class Provider(object):
KTUCLOUD = 'ktucloud'
AURORAOBJECTS = 'auroraobjects'
BACKBLAZE_B2 = 'backblaze_b2'
- OSS = 'oss'
+ ALIYUN_OSS = 'oss'
# Deperecated
CLOUDFILES_US = 'cloudfiles_us'
http://git-wip-us.apache.org/repos/asf/libcloud/blob/ae4c482b/libcloud/test/compute/test_ecs.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_ecs.py b/libcloud/test/compute/test_ecs.py
index 96e482e..495f7b2 100644
--- a/libcloud/test/compute/test_ecs.py
+++ b/libcloud/test/compute/test_ecs.py
@@ -160,7 +160,7 @@ class ECSDriverTestCase(LibcloudTestCase):
node = self.driver.create_node(name=self.name, image=self.fake_image,
size=self.fake_size,
ex_security_group_id='sg-28ou0f3xa',
- ex_data_disk=self.data_disk)
+ ex_data_disks=self.data_disk)
self.assertIsNotNone(node)
def test_list_sizes(self):
http://git-wip-us.apache.org/repos/asf/libcloud/blob/ae4c482b/libcloud/test/loadbalancer/test_slb.py
----------------------------------------------------------------------
diff --git a/libcloud/test/loadbalancer/test_slb.py b/libcloud/test/loadbalancer/test_slb.py
index 926aed0..0325cb2 100644
--- a/libcloud/test/loadbalancer/test_slb.py
+++ b/libcloud/test/loadbalancer/test_slb.py
@@ -114,11 +114,11 @@ class SLBDriverTestCases(unittest.TestCase):
self.protocol = 'http'
self.algorithm = Algorithm.WEIGHTED_ROUND_ROBIN
self.extra = {
- 'AddressType': 'internet',
- 'InternetChargeType': 'paybytraffic',
- 'Bandwidth': 1,
- 'MasterZoneId': 'cn-hangzhou-d',
- 'SlaveZoneId': 'cn-hangzhou-b',
+ 'ex_address_type': 'internet',
+ 'ex_internet_charge_type': 'paybytraffic',
+ 'ex_bandwidth': 1,
+ 'ex_master_zone_id': 'cn-hangzhou-d',
+ 'ex_slave_zone_id': 'cn-hangzhou-b',
'StickySession': 'on',
'HealthCheck': 'on'}
self.members = [Member('node1', None, None)]
@@ -153,12 +153,12 @@ class SLBDriverTestCases(unittest.TestCase):
def test_create_balancer_bandwidth_value_error(self):
self.assertRaises(AttributeError, self.driver.create_balancer,
None, 80, 'http', Algorithm.WEIGHTED_ROUND_ROBIN,
- None, Bandwidth='NAN')
+ None, ex_bandwidth='NAN')
def test_create_balancer_paybybandwidth_without_bandwidth_exception(self):
self.assertRaises(AttributeError, self.driver.create_balancer,
None, 80, 'http', Algorithm.WEIGHTED_ROUND_ROBIN,
- None, InternetChargeType='paybybandwidth')
+ None, ex_internet_charge_type='paybybandwidth')
def test_balancer_list_members(self):
balancer = self.driver.get_balancer(balancer_id='tests')
@@ -312,15 +312,15 @@ class SLBMockHttp(MockHttpTestCase):
def _CreateLoadBalancer(self, method, url, body, headers):
params = {'RegionId': self.test.region,
'LoadBalancerName': self.test.name}
- balancer_keys = [
- 'AddressType',
- 'InternetChargeType',
- 'Bandwidth',
- 'MasterZoneId',
- 'SlaveZoneId'
- ]
+ balancer_keys = {
+ 'AddressType': 'ex_address_type',
+ 'InternetChargeType': 'ex_internet_charge_type',
+ 'Bandwidth': 'ex_bandwidth',
+ 'MasterZoneId': 'ex_master_zone_id',
+ 'SlaveZoneId': 'ex_slave_zone_id'
+ }
for key in balancer_keys:
- params[key] = str(self.test.extra[key])
+ params[key] = str(self.test.extra[balancer_keys[key]])
self.assertUrlContainsQueryParams(url, params)
body = self.fixtures.load('create_load_balancer.xml')