Skip to content

Internal improvements, API changes to get closer to "stable"

Compare
Choose a tag to compare
@carlmontanari carlmontanari released this 05 Mar 16:09
  • improve docs hopefully everywhere basically
  • minor improvements to channel reading
  • added message to timeout decorator to be more clear why/where things time out
  • migrated away from signals (yay for windows i guess) for decorator -- due to systemssh doing things in new procs signal wouldn't work there, new implementation is concurrent futures threads
  • added timeout_exit to kill connections if timeout occurs (or not)
  • a little bit better/more logging especially in decorator (more to go for sure though)
  • updated all core drivers to reflect on_open/on_close callabales, removed "exit_command" entirely
  • simplified network driver due to moving to on_open/on_close
  • modified netowrk driver send_commands to only accept a list of commands to send, added send_command which only accepts a single command
  • due to above change only return a list of responses if using send_commands -- if using send_command just return a response object
  • added exception for keepalive failure -- raised by keepalive thread if/when keepalives are missed for > 3x the keepalive interval -- this may need to get changed/tweaked in the future and/or add a keepalive_exit flag like the timeout
  • textfsm_parse_output no longer updates the response object w/ results (in place operation), it now returns results and there is no "structured_result" attribute of the response object
  • removed external function validation stuff from helper -- was neat maybe but not necessary for now, on_open/on_close simply accept callables no need to parse a text string to try to import things... could be added back in the future easy enough if it seems useful
  • transport base class now has a useful init method that sub classes can super
  • transport child classes that create a socket (paramiko/ssh2) now do so via composition instead of inheritance -- mro was just annoying, plus couldnt (easily? at all?) super w/ different args to transport vs socket (didnt look hard, composition seems fine)
  • systemssh/telnet transport store channel args needed for authenticaiton (prompt pattern/ansi/return char) as private args now. they are used for initial auth then ignored...
  • systemssh ssh args/open cmd improvements
  • add keepalive for systemssh/telnet (network only)
  • systemssh/telnet store _timeout_ops (channel timeout basically) as a private arg for same reasons as the auth stuff -- timeout authentication things, this is ignored after auth occurs
  • systemssh improved pty authentication handling
  • driver/driver (scrape) now doesnt store most arguments passed to it in the object itself -- they are instead stored in _initialization_args and passed to the channel and transport as needed
  • way way way better repr for scrape
  • significantly better netmiko compatability setup