A script that starts and stops Tango Device Server(s)
Project description
tango-takeoff
A tool that can find, start and stop Tango Device Servers. It's like Astor for the command line.
In general, the tool is explaining itself. Run it and look at the output.
Installation
tango-takeoff is on PyPI and conda-forge.
Install it with your preferred package manager: pip, uv, conda or pixi.
As it's intended to be used as a script, we recommend installing it globally.
With uv, do:
uv tool install tango-takeoff
And with pixi:
pixi global install tango-takeoff
Usage
The tool depends on the TANGO_HOST environment variable.
Help
> takeoff --help
usage: takeoff [-h] {find,up,down,restart} ...
Start (up), stop (down) or restart (restart) Tango Device Servers
positional arguments:
{find,up,start,down,stop,restart}
find Finds servers based on terms and shows the 'dry run' version of what will be used in 'up' and 'down'
up (start) Bring servers up based on terms
down (stop) Bring servers down based on terms
restart Restart servers based on terms
options:
-h, --help show this help message and exit
Find
> takeoff find --help
usage: takeoff find [-h] [--json] [--default-host DEFAULT_HOST] [-v] servers [servers ...]
positional arguments:
servers A name or search term of a server, use * for wildcard in the end of the name. Use the format [host,]<server-name>
options:
-h, --help show this help message and exit
--json Output structured as JSON (default: False)
--default-host DEFAULT_HOST
Default host for Tango device servers (default: None)
-v, --verbose Set the trace level. Can be used in count way: -vv or --verbose --verbose (default: None)
Up / Start
> takeoff up --help
usage: takeoff up [-h] [--json] [--default-host DEFAULT_HOST] [-v] [-t RUNNING_TIMEOUT] [-s STARTER_TIMEOUT] [-d] servers [servers ...]
positional arguments:
servers A name or search term of a server, use * for wildcard in the end of the name. Use the format [host,]<server-name>[,<level>]
options:
-h, --help show this help message and exit
--json Output structured as JSON (default: False)
--default-host DEFAULT_HOST
Default host for Tango device servers (default: None)
-v, --verbose Set the trace level. Can be used in count way: -vv or --verbose --verbose (default: None)
-t RUNNING_TIMEOUT, --timeout RUNNING_TIMEOUT
Time to wait for a server to be running (in seconds) (default: 60)
-s STARTER_TIMEOUT, --starter-timeout STARTER_TIMEOUT
Time to wait for starter if it's not running (in seconds) (default: 10)
-d, --dry-run outputs the servers with the details that will take effect by the command (default: False)
Down / Stop
> takeoff down --help
usage: takeoff down [-h] [--json] [--default-host DEFAULT_HOST] [-v] [-f] [-k KILL_TIMEOUT] [-s STARTER_TIMEOUT] [-d] servers [servers ...]
positional arguments:
servers A name or search term of a server, use * for wildcard in the end of the name. Use the format [host,]<server-name>
options:
-h, --help show this help message and exit
--json Output structured as JSON (default: False)
--default-host DEFAULT_HOST
Default host for Tango device servers (default: None)
-v, --verbose Set the trace level. Can be used in count way: -vv or --verbose --verbose (default: None)
-f, --force Force kill servers (default: False)
-k KILL_TIMEOUT, --kill-timeout KILL_TIMEOUT
Time before force killing (in seconds) (default: 30)
-s STARTER_TIMEOUT, --starter-timeout STARTER_TIMEOUT
Time to wait for starter if it's not running (in seconds) (default: 10)
-d, --dry-run outputs the servers with the details that will take effect by the command (default: False)
Restart
> takeoff restart --help
usage: takeoff restart [-h] [--json] [--default-host DEFAULT_HOST] [-v] [-f] [-k KILL_TIMEOUT] [-t RUNNING_TIMEOUT] [-s STARTER_TIMEOUT] [-d] [-w WAIT_AFTER_STOP] servers [servers ...]
positional arguments:
servers A name or search term of a server, use * for wildcard in the end of the name. Use the format [host,]<server-name>
options:
-h, --help show this help message and exit
--json Output structured as JSON (default: False)
--default-host DEFAULT_HOST
Default host for Tango device servers (default: None)
-v, --verbose Set the trace level. Can be used in count way: -vv or --verbose --verbose (default: None)
-f, --force Force kill servers (default: False)
-k KILL_TIMEOUT, --kill-timeout KILL_TIMEOUT
Time before force killing (in seconds) (default: 30)
-t RUNNING_TIMEOUT, --timeout RUNNING_TIMEOUT
Time to wait for a server to be running (in seconds) (default: 60)
-s STARTER_TIMEOUT, --starter-timeout STARTER_TIMEOUT
Time to wait for starter if it's not running (in seconds) (default: 10)
-d, --dry-run outputs the servers with the details that will take effect by the command (default: False)
-w WAIT_AFTER_STOP, --wait-after-stop WAIT_AFTER_STOP
Time to wait between stop / start (in seconds) (default: 1)
Testing
To test locally, you can use pixi.
Required setup:
-
Start a Tango
PyDatabasedsby runningpixi run db. You could use your own instance if you prefer. Press CTRL-C to stop it. -
export
TANGO_HOSTto point to your tango database (127.0.0.1:10000if you used the previous steps). -
Start
Starterby runningpixi run starter. This will automatically create the required Tango devices and install some servers for testing purpose:TangoTestUniversalTest- SlowToStart: a dummy server that takes 7 seconds to start
- SlowToStop: a dummy server that takes 7 seconds to stop
- FailToStart: a dummy server that can't start (raises an exception in
init_device)
Once you have Starter running, you can run the tests using pixi run pytest -v.
You can also manually test different scenarios by running pixi run takeoff and passing any argument you want. Or run pixi shell and then takeoff directly.
For convenience, you have 2 tasks predefined:
pixi run upto start all the serverspixi run downto stop all the servers
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tango_takeoff-3.1.0.tar.gz.
File metadata
- Download URL: tango_takeoff-3.1.0.tar.gz
- Upload date:
- Size: 61.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a442f2c19ac621fb7c862fdfe4fda22d4dd66108e3254c6d76eaa6099d19686
|
|
| MD5 |
4e8a27106ad1f6bbec1d8f3913ddf726
|
|
| BLAKE2b-256 |
ae22d08e319b7c748a11f1ed8e4b1628ff02fa97c1f70b3892728fc3906d9da4
|
File details
Details for the file tango_takeoff-3.1.0-py3-none-any.whl.
File metadata
- Download URL: tango_takeoff-3.1.0-py3-none-any.whl
- Upload date:
- Size: 29.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
785951ee4b02c584b7f06a5b7cfbd4574b6d786c6ad00a9f4a404067b3dfb479
|
|
| MD5 |
d58074944c40ee80d066bea550a2c964
|
|
| BLAKE2b-256 |
604a2b13d977e8f731b96034d9a1fb35a604a1b66a6795435d1dd5676d60ebc1
|