Skip to content

feat: installable netlab-gui package with CLI, bundled UI and PyPI re… - #57

Open
Muddyblack wants to merge 15 commits into
mainfrom
feat/installable-backend
Open

Muddyblack wants to merge 15 commits into
mainfrom
feat/installable-backend

Conversation

@Muddyblack

Copy link
Copy Markdown
Owner

…lease

Move app/ and services/ under netlab_gui/, add the netlab-gui command (serve, install-service), bundle frontend and monitoring plugin into the wheel, and publish to PyPI on version tags.

…lease

Move app/ and services/ under netlab_gui/, add the netlab-gui command
(serve, install-service), bundle frontend and monitoring plugin into the
wheel, and publish to PyPI on version tags.
GET /api/environment/host reports netlab, sudo-less containerlab, Docker
and workspace readiness; Settings → Environment shows it and a banner
points at it when deployments would fail.
NETLAB_GUI_TOKEN (or netlab-gui token) is accepted as a bearer header or
?token= query on REST, SSE and WebSockets. The frontend and the Electron
app attach it, and the connect screen takes it.
scripts/install.sh installs via pipx (optionally netlab, containerlab and
the service). netlab-gui upgrade updates by install method and restarts
the user service. A deploy now prints a warning up front when containerlab
is not set up to run without a password; passwordless sudo counts as set up.
Package, command, Python module, service, config files and NETLAB_GUI_*
environment variables become netlab-ui / netlab_ui / NETLAB_UI_*, matching
the repo, image and docs. Nothing was published under the old names.
packages.default builds the netlab-ui command with the UI and monitoring
plugin bundled; nixosModules.default adds services.netlab-ui with the
containerlab setuid wrapper and clab_admins group.
A second Dockerfile target (full) for hosts that only have Docker, with
docker-compose.full.yml. The release workflow publishes both images: the
UI-only tags and the same tags with a -full suffix.
The version is now a plain field in backend/pyproject.toml. scripts/tag.sh
bumps it on a release branch and opens a PR; merging it runs release.yml,
which tags, creates the GitHub release, publishes to PyPI and builds the
image. pr-release-flag.yml labels PRs that bump the version.
…ation

netlab-ui reads ~/.config/netlab-ui/config.toml (address, port, tool
locations). install-service records the directories where netlab, Ansible
and containerlab were found in the unit PATH and the config, verifies
lingering, waits for the service to answer on its port, and prints the
status and log commands (or the last log lines when it fails).
…, reusable release workflows)

Move monitoring to plugins/monitoring, Dockerfile/dev compose/install script/NixOS
module to packaging/, sample lab to examples/, monitoring screenshots to docs/.
Rename called release workflows to _pypi.yml and _container.yml. Add a root Makefile.
…ortable tag.sh

- release.yml: create the tag/GitHub release only after PyPI and the image are published; PyPI upload skips existing files so a re-run works
- restore root .dockerignore (works without BuildKit)
- CI: backend job runs on plugins/monitoring changes; docker job on backend/frontend/plugin changes
- tag.sh: awk instead of GNU sed so it runs on macOS
- unify action versions, add github-actions to dependabot
- install.sh stub fails loudly if the download fails
…ifacts, pinned compose, grouped notes

- release.yml: ci -> wheel/image build+start -> pypi + image tags by digest -> tag and release last
- _wheel.yml / _image.yml (renamed): build, twine check, install in a clean venv, run, check API and UI
- scripts/smoke-test.sh, scripts/release-notes.sh
- release assets: wheel, sdist, docker-compose.yml pinned to the version, SHA256SUMS; install command sets HOST_TOOLS_DIR
- ci.yml is callable and no longer cancels a release run
- backend: add README so the PyPI page has a description (twine check --strict)

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant