From 71a6dcdf3e528bd088b1399b9dcf3cfb62ae0f36 Mon Sep 17 00:00:00 2001 From: Nathaniel Case Date: Fri, 17 Nov 2017 11:33:54 -0500 Subject: [PATCH] Fixes eos sending 'None' to device (#33015) * Fix network_cli sometimes sending 'None' to device * Also fix `--become-method=enable` --- lib/ansible/constants.py | 8 +++++--- lib/ansible/plugins/connection/network_cli.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/ansible/constants.py b/lib/ansible/constants.py index bfb721b3e62..48f57d6068b 100644 --- a/lib/ansible/constants.py +++ b/lib/ansible/constants.py @@ -59,7 +59,7 @@ def set_constant(name, value, export=vars()): # CONSTANTS ### yes, actual ones -BECOME_METHODS = ['sudo', 'su', 'pbrun', 'pfexec', 'doas', 'dzdo', 'ksu', 'runas', 'pmrun'] +BECOME_METHODS = ['sudo', 'su', 'pbrun', 'pfexec', 'doas', 'dzdo', 'ksu', 'runas', 'pmrun', 'enable'] BECOME_ERROR_STRINGS = { 'sudo': 'Sorry, try again.', 'su': 'Authentication failure', @@ -68,7 +68,8 @@ BECOME_ERROR_STRINGS = { 'doas': 'Permission denied', 'dzdo': '', 'ksu': 'Password incorrect', - 'pmrun': 'You are not permitted to run this command' + 'pmrun': 'You are not permitted to run this command', + 'enable': '', } # FIXME: deal with i18n BECOME_MISSING_STRINGS = { 'sudo': 'sorry, a password is required to run sudo', @@ -78,7 +79,8 @@ BECOME_MISSING_STRINGS = { 'doas': 'Authorization required', 'dzdo': '', 'ksu': 'No password given', - 'pmrun': '' + 'pmrun': '', + 'enable': '', } # FIXME: deal with i18n BLACKLIST_EXTS = ('.pyc', '.pyo', '.swp', '.bak', '~', '.rpm', '.md', '.txt') BOOL_TRUE = BOOLEANS_TRUE diff --git a/lib/ansible/plugins/connection/network_cli.py b/lib/ansible/plugins/connection/network_cli.py index bce7d0b9d09..167d001bb54 100644 --- a/lib/ansible/plugins/connection/network_cli.py +++ b/lib/ansible/plugins/connection/network_cli.py @@ -116,7 +116,7 @@ class Connection(ConnectionBase): cmd = json.loads(to_text(cmd, errors='surrogate_or_strict')) kwargs = {'command': to_bytes(cmd['command'], errors='surrogate_or_strict')} for key in ('prompt', 'answer', 'send_only'): - if key in cmd: + if cmd.get(key) is not None: kwargs[key] = to_bytes(cmd[key], errors='surrogate_or_strict') return self.send(**kwargs) except ValueError: