You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: DECISIONS.md
+28-4Lines changed: 28 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,17 +36,40 @@ yet passable on this lab (reason noted). Generated registry docs are not committ
36
36
| Compute |`pcd_compute_volume_attach`|**PENDING** — code-complete; needs a booted instance **and** a Cinder backend (both lab-blocked). Best-effort volume waiter degrades gracefully without Cinder. |
37
37
| Block storage |`pcd_blockstorage_volume`|**PENDING** — no Cinder storage backend on the lab (`storageBackends={}`); volumes go `creating → error`. Create + waiter + error-detection verified. |
38
38
| Block storage (DS) |`pcd_blockstorage_volume`, `_snapshot`|**PENDING** — untestable without volumes on this lab. |
39
-
| Load balancing (Octavia) |`pcd_lb_loadbalancer`, `_listener`, `_pool`, `_member`, `_monitor`, `_l7policy`, `_l7rule`+ `_loadbalancer` DS |**PENDING** — Phase 3, code-complete; per-LB wait-for-`ACTIVE` lifecycle, root-LB resolution for every child, echo-only churny fields. Full-tree acc test + examples written. Octavia is live on the lab (Step 0), but LB provisioning needs a working amphora/provider driver; not yet run live (credentials unavailable this session). |
39
+
| Load balancing (Octavia) |`pcd_lb_loadbalancer`, `_listener`, `_pool`, `_member`, `_monitor`+ `_loadbalancer` DS |**PENDING** — Phase 3, code-complete; per-LB wait-for-`ACTIVE` lifecycle, root-LB resolution for every child, echo-only churny fields. Full-tree acc test + examples written. **PCD ships the OVN provider only** (verified on the CE lab: `providers=[ovn]`, no amphora), which is L4 — use TCP/UDP/SCTP listeners and OVN-supported pool algorithms; L7 policy/rule resources were removed (see the 2026-07-12 backout entry). LB provisioning needs a subnet (blocked by the lab's missing tenant-network pool), so not yet run live. |
40
40
| DNS (Designate) |`pcd_dns_zone`, `pcd_dns_recordset` + `pcd_dns_zone` DS |**PENDING** — Phase 3, code-complete; async create/update/delete → wait-for-`ACTIVE`/404. Acc test (zone + recordset + import) + examples written. Designate is live on the lab (Step 0) and DNS needs no compute/storage backend, so this should pass live — not yet run this session (credentials unavailable). |
41
41
| Key management (Barbican) |`pcd_keymanager_secret`, `pcd_keymanager_container` + `pcd_keymanager_secret` DS |**PENDING** — Phase 3, code-complete; write-only echo-only `payload`, URL-ref→UUID id handling, wait-for-`ACTIVE` only on create-with-payload. Acc test (secret + container + data source + import) + examples written. Barbican is live on the lab (Step 0) and needs no compute/storage backend, so this should pass live — not yet run this session (credentials unavailable). |
42
42
| Network QoS (Neutron) |`pcd_networking_qos_policy`, `_qos_bandwidth_limit_rule`, `_qos_dscp_marking_rule`, `_qos_minimum_bandwidth_rule` + `_qos_policy` DS |**PENDING** — Phase 3, code-complete; rules nested under a policy with composite `<policy_id>/<rule_id>` import, tags via the attributes-tags extension (`qos/policies` type), `ForceNew` on `qos_policy_id`. Full-tree acc test (policy + all three rules + data source + import) + examples written. Depends only on the Neutron `qos` extension (no compute/storage backend), so this should pass live — not yet run this session (credentials unavailable). |
43
-
| VPNaaS (Neutron) |`pcd_vpnaas_service`, `pcd_vpnaas_ike_policy`, `pcd_vpnaas_ipsec_policy`, `pcd_vpnaas_endpoint_group`, `pcd_vpnaas_site_connection`|**PENDING** — Phase 3, code-complete; new `internal/services/vpnaas` package reusing `NetworkV2Client` (VPNaaS is a Neutron extension). Service + site connection wait for 404 after delete (async teardown); policies/endpoint groups delete synchronously. Nested `lifetime` (IKE/IPsec) and `dpd` (connection) as `SingleNestedAttribute` (Optional+Computed, whole-object + per-field `UseStateForUnknown`); `psk` sensitive. Full-tree acc test (service + policies + endpoint groups + connection + rename + import) + examples written. Needs the Neutron `vpnaas` extension enabled on the lab; not yet run this session (credentials unavailable). **Deferrals:**`value_specs` escape hatch (not in the PCD port), nova/neutron-only fields upstream omits. Avoided two upstream bugs: the `phase_1_negotiation_mode` update-key typo and the `peer_cidrs []string` cast panic. |
44
43
| Project quotas |`pcd_compute_quotaset` (Nova), `pcd_networking_quota` (Neutron), `pcd_blockstorage_quotaset` (Cinder) |**PENDING** — Phase 3, code-complete; every quota field `Optional+Computed` with `UseStateForUnknown` (partial management — only user-set/changed fields are PUT via `*int` omitempty; server echoes the rest). No create API (Create = Update+read). **Delete is a deliberate no-op** (matches upstream `RemoveFromState`: destroying stops management without resetting quotas). Composite `<project_id>/<region>` id with legacy bare-`project_id` import tolerance; `project_id`/`region` are `ForceNew`. Per-service acc test (create project → set quotas → verify via API → update → import) + examples written. Needs live validation on the fresh CE lab (credentials unavailable this session). **Scope note:** matches upstream field-for-field except two deliberate deferrals — see the Deferred section. |
45
44
46
45
Both PENDING items are lab-side configuration gaps (Platform9 / lab-ops), not provider
47
46
defects; their acceptance tests flip green on a properly-configured PCD cloud.
48
47
49
48
49
+
## 2026-07-12 — backed out code PCD does not ship (VPNaaS, Octavia L7)
50
+
51
+
Live inspection of the CE lab's service catalog (all 14 services + the Octavia provider
52
+
list) confirmed which of the built resources correspond to features PCD actually ships.
53
+
Two were removed so the first-party provider only exposes what works on PCD:
54
+
55
+
-**VPNaaS — entire family removed** (`internal/services/vpnaas`, 5 resources, examples,
56
+
the `vpnaas`→"VPN" doc subcategory, and the registrations). The Neutron `vpnaas`
57
+
extension is *advertised* in the API, but PCD does not productize/support VPNaaS, so a
58
+
supported PCD provider should not expose it. Re-add if PCD ships it later — the code is
59
+
in git history.
60
+
-**Octavia L7 — `pcd_lb_l7policy` and `pcd_lb_l7rule` removed.** PCD ships only the
61
+
**OVN** Octavia provider (verified: `GET /octavia/v2/lbaas/providers` → `[ovn]`; the
62
+
`amphora` provider returns HTTP 400). OVN is a pure L4 load balancer with no HTTP
63
+
awareness, so L7 policies/rules can never function on PCD. The remaining five LB
64
+
resources (`loadbalancer`/`listener`/`pool`/`member`/`monitor`) work on OVN with L4
65
+
constraints (TCP/UDP/SCTP protocols, OVN pool algorithms, L4 health monitors), which is
66
+
a usage note, not a reason to remove them. `rootLBIDFromL7Policy` and the `l7policies`
67
+
import were removed from `loadbalancer.go`; `splitParentChildID` stays (the member
68
+
resource still uses it).
69
+
70
+
Everything else in the catalog maps to a live, shipped service (identity, image, network,
71
+
compute, volumev3, dns, key-manager, load-balancer), so nothing else was overbuilt.
72
+
50
73
## 2026-07-12 — quotas: scope and deferrals
51
74
52
75
The three quota resources match the upstream terraform-provider-openstack resources
@@ -125,8 +148,9 @@ Full evidence: [`docs/compatibility/ce-2026.4.md`](docs/compatibility/ce-2026.4.
125
148
-**Segments not enabled.** No `segment`/`network-segment-range` extension present. Plan
126
149
§8.2 marked `networking_segment`*parity* — reclassed to **conditional**, pending
127
150
re-probe on other PCD deployments.
128
-
-**VPNaaS is enabled** (`vpnaas`, `vpn-endpoint-groups`, `vpn-flavors`, …). Plan §8.3
129
-
guessed "likely disabled." VPNaaS family is **shippable** (Phase 3).
151
+
-**VPNaaS extension is advertised** (`vpnaas`, `vpn-endpoint-groups`, `vpn-flavors`, …),
152
+
but PCD does not productize/support VPNaaS. The family was built in Phase 3 and then
153
+
**backed out** (see the 2026-07-12 backout entry) — advertised-but-unsupported ≠ shippable.
130
154
-**Address groups, trunk, floating-IP port forwarding present** → the corresponding
131
155
`[EXT]` conditional resources (§8.2/§8.3) are **confirmed shippable**.
0 commit comments