Changelogs » Apssh

Apssh

0.17.3

* Service class continued:
* parameter reset_failed renamed into stop_if_running
* more robust wrt restarting the same service
* 0.17.2 was fine but used a couple f-strings which broke readthedocs

0.17.1

* Service class revisited:
* parameter service_id is mandatory
* comes with an implicit reset-failed by default
* no longer salted
* 0.17.0 was breaking compatibility for no benefit, please don't use

0.16.0

* new option -K / --ok-if-no-key - don't check for at least one key
* micro-change in labelling nodes in a graph: swap space and colon

0.15.1

* the Service class accepts a new `environ` attribute that lets user define e.g.
USER or HOME similar environment variables
* 0.15.0 was broken

0.14.2

* minor cosmetic tweaks
* graphical output shows job number for easier binding to textual listing
* default RunString textual repr is based on a truncated script body

0.14.1

* bugfix: computation of distances was broken with jobs that were not sshjob instances
* bugfix: creation of a Service instance with no service_id was broken

0.14.0

* new class `Service`: simplify creation of things running in the background,
like tcpdump and other similar activities that need to be started and stopped;
this feature leverages `systemd-run`

0.13.2

* a tool to produce a graphical representation of the
"node x is the gateway for node y" relationship. See `topology_as_dot` or `topology_as_graph`.
* 0.13.1 used lingering f-strings

0.13.0

* command objects can define a `allowed_exits` attribute; this allows
for instance to state that a command may be killed,
or return a non-zero retcod, while still being deemd OK.
* `apssh.close_ssh_in_scheduler` now allows to explicitly close all ssh
connections invlolved in a scheduler; coroutine `co_close_ssh_in_scheduler` available as well;
* more cleanly close connection to ssh agent when fetching keys
* ssh sessions now retain exit code or signal, when relevant
* `SshJob.repr()` gives more details on which command failed and how,
resulting in a more troubleshooting-friendly listing for apssh schedulers,
especially with multi-command jobs.
* much wider test scope, redesigned to work exclusively in standalone mode,
using a local ubuntu virtualbox.

0.12.1

* bugfix, selection between RunScript and RunString in apssh -s
* optimize lazy connections, don't wait for the lock if connection is up
* tweaked tests to use non-critical schedulers when it matters;
this is for asynciojobs 0.11

0.11.3

* inside an SshJob, a command that has an empty label won't show up at all,
not even as an empty line

0.11.2

* bugfix, failing SshJob tried to throw an exception using the command()
method on the failing command, which is no longer available

0.11.1

* adaptation for asynciojobs v0.10: `jobs_window` now is a scheduler attribute
and not a parameter to run()

0.10.3

* still cleaner and more complete doc
* in particular doc now covers formatters thoroughly
* new exception class CommandFailedError

0.10.2

* apssh binary was broken, searching for config files in ~/.apssh/ was not working

0.10.1

* in line with asynciojobs 0.7 labelling system
* command objects can have a label set on them
to shorten the graphical view
* major overhaul on the documentation
* using the numpy style in docstrings
* code is now totally pep8/flake8- and pylint- clean

0.9.4

* revisited graphical rendering of RunString
* pylint'ed
* code layout changed, SshNode and LocalNode in nodes.py

0.9.3

* *Warning*: a disruptive change in the constructor for SshProxy/SshNode
has been introduced; from now on, all parameters but the hostname are keyword-only parameters
* the underlying asyncssh is now expected to support *x11_forwarding*,
there no longer is a fallback if not
* adopted new doc loayout with no source/ subdir in sphinx/

0.9.2

* SshProxy/SshNode have a modified signature
* single parameter hostname
* all the rest are now keyword-only parameters
* warning, this might break some scripts
* doc uses new sphinx theme

0.9.1

* Improved policy when using SshNode with no provided keys:
will first look for agent keys, and then if there is none,
will look for private keys, prompting for passwords if found

0.8.1

* bugfix - missing import os

0.8.0

* replaced use of os.path with pathlib.Path
* minor fixes

0.7.7

* defined dot_label() for nicer png graphs

0.7.6

* a second attempt to fix bogus pip install

0.7.5

* an attempt to fix bogus pip install

0.7.4

* decidedly these type checks were botched

0.7.3

* implement 6 about showing local subprocesses (LocalNode)
stdout and stderr on the fly

0.7.2

* bugfix - type checks were too stringent on LocalNode

0.7.1

* add argument checking for the node part of a SshJob

0.7.0

* add type verifications when building a SshProxy instance
* new policy to locate defaut private keys: if no key can be found
at the ssh agent, then ~/.ssh/id_rsa and ~/.ssh/id_dsa are
used.

0.6.3

* bugfix

0.6.0

* can create SshJob with keep_connection=True
* check a node object is an instance of SshProxy
* more robust load_agent_keys - return [] if cannot reach
* SshJob - change logic of failed commands - exception only raised if critical

