v0.1.0
| PyPI | https://pypi.org/project/zboxapi/0.1.0/ |
| Install | pipx install zboxapi==0.1.0 or uv tool install zboxapi==0.1.0 |
| Upgrade | pipx upgrade zboxapi or uv tool upgrade zboxapi |
Added
- Releases follow the shared zPodFactory standard.
tools/release.pycuts a version
(changelog heading,pyproject.tomlanduv.lockbump, tests, commit, tag, push) and
tools/release_notes.pypublishes the changelog section as the GitHub release note.
.github/workflows/release.ymlruns it on every tag, then builds the wheel and sdist,
publishes them to PyPI withuv publishand attaches them to the release.
.github/workflows/checks.ymlruns the release rules and the test suite on every push.
Seetools/README.md. - Unit tests: pytest suite covering hostname validation, hosts-file handling,
VLAN configuration/validation, every/dnsand/vlanendpoint, authentication and
OpenAPI operation IDs. System paths and commands are faked, so the tests run anywhere. - Python 3.14 support: tested on Python 3.13 and 3.14; classifiers list 3.10 to 3.14.
Changed
- Build tooling: migrated from Poetry to uv with a
PEP 621pyproject.toml, theuv_buildbackend anduv.lock.justfilerecipes now
useuvand includetest,lintandformat. - Dependencies: FastAPI, Pydantic and uvicorn upgraded to current releases
(Pydantic 2.12+ is required for Python 3.14).ipythonmoved to the dev group. - Hostname validation: fully qualified names such as
esx01.lab.localare now
accepted. Total length is limited to 253 characters and each label to 63, labels may
not start or end with a hyphen, and error messages name the offending label. - Password lookup: the zPod password is resolved at application startup (lifespan)
and cached, instead of at module import. Behaviour for the systemd service is unchanged. - Operation IDs: generated through FastAPI's
generate_unique_id_function; the
previous post-hoc rewrite was a no-op on FastAPI 0.142+. - Version string:
zboxapi.__version__is read from package metadata, so only
pyproject.tomlneeds bumping.
Fixed
- VLAN create/update when a system VLAN interface has no address: the overlap check
tried to parse thesystem-default/system-zpodplaceholder as a network and
rejected every request with a misleading "Network overlap detected" error. Placeholders
are now skipped. - 403 for system VLANs on update and delete:
PUT /vlan/{id}andDELETE /vlan/{id}
returned 500 for system VLANs; they now return 403 likeenableanddisable, as
documented. - Config paths: the hosts file,
/etc/zboxapi.confand/etc/network/interfaces.d
are module-level constants (HOSTS_FILE,CONFIG_FILE,INTERFACES_DIR), making them
overridable in tests.
Full changelog: v0.0.7...v0.1.0
Every release: https://github.com/zPodFactory/zboxapi/blob/main/CHANGELOG.md