Py3 exclude list (#3698)

* Fix a few modules to pass syntax checks under python3

* Move from a whitelist of modules to check for python3 compat to a blacklist
This commit is contained in:
Toshio Kuratomi 2016-05-19 15:34:59 -07:00
parent d3097bf580
commit 521370459c
6 changed files with 106 additions and 28 deletions

View file

@ -10,6 +10,86 @@ addons:
- python2.4
- python2.6
- python3.5
env:
global:
# 77 modules. Let's whittle this down!
- PY3_EXCLUDE_LIST="cloud/amazon/cloudformation.py
cloud/amazon/ec2_ami.py
cloud/amazon/ec2_asg.py
cloud/amazon/ec2_eip.py
cloud/amazon/ec2_elb_lb.py
cloud/amazon/ec2_elb.py
cloud/amazon/ec2_group.py
cloud/amazon/ec2_key.py
cloud/amazon/ec2_lc.py
cloud/amazon/ec2_metric_alarm.py
cloud/amazon/ec2.py
cloud/amazon/ec2_scaling_policy.py
cloud/amazon/ec2_snapshot.py
cloud/amazon/ec2_vol.py
cloud/amazon/ec2_vpc_net.py
cloud/amazon/ec2_vpc.py
cloud/amazon/elasticache.py
cloud/amazon/elasticache_subnet_group.py
cloud/amazon/iam_cert.py
cloud/amazon/iam_policy.py
cloud/amazon/iam.py
cloud/amazon/rds_param_group.py
cloud/amazon/rds.py
cloud/amazon/rds_subnet_group.py
cloud/amazon/route53.py
cloud/amazon/s3.py
cloud/digital_ocean/digital_ocean_domain.py
cloud/digital_ocean/digital_ocean.py
cloud/digital_ocean/digital_ocean_sshkey.py
cloud/docker/docker_container.py
cloud/docker/docker_image_facts.py
cloud/docker/docker_login.py
cloud/google/gce_lb.py
cloud/google/gce_net.py
cloud/google/gce_pd.py
cloud/google/gce.py
cloud/google/gc_storage.py
cloud/openstack/_glance_image.py
cloud/openstack/_keystone_user.py
cloud/openstack/_nova_compute.py
cloud/openstack/_nova_keypair.py
cloud/openstack/_quantum_floating_ip_associate.py
cloud/openstack/_quantum_floating_ip.py
cloud/openstack/_quantum_network.py
cloud/openstack/_quantum_router_gateway.py
cloud/openstack/_quantum_router_interface.py
cloud/openstack/_quantum_router.py
cloud/openstack/_quantum_subnet.py
cloud/rackspace/rax_cbs_attachments.py
cloud/rackspace/rax_cbs.py
cloud/rackspace/rax_cdb_database.py
cloud/rackspace/rax_cdb.py
cloud/rackspace/rax_cdb_user.py
cloud/rackspace/rax_clb_nodes.py
cloud/rackspace/rax_clb.py
cloud/rackspace/rax_dns.py
cloud/rackspace/rax_dns_record.py
cloud/rackspace/rax_facts.py
cloud/rackspace/rax_files_objects.py
cloud/rackspace/rax_files.py
cloud/rackspace/rax_keypair.py
cloud/rackspace/rax_meta.py
cloud/rackspace/rax_network.py
cloud/rackspace/rax.py
cloud/rackspace/rax_queue.py
cloud/rackspace/rax_scaling_group.py
cloud/rackspace/rax_scaling_policy.py
cloud/vmware/vsphere_guest.py
packaging/os/apt.py
packaging/os/apt_repository.py
packaging/os/redhat_subscription.py
packaging/os/rhn_register.py
packaging/os/yum.py
utilities/helper/accelerate.py
utilities/logic/async_status.py
utilities/logic/async_wrapper.py
utilities/logic/wait_for.py"
before_install:
- git config user.name "ansible"
- git config user.email "ansible@ansible.com"
@ -22,8 +102,8 @@ script:
- python2.4 -m compileall -fq cloud/amazon/_ec2_ami_search.py cloud/amazon/ec2_facts.py
- python2.6 -m compileall -fq .
- python2.7 -m compileall -fq .
- python3.4 -m compileall -fq system/ commands/ source_control/ inventory/ files/ databases/ network/
- python3.5 -m compileall -fq system/ commands/ source_control/ inventory/ files/ databases/ network/
- python3.4 -m compileall -fq . -x $(echo "$PY3_EXCLUDE_LIST"| tr ' ' '|')
- python3.5 -m compileall -fq . -x $(echo "$PY3_EXCLUDE_LIST"| tr ' ' '|')
- ansible-validate-modules --exclude 'utilities/' .
#- ansible-validate-modules --exclude 'cloud/amazon/ec2_lc\.py|cloud/amazon/ec2_scaling_policy\.py|cloud/amazon/ec2_scaling_policy\.py|cloud/amazon/ec2_asg\.py|cloud/azure/azure\.py|packaging/os/rhn_register\.py|network/openswitch/ops_template\.py|system/hostname\.py|utilities/' .
#- ./test-docs.sh core

View file

@ -298,7 +298,7 @@ def _delete_disks_when_detached(azure, wait_timeout, disk_names):
if disk.attached_to is None:
azure.delete_disk(disk.name, True)
disk_names.remove(disk_name)
except AzureException, e:
except AzureException as e:
module.fail_json(msg="failed to get or delete disk, error was: %s" % (disk_name, str(e)))
finally:
signal.alarm(0)
@ -356,7 +356,7 @@ def create_virtual_machine(module, azure):
result = azure.create_hosted_service(service_name=name, label=name, location=location)
_wait_for_completion(azure, result, wait_timeout, "create_hosted_service")
changed = True
except AzureException, e:
except AzureException as e:
module.fail_json(msg="failed to create the new service, error was: %s" % str(e))
try:
@ -427,13 +427,13 @@ def create_virtual_machine(module, azure):
virtual_network_name=virtual_network_name)
_wait_for_completion(azure, result, wait_timeout, "create_virtual_machine_deployment")
changed = True
except AzureException, e:
except AzureException as e:
module.fail_json(msg="failed to create the new virtual machine, error was: %s" % str(e))
try:
deployment = azure.get_deployment_by_name(service_name=name, deployment_name=name)
return (changed, urlparse(deployment.url).hostname, deployment)
except AzureException, e:
except AzureException as e:
module.fail_json(msg="failed to lookup the deployment information for %s, error was: %s" % (name, str(e)))
@ -461,9 +461,9 @@ def terminate_virtual_machine(module, azure):
disk_names = []
try:
deployment = azure.get_deployment_by_name(service_name=name, deployment_name=name)
except AzureMissingException, e:
except AzureMissingException as e:
pass # no such deployment or service
except AzureException, e:
except AzureException as e:
module.fail_json(msg="failed to find the deployment, error was: %s" % str(e))
# Delete deployment
@ -476,13 +476,13 @@ def terminate_virtual_machine(module, azure):
role_props = azure.get_role(name, deployment.name, role.role_name)
if role_props.os_virtual_hard_disk.disk_name not in disk_names:
disk_names.append(role_props.os_virtual_hard_disk.disk_name)
except AzureException, e:
except AzureException as e:
module.fail_json(msg="failed to get the role %s, error was: %s" % (role.role_name, str(e)))
try:
result = azure.delete_deployment(name, deployment.name)
_wait_for_completion(azure, result, wait_timeout, "delete_deployment")
except AzureException, e:
except AzureException as e:
module.fail_json(msg="failed to delete the deployment %s, error was: %s" % (deployment.name, str(e)))
# It's unclear when disks associated with terminated deployment get detatched.
@ -490,14 +490,14 @@ def terminate_virtual_machine(module, azure):
# become detatched by polling the list of remaining disks and examining the state.
try:
_delete_disks_when_detached(azure, wait_timeout, disk_names)
except (AzureException, TimeoutError), e:
except (AzureException, TimeoutError) as e:
module.fail_json(msg=str(e))
try:
# Now that the vm is deleted, remove the cloud service
result = azure.delete_hosted_service(service_name=name)
_wait_for_completion(azure, result, wait_timeout, "delete_hosted_service")
except AzureException, e:
except AzureException as e:
module.fail_json(msg="failed to delete the service %s, error was: %s" % (name, str(e)))
public_dns_name = urlparse(deployment.url).hostname
@ -605,7 +605,7 @@ class Wrapper(object):
while wait_timeout > time.time():
try:
return f()
except AzureException, e:
except AzureException as e:
if not str(e).lower().find("temporary redirect") == -1:
time.sleep(5)
pass

