Fix Python 3.2 compatibility issues.

Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/3ce62e80
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/3ce62e80
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/3ce62e80

Branch: refs/heads/trunk
Commit: 3ce62e809a5098f1a44d48241e0d8d7891110796
Parents: 0e231a4
Author: Tomaz Muraus <[email protected]>
Authored: Sun Apr 5 17:34:00 2015 +0200
Committer: Tomaz Muraus <[email protected]>
Committed: Sun Apr 5 17:35:49 2015 +0200

----------------------------------------------------------------------
 libcloud/compute/drivers/azure.py   | 274 ++++++++++++++++---------------
 libcloud/test/compute/test_azure.py |   8 +-
 libcloud/utils/py3.py               |   2 +
 3 files changed, 145 insertions(+), 139 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/3ce62e80/libcloud/compute/drivers/azure.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/azure.py 
b/libcloud/compute/drivers/azure.py
index 38397f0..106a095 100644
--- a/libcloud/compute/drivers/azure.py
+++ b/libcloud/compute/drivers/azure.py
@@ -43,6 +43,7 @@ from libcloud.compute.base import Node, NodeDriver, 
NodeLocation, NodeSize
 from libcloud.compute.base import NodeImage, StorageVolume
 from libcloud.compute.types import NodeState
 from libcloud.common.types import LibcloudError
+from libcloud.utils.py3 import _real_unicode
 from libcloud.utils.py3 import httplib
 from libcloud.utils.py3 import urlparse
 from libcloud.utils.py3 import ensure_string
@@ -513,10 +514,10 @@ class AzureNodeDriver(NodeDriver):
                         port = random.randint(41952, 65535)
 
             endpoint = ConfigurationSetInputEndpoint(
-                name=u'Remote Desktop',
-                protocol=u'tcp',
+                name='Remote Desktop',
+                protocol='tcp',
                 port=port,
-                local_port=u'3389',
+                local_port='3389',
                 load_balanced_endpoint_set_name=None,
                 enable_direct_server_return=False
             )
@@ -540,10 +541,10 @@ class AzureNodeDriver(NodeDriver):
                         port = random.randint(41952, 65535)
 
             endpoint = ConfigurationSetInputEndpoint(
-                name=u'SSH',
-                protocol=u'tcp',
+                name='SSH',
+                protocol='tcp',
                 port=port,
-                local_port=u'22',
+                local_port='22',
                 load_balanced_endpoint_set_name=None,
                 enable_direct_server_return=False
             )
@@ -564,7 +565,7 @@ class AzureNodeDriver(NodeDriver):
             ex_storage_service_name = ex_cloud_service_name
             ex_storage_service_name = re.sub(
                 r'[\W_-]+',
-                u'',
+                '',
                 ex_storage_service_name.lower(),
                 flags=re.UNICODE
             )
@@ -841,18 +842,18 @@ class AzureNodeDriver(NodeDriver):
                                   ex_deployment_slot="Production"):
         """
         endpoint = ConfigurationSetInputEndpoint(
-            name=u'SSH',
-            protocol=u'tcp',
+            name='SSH',
+            protocol='tcp',
             port=port,
-            local_port=u'22',
+            local_port='22',
             load_balanced_endpoint_set_name=None,
             enable_direct_server_return=False
         )
         {
-            'name': u'SSH',
-            'protocol': u'tcp',
+            'name': 'SSH',
+            'protocol': 'tcp',
             'port': port,
-            'local_port': u'22'
+            'local_port': '22'
         }
         """
 
