Merge pull request #12119 from mgedmin/py3k

Some steps towards Python 3 support
This commit is contained in:
Toshio Kuratomi 2015-08-27 12:18:16 -07:00
commit 6907166667
48 changed files with 114 additions and 120 deletions

View file

@ -76,7 +76,7 @@ def save_cache(data, config):
cache = open('/'.join([dpath,'inventory']), 'w') cache = open('/'.join([dpath,'inventory']), 'w')
cache.write(json.dumps(data)) cache.write(json.dumps(data))
cache.close() cache.close()
except IOError, e: except IOError as e:
pass # not really sure what to do here pass # not really sure what to do here
@ -88,7 +88,7 @@ def get_cache(cache_item, config):
cache = open('/'.join([dpath,'inventory']), 'r') cache = open('/'.join([dpath,'inventory']), 'r')
inv = cache.read() inv = cache.read()
cache.close() cache.close()
except IOError, e: except IOError as e:
pass # not really sure what to do here pass # not really sure what to do here
return inv return inv
@ -172,7 +172,7 @@ def generate_inv_from_api(enterprise_entity,config):
else: else:
vm_metadata = metadata['metadata']['metadata'] vm_metadata = metadata['metadata']['metadata']
inventory['_meta']['hostvars'][vm_nic] = vm_metadata inventory['_meta']['hostvars'][vm_nic] = vm_metadata
except Exception, e: except Exception as e:
pass pass
inventory[vm_vapp]['children'].append(vmcollection['name']) inventory[vm_vapp]['children'].append(vmcollection['name'])
@ -183,7 +183,7 @@ def generate_inv_from_api(enterprise_entity,config):
inventory[vmcollection['name']].append(vm_nic) inventory[vmcollection['name']].append(vm_nic)
return inventory return inventory
except Exception, e: except Exception as e:
# Return empty hosts output # Return empty hosts output
return { 'all': {'hosts': []}, '_meta': { 'hostvars': {} } } return { 'all': {'hosts': []}, '_meta': { 'hostvars': {} } }
@ -214,7 +214,7 @@ if __name__ == '__main__':
try: try:
login = api_get(None,config) login = api_get(None,config)
enterprise = next(link for link in (login['links']) if (link['rel']=='enterprise')) enterprise = next(link for link in (login['links']) if (link['rel']=='enterprise'))
except Exception, e: except Exception as e:
enterprise = None enterprise = None
if cache_available(config): if cache_available(config):

View file

@ -98,7 +98,7 @@ class CloudStackInventory(object):
options = parser.parse_args() options = parser.parse_args()
try: try:
self.cs = CloudStack(**read_config()) self.cs = CloudStack(**read_config())
except CloudStackException, e: except CloudStackException as e:
print >> sys.stderr, "Error: Could not connect to CloudStack API" print >> sys.stderr, "Error: Could not connect to CloudStack API"
project_id = '' project_id = ''

View file

@ -136,7 +136,7 @@ except ImportError:
try: try:
import consul import consul
except ImportError, e: except ImportError as e:
print """failed=True msg='python-consul required for this module. see print """failed=True msg='python-consul required for this module. see
http://python-consul.readthedocs.org/en/latest/#installation'""" http://python-consul.readthedocs.org/en/latest/#installation'"""
sys.exit(1) sys.exit(1)

View file

@ -145,7 +145,7 @@ except ImportError:
try: try:
from dopy.manager import DoError, DoManager from dopy.manager import DoError, DoManager
except ImportError, e: except ImportError as e:
print "failed=True msg='`dopy` library required for this script'" print "failed=True msg='`dopy` library required for this script'"
sys.exit(1) sys.exit(1)

View file

@ -237,7 +237,7 @@ class GceInventory(object):
'''Gets details about a specific instance ''' '''Gets details about a specific instance '''
try: try:
return self.driver.ex_get_node(instance_name) return self.driver.ex_get_node(instance_name)
except Exception, e: except Exception as e:
return None return None
def group_instances(self): def group_instances(self):

View file

@ -101,7 +101,7 @@ except:
from chube.linode_obj import Linode from chube.linode_obj import Linode
sys.path = old_path sys.path = old_path
except Exception, e: except Exception as e:
raise Exception("could not import chube") raise Exception("could not import chube")
load_chube_config() load_chube_config()
@ -184,7 +184,7 @@ class LinodeInventory(object):
try: try:
for node in Linode.search(status=Linode.STATUS_RUNNING): for node in Linode.search(status=Linode.STATUS_RUNNING):
self.add_node(node) self.add_node(node)
except chube_api.linode_api.ApiError, e: except chube_api.linode_api.ApiError as e:
print "Looks like Linode's API is down:" print "Looks like Linode's API is down:"
print print
print e print e
@ -194,7 +194,7 @@ class LinodeInventory(object):
"""Gets details about a specific node.""" """Gets details about a specific node."""
try: try:
return Linode.find(api_id=linode_id) return Linode.find(api_id=linode_id)
except chube_api.linode_api.ApiError, e: except chube_api.linode_api.ApiError as e:
print "Looks like Linode's API is down:" print "Looks like Linode's API is down:"
print print
print e print e

View file

@ -245,7 +245,7 @@ def _list_into_cache(regions):
if cs is None: if cs is None:
warnings.warn( warnings.warn(
'Connecting to Rackspace region "%s" has caused Pyrax to ' 'Connecting to Rackspace region "%s" has caused Pyrax to '
'return a NoneType. Is this a valid region?' % region, 'return None. Is this a valid region?' % region,
RuntimeWarning) RuntimeWarning)
continue continue
for server in cs.servers.list(): for server in cs.servers.list():
@ -412,7 +412,7 @@ def setup():
pyrax.keyring_auth(keyring_username, region=region) pyrax.keyring_auth(keyring_username, region=region)
else: else:
pyrax.set_credential_file(creds_file, region=region) pyrax.set_credential_file(creds_file, region=region)
except Exception, e: except Exception as e:
sys.stderr.write("%s: %s\n" % (e, e.message)) sys.stderr.write("%s: %s\n" % (e, e.message))
sys.exit(1) sys.exit(1)

