2026-03-22 12:14:09 +01:00
|
|
|
# Implementation State
|
|
|
|
|
|
|
|
|
|
## Completed
|
|
|
|
|
|
2026-03-22 15:35:27 +01:00
|
|
|
### Core
|
2026-03-22 12:14:09 +01:00
|
|
|
- [x] Project scaffold (Cargo.toml, module structure)
|
2026-03-22 15:35:27 +01:00
|
|
|
- [x] KDL v2 parsing helpers (`kdl_util.rs`)
|
2026-03-22 12:14:09 +01:00
|
|
|
- [x] Error types with miette diagnostics (`error.rs`)
|
|
|
|
|
- [x] Global config loading (`config.rs`)
|
2026-03-22 14:04:15 +01:00
|
|
|
- [x] Template loading + defaults — multi-net support (`template.rs`)
|
|
|
|
|
- [x] IPAM pool loading, allocation, defaults — range + list modes (`pool.rs`)
|
|
|
|
|
- [x] Zone registry CRUD — multi-net support (`zone.rs`)
|
2026-03-22 12:14:09 +01:00
|
|
|
- [x] Publisher management (`publisher.rs`)
|
|
|
|
|
- [x] Exec layer for system commands (`exec.rs`)
|
2026-03-22 14:04:15 +01:00
|
|
|
- [x] Import logic from existing zones — multi-net parsing (`import.rs`)
|
2026-03-22 15:35:27 +01:00
|
|
|
- [x] Validation engine (`validate.rs`)
|
|
|
|
|
|
|
|
|
|
### CLI Commands
|
|
|
|
|
- [x] `init`, `create`, `destroy`, `list`, `status`, `import`
|
|
|
|
|
- [x] `boot`, `halt` — thin wrappers around zoneadm
|
|
|
|
|
- [x] `validate` — checks KDL syntax, referential integrity, pool sanity, duplicate IPs
|
|
|
|
|
- [x] `template list|show`, `pool list|show`
|
|
|
|
|
- [x] `publisher list|add|remove`
|
|
|
|
|
- [x] `completions <shell>` — bash/zsh/fish shell completions
|
|
|
|
|
|
|
|
|
|
### DX Features
|
2026-03-22 14:04:15 +01:00
|
|
|
- [x] `--dry-run` / `-n` flag for create and destroy
|
2026-03-22 15:35:27 +01:00
|
|
|
- [x] `--yes` / `-y` flag to skip confirmation (scripting)
|
|
|
|
|
- [x] `--json` flag for machine-readable output
|
|
|
|
|
- [x] `--version` flag
|
|
|
|
|
- [x] Destroy confirmation: type zone name to confirm (TTY detection)
|
|
|
|
|
- [x] Step-by-step numbered progress during create/destroy
|
|
|
|
|
- [x] Partial failure guidance: prints cleanup commands on create failure
|
|
|
|
|
- [x] Auto-sizing table columns (measures content before printing)
|
|
|
|
|
- [x] Dry-run notes that IP allocation is tentative
|
|
|
|
|
- [x] Publisher remove accepts publisher name or filename stem
|
|
|
|
|
- [x] Import uses current date + matches template net names
|
|
|
|
|
- [x] RFC 5737 comment on default public pool
|
|
|
|
|
|
|
|
|
|
### Multi-Network
|
|
|
|
|
- [x] Templates define multiple `net` blocks, each referencing a pool
|
2026-03-22 14:04:15 +01:00
|
|
|
- [x] List-based IPAM pools (explicit addresses from hoster)
|
|
|
|
|
- [x] Default router template with internal + public nets
|
2026-03-22 15:35:27 +01:00
|
|
|
- [x] Backward compat: legacy flat `pool` field in templates
|
2026-03-22 12:14:09 +01:00
|
|
|
|
|
|
|
|
## Not Yet Tested on illumos
|
|
|
|
|
|
2026-03-22 15:35:27 +01:00
|
|
|
- [ ] `zmgr create` (requires zonecfg/zoneadm/dladm)
|
2026-03-22 12:14:09 +01:00
|
|
|
- [ ] `zmgr destroy`
|
|
|
|
|
- [ ] `zmgr import`
|
|
|
|
|
- [ ] `zmgr status` (requires zoneadm)
|
2026-03-22 15:35:27 +01:00
|
|
|
- [ ] `zmgr boot` / `zmgr halt`
|
2026-03-22 12:14:09 +01:00
|
|
|
|
|
|
|
|
## Dependencies
|
|
|
|
|
|
|
|
|
|
| Crate | Version | Purpose |
|
|
|
|
|
|---|---|---|
|
|
|
|
|
| clap | 4.6.0 | CLI parsing (derive) |
|
2026-03-22 15:35:27 +01:00
|
|
|
| clap_complete | 4.6.0 | Shell completion generation |
|
2026-03-22 12:14:09 +01:00
|
|
|
| kdl | 6.5.0 | KDL v2 document parsing |
|
|
|
|
|
| miette | 7.6.0 | Diagnostic error reporting |
|
|
|
|
|
| thiserror | 2.0.18 | Error type derives |
|
|
|
|
|
| ipnet | 2.12.0 | IP network arithmetic |
|
|
|
|
|
| chrono | 0.4.44 | Date formatting |
|
2026-03-22 15:35:27 +01:00
|
|
|
| serde | 1.0.228 | Serialization framework |
|
|
|
|
|
| serde_json | 1.0.149 | JSON output |
|