@@ -957,8 +958,8 @@ class AzureNodeDriver(NodeDriver):
         Convert the data from a Azure response object into a Node
         """
 
-        remote_desktop_port = u''
-        ssh_port = u''
+        remote_desktop_port = ''
+        ssh_port = ''
         public_ips = virtual_ips or []
 
         if data.instance_endpoints is not None:
@@ -1157,7 +1158,7 @@ class AzureNodeDriver(NodeDriver):
         _affinity_group = res.hosted_service_properties.affinity_group
         _cloud_service_location = res.hosted_service_properties.location
 
-        if _affinity_group is not None and _affinity_group is not u'':
+        if _affinity_group is not None and _affinity_group is not '':
             return self.service_location(True, _affinity_group)
         elif _cloud_service_location is not None:
             return self.service_location(False, _cloud_service_location)
@@ -1605,6 +1606,8 @@ class AzureNodeDriver(NodeDriver):
             return self._to_datetime(value)
         elif type(data_member) is bool:
             return value.lower() != 'false'
+        elif type(data_member) is str:
+            return _real_unicode(value)
         else:
             return type(data_member)(value)
 
@@ -2708,7 +2711,7 @@ class OSVirtualHardDisk(WindowsAzureData):
         self.host_caching = host_caching
         self.disk_label = disk_label
         self.disk_name = disk_name
-        self.os = u''  # undocumented, not used when adding a role
+        self.os = ''  # undocumented, not used when adding a role
 
 
 class LinuxConfigurationSet(WindowsAzureData):
@@ -2718,7 +2721,7 @@ class LinuxConfigurationSet(WindowsAzureData):
                  user_name=None,
                  user_password=None,
                  disable_ssh_password_authentication=None):
-        self.configuration_set_type = u'LinuxProvisioningConfiguration'
+        self.configuration_set_type = 'LinuxProvisioningConfiguration'
         self.host_name = host_name
         self.user_name = user_name
         self.user_password = user_password
@@ -2736,7 +2739,7 @@ class WindowsConfigurationSet(WindowsAzureData):
                  enable_automatic_updates=None,
                  time_zone=None,
                  admin_user_name=None):
-        self.configuration_set_type = u'WindowsProvisioningConfiguration'
+        self.configuration_set_type = 'WindowsProvisioningConfiguration'
         self.computer_name = computer_name
         self.admin_password = admin_password
         self.reset_password_on_first_logon = reset_password_on_first_logon
@@ -2751,16 +2754,16 @@ class DomainJoin(WindowsAzureData):
 
     def __init__(self):
         self.credentials = Credentials()
-        self.join_domain = u''
-        self.machine_object_ou = u''
+        self.join_domain = ''
+        self.machine_object_ou = ''
 
 
 class Credentials(WindowsAzureData):
 
     def __init__(self):
-        self.domain = u''
-        self.username = u''
-        self.password = u''
+        self.domain = ''
+        self.username = ''
+        self.password = ''
 
 
 class CertificateSetting(WindowsAzureData):
@@ -2779,7 +2782,7 @@ class CertificateSetting(WindowsAzureData):
         The only supported value is LocalMachine.
     """
 
-    def __init__(self, thumbprint=u'', store_name=u'', store_location=u''):
+    def __init__(self, thumbprint='', store_name='', store_location=''):
         self.thumbprint = thumbprint
         self.store_name = store_name
         self.store_location = store_location
@@ -2799,7 +2802,7 @@ class SSH(WindowsAzureData):
 
 class PublicKey(WindowsAzureData):
 
-    def __init__(self, fingerprint=u'', path=u''):
+    def __init__(self, fingerprint='', path=''):
         self.fingerprint = fingerprint
         self.path = path
 
@@ -2811,7 +2814,7 @@ class PublicKeys(WindowsAzureDataTypedList):
 
 class AzureKeyPair(WindowsAzureData):
 
-    def __init__(self, fingerprint=u'', path=u''):
+    def __init__(self, fingerprint='', path=''):
         self.fingerprint = fingerprint
         self.path = path
 
@@ -2824,16 +2827,16 @@ class KeyPairs(WindowsAzureDataTypedList):
 class LoadBalancerProbe(WindowsAzureData):
 
     def __init__(self):
-        self.path = u''
-        self.port = u''
-        self.protocol = u''
+        self.path = ''
+        self.port = ''
+        self.protocol = ''
 
 
 class ConfigurationSet(WindowsAzureData):
 
     def __init__(self):
-        self.configuration_set_type = u''
-        self.role_type = u''
+        self.configuration_set_type = ''
+        self.role_type = ''
         self.input_endpoints = ConfigurationSetInputEndpoints()
         self.subnet_names = ScalarListOf(str, 'SubnetName')
 
@@ -2846,11 +2849,11 @@ class ConfigurationSets(WindowsAzureDataTypedList):
 class ConfigurationSetInputEndpoint(WindowsAzureData):
 
     def __init__(self,
-                 name=u'',
-                 protocol=u'',
-                 port=u'',
-                 local_port=u'',
-                 load_balanced_endpoint_set_name=u'',
+                 name='',
+                 protocol='',
+                 port='',
+                 local_port='',
+                 load_balanced_endpoint_set_name='',
                  enable_direct_server_return=False):
         self.enable_direct_server_return = enable_direct_server_return
         self.load_balanced_endpoint_set_name = load_balanced_endpoint_set_name