View file

@ -132,7 +132,7 @@ try:
for group in spacewalk_report('system-groups'): for group in spacewalk_report('system-groups'):
org_groups[group['spacewalk_group_id']] = group['spacewalk_org_id'] org_groups[group['spacewalk_group_id']] = group['spacewalk_org_id']
except (OSError), e: except (OSError) as e:
print >> sys.stderr, 'Problem executing the command "%s system-groups": %s' % \ print >> sys.stderr, 'Problem executing the command "%s system-groups": %s' % \
(SW_REPORT, str(e)) (SW_REPORT, str(e))
sys.exit(2) sys.exit(2)
@ -148,7 +148,7 @@ if options.list:
for item in spacewalk_report('inventory'): for item in spacewalk_report('inventory'):
host_vars[ item['spacewalk_profile_name'] ] = dict( ( key, ( value.split(';') if ';' in value else value) ) for key, value in item.items() ) host_vars[ item['spacewalk_profile_name'] ] = dict( ( key, ( value.split(';') if ';' in value else value) ) for key, value in item.items() )
except (OSError), e: except (OSError) as e:
print >> sys.stderr, 'Problem executing the command "%s inventory": %s' % \ print >> sys.stderr, 'Problem executing the command "%s inventory": %s' % \
(SW_REPORT, str(e)) (SW_REPORT, str(e))
sys.exit(2) sys.exit(2)
@ -185,7 +185,7 @@ if options.list:
if system['spacewalk_server_name'] in host_vars and not system['spacewalk_server_name'] in meta[ "hostvars" ]: if system['spacewalk_server_name'] in host_vars and not system['spacewalk_server_name'] in meta[ "hostvars" ]:
meta[ "hostvars" ][ system['spacewalk_server_name'] ] = host_vars[ system['spacewalk_server_name'] ] meta[ "hostvars" ][ system['spacewalk_server_name'] ] = host_vars[ system['spacewalk_server_name'] ]
except (OSError), e: except (OSError) as e:
print >> sys.stderr, 'Problem executing the command "%s system-groups-systems": %s' % \ print >> sys.stderr, 'Problem executing the command "%s system-groups-systems": %s' % \
(SW_REPORT, str(e)) (SW_REPORT, str(e))
sys.exit(2) sys.exit(2)
@ -212,7 +212,7 @@ elif options.host:
host_details = system host_details = system
break break
except (OSError), e: except (OSError) as e:
print >> sys.stderr, 'Problem executing the command "%s inventory": %s' % \ print >> sys.stderr, 'Problem executing the command "%s inventory": %s' % \
(SW_REPORT, str(e)) (SW_REPORT, str(e))
sys.exit(2) sys.exit(2)

View file

@ -164,7 +164,7 @@ class VMwareInventory(object):
obj_info = self._get_obj_info(val, depth - 1, seen) obj_info = self._get_obj_info(val, depth - 1, seen)
if obj_info != (): if obj_info != ():
d[attr] = obj_info d[attr] = obj_info
except Exception, e: except Exception as e:
pass pass
return d return d
elif isinstance(obj, SudsObject): elif isinstance(obj, SudsObject):
@ -207,7 +207,7 @@ class VMwareInventory(object):
host_info[k] = v host_info[k] = v
try: try:
host_info['ipAddress'] = host.config.network.vnic[0].spec.ip.ipAddress host_info['ipAddress'] = host.config.network.vnic[0].spec.ip.ipAddress
except Exception, e: except Exception as e:
print >> sys.stderr, e print >> sys.stderr, e
host_info = self._flatten_dict(host_info, prefix) host_info = self._flatten_dict(host_info, prefix)
if ('%s_ipAddress' % prefix) in host_info: if ('%s_ipAddress' % prefix) in host_info:

View file

@ -109,7 +109,7 @@ class ZabbixInventory(object):
try: try:
api = ZabbixAPI(server=self.zabbix_server) api = ZabbixAPI(server=self.zabbix_server)
api.login(user=self.zabbix_username, password=self.zabbix_password) api.login(user=self.zabbix_username, password=self.zabbix_password)
except BaseException, e: except BaseException as e:
print >> sys.stderr, "Error: Could not login to Zabbix server. Check your zabbix.ini." print >> sys.stderr, "Error: Could not login to Zabbix server. Check your zabbix.ini."
sys.exit(1) sys.exit(1)

View file

@ -120,7 +120,7 @@ class DocCLI(CLI):
# this typically means we couldn't even parse the docstring, not just that the YAML is busted, # this typically means we couldn't even parse the docstring, not just that the YAML is busted,
# probably a quoting issue. # probably a quoting issue.
raise AnsibleError("Parsing produced an empty object.") raise AnsibleError("Parsing produced an empty object.")
except Exception, e: except Exception as e:
self.display.vvv(traceback.print_exc()) self.display.vvv(traceback.print_exc())
raise AnsibleError("module %s missing documentation (or could not parse documentation): %s\n" % (module, str(e))) raise AnsibleError("module %s missing documentation (or could not parse documentation): %s\n" % (module, str(e)))

View file

@ -196,7 +196,7 @@ class PullCLI(CLI):
os.chdir('/') os.chdir('/')
try: try:
shutil.rmtree(self.options.dest) shutil.rmtree(self.options.dest)
except Exception, e: except Exception as e:
self.display.error("Failed to remove %s: %s" % (self.options.dest, str(e))) self.display.error("Failed to remove %s: %s" % (self.options.dest, str(e)))
return rc return rc

View file

