Skip to content

Commit eb82797

Browse files
authored
Merge pull request #32 from platform9/feat/cluster-blueprint-resource
docs(decisions): Kubernetes out of scope; cluster-blueprint write API not viable
2 parents 384955c + bd1dbc6 commit eb82797

1 file changed

Lines changed: 33 additions & 7 deletions

File tree

DECISIONS.md

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,39 @@ catalog endpoint and reuses the authenticated ProviderClient for tokens (verifie
117117
against the CE lab). Shipped: `pcd_host_config`, `pcd_host_role`,
118118
`pcd_host_config_assignment`, and a `pcd_cluster_blueprint` **data source**.
119119

120-
**The `pcd_cluster_blueprint` resource (write path) is deliberately deferred to a focused
121-
follow-up.** Its object is uniquely hairy: a full-object `PUT` (partial models risk
122-
clearing fields), a `storageBackends` map that carries **plaintext driver credentials**,
123-
and create semantics (`POST` vs `PUT`) that cannot be safely verified without mutating the
124-
lab's single working blueprint. It deserves its own careful pass. The mutating resmgr
125-
resources' acceptance tests are opt-in (`PCD_ACC_RESMGR`) so they never touch a live
126-
cluster by accident.
120+
The mutating resmgr resources' acceptance tests are opt-in (`PCD_ACC_RESMGR`) so they never
121+
touch a live cluster by accident.
122+
123+
### Kubernetes (PCD-K / Cluster-API) — OUT OF SCOPE (2026-07-13)
124+
125+
The `kubernetes` api-docs service (`pcd_kubernetes_cluster` — a Cluster-API `Cluster` with
126+
ClusterClass topology) is **deliberately out of scope** for this provider. It is a
127+
fundamentally different API model (CAPI/Kubernetes-native, not the OpenStack/resmgr REST
128+
shape everything else uses) and targets a different audience; it belongs in a dedicated
129+
CAPI/Kubernetes provider, not this IaaS provider. Decision by the maintainer. Revisit only
130+
if there is explicit demand to manage PCD-K clusters as Terraform resources here.
131+
132+
### `pcd_cluster_blueprint` resource — NOT SHIPPED; blueprint write API is not viable (2026-07-13)
133+
134+
Attempted the write resource and drove the live `resmgr/v2` blueprint API directly (the lab
135+
blueprint was made freely mutable for this). Findings on CE 2026.4:
136+
137+
- **Create** (`POST /blueprint`) works, but only with a *complete* object that includes a
138+
valid, non-empty `storageBackends`. Any partial object — missing scalar fields, or an
139+
empty/`null` `storageBackends` — returns an opaque **HTTP 500** (not a validation 400),
140+
giving no guidance on what is required.
141+
- **Delete** (`DELETE /blueprint/{name}`) works.
142+
- **Update has no working path.** The documented `PUT /blueprint/{clusterName}` returns
143+
**404 even for a blueprint that exists**; `POST /blueprint/{name}` → 404, `PATCH` → 405,
144+
`PUT /blueprint` → 500, and a repeat `POST /blueprint` → 404. Nothing edits an existing
145+
blueprint in place.
146+
147+
A Terraform resource is not viable on this API: with no working update it would have to
148+
force-replace on every change, and replacing a cluster-defining object (that hosts/clusters
149+
depend on) is dangerous — while create is itself fragile (opaque 500s). So the write
150+
resource is **not shipped**; the `pcd_cluster_blueprint` **data source** (read) is the
151+
supported surface, and blueprints are authored via the PCD UI wizard. Revisit if a later CE
152+
build fixes the blueprint update path (and returns proper validation errors on create).
127153

128154
## 2026-07-12 — backed out code PCD does not ship (VPNaaS, Octavia L7)
129155

0 commit comments

Comments
 (0)