Merge pull request #12119 from mgedmin/py3k

Some steps towards Python 3 support
pull/12131/head
Toshio Kuratomi 9 years ago
commit 6907166667

@ -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):

@ -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 = ''

@ -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)

@ -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)

@ -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):

@ -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

@ -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)

@ -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)

@ -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:

@ -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)

@ -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)))

@ -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

@ -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:

@ -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

@ -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:

@ -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() == '':

@ -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

@ -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

@ -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)
@ -370,7 +369,7 @@ class Role(Base, Become, Conditional, Taggable):
def deserialize(self, data, include_deps=True): def deserialize(self, data, include_deps=True):
self._role_name = data.get('_role_name', '') self._role_name = data.get('_role_name', '')
self._role_path = data.get('_role_path', '') self._role_path = data.get('_role_path', '')
self._role_vars = data.get('_role_vars', dict()) self._role_vars = data.get('_role_vars', dict())
self._role_params = data.get('_role_params', dict()) self._role_params = data.get('_role_params', dict())
self._default_vars = data.get('_default_vars', dict()) self._default_vars = data.get('_default_vars', dict())
self._had_task_run = data.get('_had_task_run', dict()) self._had_task_run = data.get('_had_task_run', dict())

@ -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")

@ -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

@ -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):

@ -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):

@ -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)
) )

@ -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

@ -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)

@ -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

@ -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'])

@ -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

@ -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()

@ -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)

@ -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

@ -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

@ -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))

@ -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

@ -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:

@ -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

@ -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__()

@ -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:

@ -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.")

@ -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.")

@ -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()

@ -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

@ -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):

@ -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.")

@ -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)

@ -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

Loading…
Cancel
Save