Author: tomaz
Date: Sun Jun 3 07:10:53 2012
New Revision: 1345625
URL: http://svn.apache.org/viewvc?rev=1345625&view=rev
Log:
Fix a bug with invalid base64 string decoding in multiple drivers which occured
when using Python 3. Part of LIBCLOUD-204.
Modified:
libcloud/trunk/CHANGES
libcloud/trunk/libcloud/common/cloudstack.py
libcloud/trunk/libcloud/compute/drivers/cloudsigma.py
libcloud/trunk/libcloud/compute/drivers/ec2.py
libcloud/trunk/libcloud/compute/drivers/elasticstack.py
libcloud/trunk/libcloud/compute/drivers/joyent.py
libcloud/trunk/libcloud/compute/drivers/opennebula.py
libcloud/trunk/libcloud/compute/drivers/opsource.py
libcloud/trunk/libcloud/compute/drivers/slicehost.py
libcloud/trunk/libcloud/compute/drivers/vcloud.py
libcloud/trunk/libcloud/compute/drivers/vpsnet.py
libcloud/trunk/libcloud/dns/drivers/route53.py
libcloud/trunk/libcloud/dns/drivers/zerigo.py
libcloud/trunk/libcloud/storage/drivers/atmos.py
libcloud/trunk/libcloud/storage/drivers/google_storage.py
libcloud/trunk/libcloud/storage/drivers/s3.py
libcloud/trunk/test/storage/test_atmos.py
Modified: libcloud/trunk/CHANGES
URL:
http://svn.apache.org/viewvc/libcloud/trunk/CHANGES?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/CHANGES (original)
+++ libcloud/trunk/CHANGES Sun Jun 3 07:10:53 2012
@@ -2,7 +2,8 @@
Changes with Apache Libcloud in development:
- *) Compute:
+ *) Compute
+
- Add a timeout of 10 seconds to OpenStackAuthConnection class.
; LIBCLOUD-199
[Chris Gilmer]
@@ -11,17 +12,41 @@ Changes with Apache Libcloud in developm
when we immediately can't connect to a server. ; LIBCLOUD-197
[Jay Doane]
- - Fix a bug with Python 3 support in IBM SCE driver. ; LIBCLOUD-204
- [Sengor Kusturica, Hutson Betts]
+ - Fix a bug with Python 3 support in the following drivers ; LIBCLOUD-204
+ - IBM SCE,
+ - CloudStack
+ - CloudSigma
+ - OpenNebula
+ - VpsNet
+ - EC2
+ - ElasticStack
+ - vCloud
+ - OpSource
+ - Slicehost
+ - Joyent
+ [Sengor Kusturica, Hutson Betts, Tomaz Muraus]
- Make CloudStuck driver more robust and make it work if list_images() call
returns no images. ; LIBCLOUD-202
[Gabriel Reid]
- *) DNS:
+ *) DNS
+
- Add support for GEO RecordType to Zerigo driver. ; LIBCLOUD-203
[Gary Wilson]
+ - Fix a bug with Python 3 support in the following drivers ; LIBCLOUD-204
+ - Zerigo
+ [Tomaz Muraus]
+
+ *) Storage
+
+ - Fix a bug with Python 3 support in the following drivers ; LIBCLOUD-204
+ - Atmos
+ - Google Storage
+ - Amazon S3
+ [Tomaz Muraus]
+
Changes with Apache Libcloud 0.10.1:
*) General:
Modified: libcloud/trunk/libcloud/common/cloudstack.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/common/cloudstack.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/common/cloudstack.py (original)
+++ libcloud/trunk/libcloud/common/cloudstack.py Sun Jun 3 07:10:53 2012
@@ -55,7 +55,7 @@ class CloudStackConnection(ConnectionUse
return params
def pre_connect_hook(self, params, headers):
- params['signature'] = self._make_signature(params)
+ params['signature'] = self._make_signature(params).decode('utf-8')
return params, headers
Modified: libcloud/trunk/libcloud/compute/drivers/cloudsigma.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/cloudsigma.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/cloudsigma.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/cloudsigma.py Sun Jun 3 07:10:53
2012
@@ -195,7 +195,8 @@ class CloudSigmaBaseConnection(Connectio
headers['Content-Type'] = 'application/json'
headers['Authorization'] = 'Basic %s' % (base64.b64encode(b('%s:%s' %
- (self.user_id, self.key))))
+ (self.user_id,
+
self.key))).decode('utf-8'))
return headers
Modified: libcloud/trunk/libcloud/compute/drivers/ec2.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/ec2.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/ec2.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/ec2.py Sun Jun 3 07:10:53 2012
@@ -257,7 +257,7 @@ class EC2Connection(ConnectionUserAndKey
b64_hmac = base64.b64encode(
hmac.new(b(secret_key), b(string_to_sign),
digestmod=sha256).digest()
)
- return b64_hmac
+ return b64_hmac.decode('utf-8')
class ExEC2AvailabilityZone(object):
Modified: libcloud/trunk/libcloud/compute/drivers/elasticstack.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/elasticstack.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/elasticstack.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/elasticstack.py Sun Jun 3 07:10:53
2012
@@ -157,7 +157,8 @@ class ElasticStackBaseConnection(Connect
headers['Authorization'] = ('Basic %s'
% (base64.b64encode(b('%s:%s'
% (self.user_id,
- self.key)))))
+ self.key))))
+ .decode('utf-8'))
return headers
Modified: libcloud/trunk/libcloud/compute/drivers/joyent.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/joyent.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/joyent.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/joyent.py Sun Jun 3 07:10:53 2012
@@ -69,7 +69,7 @@ class JoyentConnection(ConnectionUserAnd
headers['X-Api-Version'] = API_VERSION
user_b64 = base64.b64encode(b('%s:%s' % (self.user_id, self.key)))
- headers['Authorization'] = 'Basic %s' % (user_b64)
+ headers['Authorization'] = 'Basic %s' % (user_b64.decode('utf-8'))
return headers
Modified: libcloud/trunk/libcloud/compute/drivers/opennebula.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/opennebula.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/opennebula.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/opennebula.py Sun Jun 3 07:10:53
2012
@@ -168,7 +168,8 @@ class OpenNebulaConnection(ConnectionUse
"""
pass_sha1 = hashlib.sha1(b(self.key)).hexdigest()
headers['Authorization'] = ('Basic %s' % b64encode(b('%s:%s' %
- (self.user_id, pass_sha1))))
+ (self.user_id,
+ pass_sha1))).decode('utf-8'))
return headers
Modified: libcloud/trunk/libcloud/compute/drivers/opsource.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/opsource.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/opsource.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/opsource.py Sun Jun 3 07:10:53 2012
@@ -136,7 +136,8 @@ class OpsourceConnection(ConnectionUserA
def add_default_headers(self, headers):
headers['Authorization'] = ('Basic %s' % b64encode(b('%s:%s' %
- (self.user_id, self.key))))
+ (self.user_id,
+ self.key))).decode('utf-8'))
return headers
def request(self, action, params=None, data='',
Modified: libcloud/trunk/libcloud/compute/drivers/slicehost.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/slicehost.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/slicehost.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/slicehost.py Sun Jun 3 07:10:53
2012
@@ -52,7 +52,8 @@ class SlicehostConnection(ConnectionKey)
def add_default_headers(self, headers):
headers['Authorization'] = ('Basic %s'
- % (base64.b64encode(b('%s:' % self.key))))
+ % (base64.b64encode(b('%s:' %
+ self.key))).decode('utf-8'))
return headers
Modified: libcloud/trunk/libcloud/compute/drivers/vcloud.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/vcloud.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/vcloud.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/vcloud.py Sun Jun 3 07:10:53 2012
@@ -263,7 +263,8 @@ class VCloudConnection(ConnectionUserAnd
return {
'Authorization':
"Basic %s"
- % base64.b64encode(b('%s:%s' % (self.user_id, self.key))),
+ % base64.b64encode(b('%s:%s' % (self.user_id,
+ self.key))).decode('utf-8'),
'Content-Length': 0,
'Accept': 'application/*+xml'
}
Modified: libcloud/trunk/libcloud/compute/drivers/vpsnet.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/compute/drivers/vpsnet.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/compute/drivers/vpsnet.py (original)
+++ libcloud/trunk/libcloud/compute/drivers/vpsnet.py Sun Jun 3 07:10:53 2012
@@ -71,7 +71,7 @@ class VPSNetConnection(ConnectionUserAnd
def add_default_headers(self, headers):
user_b64 = base64.b64encode(b('%s:%s' % (self.user_id, self.key)))
- headers['Authorization'] = 'Basic %s' % (user_b64)
+ headers['Authorization'] = 'Basic %s' % (user_b64.decode('utf-8'))
return headers
class VPSNetNodeDriver(NodeDriver):
Modified: libcloud/trunk/libcloud/dns/drivers/route53.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/dns/drivers/route53.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/dns/drivers/route53.py (original)
+++ libcloud/trunk/libcloud/dns/drivers/route53.py Sun Jun 3 07:10:53 2012
@@ -107,7 +107,7 @@ class Route53Connection(ConnectionUserAn
hmac.new(b(secret_key), b(time_string), digestmod=sha1).digest()
)
- return b64_hmac
+ return b64_hmac.decode('utf-8')
class Route53DNSDriver(DNSDriver):
Modified: libcloud/trunk/libcloud/dns/drivers/zerigo.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/dns/drivers/zerigo.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/dns/drivers/zerigo.py (original)
+++ libcloud/trunk/libcloud/dns/drivers/zerigo.py Sun Jun 3 07:10:53 2012
@@ -103,7 +103,7 @@ class ZerigoDNSConnection(ConnectionUser
def add_default_headers(self, headers):
auth_b64 = base64.b64encode(b('%s:%s' % (self.user_id, self.key)))
- headers['Authorization'] = 'Basic %s' % (auth_b64)
+ headers['Authorization'] = 'Basic %s' % (auth_b64.decode('utf-8'))
return headers
def request(self, action, params=None, data='', headers=None,
Modified: libcloud/trunk/libcloud/storage/drivers/atmos.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/storage/drivers/atmos.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/storage/drivers/atmos.py (original)
+++ libcloud/trunk/libcloud/storage/drivers/atmos.py Sun Jun 3 07:10:53 2012
@@ -108,7 +108,7 @@ class AtmosConnection(ConnectionUserAndK
signature = '\n'.join(signature)
key = base64.b64decode(self.key)
signature = hmac.new(b(key), b(signature), hashlib.sha1).digest()
- return base64.b64encode(b(signature))
+ return base64.b64encode(b(signature)).decode('utf-8')
class AtmosDriver(StorageDriver):
connectionCls = AtmosConnection
Modified: libcloud/trunk/libcloud/storage/drivers/google_storage.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/storage/drivers/google_storage.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/storage/drivers/google_storage.py (original)
+++ libcloud/trunk/libcloud/storage/drivers/google_storage.py Sun Jun 3
07:10:53 2012
@@ -123,7 +123,7 @@ class GoogleStorageConnection(Connection
b64_hmac = base64.b64encode(
hmac.new(b(secret_key), b(string_to_sign), digestmod=sha1).digest()
)
- return b64_hmac
+ return b64_hmac.decode('utf-8')
class GoogleStorageDriver(S3StorageDriver):
Modified: libcloud/trunk/libcloud/storage/drivers/s3.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/storage/drivers/s3.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/libcloud/storage/drivers/s3.py (original)
+++ libcloud/trunk/libcloud/storage/drivers/s3.py Sun Jun 3 07:10:53 2012
@@ -160,7 +160,7 @@ class S3Connection(ConnectionUserAndKey)
b64_hmac = base64.b64encode(
hmac.new(b(secret_key), b(string_to_sign), digestmod=sha1).digest()
)
- return b64_hmac
+ return b64_hmac.decode('utf-8')
class S3StorageDriver(StorageDriver):
name = 'Amazon S3 (standard)'
Modified: libcloud/trunk/test/storage/test_atmos.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/test/storage/test_atmos.py?rev=1345625&r1=1345624&r2=1345625&view=diff
==============================================================================
--- libcloud/trunk/test/storage/test_atmos.py (original)
+++ libcloud/trunk/test/storage/test_atmos.py Sun Jun 3 07:10:53 2012
@@ -372,7 +372,8 @@ class AtmosTests(unittest.TestCase):
c.driver = d
headers = c.add_default_headers(headers)
headers['Date'] = headers['x-emc-date'] = test_date
- self.assertEqual(c._calculate_signature({}, headers), b(expected))
+ self.assertEqual(c._calculate_signature({}, headers),
+ b(expected).decode('utf-8'))
class AtmosMockHttp(StorageMockHttp, unittest.TestCase):
fixtures = StorageFileFixtures('atmos')