@@ -2870,8 +2873,8 @@ class 
ConfigurationSetInputEndpoints(WindowsAzureDataTypedList):
 class Location(WindowsAzureData):
 
     def __init__(self):
-        self.name = u''
-        self.display_name = u''
+        self.name = ''
+        self.display_name = ''
         self.available_services = ScalarListOf(str, 'AvailableService')
         self.compute_capabilities = ComputeCapability()
 
@@ -2896,16 +2899,16 @@ class VirtualMachinesRoleSizes(WindowsAzureData):
 class OSImage(WindowsAzureData):
 
     def __init__(self):
-        self.affinity_group = u''
-        self.category = u''
-        self.location = u''
+        self.affinity_group = ''
+        self.category = ''
+        self.location = ''
         self.logical_size_in_gb = 0
-        self.label = u''
-        self.media_link = u''
-        self.name = u''
-        self.os = u''
-        self.eula = u''
-        self.description = u''
+        self.label = ''
+        self.media_link = ''
+        self.name = ''
+        self.os = ''
+        self.eula = ''
+        self.description = ''
 
 
 class Images(WindowsAzureDataTypedList):
@@ -2916,15 +2919,15 @@ class Images(WindowsAzureDataTypedList):
 class VMImage(WindowsAzureData):
 
     def __init__(self):
-        self.name = u''
-        self.label = u''
-        self.category = u''
+        self.name = ''
+        self.label = ''
+        self.category = ''
         self.os_disk_configuration = OSDiskConfiguration()
-        self.service_name = u''
-        self.deployment_name = u''
-        self.role_name = u''
-        self.location = u''
-        self.affinity_group = u''
+        self.service_name = ''
+        self.deployment_name = ''
+        self.role_name = ''
+        self.location = ''
+        self.affinity_group = ''
 
 
 class VMImages(WindowsAzureDataTypedList):
@@ -2935,9 +2938,9 @@ class VMImages(WindowsAzureDataTypedList):
 class VirtualIP(WindowsAzureData):
 
     def __init__(self):
-        self.address = u''
-        self.is_dns_programmed = u''
-        self.name = u''
+        self.address = ''
+        self.is_dns_programmed = ''
+        self.name = ''
 
 
 class VirtualIPs(WindowsAzureDataTypedList):
@@ -2948,8 +2951,8 @@ class VirtualIPs(WindowsAzureDataTypedList):
 class HostedService(WindowsAzureData):
 
     def __init__(self):
-        self.url = u''
-        self.service_name = u''
+        self.url = ''
+        self.service_name = ''
         self.hosted_service_properties = HostedServiceProperties()
         self.deployments = Deployments()
 
@@ -2962,13 +2965,13 @@ class HostedServices(WindowsAzureDataTypedList):
 class HostedServiceProperties(WindowsAzureData):
 
     def __init__(self):
-        self.description = u''
-        self.location = u''
-        self.affinity_group = u''
+        self.description = ''
+        self.location = ''
+        self.affinity_group = ''
         self.label = _Base64String()
