kvm2: domain and volume XML, metadata element and NoCloud seed builders
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@ Plan: [docs/plans/2026-09-16-1333-kvm2-provider.md](../plans/2026-09-16-1333-kvm
|
||||
- [x] Step 0 — Plan file and branch
|
||||
- [x] Step 1 — The spec, `docs/kvm2-provider-spec.md`
|
||||
- [x] Step 2 — Config wiring, IDs, state mapping, classify
|
||||
- [ ] Step 3 — Pure builders: domain and volume XML, metadata, seed
|
||||
- [x] Step 3 — Pure builders: domain and volume XML, metadata, seed
|
||||
- [ ] Step 4 — Transport, seam, decorator, fakes
|
||||
- [ ] Step 5 — Image cache and pool-space precheck
|
||||
- [ ] Step 6 — The four contract methods
|
||||
@@ -56,7 +56,7 @@ re-derive the mapping.
|
||||
|
||||
## Step 2 — Config wiring, IDs, state mapping, classify
|
||||
|
||||
2026-09-16 16:40. First subagent step. The brief named the allowed files,
|
||||
2026-09-16 16:38. First subagent step. The brief named the allowed files,
|
||||
the spec entries, the test names and the prohibition on
|
||||
`internal/provider/kvm/`; the agent reported nothing opened there, with one
|
||||
honest caveat: a `golangci-lint` run printed seven single source lines from
|
||||
@@ -94,3 +94,34 @@ because the local toolchain is Go 1.27.0 while `go.mod` says 1.26 and the
|
||||
bundled staticcheck predates it; it reproduces on untouched packages, so lint
|
||||
is deferred to Step 10 with a toolchain note. The `.claude/settings.json`
|
||||
modification is still local and uncommitted.
|
||||
|
||||
## Step 3 — Pure builders: domain and volume XML, metadata, seed
|
||||
|
||||
2026-09-16 16:55. Second subagent step, new files only: `xml.go`,
|
||||
`metadata.go`, `volume.go`, `seed.go` and their tests (26 tests). The
|
||||
domain XML is built from `encoding/xml` structs, both disks are
|
||||
`type="file"` with resolved paths (the AppArmor lesson), UEFI is the default
|
||||
with the secure-boot feature disabled, the metadata element parses with or
|
||||
without its namespace declaration, and the seed ISO is staged under
|
||||
`os.TempDir()` (the library uses `os.MkdirTemp("", "")`, so `TMPDIR` is
|
||||
honoured; the test points it at a `t.TempDir()` and asserts nothing is left
|
||||
behind).
|
||||
|
||||
Decisions the agent made, all accepted: `buildDomainXML` defaults an empty
|
||||
disk format to qcow2 and rejects anything but qcow2 or raw;
|
||||
`buildVolumeXML` rejects a non-positive capacity; `buildSeedISO` rejects an
|
||||
empty name; the guest-agent script still runs the enable-and-start step when
|
||||
the agent is already installed; the multipart boundary is random, so
|
||||
vendor-data is not byte-deterministic across calls (the seed is rebuilt every
|
||||
Create anyway).
|
||||
|
||||
Commands:
|
||||
|
||||
```sh
|
||||
gofmt -l ./internal/provider/kvm2 ; go vet ./internal/provider/kvm2/ && go test -race -count=1 ./internal/provider/kvm2/
|
||||
go build ./... && go test -short ./...
|
||||
```
|
||||
|
||||
All `ok`. Review greps for a v1 import or v1 identifiers are empty; the only
|
||||
`type="volume"` in the package is the comment explaining why it is not used.
|
||||
The agent reported "files read outside the allowed set: none".
|
||||
|
||||
Reference in New Issue
Block a user