View file

@ -241,7 +241,7 @@ class AzureRMStorageAccount(AzureRMModuleBase):
self.log('Checking name availability for {0}'.format(self.name))
try:
response = self.storage_client.storage_accounts.check_name_availability(self.name)
except AzureHttpError, e:
except AzureHttpError as e:
self.log('Error attempting to validate name.')
self.fail("Error checking name availability: {0}".format(str(e)))
if not response.name_available:
@ -384,7 +384,7 @@ class AzureRMStorageAccount(AzureRMModuleBase):
try:
poller = self.storage_client.storage_accounts.create(self.resource_group, self.name, parameters)
self.get_poller_result(poller)
except AzureHttpError, e:
except AzureHttpError as e:
self.log('Error creating storage account.')
self.fail("Failed to create account: {0}".format(str(e)))
# the poller doesn't actually return anything
@ -402,7 +402,7 @@ class AzureRMStorageAccount(AzureRMModuleBase):
status = self.storage_client.storage_accounts.delete(self.resource_group, self.name)
self.log("delete status: ")
self.log(str(status))
except AzureHttpError, e:
except AzureHttpError as e:
self.fail("Failed to delete the account: {0}".format(str(e)))
return True

View file

@ -259,7 +259,7 @@ def linodeServers(module, api, state, name, plan, distribution, datacenter, lino
api.linode_update(LinodeId=linode_id, Label='%s_%s' % (linode_id, name))
# Save server
servers = api.linode_list(LinodeId=linode_id)
except Exception, e:
except Exception as e:
module.fail_json(msg = '%s' % e.value[0]['ERRORMESSAGE'])
if not disks:
@ -291,7 +291,7 @@ def linodeServers(module, api, state, name, plan, distribution, datacenter, lino
Label='%s swap disk (lid: %s)' % (name, linode_id),
Size=swap)
jobs.append(res['JobID'])
except Exception, e:
except Exception as e:
# TODO: destroy linode ?
module.fail_json(msg = '%s' % e.value[0]['ERRORMESSAGE'])
@ -334,7 +334,7 @@ def linodeServers(module, api, state, name, plan, distribution, datacenter, lino
api.linode_config_create(LinodeId=linode_id, KernelId=kernel_id,
Disklist=disks_list, Label='%s config' % name)
configs = api.linode_config_list(LinodeId=linode_id)
except Exception, e:
except Exception as e:
module.fail_json(msg = '%s' % e.value[0]['ERRORMESSAGE'])
# Start / Ensure servers are running
@ -395,7 +395,7 @@ def linodeServers(module, api, state, name, plan, distribution, datacenter, lino
if server['STATUS'] != 2:
try:
res = api.linode_shutdown(LinodeId=linode_id)
except Exception, e:
except Exception as e:
module.fail_json(msg = '%s' % e.value[0]['ERRORMESSAGE'])
instance['status'] = 'Stopping'
changed = True
@ -415,7 +415,7 @@ def linodeServers(module, api, state, name, plan, distribution, datacenter, lino
instance = getInstanceDetails(api, server)
try:
res = api.linode_reboot(LinodeId=server['LINODEID'])
except Exception, e:
except Exception as e:
module.fail_json(msg = '%s' % e.value[0]['ERRORMESSAGE'])
instance['status'] = 'Restarting'
changed = True
@ -426,7 +426,7 @@ def linodeServers(module, api, state, name, plan, distribution, datacenter, lino
instance = getInstanceDetails(api, server)
try:
api.linode_delete(LinodeId=server['LINODEID'], skipChecks=True)
except Exception, e:
except Exception as e:
module.fail_json(msg = '%s' % e.value[0]['ERRORMESSAGE'])
instance['status'] = 'Deleting'
changed = True
@ -481,14 +481,14 @@ def main():
if not api_key:
try:
api_key = os.environ['LINODE_API_KEY']
except KeyError, e:
except KeyError as e:
module.fail_json(msg = 'Unable to load %s' % e.message)
# setup the auth
try:
api = linode_api.Api(api_key)
api.test_echo()
except Exception, e:
except Exception as e:
module.fail_json(msg = '%s' % e.value[0]['ERRORMESSAGE'])
linodeServers(module, api, state, name, plan, distribution, datacenter, linode_id,

View file

@ -77,7 +77,7 @@ author:
- "Trond Hindenes (@trondhindenes)"
'''
EXAMPLES = '''
EXAMPLES = r'''
# This installs IIS.
# The names of features available for install can be run by running the following Powershell Command:
# PS C:\Users\Administrator> Import-Module ServerManager; Get-WindowsFeature
@ -99,6 +99,4 @@ ansible -m "win_feature" -a "name=NET-Framework-Core source=C:/Temp/iso/sources/
restart: yes
include_sub_features: yes
include_management_tools: yes
'''

View file

@ -84,7 +84,7 @@ options:
required: false
'''
EXAMPLES = '''
EXAMPLES = r'''
# Downloading a JPEG and saving it to a file with the ansible command.
# Note the "dest" is quoted rather instead of escaping the backslashes
$ ansible -i hosts -c winrm -m win_get_url -a "url=http://www.example.com/earthrise.jpg dest='C:\Users\Administrator\earthrise.jpg'" all