Handle parsing out control characters that seem to pop up on some JunOS boxes with at least ssh2 transport, see #127.
Hopefully improved some handling with possible "over reading" during initial session establishment. See #122 for a
lot of history on this one, and #126 for at least a partial fix (if not full fix?!)
Thanks to sanjmonkey for expanding support for "with-defaults" parsing from
capabilities in #129
Thank you to the very awesome dmulyalin for adding support for commit-confirmed
in #97!
Some other things, I'm sure of it... if nothing else just housekeeping things... if we've missed something you
added in here, let us know and it will get added!
Removed deprecated NetconfScrape and AsyncNetconfScrape
Improved raise_for_status exception messages, see #92 and #90
Dropped Python3.6 support as it is now EOL! Of course, scrapli probably still works just fine with 3.6 (if you
install the old 3.6 requirements), but we won't test/support it anymore.
Force system transport ssh connections to allocate a tty (-tt); fixes issue that would prevent system transport
from sending any command > 1024 chars.
Added use_compressed_parser argument to the driver constructor -- defaults to True which means we "squish" all
the whitespace out of any input we get from the user before sending it to the netconf server, generally this is no
problem, but some devices (looking at you NX-OS!) lock up and stop reading at some character counts (4096 in NX-OS
it seems) causing the connection to timeout and die. By not "squishing" whitespace out this does not happen.
Fixed some typing issues and pinned to scrapli pre-release to take advantage of updated typing/packaging setup
Deprecate filters argument on get_config -- will be supported (by decorator) until 2022.01.30 (and
pre-releases). This was done to make the arguments consistent for get, get_config, and rpc.
Better handling of multiple filter elements in a filter string
Smarter message building -- previously most of the final bytes payload that we send to the servers got built in
the base driver class, and then some more (1.1 encoding) got added in the channel base class -- silly! Fixed this,
so it is all done in the driver which eliminated a bunch of duplication (yay!).
Deprecating comms_ansi -- see also scrapli changelog for this release (2021.07.30) for more details. This was
never used here in scrapli_netconf so should be a non issue, but will not be fully deprecated until 2022.01.30.
Re-fix #10... see #68 -- now there is a test with a comment so I don't break this again :)
Added copy_config method, thanks to Roman Dodin for adding this in scrapligo first!
Added handling/warning about use_compressed_parser if we catch a timeout exception when looking for prompt after
writing inputs -- since I don't know (can't know?) which platforms may require this flag set to False this seems
like a reasonable way to let users know and point them in the right direction to get things working!
Reswizzled the echo check to be like the scrapligo version -- much simpler/less moving parts, so should be good!
Big overhaul in line with the scrapli core overhaul... mostly this was about reconciliation of the channel and
transport things and putting stuff where it should have been in the first place... see the changelog at scrapli
core for much more details
FUTURE BREAKING CHANGE -- NetconfScrape and AsyncNetconfScrape have been renamed to NetconfDriver and
AsyncNetconfDriver -- there are alias classes so you can continue to use NetconfScrape and
AsyncNetconfScrape but there is a warning, and these will be removed at some point in the future!
Support namespaces in hello messages -- primarily to support "rfc-compliant" mode in JunOS -- thank you
Gary Napier for finding this and coming up with the fix!
Another fixup to chunk checker -- think that the itty bitty chunk issues have now been solved :)
Improve the "echo" checker -- and add this for sync as well, because...
SSH2 and Paramiko are now supported transports!
As part of the "improved echo checker" sync channel now also overrides the read_until_input method like the async
channel does -- again, for the same reasons.
All transports minus system are now optional extras -- this means that asyncssh is no longer an install requirement
As expected with above point -- added optional extras install options in setup.py as well as a "full" option just
like scrapli core
MAYBE BREAKING CHANGE: shouldn't be an issue for 99.9999% of people, however, the asyncssh transport is no longer
imported and available in the transport package
Add error_messages attribute to response object -- initialized as an empty list and the text of any rpc-error/error
-message fields are placed into this list if there are any in the response from the server
Improve netconf 1.1 chunk matching regex to not ignore/chop off Nokia error messages that contained # symbols