Code for managing, monitoring and testing Umber Fi-Wi networks
Go to file
Robert McMahon 5874253359 Initial import: fiwicontrol package (commands + power scaffold)
Made-with: Cursor
2026-04-10 11:36:23 -07:00
docs Initial import: fiwicontrol package (commands + power scaffold) 2026-04-10 11:36:23 -07:00
src/fiwicontrol Initial import: fiwicontrol package (commands + power scaffold) 2026-04-10 11:36:23 -07:00
tests Initial import: fiwicontrol package (commands + power scaffold) 2026-04-10 11:36:23 -07:00
.gitignore Initial import: fiwicontrol package (commands + power scaffold) 2026-04-10 11:36:23 -07:00
LICENSE Initial import: fiwicontrol package (commands + power scaffold) 2026-04-10 11:36:23 -07:00
README.md Initial import: fiwicontrol package (commands + power scaffold) 2026-04-10 11:36:23 -07:00
pyproject.toml Initial import: fiwicontrol package (commands + power scaffold) 2026-04-10 11:36:23 -07:00

README.md

FiWiControl

Tools and libraries for managing and testing Umber FiWi networks.

This repository ships one Python distribution (fiwicontrol for pip) whose import root is orchestrator:

  1. orchestrator.commands — run commands on remote rigs via OpenSSH or ush, with asyncio streaming, timeouts, repeats (Command), and a small registry (CommandManager). Implementation: src/orchestrator/commands/remote_nodes.py.
  2. orchestrator.power — reserved for power switching, monitoring, and discovery (Acroname, Monsoon, …). Must depend on commands only, not the reverse.

Layout

FiWiControl/
├── LICENSE
├── README.md
├── pyproject.toml
├── docs/
│   └── remote-nodes-asyncio-design.md
├── src/
│   └── orchestrator/
│       ├── commands/
│       │   ├── __init__.py
│       │   └── remote_nodes.py
│       └── power/
│           └── __init__.py
└── tests/

Requirements

  • Python 3.11+
  • For sshtype="ssh": passwordless SSH to root@<host> (non-interactive ssh; see docs/remote-nodes-asyncio-design.md).

Install (editable)

cd ~/Code/FiWiControl
python -m pip install -e .
python -m pip install -e ".[dev]"   # pytest

Imports:

from orchestrator.commands import ssh_node, Command, CommandManager

Tests

Commands, example pytest output, and unittest entry points for remote_nodes: docs/remote-nodes-asyncio-design.md → section “Running tests” (top of that file).

Layout / import smoke (no network):

cd ~/Code/FiWiControl
pytest -q tests/test_package_layout.py

Remote integration (needs FIWI_REMOTE_IP and key auth):

cd ~/Code/FiWiControl
FIWI_REMOTE_IP=192.168.1.39 pytest -q tests/test_remote_nodes.py

Remote

git remote add origin "https://git.umbernetworks.com/rjmcmahon/FiWiControl.git"
git push -u origin main

Use a Gitea personal access token as the HTTPS password if prompted.