@ -67,7 +67,7 @@ class WorkerProcess(multiprocessing.Process):
if fileno is not None: if fileno is not None:
try: try:
self._new_stdin = os.fdopen(os.dup(fileno)) self._new_stdin = os.fdopen(os.dup(fileno))
except OSError, e: except OSError as e:
# couldn't dupe stdin, most likely because it's # couldn't dupe stdin, most likely because it's
# not a valid file descriptor, so we just rely on # not a valid file descriptor, so we just rely on
# using the one that was passed in # using the one that was passed in
@ -137,7 +137,7 @@ class WorkerProcess(multiprocessing.Process):
except: except:
# FIXME: most likely an abort, catch those kinds of errors specifically # FIXME: most likely an abort, catch those kinds of errors specifically
break break
except Exception, e: except Exception as e:
debug("WORKER EXCEPTION: %s" % e) debug("WORKER EXCEPTION: %s" % e)
debug("WORKER EXCEPTION: %s" % traceback.format_exc()) debug("WORKER EXCEPTION: %s" % traceback.format_exc())
try: try:

View file

@ -125,14 +125,14 @@ class TaskExecutor:
result = json.dumps(res) result = json.dumps(res)
debug("done dumping result, returning") debug("done dumping result, returning")
return result return result
except AnsibleError, e: except AnsibleError as e:
return dict(failed=True, msg=to_unicode(e, nonstring='simplerepr')) return dict(failed=True, msg=to_unicode(e, nonstring='simplerepr'))
finally: finally:
try: try:
self._connection.close() self._connection.close()
except AttributeError: except AttributeError:
pass pass
except Exception, e: except Exception as e:
debug("error closing connection: %s" % to_unicode(e)) debug("error closing connection: %s" % to_unicode(e))
def _get_loop_items(self): def _get_loop_items(self):
@ -187,7 +187,7 @@ class TaskExecutor:
try: try:
tmp_task = self._task.copy() tmp_task = self._task.copy()
except AnsibleParserError, e: except AnsibleParserError as e:
results.append(dict(failed=True, msg=str(e))) results.append(dict(failed=True, msg=str(e)))
continue continue

View file

@ -143,7 +143,7 @@ class Inventory(object):
return re.search(pattern_str[1:], str) return re.search(pattern_str[1:], str)
else: else:
return fnmatch.fnmatch(str, pattern_str) return fnmatch.fnmatch(str, pattern_str)
except Exception, e: except Exception as e:
raise AnsibleError('invalid host pattern: %s' % pattern_str) raise AnsibleError('invalid host pattern: %s' % pattern_str)
def _match_list(self, items, item_attr, pattern_str): def _match_list(self, items, item_attr, pattern_str):
@ -153,7 +153,7 @@ class Inventory(object):
pattern = re.compile(fnmatch.translate(pattern_str)) pattern = re.compile(fnmatch.translate(pattern_str))
else: else:
pattern = re.compile(pattern_str[1:]) pattern = re.compile(pattern_str[1:])
except Exception, e: except Exception as e:
raise AnsibleError('invalid host pattern: %s' % pattern_str) raise AnsibleError('invalid host pattern: %s' % pattern_str)
for item in items: for item in items:

View file

@ -46,7 +46,7 @@ class InventoryScript:
cmd = [ self.filename, "--list" ] cmd = [ self.filename, "--list" ]
try: try:
sp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) sp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except OSError, e: except OSError as e:
raise AnsibleError("problem running %s (%s)" % (' '.join(cmd), e)) raise AnsibleError("problem running %s (%s)" % (' '.join(cmd), e))
(stdout, stderr) = sp.communicate() (stdout, stderr) = sp.communicate()
@ -153,7 +153,7 @@ class InventoryScript:
cmd = [self.filename, "--host", host.name] cmd = [self.filename, "--host", host.name]
try: try:
sp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) sp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except OSError, e: except OSError as e:
raise AnsibleError("problem running %s (%s)" % (' '.join(cmd), e)) raise AnsibleError("problem running %s (%s)" % (' '.join(cmd), e))
(out, err) = sp.communicate() (out, err) = sp.communicate()
if out.strip() == '': if out.strip() == '':

View file

@ -66,7 +66,7 @@ class Conditional:
for conditional in self.when: for conditional in self.when:
if not self._check_conditional(conditional, templar, all_vars): if not self._check_conditional(conditional, templar, all_vars):
return False return False
except Exception, e: except Exception as e:
raise AnsibleError("The conditional check '%s' failed. The error was: %s" % (conditional, e), obj=ds) raise AnsibleError("The conditional check '%s' failed. The error was: %s" % (conditional, e), obj=ds)
return True return True

View file

@ -20,8 +20,6 @@ __metaclass__ = type
import os import os
from types import NoneType
from ansible.errors import AnsibleParserError from ansible.errors import AnsibleParserError
from ansible.parsing.yaml.objects import AnsibleBaseYAMLObject, AnsibleSequence from ansible.parsing.yaml.objects import AnsibleBaseYAMLObject, AnsibleSequence

View file

@ -25,7 +25,6 @@ import inspect
import os import os
from hashlib import sha1 from hashlib import sha1
from types import NoneType
from ansible.errors import AnsibleError, AnsibleParserError from ansible.errors import AnsibleError, AnsibleParserError
from ansible.parsing import DataLoader from ansible.parsing import DataLoader
@ -184,16 +183,16 @@ class Role(Base, Become, Conditional, Taggable):
# vars and default vars are regular dictionaries # vars and default vars are regular dictionaries
self._role_vars = self._load_role_yaml('vars') self._role_vars = self._load_role_yaml('vars')
if not isinstance(self._role_vars, (dict, NoneType)): if self._role_vars is None:
raise AnsibleParserError("The vars/main.yml file for role '%s' must contain a dictionary of variables" % self._role_name)
elif self._role_vars is None:
self._role_vars = dict() self._role_vars = dict()
elif not isinstance(self._role_vars, dict):
raise AnsibleParserError("The vars/main.yml file for role '%s' must contain a dictionary of variables" % self._role_name)
self._default_vars = self._load_role_yaml('defaults') self._default_vars = self._load_role_yaml('defaults')
if not isinstance(self._default_vars, (dict, NoneType)): if self._default_vars is None:
raise AnsibleParserError("The default/main.yml file for role '%s' must contain a dictionary of variables" % self._role_name)
elif self._default_vars is None:
self._default_vars = dict() self._default_vars = dict()
elif not isinstance(self._default_vars, dict):
raise AnsibleParserError("The default/main.yml file for role '%s' must contain a dictionary of variables" % self._role_name)
def _load_role_yaml(self, subdir): def _load_role_yaml(self, subdir):
file_path = os.path.join(self._role_path, subdir) file_path = os.path.join(self._role_path, subdir)

