waldur-cli
A scriptable, LLM/agent-friendly command-line tool for Waldur MasterMind. It wraps the Waldur REST API behind a small, consistent command tree and is built for two audiences equally: humans at a terminal, and scripts/agents consuming machine-readable output.
It covers a curated slice of the API:
- OpenStack — tenants, instances, volumes, networks, subnets, security groups, floating IPs
- Team management — customers, projects, users, roles, invitations, organization groups, permission reviews
- Marketplace — browse offerings, and provision/terminate OpenStack tenants, instances, and volumes through Waldur's order flow
Every command follows the same shape — waldur-cli <group> <resource> <verb> — and the same
verbs (list, get, create, update, delete, plus provision/terminate for
marketplace resources) behave consistently across every resource.
Installation
Pre-built binaries for Linux, macOS, and Windows are published to GitHub Releases on every version tag, via cargo-dist:
1 2 | |
1 2 3 4 5 6 | |
Or build from source with a Rust toolchain: cargo build --release.
Updating
Once installed, you can update waldur-cli to the latest release directly from the terminal:
1 | |
Quickstart
1 2 3 4 5 6 7 8 | |
Every command and flag is documented in --help, at every level:
1 2 3 4 | |
Manual
The full guide lives in docs/:
- Getting started — authentication, profiles, command structure, and output formats
- Querying resources —
list/get, filtering, field selection, JMESPath, and streaming large lists with--format ndjson - Managing resources —
create/update/delete, request-body skeletons, and per-resource action verbs (start/stop/detach/approve/...) - Provisioning — the marketplace order flow
(
provision/terminate), for OpenStack and any other offering type, plus the genericwaitverb every resource gets - Recipes & tips — real-world workflows and things worth knowing
- Troubleshooting — errors,
--debug, exit codes, and shell completions
Development
src/commands/, src/cli.rs, and src/schema.rs are generated from Waldur's OpenAPI schema by
waldur-cli-generator — don't edit
them by hand; see that repo for how to regenerate. The rest of src/ (lib.rs, main.rs,
config.rs, output.rs, pagination.rs, http.rs, request.rs, filter.rs, query.rs,
order.rs, progress.rs) is hand-written and permanent.
The crate is split into a library (everything except the Cli/main() entry point in
main.rs) and a thin binary, so tests/ can exercise the actual logic directly:
1 2 | |
Networked code (pagination, http, order) is tested against an in-process HTTP mock
(wiremock) rather than a live Waldur instance — see tests/*.rs
for examples. CI runs both cargo test and cargo clippy on every merge request.
License
MIT.