-        self.status = u''
-        self.date_created = u''
-        self.date_last_modified = u''
+        self.status = ''
+        self.date_created = ''
+        self.date_last_modified = ''
         self.extended_properties = _DictOf(
             'ExtendedProperty',
             'Name',
@@ -2979,24 +2982,24 @@ class HostedServiceProperties(WindowsAzureData):
 class Deployment(WindowsAzureData):
 
     def __init__(self):
-        self.name = u''
-        self.deployment_slot = u''
-        self.private_id = u''
-        self.status = u''
+        self.name = ''
+        self.deployment_slot = ''
+        self.private_id = ''
+        self.status = ''
         self.label = _Base64String()
-        self.url = u''
+        self.url = ''
         self.configuration = _Base64String()
         self.role_instance_list = RoleInstanceList()
         self.upgrade_status = UpgradeStatus()
-        self.upgrade_domain_count = u''
+        self.upgrade_domain_count = ''
         self.role_list = RoleList()
-        self.sdk_version = u''
+        self.sdk_version = ''
         self.input_endpoint_list = InputEndpoints()
         self.locked = False
         self.rollback_allowed = False
         self.persistent_vm_downtime_info = PersistentVMDowntimeInfo()
-        self.created_time = u''
-        self.last_modified_time = u''
+        self.created_time = ''
+        self.last_modified_time = ''
         self.extended_properties = _DictOf(
             'ExtendedProperty',
             'Name',
@@ -3013,27 +3016,27 @@ class Deployments(WindowsAzureDataTypedList):
 class UpgradeStatus(WindowsAzureData):
 
     def __init__(self):
-        self.upgrade_type = u''
-        self.current_upgrade_domain_state = u''
-        self.current_upgrade_domain = u''
+        self.upgrade_type = ''
+        self.current_upgrade_domain_state = ''
+        self.current_upgrade_domain = ''
 
 
 class RoleInstance(WindowsAzureData):
 
     def __init__(self):
-        self.role_name = u''
-        self.instance_name = u''
-        self.instance_status = u''
+        self.role_name = ''
+        self.instance_name = ''
+        self.instance_status = ''
         self.instance_upgrade_domain = 0
         self.instance_fault_domain = 0
-        self.instance_size = u''
-        self.instance_state_details = u''
-        self.instance_error_code = u''
-        self.ip_address = u''
+        self.instance_size = ''
+        self.instance_state_details = ''
+        self.instance_error_code = ''
+        self.ip_address = ''
         self.instance_endpoints = InstanceEndpoints()
-        self.power_state = u''
-        self.fqdn = u''
-        self.host_name = u''
+        self.power_state = ''
+        self.fqdn = ''
+        self.host_name = ''
 
 
 class RoleInstanceList(WindowsAzureDataTypedList):
@@ -3044,11 +3047,11 @@ class RoleInstanceList(WindowsAzureDataTypedList):
 class InstanceEndpoint(WindowsAzureData):
 
     def __init__(self):
-        self.name = u''
-        self.vip = u''
-        self.public_port = u''
-        self.local_port = u''
-        self.protocol = u''
+        self.name = ''
+        self.vip = ''
+        self.public_port = ''
+        self.local_port = ''
+        self.protocol = ''
 
 
 class InstanceEndpoints(WindowsAzureDataTypedList):
@@ -3059,9 +3062,9 @@ class InstanceEndpoints(WindowsAzureDataTypedList):
 class InputEndpoint(WindowsAzureData):
 
     def __init__(self):
-        self.role_name = u''
-        self.vip = u''
-        self.port = u''
+        self.role_name = ''
+        self.vip = ''
+        self.port = ''
 
 
 class InputEndpoints(WindowsAzureDataTypedList):
@@ -3072,8 +3075,8 @@ class InputEndpoints(WindowsAzureDataTypedList):
 class Role(WindowsAzureData):
 
     def __init__(self):
-        self.role_name = u''
-        self.os_version = u''
+        self.role_name = ''
+        self.os_version = ''
 
 
 class RoleList(WindowsAzureDataTypedList):
@@ -3084,9 +3087,9 @@ class RoleList(WindowsAzureDataTypedList):
 class PersistentVMDowntimeInfo(WindowsAzureData):
 
     def __init__(self):
-        self.start_time = u''
-        self.end_time = u''
-        self.status = u''
+        self.start_time = ''
+        self.end_time = ''
+        self.status = ''
 
 
 class AsynchronousOperationResult(WindowsAzureData):
@@ -3098,17 +3101,17 @@ class AsynchronousOperationResult(WindowsAzureData):
 class Disk(WindowsAzureData):
 
     def __init__(self):
-        self.affinity_group = u''
+        self.affinity_group = ''
         self.attached_to = AttachedTo()
-        self.has_operating_system = u''
-        self.is_corrupted = u''
-        self.location = u''
+        self.has_operating_system = ''
+        self.is_corrupted = ''
+        self.location = ''
         self.logical_disk_size_in_gb = 0
-        self.label = u''
-        self.media_link = u''
-        self.name = u''
-        self.os = u''
-        self.source_image_name = u''
+        self.label = ''
+        self.media_link = ''
+        self.name = ''
+        self.os = ''
+        self.source_image_name = ''
 
 
 class Disks(WindowsAzureDataTypedList):
@@ -3119,31 +3122,31 @@ class Disks(WindowsAzureDataTypedList):
 class AttachedTo(WindowsAzureData):
 
     def __init__(self):
-        self.hosted_service_name = u''
-        self.deployment_name = u''
-        self.role_name = u''
+        self.hosted_service_name = ''
+        self.deployment_name = ''
+        self.role_name = ''
 
 
 class OperationError(WindowsAzureData):
 
     def __init__(self):
-        self.code = u''
-        self.message = u''
+        self.code = ''
+        self.message = ''
 
 
 class Operation(WindowsAzureData):
 
     def __init__(self):
-        self.id = u''
-        self.status = u''
-        self.http_status_code = u''
+        self.id = ''
+        self.status = ''
+        self.http_status_code = ''
         self.error = OperationError()
 
 
 class OperatingSystem(WindowsAzureData):
 
     def __init__(self):
-        self.version = u''
+        self.version = ''
         self.label = _Base64String()
         self.is_default = True
         self.is_active = True
@@ -3154,11 +3157,11 @@ class OperatingSystem(WindowsAzureData):
 class OSDiskConfiguration(WindowsAzureData):
 
     def __init__(self):
-        self.name = u''
-        self.host_caching = u''
-        self.os_state = u''
-        self.os = u''
-        self.media_link = u''
+        self.name = ''
+        self.host_caching = ''
+        self.os_state = ''
+        self.os = ''
+        self.media_link = ''
         self.logical_disk_size_in_gb = 0
 
 
@@ -3170,7 +3173,7 @@ class OperatingSystems(WindowsAzureDataTypedList):
 class OperatingSystemFamily(WindowsAzureData):
 
     def __init__(self):
-        self.name = u''
+        self.name = ''
         self.label = _Base64String()
         self.operating_systems = OperatingSystems()
 
@@ -3183,11 +3186,11 @@ class 
OperatingSystemFamilies(WindowsAzureDataTypedList):
 class Subscription(WindowsAzureData):
 
     def __init__(self):
-        self.subscription_id = u''
-        self.subscription_name = u''
-        self.subscription_status = u''
-        self.account_admin_live_email_id = u''
-        self.service_admin_live_email_id = u''
+        self.subscription_id = ''
+        self.subscription_name = ''
+        self.subscription_status = ''
+        self.account_admin_live_email_id = ''
+        self.service_admin_live_email_id = ''
         self.max_core_count = 0
         self.max_storage_accounts = 0
         self.max_hosted_services = 0
@@ -3208,10 +3211,10 @@ class AvailabilityResponse(WindowsAzureData):
 class SubscriptionCertificate(WindowsAzureData):
 
     def __init__(self):
-        self.subscription_certificate_public_key = u''
-        self.subscription_certificate_thumbprint = u''
-        self.subscription_certificate_data = u''
-        self.created = u''
+        self.subscription_certificate_public_key = ''
+        self.subscription_certificate_thumbprint = ''
+        self.subscription_certificate_data = ''
+        self.created = ''
 
 
 class SubscriptionCertificates(WindowsAzureDataTypedList):
@@ -3241,6 +3244,7 @@ class AzureHTTPResponse(object):
 Helper classes and functions.
 """
 
+
 class _Base64String(str):
     pass
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/3ce62e80/libcloud/test/compute/test_azure.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_azure.py 
b/libcloud/test/compute/test_azure.py
index 3ab7f4d..109471f 100644
--- a/libcloud/test/compute/test_azure.py
+++ b/libcloud/test/compute/test_azure.py
@@ -110,16 +110,16 @@ class AzureNodeDriverTests(unittest.TestCase):
 
         img0 = vmimages[0]
         self.assertEqual(img0.id, "dc03")
-        self.assertEqual(img0.name, u"dc03")
+        self.assertEqual(img0.name, "dc03")
         self.assertListEqual(img0.public_ips, ["191.235.135.62"])
         self.assertListEqual(img0.private_ips, ["100.92.66.69"])
         self.assertEqual(img0.size, None)
         self.assertEqual(img0.state, 0)
         self.assertTrue(isinstance(img0.extra, dict))
         extra = img0.extra
-        self.assertEqual(extra["instance_size"], u'Small')
-        self.assertEqual(extra["power_state"], u'Started')
-        self.assertEqual(extra["ssh_port"], u'22')
+        self.assertEqual(extra["instance_size"], 'Small')
+        self.assertEqual(extra["power_state"], 'Started')
+        self.assertEqual(extra["ssh_port"], '22')
 
     def test_list_nodes_returned_no_deployments(self):
         nodes = self.driver.list_nodes(

http://git-wip-us.apache.org/repos/asf/libcloud/blob/3ce62e80/libcloud/utils/py3.py
----------------------------------------------------------------------
diff --git a/libcloud/utils/py3.py b/libcloud/utils/py3.py
index 7ae9cd6..f7a66c0 100644
--- a/libcloud/utils/py3.py
+++ b/libcloud/utils/py3.py
@@ -115,6 +115,8 @@ if PY3:
     def byte(n):
         # assume n is a Latin-1 string of length 1
         return ord(n)
+
+    _real_unicode = str
     u = str
 
     def bchr(s):

Reply via email to