From 15e97fd2916176fe850850fe90983ac95a1f8e7b Mon Sep 17 00:00:00 2001 From: Erik Johnson Date: Mon, 11 Jun 2018 14:46:58 -0500 Subject: [PATCH] Show recommendations for salt-ssh cross-version python errors This shows more accurate information on how to resolve version issues (e.g. master only has Salt deps installed for Python 3 but remote host has no Python 3 installed). Use parenthesis for line continuation --- salt/client/ssh/__init__.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/salt/client/ssh/__init__.py b/salt/client/ssh/__init__.py index f1300b5698..8a85cc2480 100644 --- a/salt/client/ssh/__init__.py +++ b/salt/client/ssh/__init__.py @@ -1387,6 +1387,30 @@ ARGS = {arguments}\n'''.format(config=self.minion_config, perm_error_fmt = 'Permissions problem, target user may need '\ 'to be root or use sudo:\n {0}' + def _version_mismatch_error(): + messages = { + 2: { + 6: 'Install Python 2.7 / Python 3 Salt dependencies on the Salt SSH master \n' + 'to interact with Python 2.7 / Python 3 targets', + 7: 'Install Python 2.6 / Python 3 Salt dependencies on the Salt SSH master \n' + 'to interact with Python 2.6 / Python 3 targets', + }, + 3: { + 'default': '- Install Python 2.6/2.7 Salt dependencies on the Salt SSH \n' + ' master to interact with Python 2.6/2.7 targets\n' + '- Install Python 3 on the target machine(s)', + }, + 'default': 'Matching major/minor Python release (>=2.6) needed both on the Salt SSH \n' + 'master and target machine', + } + major, minor = sys.version_info[:2] + help_msg = ( + messages.get(major, {}).get(minor) + or messages.get(major, {}).get('default') + or messages['default'] + ) + return 'Python version error. Recommendation(s) follow:\n' + help_msg + errors = [ ( (), @@ -1396,7 +1420,7 @@ ARGS = {arguments}\n'''.format(config=self.minion_config, ( (salt.defaults.exitcodes.EX_THIN_PYTHON_INVALID,), 'Python interpreter is too old', - 'salt requires python 2.6 or newer on target hosts, must have same major version as origin host' + _version_mismatch_error() ), ( (salt.defaults.exitcodes.EX_THIN_CHECKSUM,), -- 2.13.7