0.5.6

* bugfix - RunScript and details()

0.5.5

* protect os.getlogin()

0.5.4

* warning about asyncssh and 1.7.3 to appear only when actually using x11
* 0.5.3 had that still wrong

0.5.2

* better feedback for connecting/disconnections
* write error messages on stderr for serious errors
even if not verbose
* show username in most cases
* add support for x11 forwarding with Run(x11=True)
* also available on RunString and RunScript
* requires apssh > 1.7.3, which is not yet out though
* bugfix: both RunScript and RunString add a random part
at the end of remote command name - to allow for multiple
simulataneous runs
* use proper SshJob's instead of individual Run commands
* use setuptools instead of disutils

0.5.1

* windowing now performed with asynciojobs
* -u/--user is now -l/--login like in vanilla `ssh`

0.4.8

* Do not automatically add any quotes to commands run remotely
with Run{String,Script}, this is the caller's responsability

0.4.7

* LocalNode.username is defined - used in details

0.4.6

* it is possible to set `verbose` when creating a `SshJob` object
* in this case, this value is used to set/override `verbose` in
all the `commands` that are part of that `SshJob`
* 0.4.5 is broken (commands verbosity is always on)

0.4.4

* welcome to the LocalNode class for running local commands
* big room for improvements, but at least we get a decent way
to write the C1 tutorial in r2lab
* 0.4.3 is broken

0.4.2

* comes with a sphinx documentation ready to publish on
nepi-ng.inria.fr/apssh

0.4.1

* add verbose flag to SshProxy/SshNode
useful to see when a connection fails
* add verbose flag to Run* classes
useful to see commands details when running remotely

0.4.0

* align on asynciojobs 0.4.0
* that is to say, rename engine into scheduler

0.3.1

* Redesigned interface
* a single AbstrctJob class SshJob
* is created with a list of AbstractCommands
* that can be any of `Run`, `RunScript`, `RunString`, `Push` or `Pull`
* so now script scenarii can embed their shell fragments inside a python script
* also this is in accordance with asynciojobs 0.3.3 for
the details() and default_label() protocols

0.2.17

* CaptureFormatter allows to capture the output of a command

0.2.16

* bugfix - protect against issues when closing connection

0.2.15

* connect_put_run propagates follow_symlinks, which defaults to True

0.2.14

* minor fixes

0.2.13

* SshJobScript accepts command= or commands= just like SshJob
* apssh -i become -k
* apssh -i now is for included files when running -s
* 0.2.11 and 0.2.12 are broken

0.2.10

* SshJobScript has optional includes that get pushed too
* SshProxy/SshNode : renamed client_keys into just keys
* SshNode with no keys: default now is to use ssh agent keys

0.2.9

* SshJobScript fails if script retcod is not 0

0.2.8

* for --target, files and directories are also searched in ~/.apssh

0.2.7

* new class SshJobPusher
* SshJob(commands=..) allows to run several commands in a row
* all SshJob* classes are critical by default

0.2.6

* class `SshJobCollector` can retrieve data

0.2.5

* formatter cleanupmostly done
* all verbose reporting about connections and authentication and the like
is now primarily done throuch asyncssh callbacks, except for sessions and sftp

0.2.4

* big cleanup in formatters that can be verbose or not
* sshjobs uniformly refers to *node* rather than *proxy* including in attributes

0.2.3

* exception handling :
* more uniform way to write jobs, always let exceptions through
* ending up in simpler code

0.2.2

* add mutual exclusion locks to SshProxy connection and disconnection
to ensure that an object gets connected only once

0.2.1

* support for -g / --gateway option for 2-hops connections
* support for getting keys at the ssh agent if can be located
* tentatively fixes issue 2

0.1.1

* add missing apssh.jobs to pypi packaging

0.1.0

* fixes issue 1
* fixes SFTP closing
* addition of SshJobs to be used with asynciojobs

0.0.8

* script mode still runs in remote home directory, does not cd in .apssh

0.0.7

* `--target` and `--exclude` can be used with a directory

This is useful in combination with `--mark`, so that the second run can easily focus on successful nodes


first pass to determine nodes that are responding
apssh -o pass1 --mark -t MYNODES hostname
second pass: focus on successful nodes
apssh -o pass2 -t pass1/0ok/ -f elaborate-script.sh


* added the `--dry-run`/`-n` option to just see the selected nodes

0.0.6

* added support for --script mylocalscript.sh arg1 arg2
* this will take care of copying over a local script in ~/.apssh
* before executing it remotely
* it is thus easier to handle composite shell commands, or any other python-like scripts

0.0.5

* added support for --target "fit01 fit02" for smoother integration with $NODES on faraday

0.0.4

* MANIFEST.in was missing

0.0.3

* COPYING was missing

0.0.2

* of course it did not go exactly as planned

0.0.1

* first rough release