Map shim / per-minion retcodes to the salt-ssh CLI process exit code. Codes for thin transfer, checksum, and similar infrastructure faults are returned unchanged so callers can distinguish them. Typical execution failures (including module and state retcodes) are collapsed to :
(retcode)
| 87 | |
| 88 | |
| 89 | def _ssh_cli_process_exit_code(retcode): |
| 90 | """ |
| 91 | Map shim / per-minion retcodes to the salt-ssh CLI process exit code. |
| 92 | |
| 93 | Codes for thin transfer, checksum, and similar infrastructure faults are |
| 94 | returned unchanged so callers can distinguish them. Typical execution |
| 95 | failures (including module and state retcodes) are collapsed to |
| 96 | :const:`~salt.defaults.exitcodes.EX_AGGREGATE`, matching salt-ssh tests and |
| 97 | the documented "one of a collection failed" semantics. |
| 98 | """ |
| 99 | if retcode == salt.defaults.exitcodes.EX_OK: |
| 100 | return retcode |
| 101 | preserved = ( |
| 102 | salt.defaults.exitcodes.EX_THIN_PYTHON_INVALID, |
| 103 | salt.defaults.exitcodes.EX_THIN_DEPLOY, |
| 104 | salt.defaults.exitcodes.EX_THIN_CHECKSUM, |
| 105 | salt.defaults.exitcodes.EX_MOD_DEPLOY, |
| 106 | salt.defaults.exitcodes.EX_SCP_NOT_FOUND, |
| 107 | salt.defaults.exitcodes.EX_CANTCREAT, |
| 108 | salt.defaults.exitcodes.EX_SOFTWARE, |
| 109 | ) |
| 110 | if retcode in preserved: |
| 111 | return retcode |
| 112 | return salt.defaults.exitcodes.EX_AGGREGATE |
| 113 | |
| 114 | |
| 115 | # METHODOLOGY: |