View file

@ -166,7 +166,7 @@ class ActionBase:
tmp_mode = None tmp_mode = None
if self._play_context.remote_user != 'root' or self._play_context.become and self._play_context.become_user != 'root': if self._play_context.remote_user != 'root' or self._play_context.become and self._play_context.become_user != 'root':
tmp_mode = 0755 tmp_mode = 0o755
cmd = self._connection._shell.mkdtemp(basefile, use_system_tmp, tmp_mode) cmd = self._connection._shell.mkdtemp(basefile, use_system_tmp, tmp_mode)
self._display.debug("executing _low_level_execute_command to create the tmp path") self._display.debug("executing _low_level_execute_command to create the tmp path")

View file

@ -19,8 +19,6 @@ __metaclass__ = type
import os import os
from types import NoneType
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.parsing import DataLoader from ansible.parsing import DataLoader
from ansible.plugins.action import ActionBase from ansible.plugins.action import ActionBase

View file

@ -45,7 +45,7 @@ class CacheModule(BaseCacheModule):
if not os.path.exists(self._cache_dir): if not os.path.exists(self._cache_dir):
try: try:
os.makedirs(self._cache_dir) os.makedirs(self._cache_dir)
except (OSError,IOError), e: except (OSError,IOError) as e:
self._display.warning("error while trying to create cache dir %s : %s" % (self._cache_dir, str(e))) self._display.warning("error while trying to create cache dir %s : %s" % (self._cache_dir, str(e)))
return None return None
@ -60,7 +60,7 @@ class CacheModule(BaseCacheModule):
cachefile = "%s/%s" % (self._cache_dir, key) cachefile = "%s/%s" % (self._cache_dir, key)
try: try:
f = codecs.open(cachefile, 'r', encoding='utf-8') f = codecs.open(cachefile, 'r', encoding='utf-8')
except (OSError,IOError), e: except (OSError,IOError) as e:
self._display.warning("error while trying to read %s : %s" % (cachefile, str(e))) self._display.warning("error while trying to read %s : %s" % (cachefile, str(e)))
pass pass
else: else:
@ -81,7 +81,7 @@ class CacheModule(BaseCacheModule):
cachefile = "%s/%s" % (self._cache_dir, key) cachefile = "%s/%s" % (self._cache_dir, key)
try: try:
f = codecs.open(cachefile, 'w', encoding='utf-8') f = codecs.open(cachefile, 'w', encoding='utf-8')
except (OSError,IOError), e: except (OSError,IOError) as e:
self._display.warning("error while trying to write to %s : %s" % (cachefile, str(e))) self._display.warning("error while trying to write to %s : %s" % (cachefile, str(e)))
pass pass
else: else:
@ -94,7 +94,7 @@ class CacheModule(BaseCacheModule):
cachefile = "%s/%s" % (self._cache_dir, key) cachefile = "%s/%s" % (self._cache_dir, key)
try: try:
st = os.stat(cachefile) st = os.stat(cachefile)
except (OSError,IOError), e: except (OSError,IOError) as e:
if e.errno == errno.ENOENT: if e.errno == errno.ENOENT:
return False return False
else: else:
@ -126,7 +126,7 @@ class CacheModule(BaseCacheModule):
try: try:
st = os.stat(cachefile) st = os.stat(cachefile)
return True return True
except (OSError,IOError), e: except (OSError,IOError) as e:
if e.errno == errno.ENOENT: if e.errno == errno.ENOENT:
return False return False
else: else:
@ -137,7 +137,7 @@ class CacheModule(BaseCacheModule):
del self._cache[key] del self._cache[key]
try: try:
os.remove("%s/%s" % (self._cache_dir, key)) os.remove("%s/%s" % (self._cache_dir, key))
except (OSError,IOError), e: except (OSError,IOError) as e:
pass #TODO: only pass on non existing? pass #TODO: only pass on non existing?
def flush(self): def flush(self):

View file

@ -152,7 +152,7 @@ def version_compare(value, version, operator='eq', strict=False):
try: try:
method = getattr(py_operator, operator) method = getattr(py_operator, operator)
return method(Version(str(value)), Version(str(version))) return method(Version(str(value)), Version(str(version)))
except Exception, e: except Exception as e:
raise errors.AnsibleFilterError('Version comparison: %s' % e) raise errors.AnsibleFilterError('Version comparison: %s' % e)
def regex_escape(string): def regex_escape(string):

View file

@ -80,14 +80,14 @@ def logarithm(x, base=math.e):
return math.log10(x) return math.log10(x)
else: else:
return math.log(x, base) return math.log(x, base)
except TypeError, e: except TypeError as e:
raise errors.AnsibleFilterError('log() can only be used on numbers: %s' % str(e)) raise errors.AnsibleFilterError('log() can only be used on numbers: %s' % str(e))
def power(x, y): def power(x, y):
try: try:
return math.pow(x, y) return math.pow(x, y)
except TypeError, e: except TypeError as e:
raise errors.AnsibleFilterError('pow() can only be used on numbers: %s' % str(e)) raise errors.AnsibleFilterError('pow() can only be used on numbers: %s' % str(e))
@ -97,7 +97,7 @@ def inversepower(x, base=2):
return math.sqrt(x) return math.sqrt(x)
else: else:
return math.pow(x, 1.0/float(base)) return math.pow(x, 1.0/float(base))
except TypeError, e: except TypeError as e:
raise errors.AnsibleFilterError('root() can only be used on numbers: %s' % str(e)) raise errors.AnsibleFilterError('root() can only be used on numbers: %s' % str(e))
@ -107,13 +107,13 @@ def human_readable(size, isbits=False, unit=None):
suffix = '' suffix = ''
ranges = ( ranges = (
(1<<70L, 'Z'), (1<<70, 'Z'),
(1<<60L, 'E'), (1<<60, 'E'),
(1<<50L, 'P'), (1<<50, 'P'),
(1<<40L, 'T'), (1<<40, 'T'),
(1<<30L, 'G'), (1<<30, 'G'),
(1<<20L, 'M'), (1<<20, 'M'),
(1<<10L, 'K'), (1<<10, 'K'),
(1, base) (1, base)
) )

