summaryrefslogtreecommitdiff
path: root/bin/ansible-connection
Commit message (Collapse)AuthorAgeFilesLines
* move CLI entrypoints under ansible package (#60004)Matt Davis2019-08-021-335/+1
| | | | * needed so ansible-test can always find the right ones to copy to a target * renamed the underlying scripts to be properly accessible as Python modules
* Add check to log jsonrpc request/response (#54606)Ganesh Nalawade2019-04-031-2/+7
| | | | | | | | | | | Fixes #54605 Add check in ansible-connection to check if persistent log message is enabled, if yes log the jsonrpc request in log file. With the current approach the _messages queue in `NetworkConnectionBase` is getting overwritten and response for `pop_message` api inovcation from ansible-connection is not recevied at the module side.
* Log device interaction and push labeled logs back to controller (#50028)Nathaniel Case2018-12-211-1/+2
| | | | | | | | | | | | * Add session tracing support for network_cli, netconf and httapi connection * Add `persistent_log_messages` configuration option to log device inteaction in log file for network_cli, netconf and httapi connection type * Log jsonrpc request and response in log file is configuration option is enabled * Update docs to talk about warning shown when persistent_log_messages is on
* Fix some handling of log messages from ansible-connection (#50214)Nathaniel Case2018-12-201-1/+3
|
* Allow persistent connection plugins to queue messages back to ↵Nathaniel Case2018-12-191-9/+11
| | | | | | | | | | | | ansible-connection (#49977) * Connections can queue messages to be returned from ansible-connection * Provide fallback for invalid display level * Strip display from plugins * Route messages through helper method to try to avoid improper appends
* Don't fail if a remote_addr with a '/' hits ansible_connection (#49781)Nathaniel Case2018-12-171-1/+6
| | | | | | | | | | | | * Fail if a remote_addr with a '/' hist ansible_connection This is _probably_ a CIDR block, but anything with a slash will fail, so no need to try to parse to make sure * Locks are now per-socket_path. Locks use the same value as socket_path. Locks are also cleaned up in shutdown like sockets.
* Update bare exceptions to specify Exception.Toshio Kuratomi2018-12-161-1/+1
| | | | | This will keep us from accidentally catching program-exiting exceptions like KeyboardInterupt and SystemExit.
* use ansible json encoding/decoding to avoid errors (#47214)Brian Coca2018-11-161-4/+5
| | | | tackle known issues with (de)serializing certain objects fixes #47200
* Remove runtime usage of pkg_resources.Toshio Kuratomi2018-10-181-4/+0
| | | | | | This should provide a startup time speed boost at the expense of making it harder to get ansible to use newer versions of packages than are provided by the platform.
* Clean up after ansible-connection if failure occurred in start() (#45929)Nathaniel Case2018-09-201-0/+2
|
* Move plugin option settings. (#44774)Nathaniel Case2018-08-281-4/+0
| | | | | | * Move plugin option settings. * Add default value and clear after use.
* Prevent data being truncated over persistent connection socket (#43885)Nathaniel Case2018-08-101-19/+20
| | | | | | | | | | | | | | | | | | * Change how data is sent to the persistent connection socket. We can't rely on readline(), so send the size of the data first. We can then read that many bytes from the stream on the recieving end. * Set pty to noncanonical mode before sending * Now that we send data length, we don't need a sentinel anymore * Copy socket changes to persistent, too * Use os.write instead of fdopen()ing and using that. * Follow pickle with sha1sum of pickle * Swap order of vars and init being passed to ansible-connection
* Raise exception if command timeout is triggered (#43078)Ganesh Nalawade2018-08-021-9/+16
| | | | | | | | | | | | | | | | | | | | * Raise exception if command timeout is triggered Fixes #43076 If persistent connection timeout is triggered, riase exception which will be send over socket to module code instead of silently shutting down the socket. * Fix CI failure * Fix review comment * Fix CI failure * Fix review comment * Fix review comment
* \r does not round-trip the local socket, escape and restore on the other ↵Nathaniel Case2018-08-011-0/+2
| | | | side (#43507)
* Enable setting options for cliconf and other implementation plugins (if set ↵Ganesh Nalawade2018-07-301-0/+5
| | | | | | | | | | | | | to configurable) (#43368) * Enable setting setting cliconf plugin options Fixes #43367 * Add support to set configuration options for implementation plugins (eg: cliconf) from `ansible-connection` * Fix CI failure
* Remove unused imports from /bin and lib/ansible/cli (#43440)joren4852018-07-301-1/+1
| | | | | | * Remove unused imports from lib/ansible/cli * Remove unused imports from bin/
* Support setting persistent command timeout per task basis (#42847)Ganesh Nalawade2018-07-201-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Support setting persistent command timeout per task basis Fixes #42200 * Add variable `ansible_command_timeout` to `persistent_command_timeout` option for `network_cli` and `netconf` connection plugin so that the command_timeout can be set per task basis while using `connection=network_cli` or `connection=netconf` eg: ``` - name: run copy command ios_command: commands: - show version vars: ansible_command_timeout: 40 ``` * Modify `ansible-connection` to read command_timeout value from connection plugin options. * Add `ansible_command_timeout` to `persistent_command_timeout` option in `persistent` to support `connection=local` so that it is backward compatibilty * To support `connection=local` pass the timeout value as variables from persistent connection to `ansible-connection` instead of sending it in playcontext * Fix CI failure * Fix review comment
* Fixing issues with httpapi (#40388)Nathaniel Case2018-05-211-3/+14
| | | | | | | | | | | | | | * I seem to have forgotten the back half of tests * Set http timeout from persistent_command_timeout * Tweak URL generation and provide URL on error * Push var_options to connection process * Don't wait forever if coming from persistent * Don't send the entire contents of variables to ansible-connection
* Pull persistent connection parameters via get_option (#39367)Ricardo Carrillo Cruz2018-05-161-2/+3
| | | | | | | | | | | | | | | | | | | | | * WIP Pull persistent connection parameters via get_option * Fix pep8 * Add use_persistent_connection setting to paramiko_ssh plugin * Add vars section to persistent_command_timeout setting and prevail provider values over config manager * Use persistent_command_timeout on network_cli instead of timeout * Fix unit tests If we don't call loader to get network_cli, then _load_name is never set and we get KeyError. * Pull persistent_command_timeout via config manager for ios connection local * Pull persistent_command_timeout via config manager on connection local
* Properly unlock the socket file lock in ansible-connection (#39223)James Cammarata2018-04-251-46/+57
| | | | | | | | | | | | | Also use a lock file per host, rather than one global file lock. Commit 9c0275a879d introduced a bug where the lock file was only being unlocked by the child PID of the resulting fork done in ansible-connection. This causes delays when a large inventory causes a lot of contention on that global lock. This patch fixes the problem by ensuring the lock is released regardless of the fork condition, and also to use a lock file based on the remote address of the target host, removing the global lock bottleneck. Fixes #38892
* Acquire `display`ed messages from forked process (#36064)Nathaniel Case2018-02-131-0/+3
| | | Also restore verbosity value from loaded `play_context`
* Fix debug logs failing with persistent connection (#33049)Ganesh Nalawade2018-01-251-51/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix debug logs failing with persistent connection Fixes #33047 * As debug logs are written on stdout, it interrupts the communication between ansible-connection(background) process and main process. To avoid this add a string similar to exactly identify the response string. * Remove unwanted code in ansible-connection * Fix review comments * Fix spurious log emitted on ansible-connection stdout issue * ansible-connection which runs as a background process sends a json string (contains response received from remote device) to foreground ansible-playbook process over stdout. * If in case debug flag is enabled the connection_loader api invoked from ansible-connection `ssh = connection_loader.get('ssh', class_only=True)` results in emitting debug logs on stdout. This spurious log interfere with the actual response and results in failure while reading json string in ansible-playbook process * To avoid this save stdout of ansible-connection and redirect it string buffer to accumulate all the logs emitted by core API's * Add these logs in `result['messages']` which is send a json string after reinstating saved stdout * Remove unwanted code in ansible-connection * Fix review comment
* Add parent pid to persistent connection socket path hash (#33518)Ganesh Nalawade2017-12-151-5/+7
| | | | | | | | | | | | | | * Add parent pid to persistent connection socket path hash Fixes #33192 * Add parent pid in persistent connection socket path hash to avoid using same socket path for multiple simultaneous connection to same remote host. * Ensure unique persistent socket path for each ansible-playbook run * Fix CI failures
* shuts down persistent connections at end of play run (#32825)Peter Sprygada2017-11-221-19/+17
| | | | | This change will now track any created persistent connection and shut it down at the end of the play run. This change also includes an update to properly honor the reset_connection meta handler.
* Config continued (#31024)Brian Coca2017-11-161-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * included inventory and callback in new config allow inventory to be configurable updated connection options settings also updated winrm to work with new configs removed now obsolete set_host_overrides added notes for future bcoca, current one is just punting, it's future's problem updated docs per feedback added remove group/host methods to inv data moved fact cache from data to constructed cleaner/better options fix when vars are added extended ignore list to config dicts updated paramiko connection docs removed options from base that paramiko already handles left the look option as it is used by other plugin types resolve delegation updated cache doc options fixed test_script better fragment merge for options fixed proxy command restore ini for proxy normalized options moved pipelining to class updates for host_key_checking restructured mixins * fix typo
* getattr() with no default is an AttributeError if missing (#32946)Nathaniel Case2017-11-151-1/+1
|
* Fix `authorize: yes` and `become_method: enable` (#32864)Nathaniel Case2017-11-141-2/+15
| | | | | | | | | * Update connection play_context when socket exists * Don't fail on connections other than network_cli * Fix enable prompt detection on ios & eos * Check against "Module not found" error code, defined in modules/jsonrpc.py
* Connection plugins network_cli and netconf (#32521)Nathaniel Case2017-11-091-213/+138
| | | | | | | | | | | | | | | | | | | | | | | | | * implements jsonrpc message passing for ansible-connection * implements more generic mechanism for persistent connections * starts persistent connection in task_executor if enabled and supported * supports using network_cli as top level connection plugin * enhances logging for persistent connection to stdout * Update action plugins * Fix Python3 RPC * Fix Junos bytes<-->str issues * supports using netconf as top level connection plugin * Error message when running netconf on an unsupported platform * Update tests * Fix `authorize: yes` for `connection: local` * Handle potentially JSON data in terminal * Add clarifying detail if possible on ConnectionError
* Remove log of command executed in persistent connection (#31581)Ganesh Nalawade2017-10-111-1/+0
|
* Create persistent socket path using port and connection type (#28492)Ganesh Nalawade2017-08-231-1/+1
| | | | | | | | | * Create persistent socket path using port and connection type * Use remote address, port, connection type and remote user to create a socket path. * Fix review comment
* Miscellaneous ansible-test fixes. (#28355)Matt Clay2017-08-171-2/+3
| | | | | | | | * Include .github in test targets. Fix BOTMETA.yml. * Include bin in compile tests. * Exclude links from test targets. * Include bin in pep8 and pylint tests. * Fix pep8 and pylint issues in bin dir.
* Ansible Config part2 (#27448)Brian Coca2017-08-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Ansible Config part2 - made dump_me nicer, added note this is not prod - moved internal key removal function to vars - carry tracebacks in errors we can now show tracebacks for plugins on vvv - show inventory plugin tracebacks on vvv - minor fixes to cg groups plugin - draft config from plugin docs - made search path warning 'saner' (top level dirs only) - correctly display config entries and others - removed unneeded code - commented out some conn plugin specific from base.yml - also deprecated sudo/su - updated ssh conn docs - shared get option method for connection plugins - note about needing eval for defaults - tailored yaml ext - updated strategy entry - for connection pliugins, options load on plugin load - allow for long types in definitions - better display in ansible-doc - cleaned up/updated source docs and base.yml - added many descriptions - deprecated include toggles as include is - draft backwards compat get_config - fixes to ansible-config, added --only-changed - some code reoorg - small license headers - show default in doc type - pushed module utils details to 5vs - work w/o config file - PEPE ATE! - moved loader to it's own file - fixed rhn_register test - fixed boto requirement in make tests - I ate Pepe - fixed dynamic eval of defaults - better doc code skip ipaddr filter tests when missing netaddr removed devnull string from config better becoem resolution * killed extra space with extreeme prejudice cause its an affront against all that is holy that 2 spaces touch each other! shippable timing out on some images, but merging as it passes most
* Fix Python3 in ansible-connection (#27645)Nathaniel Case2017-08-021-1/+2
| | | | | | * Fix Python3 in ansible-connection * Add `errors='surrogate_or_strict'` to `to_bytes()`
* Persistent connection timer changes (#27272)Ganesh Nalawade2017-08-011-8/+9
| | | | | | | | | | | * Add command_timeout timer that defines the amount of time to wait for a command or RPC call before timing out. * Remove connect_retries and connect_interval configuration varaible and replace it with connect_retry_timeout to control the timeout value of connection to local scoket. * Make required changes to netowrk action plugins and relevant network files in module_utils. * Required documentation changes.
* junos_netconf integration test failure fix (#27569)Ganesh Nalawade2017-08-011-1/+1
| | | | * Create socket using port value and not connection type * Correct error message in integration test task
* Add fix to read correct socket path recieved from ansible-connection (#27560)Ganesh Nalawade2017-08-011-1/+1
| | | | | | | | | | | Currently socket path is send from `ansible-connection` (running as background process) over stdout. This can conflict with debug logs that are also send on stdout resulting in incorrect socket path received by the main process. To avoid this add a socket path delimiter string which is recevied by main process and socket path is retrieved based on delimiter string. This implementation will change in future when ansible-connection framework is made more robust.
* ansible-connection Python3 fix (#26441)Nathaniel Case2017-07-051-2/+2
| | | | | | | | * Fix a number of unicode <-> bytes mismatches * Return socket_path as text, not bytes * Docstring run()
* Calling connection.close() instead of self.close() to actually close the ↵James Mighion2017-06-301-1/+1
| | | | connection. (#26257)
* added comment on why not os.chdirBrian Coca2017-06-191-1/+2
|
* Revert "Add log_only to debug messages (#25545)"Brian Coca2017-06-131-1/+1
| | | | This reverts commit 9e8cc26720f5e8a18a6b94aa88f582a9e291714b.
* Add log_only to debug messages (#25545)Ganesh Nalawade2017-06-131-1/+1
| | | | | | Fixes #25544 When `debug` is enabled the debug messages triggered from `bin/ansible-connection` should be logged only to file and not on stdout.
* Add support for cliconf and netconf plugin (#25093)Ganesh Nalawade2017-06-061-142/+156
| | | | | | | | | | | | | * ansible-connection refactor and action plugin changes * Add cliconf plugin for eos, ios, iosxr, junos, nxos, vyos * Add netconf plugin for junos * Add jsonrpc support * Modify network_cli and netconf connection plugin * Fix py3 unit test failure * Fix review comment * Minor fixes * Fix ansible-connection review comments * Fix CI issue * platform_agnostic related changes
* Fix timeout issue in ansible-connection (#24556)Ganesh Nalawade2017-05-131-1/+1
| | | | | Fixes #24520 ansible-connection needs to wait on timeout value of play-context instead of ssh default timeout
* Be explicit about pickle protocol and encoding (#24454)Toshio Kuratomi2017-05-121-5/+9
| | | | | | | | | | | | | | | | | On Python3 and Python2 use pickle slightly differently so we need to be explicit about some things. If pickles could be shared between python2 and python3, as in ansible-connection and the pickle cache, we need to specify the protocol to use when dumping and the encoding to use for byte strings when loading. The dumping protocol needs to be no higher than 2 as python-2 only supports up to protocol 2. The encoding should usually be 'bytes' so that python2 str type becomes python3 bytes type. However, doing this means that we must make sure that the objects being serialized properly make their strings into text strings except when they're supposed to be bytes. If strings are improperly byte strings, they may cause tracebacks on the receiving end
* Fix for persistent connection plugin on Python3 (#24431)Toshio Kuratomi2017-05-121-28/+30
| | | | | | | | | | | | | | | | | | | Fix for persistent connection plugin on Python3. Note that fixes are also needed to each terminal plugin. This PR only fixes the ios terminal (as proof that this approach is workable.) Future PRs can address the other terminal types. * On Python3, pickle needs to work with byte strings, not text strings. * Set the pickle protocol version to 0 because we're using a pty to feed data to the connection plugin. A pty can't have control characters. So we have to send ascii only. That means only using protocol=0 for pickling the data. * ansible-connection isn't being used with py3 in the bug but it needs several changes to work with python3. * In python3, closing the pty too early causes no data to be sent. So leave stdin open until after we finish with the ansible-connection process. * Fix typo using traceback.format_exc() * Cleanup unnecessary StringIO, BytesIO, and to_bytes calls * Modify the network_cli and terminal plugins for py3 compat. Lots of mixing of text and byte strings that needs to be straightened out to be compatible with python3 * Documentation for the bytes<=>text strategy for terminal plugins * Update unittests for more bytes-oriented internals Fixes #24355
* updates log messages in ansible-connection (#23076)Peter Sprygada2017-03-301-7/+15
|
* fixes ansible-connection working directory (#22964)Peter Sprygada2017-03-251-1/+2
| | | | | When ansible-connection forks the process, it changed the working directory to /. This patch will prevent ansible-connection from changing the working directory in the forked process.
* fixes exception raised from ansible-connection logging (#22836)Peter Sprygada2017-03-211-5/+5
| | | | updates ansible-connection logging functions to use display instead of log.
* replaces logging with display for network connection plugins (#22819)Peter Sprygada2017-03-201-18/+14
| | | | * updates network_cli and netconf connection plugins * updates ansible-connection
* implements python logging for network connection plugin (#22817)Peter Sprygada2017-03-201-21/+27
| | | | | * enables logging for network_cli and paramiko * enables logging for ansible-connection * enabled logging for netconf connection