Skip to content

Commit 28d648a

Browse files
committed
docs: PCD-9784 spec correction and plan execution notes
1 parent a2745a7 commit 28d648a

2 files changed

Lines changed: 42 additions & 3 deletions

File tree

docs/superpowers/plans/2026-09-03-pcd-9784-docs.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,3 +442,35 @@ Check: no OpenStack project names in prose (`cinder` appears only inside code an
442442
- [ ] **Step 1:** On the PR branch, `chore: release v0.1.11` commit turning `## [Unreleased]` into `## [0.1.11] - <date>`; push.
443443
- [ ] **Step 2:** `gh pr merge --merge`; then `git push origin --delete pushkar/pcd-9784-docs` (the worktree quirk skips remote deletion).
444444
- [ ] **Step 3:** `git fetch origin main && git tag -a v0.1.11 -m v0.1.11 origin/main && git push origin v0.1.11`; `gh run watch` the release; confirm `https://registry.terraform.io/providers/platform9/pcd/0.1.11/docs/guides/importing` renders.
445+
446+
---
447+
448+
## Execution notes (2026-09-04)
449+
450+
Tasks 1 to 6 are done; Task 7 waits for the merge decision. What the lab run changed
451+
relative to the plan:
452+
453+
- The first apply stalled: with `backends = ["nfs"]` (the top-level key) resmgr computed an
454+
empty backend set, `cinder-volume` could not start, and the host looped in
455+
`auth-converging`, where resmgr refuses every role change (409). Terraform was
456+
interrupted; the tainted storage role was replaced with `backends = ["nfs-primary"]`
457+
(resmgr accepted the removal after 51 s), which produced the correct settings. The
458+
`backends` description, both examples, the guide, and the handoff were corrected.
459+
- Convergence then still failed silently because the NFS options were quoted strings
460+
(`"true"`); the host agent reads them back as booleans. Unquoting them in the blueprint
461+
(an in-place `pcd_cluster_blueprint` update) made the host reach `ok` within a minute.
462+
Documented in the guide, both examples, the blueprint description, and the handoff.
463+
- `terraform untaint` was needed on the three roles after the interrupted apply so the
464+
full apply added only the six remaining resources (network, subnet, image, instance,
465+
volume, attachment): image 1m21s, instance 1m31s, volume 3s, attachment 9s; VM
466+
pingable at 172.16.122.11; plan clean.
467+
- Teardown took three `terraform destroy` runs: 422 on the storage role (the deleted
468+
image's backing volume `image-<id>` stays behind; deleted by hand), 500 on the cluster
469+
and 403 `HostInAuthState` on the host-config unassignment while deauthorizations
470+
landed. Recorded in the guide's Destroy section and the example README.
471+
- The image endpoint needs no override for LAN users: the provider already prefers the
472+
image-library host's admin endpoint (`https://<host>:9494`); the guide states the
473+
reachability requirement instead.
474+
- Lab left as the testsuite expects: host `136fc11a` authorized with no roles, region
475+
empty, host NIC restored, cinder pre-enabled; the NFS export on the hypervisor VM
476+
(`/srv/nfs/pcd`) remains and is harmless.

docs/superpowers/specs/2026-09-03-pcd-9784-docs-design.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,17 @@ docs below.
4444
`storage_backends_json` is written as `null # sensitive`, so generated HCL never carries
4545
backend credentials, and leaving it unset on an imported blueprint preserves the
4646
backends.
47-
- In the live blueprint, `imageLibraryStorage` holds the volume type's *name*, and
48-
`pcd_host_cluster_role.backends` lists the top-level keys of `storage_backends_json`.
49-
The lab's Synology backend uses the full driver class path
47+
- In the live blueprint, `imageLibraryStorage` holds the volume type's *name*. The lab's
48+
Synology backend uses the full driver class path
5049
`cinder.volume.drivers.synology.synology_iscsi.SynoISCSIDriver`.
50+
- Corrected during execution (the lab run used differing key names): the top-level key of
51+
`storage_backends_json` becomes `volume_backend_name` on the host, so it is what a
52+
volume type's `volume_backend_name` must equal; the second-level key is the driver
53+
configuration name, which `pcd_host_cluster_role.backends` lists and which becomes the
54+
Cinder backend section (`<host-uuid>@<config>`). The provider's `backends` description
55+
said "top-level keys"; it was wrong and is fixed in this change. Boolean driver options
56+
must be JSON booleans: a quoted `"true"` never validates on the host, which then
57+
converges forever while resmgr refuses every role change.
5158

5259
## Decisions
5360

0 commit comments

Comments
 (0)