View file

@ -67,7 +67,7 @@ except ImportError:
try: try:
import consul import consul
HAS_CONSUL = True HAS_CONSUL = True
except ImportError, e: except ImportError as e:
HAS_CONSUL = False HAS_CONSUL = False
@ -104,7 +104,7 @@ class LookupModule(LookupBase):
values.append(r['Value']) values.append(r['Value'])
else: else:
values.append(results[1]['Value']) values.append(results[1]['Value'])
except Exception, e: except Exception as e:
raise AnsibleError( raise AnsibleError(
"Error locating '%s' in kv store. Error was %s" % (term, e)) "Error locating '%s' in kv store. Error was %s" % (term, e))
@ -127,7 +127,7 @@ class LookupModule(LookupBase):
name, value = param.split('=') name, value = param.split('=')
assert name in paramvals, "% not a valid consul lookup parameter" % name assert name in paramvals, "% not a valid consul lookup parameter" % name
paramvals[name] = value paramvals[name] = value
except (ValueError, AssertionError), e: except (ValueError, AssertionError) as e:
raise AnsibleError(e) raise AnsibleError(e)
return paramvals return paramvals

View file

@ -41,7 +41,7 @@ class LookupModule(LookupBase):
val = credstash.getSecret(term, **kwargs) val = credstash.getSecret(term, **kwargs)
except credstash.ItemNotFound: except credstash.ItemNotFound:
raise AnsibleError('Key {0} not found'.format(term)) raise AnsibleError('Key {0} not found'.format(term))
except Exception, e: except Exception as e:
raise AnsibleError('Encountered exception while fetching {0}: {1}'.format(term, e.message)) raise AnsibleError('Encountered exception while fetching {0}: {1}'.format(term, e.message))
ret.append(val) ret.append(val)

View file

@ -141,7 +141,7 @@ class LookupModule(LookupBase):
try: try:
nsaddr = dns.resolver.query(ns)[0].address nsaddr = dns.resolver.query(ns)[0].address
nameservers.append(nsaddr) nameservers.append(nsaddr)
except Exception, e: except Exception as e:
raise AnsibleError("dns lookup NS: ", str(e)) raise AnsibleError("dns lookup NS: ", str(e))
myres.nameservers = nameservers myres.nameservers = nameservers
continue continue
@ -176,7 +176,7 @@ class LookupModule(LookupBase):
domain = n.to_text() domain = n.to_text()
except dns.exception.SyntaxError: except dns.exception.SyntaxError:
pass pass
except Exception, e: except Exception as e:
raise AnsibleError("dns.reversename unhandled exception", str(e)) raise AnsibleError("dns.reversename unhandled exception", str(e))
try: try:
@ -196,7 +196,7 @@ class LookupModule(LookupBase):
rd['ttl'] = answers.rrset.ttl rd['ttl'] = answers.rrset.ttl
ret.append(rd) ret.append(rd)
except Exception, e: except Exception as e:
ret.append(str(e)) ret.append(str(e))
except dns.resolver.NXDOMAIN: except dns.resolver.NXDOMAIN:
@ -205,7 +205,7 @@ class LookupModule(LookupBase):
ret.append("") ret.append("")
except dns.resolver.Timeout: except dns.resolver.Timeout:
ret.append('') ret.append('')
except dns.exception.DNSException, e: except dns.exception.DNSException as e:
raise AnsibleError("dns.resolver unhandled exception", e) raise AnsibleError("dns.resolver unhandled exception", e)
return ret return ret

View file

@ -47,7 +47,7 @@ class LookupModule(LookupBase):
# Retrieve a single value # Retrieve a single value
try: try:
value = self.cp.get(section, key) value = self.cp.get(section, key)
except ConfigParser.NoOptionError, e: except ConfigParser.NoOptionError as e:
return dflt return dflt
return value return value
@ -76,7 +76,7 @@ class LookupModule(LookupBase):
name, value = param.split('=') name, value = param.split('=')
assert(name in paramvals) assert(name in paramvals)
paramvals[name] = value paramvals[name] = value
except (ValueError, AssertionError), e: except (ValueError, AssertionError) as e:
raise errors.AnsibleError(e) raise errors.AnsibleError(e)
path = self._loader.path_dwim_relative(basedir, 'files', paramvals['file']) path = self._loader.path_dwim_relative(basedir, 'files', paramvals['file'])

View file

@ -32,7 +32,7 @@ class LookupModule(LookupBase):
for x in terms: for x in terms:
try: try:
intermediate = listify_lookup_plugin_terms(x, templar=self._templar, loader=self._loader, fail_on_undefined=True) intermediate = listify_lookup_plugin_terms(x, templar=self._templar, loader=self._loader, fail_on_undefined=True)
except UndefinedError, e: except UndefinedError as e:
raise AnsibleUndefinedVariable("One of the nested variables was undefined. The error was: %s" % e) raise AnsibleUndefinedVariable("One of the nested variables was undefined. The error was: %s" % e)
results.append(intermediate) results.append(intermediate)
return results return results

View file

@ -186,7 +186,7 @@ class LookupModule(LookupBase):
try: try:
if not self.parse_simple_args(term): if not self.parse_simple_args(term):
self.parse_kv_args(parse_kv(term)) self.parse_kv_args(parse_kv(term))
except Exception, e: except Exception as e:
raise AnsibleError("unknown error parsing with_sequence arguments: %r. Error was: %s" % (term, e)) raise AnsibleError("unknown error parsing with_sequence arguments: %r. Error was: %s" % (term, e))
self.sanity_check() self.sanity_check()

View file

@ -55,7 +55,7 @@ class LookupModule(LookupBase):
assert(name in paramvals) assert(name in paramvals)
paramvals[name] = value paramvals[name] = value
except (ValueError, AssertionError), e: except (ValueError, AssertionError) as e:
# In case "file" or "key" are not present # In case "file" or "key" are not present
raise AnsibleError(e) raise AnsibleError(e)

