The all encompassing LuxOS python library.
Project description
LuxOS Tools Repository
This package contains a python package luxos
and scripts to operate miners running LuxOS. See the
full documentation here.
Install
To install the latest version:
$> pip install -U luxos
Check the version:
python -c "import luxos; print(luxos.__version__, luxos.__hash__)"
# 0.0.5 08cc733ce8aedf406856c8ad9ccbe44e78917a37
Scripting
The luxos package comes with some helper scripts, to ease everyday miners' maintenance.
luxos (cli)
This will launch the version command on a miner, returning the json output:
luxos --range 127.0.0.1 --quiet --json --cmd version
The --range
flag can tak as argument:
- a single ip address
--range 127.0.0.1
- a range like
--range 127.0.0.1-127.0.0.5
- or addresses from a file
--range @miners.csv
.
Other examples:
# set/unset ATM
luxos --range 127.0.0.1 --quiet --json --cmd atmset --params "enabled=true"
# add a new profile
luxos --range 127.0.0.1 --quiet --json --cmd profilenew --params "myprofile,700,14.8"
luxos-run (cli)
The luxos-run
allow to "run" a scriptlet on miners.
A scriptlet is a a python file such as my-script.py
looking like this:
from luxos import asyncops
async def main(host: str, port: int):
res = await asyncops.rexec(host, port, "version")
return asyncops.validate(host, port, res, "VERSION")[0]
The main
entry point is an async function, taking host, ip parameter: they
can execute more complex operations on a set of miners specified with the
--range
flag, in the same way the luxos
cli script does.
This will run my-script.py
and report the results in json:
luxos-run --range 127.0.0.1 my-script.py
API
luxos provides an easy-to-use API to write complex scripts on miners.
It comes in two different flavours, a sync version for legacy non high performance operations, and an async version allowing operation on a fleet of miners: the API of the main functions is essentially keep identical.
Main functions
The whole of the "kernel" API is rather small-ish and it is based essentially on few functions:
- luxos.utils.load_ips_from_csv - utility to load miners addresses from a CSV file
- luxos.utils.rexec - an async function to launch commands on a miner
- luxos.utils.execute_command - the same as rexec but syncronous
- luxos.utils.validate - validate a message from a miner
- luxos.utils.launch - run a command on multiple miners
Get a miner's version (example)
Get a miner's version data (async version):
import asyncio
from luxos.utils import rexec, validate
async def get_version(host: str, port: int) -> dict:
res = await rexec(host, port, "version")
return validate(res, "VERSION", 1, 1)
if __name__ == "__main__":
print(asyncio.run(get_version("127.0.0.1", 4028)))
There's a syncronous version (better for one-liners), with identical calling conventions:
from luxos.utils import execute_command, validate, load_ips_from_csv
if __name__ == "__main__":
print(validate(execute_command(
"127.0.0.1", 4028, 3, "version"), "VERSION", 1, 1))
Run commands (example)
The luxos.utils.launch
is an async function to launch a command on a
set of miners using asyncio.
This is a simple example (see Full documentation) for more.
import asyncio
from luxos.utils import validate, load_ips_from_csv, rexec, launch
async def get_version(host: str, port: int) -> dict:
res = await rexec(host, port, "version")
return validate(res, "VERSION", 1, 1)
if __name__ == "__main__":
addresses = load_ips_from_csv("miners.csv")
print(asyncio.run(launch(addresses, get_version)))
LuxOS HealthChecker - health_checker.py
The HealthChecker script is designed to continuously pull miner data from LuxOS, providing valuable insights into the health of your mining machines.
You can customize the HealthChecker params using the config.yaml
file provided.
To run the HealthChecker you can use health-checker
if you installed using pip, or
the cli python3 -m luxos.scripts.health_checker
.
Feel free to explore and customize these tools to suit your specific needs. If you encounter any issues or have suggestions for improvement, please open an issue or submit a pull request.
You can find LuxOS API documentation here.
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
File details
Details for the file luxos-0.2.2b45.tar.gz
.
File metadata
- Download URL: luxos-0.2.2b45.tar.gz
- Upload date:
- Size: 40.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1873b33c92abcbf52f14cac9483163b9cf75d86860d423492f570b705aaa50b4 |
|
MD5 | 7633397d974b49580b65d6833e37a7b1 |
|
BLAKE2b-256 | 276c7b5876fe43123fe68df708f8bdf215ff40d006627faf84ab383d0c5c7fc1 |
File details
Details for the file luxos-0.2.2b45-py3-none-any.whl
.
File metadata
- Download URL: luxos-0.2.2b45-py3-none-any.whl
- Upload date:
- Size: 37.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a25a31c99e71a3d1997fe577f9ae032c7e67a46d51575b70a02d881a3163f35 |
|
MD5 | dbc8613aefb96fc470d3ab5934e7d347 |
|
BLAKE2b-256 | 036d76a8de9c1cb8545253ddd6a5bd1e847c4403f344e2c719008e74ae833730 |