From 0c6ce31f76f69ccea0ca53ba944a3b2f24a05e40 Mon Sep 17 00:00:00 2001 From: Marius Gedminas Date: Thu, 27 Aug 2015 09:16:11 +0300 Subject: [PATCH] Use 'except ... as' syntax This syntax works on Python 2.6 through 3.x. lib/ansible/module_utils (and lib/ansible/modules) need to support Python 2.4, so I didn't touch those. --- lib/ansible/cli/doc.py | 2 +- lib/ansible/cli/pull.py | 2 +- lib/ansible/executor/process/worker.py | 4 ++-- lib/ansible/executor/task_executor.py | 6 +++--- lib/ansible/inventory/__init__.py | 4 ++-- lib/ansible/inventory/script.py | 4 ++-- lib/ansible/playbook/conditional.py | 2 +- lib/ansible/plugins/cache/jsonfile.py | 12 ++++++------ lib/ansible/plugins/filter/core.py | 2 +- lib/ansible/plugins/filter/mathstuff.py | 6 +++--- lib/ansible/plugins/lookup/consul_kv.py | 6 +++--- lib/ansible/plugins/lookup/credstash.py | 2 +- lib/ansible/plugins/lookup/dig.py | 8 ++++---- lib/ansible/plugins/lookup/ini.py | 4 ++-- lib/ansible/plugins/lookup/nested.py | 2 +- lib/ansible/plugins/lookup/sequence.py | 2 +- lib/ansible/plugins/lookup/shelvefile.py | 2 +- lib/ansible/plugins/strategies/__init__.py | 6 +++--- lib/ansible/plugins/strategies/free.py | 4 ++-- lib/ansible/plugins/strategies/linear.py | 6 +++--- lib/ansible/template/__init__.py | 10 +++++----- lib/ansible/utils/path.py | 2 +- lib/ansible/vars/__init__.py | 2 +- tox.ini | 2 +- 24 files changed, 51 insertions(+), 51 deletions(-) diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py index 4a56e68e1f1..e27d85d7990 100644 --- a/lib/ansible/cli/doc.py +++ b/lib/ansible/cli/doc.py @@ -120,7 +120,7 @@ class DocCLI(CLI): # this typically means we couldn't even parse the docstring, not just that the YAML is busted, # probably a quoting issue. raise AnsibleError("Parsing produced an empty object.") - except Exception, e: + except Exception as e: self.display.vvv(traceback.print_exc()) raise AnsibleError("module %s missing documentation (or could not parse documentation): %s\n" % (module, str(e))) diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py index 3b61c473c35..0c33568d3d0 100644 --- a/lib/ansible/cli/pull.py +++ b/lib/ansible/cli/pull.py @@ -196,7 +196,7 @@ class PullCLI(CLI): os.chdir('/') try: 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))) return rc diff --git a/lib/ansible/executor/process/worker.py b/lib/ansible/executor/process/worker.py index 5fb4d6250b6..7968b41679d 100644 --- a/lib/ansible/executor/process/worker.py +++ b/lib/ansible/executor/process/worker.py @@ -67,7 +67,7 @@ class WorkerProcess(multiprocessing.Process): if fileno is not None: try: self._new_stdin = os.fdopen(os.dup(fileno)) - except OSError, e: + except OSError as e: # couldn't dupe stdin, most likely because it's # not a valid file descriptor, so we just rely on # using the one that was passed in @@ -137,7 +137,7 @@ class WorkerProcess(multiprocessing.Process): except: # FIXME: most likely an abort, catch those kinds of errors specifically break - except Exception, e: + except Exception as e: debug("WORKER EXCEPTION: %s" % e) debug("WORKER EXCEPTION: %s" % traceback.format_exc()) try: diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py index 4b372cf4c72..62923d4317c 100644 --- a/lib/ansible/executor/task_executor.py +++ b/lib/ansible/executor/task_executor.py @@ -125,14 +125,14 @@ class TaskExecutor: result = json.dumps(res) debug("done dumping result, returning") return result - except AnsibleError, e: + except AnsibleError as e: return dict(failed=True, msg=to_unicode(e, nonstring='simplerepr')) finally: try: self._connection.close() except AttributeError: pass - except Exception, e: + except Exception as e: debug("error closing connection: %s" % to_unicode(e)) def _get_loop_items(self): @@ -187,7 +187,7 @@ class TaskExecutor: try: tmp_task = self._task.copy() - except AnsibleParserError, e: + except AnsibleParserError as e: results.append(dict(failed=True, msg=str(e))) continue diff --git a/lib/ansible/inventory/__init__.py b/lib/ansible/inventory/__init__.py index a3bb0bba477..1e6efeefdd4 100644 --- a/lib/ansible/inventory/__init__.py +++ b/lib/ansible/inventory/__init__.py @@ -143,7 +143,7 @@ class Inventory(object): return re.search(pattern_str[1:], str) else: return fnmatch.fnmatch(str, pattern_str) - except Exception, e: + except Exception as e: raise AnsibleError('invalid host pattern: %s' % 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)) else: pattern = re.compile(pattern_str[1:]) - except Exception, e: + except Exception as e: raise AnsibleError('invalid host pattern: %s' % pattern_str) for item in items: diff --git a/lib/ansible/inventory/script.py b/lib/ansible/inventory/script.py index 91549d78fb2..6e64b0e8948 100644 --- a/lib/ansible/inventory/script.py +++ b/lib/ansible/inventory/script.py @@ -46,7 +46,7 @@ class InventoryScript: cmd = [ self.filename, "--list" ] try: 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)) (stdout, stderr) = sp.communicate() @@ -153,7 +153,7 @@ class InventoryScript: cmd = [self.filename, "--host", host.name] try: 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)) (out, err) = sp.communicate() if out.strip() == '': diff --git a/lib/ansible/playbook/conditional.py b/lib/ansible/playbook/conditional.py index f0acbbdb3ff..4fa600734fe 100644 --- a/lib/ansible/playbook/conditional.py +++ b/lib/ansible/playbook/conditional.py @@ -66,7 +66,7 @@ class Conditional: for conditional in self.when: if not self._check_conditional(conditional, templar, all_vars): return False - except Exception, e: + except Exception as e: raise AnsibleError("The conditional check '%s' failed. The error was: %s" % (conditional, e), obj=ds) return True diff --git a/lib/ansible/plugins/cache/jsonfile.py b/lib/ansible/plugins/cache/jsonfile.py index 04e05f9b0ce..3fc3458fb91 100644 --- a/lib/ansible/plugins/cache/jsonfile.py +++ b/lib/ansible/plugins/cache/jsonfile.py @@ -45,7 +45,7 @@ class CacheModule(BaseCacheModule): if not os.path.exists(self._cache_dir): try: 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))) return None @@ -60,7 +60,7 @@ class CacheModule(BaseCacheModule): cachefile = "%s/%s" % (self._cache_dir, key) try: 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))) pass else: @@ -81,7 +81,7 @@ class CacheModule(BaseCacheModule): cachefile = "%s/%s" % (self._cache_dir, key) try: 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))) pass else: @@ -94,7 +94,7 @@ class CacheModule(BaseCacheModule): cachefile = "%s/%s" % (self._cache_dir, key) try: st = os.stat(cachefile) - except (OSError,IOError), e: + except (OSError,IOError) as e: if e.errno == errno.ENOENT: return False else: @@ -126,7 +126,7 @@ class CacheModule(BaseCacheModule): try: st = os.stat(cachefile) return True - except (OSError,IOError), e: + except (OSError,IOError) as e: if e.errno == errno.ENOENT: return False else: @@ -137,7 +137,7 @@ class CacheModule(BaseCacheModule): del self._cache[key] try: os.remove("%s/%s" % (self._cache_dir, key)) - except (OSError,IOError), e: + except (OSError,IOError) as e: pass #TODO: only pass on non existing? def flush(self): diff --git a/lib/ansible/plugins/filter/core.py b/lib/ansible/plugins/filter/core.py index aa7464c3231..39303af4b6e 100644 --- a/lib/ansible/plugins/filter/core.py +++ b/lib/ansible/plugins/filter/core.py @@ -152,7 +152,7 @@ def version_compare(value, version, operator='eq', strict=False): try: method = getattr(py_operator, operator) return method(Version(str(value)), Version(str(version))) - except Exception, e: + except Exception as e: raise errors.AnsibleFilterError('Version comparison: %s' % e) def regex_escape(string): diff --git a/lib/ansible/plugins/filter/mathstuff.py b/lib/ansible/plugins/filter/mathstuff.py index 516ef1c6774..6029ed03007 100644 --- a/lib/ansible/plugins/filter/mathstuff.py +++ b/lib/ansible/plugins/filter/mathstuff.py @@ -80,14 +80,14 @@ def logarithm(x, base=math.e): return math.log10(x) else: 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)) def power(x, y): try: 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)) @@ -97,7 +97,7 @@ def inversepower(x, base=2): return math.sqrt(x) else: 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)) diff --git a/lib/ansible/plugins/lookup/consul_kv.py b/lib/ansible/plugins/lookup/consul_kv.py index 5da1a5bef00..47eaa71bc8a 100755 --- a/lib/ansible/plugins/lookup/consul_kv.py +++ b/lib/ansible/plugins/lookup/consul_kv.py @@ -67,7 +67,7 @@ except ImportError: try: import consul HAS_CONSUL = True -except ImportError, e: +except ImportError as e: HAS_CONSUL = False @@ -104,7 +104,7 @@ class LookupModule(LookupBase): values.append(r['Value']) else: values.append(results[1]['Value']) - except Exception, e: + except Exception as e: raise AnsibleError( "Error locating '%s' in kv store. Error was %s" % (term, e)) @@ -127,7 +127,7 @@ class LookupModule(LookupBase): name, value = param.split('=') assert name in paramvals, "% not a valid consul lookup parameter" % name paramvals[name] = value - except (ValueError, AssertionError), e: + except (ValueError, AssertionError) as e: raise AnsibleError(e) return paramvals diff --git a/lib/ansible/plugins/lookup/credstash.py b/lib/ansible/plugins/lookup/credstash.py index 9d548baea6e..41cc6b894fe 100644 --- a/lib/ansible/plugins/lookup/credstash.py +++ b/lib/ansible/plugins/lookup/credstash.py @@ -41,7 +41,7 @@ class LookupModule(LookupBase): val = credstash.getSecret(term, **kwargs) except credstash.ItemNotFound: 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)) ret.append(val) diff --git a/lib/ansible/plugins/lookup/dig.py b/lib/ansible/plugins/lookup/dig.py index acd73ddc197..a3ba43879b1 100644 --- a/lib/ansible/plugins/lookup/dig.py +++ b/lib/ansible/plugins/lookup/dig.py @@ -141,7 +141,7 @@ class LookupModule(LookupBase): try: nsaddr = dns.resolver.query(ns)[0].address nameservers.append(nsaddr) - except Exception, e: + except Exception as e: raise AnsibleError("dns lookup NS: ", str(e)) myres.nameservers = nameservers continue @@ -176,7 +176,7 @@ class LookupModule(LookupBase): domain = n.to_text() except dns.exception.SyntaxError: pass - except Exception, e: + except Exception as e: raise AnsibleError("dns.reversename unhandled exception", str(e)) try: @@ -196,7 +196,7 @@ class LookupModule(LookupBase): rd['ttl'] = answers.rrset.ttl ret.append(rd) - except Exception, e: + except Exception as e: ret.append(str(e)) except dns.resolver.NXDOMAIN: @@ -205,7 +205,7 @@ class LookupModule(LookupBase): ret.append("") except dns.resolver.Timeout: ret.append('') - except dns.exception.DNSException, e: + except dns.exception.DNSException as e: raise AnsibleError("dns.resolver unhandled exception", e) return ret diff --git a/lib/ansible/plugins/lookup/ini.py b/lib/ansible/plugins/lookup/ini.py index 7ea8f92aaf5..9c1adc90ca6 100644 --- a/lib/ansible/plugins/lookup/ini.py +++ b/lib/ansible/plugins/lookup/ini.py @@ -47,7 +47,7 @@ class LookupModule(LookupBase): # Retrieve a single value try: value = self.cp.get(section, key) - except ConfigParser.NoOptionError, e: + except ConfigParser.NoOptionError as e: return dflt return value @@ -76,7 +76,7 @@ class LookupModule(LookupBase): name, value = param.split('=') assert(name in paramvals) paramvals[name] = value - except (ValueError, AssertionError), e: + except (ValueError, AssertionError) as e: raise errors.AnsibleError(e) path = self._loader.path_dwim_relative(basedir, 'files', paramvals['file']) diff --git a/lib/ansible/plugins/lookup/nested.py b/lib/ansible/plugins/lookup/nested.py index ff865c28eec..2593aa5d9fd 100644 --- a/lib/ansible/plugins/lookup/nested.py +++ b/lib/ansible/plugins/lookup/nested.py @@ -32,7 +32,7 @@ class LookupModule(LookupBase): for x in terms: try: 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) results.append(intermediate) return results diff --git a/lib/ansible/plugins/lookup/sequence.py b/lib/ansible/plugins/lookup/sequence.py index a6d133b3f97..319173d5a9f 100644 --- a/lib/ansible/plugins/lookup/sequence.py +++ b/lib/ansible/plugins/lookup/sequence.py @@ -186,7 +186,7 @@ class LookupModule(LookupBase): try: if not self.parse_simple_args(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)) self.sanity_check() diff --git a/lib/ansible/plugins/lookup/shelvefile.py b/lib/ansible/plugins/lookup/shelvefile.py index 89e393694b3..8883dc06b92 100644 --- a/lib/ansible/plugins/lookup/shelvefile.py +++ b/lib/ansible/plugins/lookup/shelvefile.py @@ -55,7 +55,7 @@ class LookupModule(LookupBase): assert(name in paramvals) paramvals[name] = value - except (ValueError, AssertionError), e: + except (ValueError, AssertionError) as e: # In case "file" or "key" are not present raise AnsibleError(e) diff --git a/lib/ansible/plugins/strategies/__init__.py b/lib/ansible/plugins/strategies/__init__.py index f6bb3b03aa5..834569dd8ad 100644 --- a/lib/ansible/plugins/strategies/__init__.py +++ b/lib/ansible/plugins/strategies/__init__.py @@ -382,7 +382,7 @@ class StrategyBase: data = self._loader.load_from_file(included_file._filename) if data is None: return [] - except AnsibleError, e: + except AnsibleError as e: for host in included_file._hosts: tr = TaskResult(host=host, task=included_file._task, return_data=dict(failed=True, reason=str(e))) iterator.mark_host_failed(host) @@ -455,7 +455,7 @@ class StrategyBase: loader=self._loader, variable_manager=self._variable_manager ) - except AnsibleError, e: + except AnsibleError as e: return False if len(included_files) > 0: @@ -475,7 +475,7 @@ class StrategyBase: # and add the new blocks to the list of handler blocks handler_block.block.extend(block.block) #iterator._play.handlers.extend(new_blocks) - except AnsibleError, e: + except AnsibleError as e: for host in included_file._hosts: iterator.mark_host_failed(host) self._tqm._failed_hosts[host.name] = True diff --git a/lib/ansible/plugins/strategies/free.py b/lib/ansible/plugins/strategies/free.py index 5bc0d8db36e..aed71caef6b 100644 --- a/lib/ansible/plugins/strategies/free.py +++ b/lib/ansible/plugins/strategies/free.py @@ -144,7 +144,7 @@ class StrategyModule(StrategyBase): try: 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 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 try: new_blocks = self._load_included_file(included_file, iterator=iterator) - except AnsibleError, e: + except AnsibleError as e: for host in included_file._hosts: iterator.mark_host_failed(host) self._display.warning(str(e)) diff --git a/lib/ansible/plugins/strategies/linear.py b/lib/ansible/plugins/strategies/linear.py index 2e6b3b23862..35c2cb50671 100644 --- a/lib/ansible/plugins/strategies/linear.py +++ b/lib/ansible/plugins/strategies/linear.py @@ -258,7 +258,7 @@ class StrategyModule(StrategyBase): try: 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 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 try: new_blocks = self._load_included_file(included_file, iterator=iterator) - except AnsibleError, e: + except AnsibleError as e: for host in included_file._hosts: iterator.mark_host_failed(host) self._display.warning(str(e)) @@ -296,7 +296,7 @@ class StrategyModule(StrategyBase): iterator.add_tasks(host, all_blocks[host]) 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) # most likely an abort, return failed return False diff --git a/lib/ansible/template/__init__.py b/lib/ansible/template/__init__.py index 1a1465139ac..1f4f4019239 100644 --- a/lib/ansible/template/__init__.py +++ b/lib/ansible/template/__init__.py @@ -261,7 +261,7 @@ class Templar: ran = instance.run(loop_terms, variables=self._available_variables, **kwargs) except (AnsibleUndefinedVariable, UndefinedError) as e: raise AnsibleUndefinedVariable(e) - except Exception, e: + except Exception as e: if self._fail_on_lookup_errors: raise ran = None @@ -299,9 +299,9 @@ class Templar: try: t = myenv.from_string(data) - except TemplateSyntaxError, e: + except TemplateSyntaxError as e: raise AnsibleError("template error while templating string: %s" % str(e)) - except Exception, e: + except Exception as e: if 'recursion' in str(e): raise AnsibleError("recursive loop detected in template string: %s" % data) else: @@ -317,7 +317,7 @@ class Templar: try: res = j2_concat(rf) - except TypeError, te: + except TypeError as te: if 'StrictUndefined' in str(te): raise AnsibleUndefinedVariable( "Unable to look up a name or access an attribute in template string. " + \ @@ -338,7 +338,7 @@ class Templar: res += '\n' * (data_newlines - res_newlines) return res - except (UndefinedError, AnsibleUndefinedVariable), e: + except (UndefinedError, AnsibleUndefinedVariable) as e: if fail_on_undefined: raise AnsibleUndefinedVariable(e) else: diff --git a/lib/ansible/utils/path.py b/lib/ansible/utils/path.py index b271e7ed4bc..0f9e641b74e 100644 --- a/lib/ansible/utils/path.py +++ b/lib/ansible/utils/path.py @@ -45,6 +45,6 @@ def makedirs_safe(path, mode=None): os.makedirs(path, mode) else: os.makedirs(path) - except OSError, e: + except OSError as e: if e.errno != EEXIST: raise diff --git a/lib/ansible/vars/__init__.py b/lib/ansible/vars/__init__.py index 27f72212529..4eeedb1b05b 100644 --- a/lib/ansible/vars/__init__.py +++ b/lib/ansible/vars/__init__.py @@ -242,7 +242,7 @@ class VariableManager: break else: raise AnsibleError("vars file %s was not found" % vars_file_item) - except UndefinedError, e: + except UndefinedError as e: continue if not C.DEFAULT_PRIVATE_ROLE_VARS: diff --git a/tox.ini b/tox.ini index 1031d051e94..e2f68560f82 100644 --- a/tox.ini +++ b/tox.ini @@ -26,7 +26,7 @@ whitelist_externals = make [testenv:py34] commands = 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 contrib make tests deps = -r{toxinidir}/test-requirements.txt whitelist_externals = make