View file

@ -70,7 +70,7 @@ class ShellModule(object):
# change the umask in a subshell to achieve the desired mode # change the umask in a subshell to achieve the desired mode
# also for directories created with `mkdir -p` # also for directories created with `mkdir -p`
if mode: if mode:
tmp_umask = 0777 & ~mode tmp_umask = 0o777 & ~mode
cmd = '(umask %o && %s)' % (tmp_umask, cmd) cmd = '(umask %o && %s)' % (tmp_umask, cmd)
return cmd return cmd

View file

@ -382,7 +382,7 @@ class StrategyBase:
data = self._loader.load_from_file(included_file._filename) data = self._loader.load_from_file(included_file._filename)
if data is None: if data is None:
return [] return []
except AnsibleError, e: except AnsibleError as e:
for host in included_file._hosts: for host in included_file._hosts:
tr = TaskResult(host=host, task=included_file._task, return_data=dict(failed=True, reason=str(e))) tr = TaskResult(host=host, task=included_file._task, return_data=dict(failed=True, reason=str(e)))
iterator.mark_host_failed(host) iterator.mark_host_failed(host)
@ -455,7 +455,7 @@ class StrategyBase:
loader=self._loader, loader=self._loader,
variable_manager=self._variable_manager variable_manager=self._variable_manager
) )
except AnsibleError, e: except AnsibleError as e:
return False return False
if len(included_files) > 0: if len(included_files) > 0:
@ -475,7 +475,7 @@ class StrategyBase:
# and add the new blocks to the list of handler blocks # and add the new blocks to the list of handler blocks
handler_block.block.extend(block.block) handler_block.block.extend(block.block)
#iterator._play.handlers.extend(new_blocks) #iterator._play.handlers.extend(new_blocks)
except AnsibleError, e: except AnsibleError as e:
for host in included_file._hosts: for host in included_file._hosts:
iterator.mark_host_failed(host) iterator.mark_host_failed(host)
self._tqm._failed_hosts[host.name] = True self._tqm._failed_hosts[host.name] = True

View file

@ -144,7 +144,7 @@ class StrategyModule(StrategyBase):
try: try:
included_files = IncludedFile.process_include_results(host_results, self._tqm, iterator=iterator, loader=self._loader, variable_manager=self._variable_manager) included_files = IncludedFile.process_include_results(host_results, self._tqm, iterator=iterator, loader=self._loader, variable_manager=self._variable_manager)
except AnsibleError, e: except AnsibleError as e:
return False return False
if len(included_files) > 0: if len(included_files) > 0:
@ -153,7 +153,7 @@ class StrategyModule(StrategyBase):
# list of noop tasks, to make sure that they continue running in lock-step # list of noop tasks, to make sure that they continue running in lock-step
try: try:
new_blocks = self._load_included_file(included_file, iterator=iterator) new_blocks = self._load_included_file(included_file, iterator=iterator)
except AnsibleError, e: except AnsibleError as e:
for host in included_file._hosts: for host in included_file._hosts:
iterator.mark_host_failed(host) iterator.mark_host_failed(host)
self._display.warning(str(e)) self._display.warning(str(e))

View file

@ -258,7 +258,7 @@ class StrategyModule(StrategyBase):
try: try:
included_files = IncludedFile.process_include_results(host_results, self._tqm, iterator=iterator, loader=self._loader, variable_manager=self._variable_manager) included_files = IncludedFile.process_include_results(host_results, self._tqm, iterator=iterator, loader=self._loader, variable_manager=self._variable_manager)
except AnsibleError, e: except AnsibleError as e:
return False return False
if len(included_files) > 0: if len(included_files) > 0:
@ -273,7 +273,7 @@ class StrategyModule(StrategyBase):
# list of noop tasks, to make sure that they continue running in lock-step # list of noop tasks, to make sure that they continue running in lock-step
try: try:
new_blocks = self._load_included_file(included_file, iterator=iterator) new_blocks = self._load_included_file(included_file, iterator=iterator)
except AnsibleError, e: except AnsibleError as e:
for host in included_file._hosts: for host in included_file._hosts:
iterator.mark_host_failed(host) iterator.mark_host_failed(host)
self._display.warning(str(e)) self._display.warning(str(e))
@ -296,7 +296,7 @@ class StrategyModule(StrategyBase):
iterator.add_tasks(host, all_blocks[host]) iterator.add_tasks(host, all_blocks[host])
self._display.debug("results queue empty") self._display.debug("results queue empty")
except (IOError, EOFError), e: except (IOError, EOFError) as e:
self._display.debug("got IOError/EOFError in task loop: %s" % e) self._display.debug("got IOError/EOFError in task loop: %s" % e)
# most likely an abort, return failed # most likely an abort, return failed
return False return False

View file

