diff --git a/lib/ansible/plugins/terminal/ce.py b/lib/ansible/plugins/terminal/ce.py new file mode 100644 index 00000000000..e55952bbbca --- /dev/null +++ b/lib/ansible/plugins/terminal/ce.py @@ -0,0 +1,54 @@ +# +# (c) 2016 Red Hat Inc. +# +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . +# +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +import re + +from ansible.plugins.terminal import TerminalBase +from ansible.errors import AnsibleConnectionFailure + + +class TerminalModule(TerminalBase): + + terminal_stdout_re = [ + re.compile(r'[\r\n]?<.+>(?:\s*)$'), + re.compile(r'[\r\n]?\[.+\](?:\s*)$'), + ] + + terminal_stderr_re = [ + re.compile(r"% ?Error: "), + re.compile(r"^% \w+", re.M), + re.compile(r"% ?Bad secret"), + re.compile(r"invalid input", re.I), + re.compile(r"(?:incomplete|ambiguous) command", re.I), + re.compile(r"connection timed out", re.I), + re.compile(r"[^\r\n]+ not found", re.I), + re.compile(r"'[^']' +returned error code: ?\d+"), + re.compile(r"syntax error"), + re.compile(r"unknown command"), + re.compile(r"Error\[\d+\]: ", re.I), + re.compile(r"Error:", re.I) + ] + + def on_open_shell(self): + try: + self._exec_cli_command('screen-length 0 temporary') + except AnsibleConnectionFailure: + raise AnsibleConnectionFailure('unable to set terminal parameters')