@ -37,7 +37,6 @@ from ansible.template.vars import AnsibleJ2Vars
from ansible.utils.debug import debug from ansible.utils.debug import debug
from numbers import Number from numbers import Number
from types import NoneType
__all__ = ['Templar'] __all__ = ['Templar']
@ -188,7 +187,7 @@ class Templar:
resolved_val = self._available_variables[var_name] resolved_val = self._available_variables[var_name]
if isinstance(resolved_val, NON_TEMPLATED_TYPES): if isinstance(resolved_val, NON_TEMPLATED_TYPES):
return resolved_val return resolved_val
elif isinstance(resolved_val, NoneType): elif resolved_val is None:
return C.DEFAULT_NULL_REPRESENTATION return C.DEFAULT_NULL_REPRESENTATION
result = self._do_template(variable, preserve_trailing_newlines=preserve_trailing_newlines, fail_on_undefined=fail_on_undefined, overrides=overrides) result = self._do_template(variable, preserve_trailing_newlines=preserve_trailing_newlines, fail_on_undefined=fail_on_undefined, overrides=overrides)
@ -261,7 +260,7 @@ class Templar:
ran = instance.run(loop_terms, variables=self._available_variables, **kwargs) ran = instance.run(loop_terms, variables=self._available_variables, **kwargs)
except (AnsibleUndefinedVariable, UndefinedError) as e: except (AnsibleUndefinedVariable, UndefinedError) as e:
raise AnsibleUndefinedVariable(e) raise AnsibleUndefinedVariable(e)
except Exception, e: except Exception as e:
if self._fail_on_lookup_errors: if self._fail_on_lookup_errors:
raise raise
ran = None ran = None
@ -299,9 +298,9 @@ class Templar:
try: try:
t = myenv.from_string(data) t = myenv.from_string(data)
except TemplateSyntaxError, e: except TemplateSyntaxError as e:
raise AnsibleError("template error while templating string: %s" % str(e)) raise AnsibleError("template error while templating string: %s" % str(e))
except Exception, e: except Exception as e:
if 'recursion' in str(e): if 'recursion' in str(e):
raise AnsibleError("recursive loop detected in template string: %s" % data) raise AnsibleError("recursive loop detected in template string: %s" % data)
else: else:
@ -317,7 +316,7 @@ class Templar:
try: try:
res = j2_concat(rf) res = j2_concat(rf)
except TypeError, te: except TypeError as te:
if 'StrictUndefined' in str(te): if 'StrictUndefined' in str(te):
raise AnsibleUndefinedVariable( raise AnsibleUndefinedVariable(
"Unable to look up a name or access an attribute in template string. " + \ "Unable to look up a name or access an attribute in template string. " + \
@ -338,7 +337,7 @@ class Templar:
res += '\n' * (data_newlines - res_newlines) res += '\n' * (data_newlines - res_newlines)
return res return res
except (UndefinedError, AnsibleUndefinedVariable), e: except (UndefinedError, AnsibleUndefinedVariable) as e:
if fail_on_undefined: if fail_on_undefined:
raise AnsibleUndefinedVariable(e) raise AnsibleUndefinedVariable(e)
else: else:

0
lib/ansible/utils/module_docs.py Normal file → Executable file
View file

View file

@ -45,6 +45,6 @@ def makedirs_safe(path, mode=None):
os.makedirs(path, mode) os.makedirs(path, mode)
else: else:
os.makedirs(path) os.makedirs(path)
except OSError, e: except OSError as e:
if e.errno != EEXIST: if e.errno != EEXIST:
raise raise

View file

@ -215,7 +215,7 @@ def to_bytes(obj, encoding='utf-8', errors='replace', nonstring=None):
return obj return obj
elif nonstring == 'simplerepr': elif nonstring == 'simplerepr':
try: try:
simple = binary_type(obj) simple = str(obj)
except UnicodeError: except UnicodeError:
try: try:
simple = obj.__str__() simple = obj.__str__()

View file

@ -242,7 +242,7 @@ class VariableManager:
break break
else: else:
raise AnsibleError("vars file %s was not found" % vars_file_item) raise AnsibleError("vars file %s was not found" % vars_file_item)
except UndefinedError, e: except UndefinedError as e:
continue continue
if not C.DEFAULT_PRIVATE_ROLE_VARS: if not C.DEFAULT_PRIVATE_ROLE_VARS:

View file

@ -57,7 +57,7 @@ def delete_aws_eips(get_func, attr, opts):
try: try:
eip_log = open(opts.eip_log, 'r').read().splitlines() eip_log = open(opts.eip_log, 'r').read().splitlines()
except IOError: except IOError:
print opts.eip_log, 'not found.' print('%s not found.' % opts.eip_log)
return return
for item in get_func(): for item in get_func():
@ -175,5 +175,5 @@ if __name__ == '__main__':
filters = {"tag:Name":opts.match_re.replace('^',''), "instance-state-name": ['running', 'pending', 'stopped' ]} filters = {"tag:Name":opts.match_re.replace('^',''), "instance-state-name": ['running', 'pending', 'stopped' ]}
delete_aws_instances(aws.get_all_instances(filters=filters), opts) delete_aws_instances(aws.get_all_instances(filters=filters), opts)
except KeyboardInterrupt, e: except KeyboardInterrupt as e:
print "\nExiting on user command." print("\nExiting on user command.")

View file

@ -73,5 +73,5 @@ if __name__ == '__main__':
delete_gce_resources(get_snapshots, 'name', opts) delete_gce_resources(get_snapshots, 'name', opts)
# Delete matching disks # Delete matching disks
delete_gce_resources(gce.list_volumes, 'name', opts) delete_gce_resources(gce.list_volumes, 'name', opts)
except KeyboardInterrupt, e: except KeyboardInterrupt as e:
print "\nExiting on user command." print("\nExiting on user command.")

4
test/integration/cleanup_rax.py Normal file → Executable file
View file

@ -54,8 +54,8 @@ def authenticate():
def prompt_and_delete(item, prompt, assumeyes): def prompt_and_delete(item, prompt, assumeyes):
if not assumeyes: if not assumeyes:
assumeyes = raw_input(prompt).lower() == 'y' assumeyes = raw_input(prompt).lower() == 'y'
assert (hasattr(item, 'delete') or hasattr(item, 'terminate'), assert hasattr(item, 'delete') or hasattr(item, 'terminate'), \
"Class <%s> has no delete or terminate attribute" % item.__class__) "Class <%s> has no delete or terminate attribute" % item.__class__
if assumeyes: if assumeyes:
if hasattr(item, 'delete'): if hasattr(item, 'delete'):
item.delete() item.delete()

View file

@ -6,6 +6,6 @@ if __name__ == '__main__':
import consul import consul
consul = consul.Consul(host='0.0.0.0', port=8500) consul = consul.Consul(host='0.0.0.0', port=8500)
consul.catalog.nodes() consul.catalog.nodes()
print "True" print("True")
except: except:
pass pass

View file

@ -20,7 +20,7 @@ else:
def createDaemon(): def createDaemon():
try: try:
pid = os.fork() pid = os.fork()
except OSError, e: except OSError as e:
raise Exception, "%s [%d]" % (e.strerror, e.errno) raise Exception, "%s [%d]" % (e.strerror, e.errno)
if (pid == 0): if (pid == 0):
@ -28,7 +28,7 @@ def createDaemon():
try: try:
pid = os.fork() pid = os.fork()
except OSError, e: except OSError as e:
raise Exception, "%s [%d]" % (e.strerror, e.errno) raise Exception, "%s [%d]" % (e.strerror, e.errno)
if (pid == 0): if (pid == 0):

View file

@ -38,5 +38,5 @@ if __name__ == '__main__':
gce.create_volume_snapshot(base_volume, name=prefix+'-snapshot') gce.create_volume_snapshot(base_volume, name=prefix+'-snapshot')
gce.create_volume( gce.create_volume(
size=10, name=prefix+'-extra', location='us-central1-a') size=10, name=prefix+'-extra', location='us-central1-a')
except KeyboardInterrupt, e: except KeyboardInterrupt as e:
print "\nExiting on user command." print("\nExiting on user command.")

View file

@ -314,7 +314,7 @@ class TestModuleUtilsBasic(unittest.TestCase):
base_params = dict( base_params = dict(
path = '/path/to/file', path = '/path/to/file',
mode = 0600, mode = 0o600,
owner = 'root', owner = 'root',
group = 'root', group = 'root',
seuser = '_default', seuser = '_default',
@ -711,9 +711,9 @@ class TestModuleUtilsBasic(unittest.TestCase):
) )
mock_stat1 = MagicMock() mock_stat1 = MagicMock()
mock_stat1.st_mode = 0444 mock_stat1.st_mode = 0o444
mock_stat2 = MagicMock() mock_stat2 = MagicMock()
mock_stat2.st_mode = 0660 mock_stat2.st_mode = 0o660
with patch('os.lstat', side_effect=[mock_stat1]): with patch('os.lstat', side_effect=[mock_stat1]):
self.assertEqual(am.set_mode_if_different('/path/to/file', None, True), True) self.assertEqual(am.set_mode_if_different('/path/to/file', None, True), True)
@ -723,13 +723,13 @@ class TestModuleUtilsBasic(unittest.TestCase):
with patch('os.lstat') as m: with patch('os.lstat') as m:
with patch('os.lchmod', return_value=None, create=True) as m_os: with patch('os.lchmod', return_value=None, create=True) as m_os:
m.side_effect = [mock_stat1, mock_stat2, mock_stat2] m.side_effect = [mock_stat1, mock_stat2, mock_stat2]
self.assertEqual(am.set_mode_if_different('/path/to/file', 0660, False), True) self.assertEqual(am.set_mode_if_different('/path/to/file', 0o660, False), True)
m_os.assert_called_with('/path/to/file', 0660) m_os.assert_called_with('/path/to/file', 0o660)
m.side_effect = [mock_stat1, mock_stat2, mock_stat2] m.side_effect = [mock_stat1, mock_stat2, mock_stat2]
am._symbolic_mode_to_octal = MagicMock(return_value=0660) am._symbolic_mode_to_octal = MagicMock(return_value=0o660)
self.assertEqual(am.set_mode_if_different('/path/to/file', 'o+w,g+w,a-r', False), True) self.assertEqual(am.set_mode_if_different('/path/to/file', 'o+w,g+w,a-r', False), True)
m_os.assert_called_with('/path/to/file', 0660) m_os.assert_called_with('/path/to/file', 0o660)
m.side_effect = [mock_stat1, mock_stat2, mock_stat2] m.side_effect = [mock_stat1, mock_stat2, mock_stat2]
am._symbolic_mode_to_octal = MagicMock(side_effect=Exception) am._symbolic_mode_to_octal = MagicMock(side_effect=Exception)
@ -737,7 +737,7 @@ class TestModuleUtilsBasic(unittest.TestCase):
m.side_effect = [mock_stat1, mock_stat2, mock_stat2] m.side_effect = [mock_stat1, mock_stat2, mock_stat2]
am.check_mode = True am.check_mode = True
self.assertEqual(am.set_mode_if_different('/path/to/file', 0660, False), True) self.assertEqual(am.set_mode_if_different('/path/to/file', 0o660, False), True)
am.check_mode = False am.check_mode = False
# FIXME: this isn't working yet # FIXME: this isn't working yet
@ -746,11 +746,11 @@ class TestModuleUtilsBasic(unittest.TestCase):
# del m_os.lchmod # del m_os.lchmod
# with patch('os.path.islink', return_value=False): # with patch('os.path.islink', return_value=False):
# with patch('os.chmod', return_value=None) as m_chmod: # with patch('os.chmod', return_value=None) as m_chmod:
# self.assertEqual(am.set_mode_if_different('/path/to/file/no_lchmod', 0660, False), True) # self.assertEqual(am.set_mode_if_different('/path/to/file/no_lchmod', 0o660, False), True)
# m_chmod.assert_called_with('/path/to/file', 0660) # m_chmod.assert_called_with('/path/to/file', 0o660)
# with patch('os.path.islink', return_value=True): # with patch('os.path.islink', return_value=True):
# with patch('os.chmod', return_value=None) as m_chmod: # with patch('os.chmod', return_value=None) as m_chmod:
# with patch('os.stat', return_value=mock_stat2): # with patch('os.stat', return_value=mock_stat2):
# self.assertEqual(am.set_mode_if_different('/path/to/file', 0660, False), True) # self.assertEqual(am.set_mode_if_different('/path/to/file', 0o660, False), True)
# m_chmod.assert_called_with('/path/to/file', 0660) # m_chmod.assert_called_with('/path/to/file', 0o660)

View file

@ -26,7 +26,7 @@ whitelist_externals = make
[testenv:py34] [testenv:py34]
commands = commands =
python --version python --version
python -m compileall -fq -x 'lib/ansible/module_utils' lib test contrib python -m compileall -fq -x 'lib/ansible/module_utils|lib/ansible/modules' lib test
make tests make tests
deps = -r{toxinidir}/test-requirements.txt deps = -r{toxinidir}/test-requirements.txt
whitelist_externals = make whitelist_externals = make