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
Bring pcd_cluster_blueprint in line with what the blueprint API actually
stores and what the product actually exposes, verified against PCD
2026.4 and the PCD UI source.
Remove vm_high_availability and auto_resource_rebalancing. They are
cluster-scoped: the blueprint API does not store them (a POST carrying
both returns an object with neither key) and the UI never sends them in
blueprintConfigBody. A user setting them here believed HA/DRR were on
when nothing had happened. They remain on pcd_cluster, where they take
effect. Optional+Computed, so omitting configs are unaffected.
Make networking_type and enable_distributed_routing Computed-only. No
product surface exposes them — the UI hardcodes ovn / true and pcdctl
has no blueprint capability at all — but the API requires both on
create with no server default (omitted or "" networkingType is
rejected; omitted enableDistributedRouting is a 500). The provider now
takes the UI's role and supplies the product values, and rejects any
attempt to configure them, so Terraform cannot produce a region the
UI never would.
Add vnc_floating_ip on the resource and data source. resmgr silently
discards vncFloatingIp on POST and persists it only on PUT (identical
body: POST stores null, PUT stores the value); the UI never trips this
because it sets the IP on a later save. On create the provider follows
the POST with a PUT when the value is set. The API's null is modelled
as "" so a user can clear it with vnc_floating_ip = "" and get a stable
plan. Full lifecycle verified live — create, update, clear, omit,
never-set — each followed by "No changes".
Reword instance_shared_storage to match the UI toggle it maps to and
reference vm_storage, so the flag is discoverable next to the path it
qualifies. Fix the example, which set the now read-only networking_type.
-`auto_resource_rebalancing` (Attributes) Automatic workload-rebalancing settings. (see [below for nested schema](#nestedatt--auto_resource_rebalancing))
45
55
-`dns_domain_name` (String) The internal DNS domain name suffix for VMs (not Designate).
46
-
-`enable_distributed_routing` (Boolean) Whether cluster-wide distributed routing is enabled.
47
56
-`image_library_shared_storage` (Boolean) Whether the image library uses shared storage.
48
57
-`image_library_storage` (String) The image library storage location.
49
-
-`instance_shared_storage` (Boolean) Whether instance ephemeral storage is shared.
50
-
-`networking_type` (String) The networking type: `ovn` (default) or `ovs`.
58
+
-`instance_shared_storage` (Boolean) Set `true` when `vm_storage` is mounted as shared storage (e.g. NFS) across all hosts, so PCD can treat instance disks as shared. Matches the UI's "Enable if this path is mounted as shared storage across all hosts" toggle. Defaults to `false` (local disk).
51
59
-`storage_backends_json` (String, Sensitive) The Cinder storage backends as a JSON string (contains credentials). Read back from the server; set it only to change backends.
52
60
-`virtual_networking` (Attributes) Virtual (tenant) networking settings. (see [below for nested schema](#nestedatt--virtual_networking))
53
-
-`vm_high_availability` (Attributes) VM high-availability settings. (see [below for nested schema](#nestedatt--vm_high_availability))
54
-
-`vm_storage` (String) The VM ephemeral storage path.
55
-
56
-
<aid="nestedatt--auto_resource_rebalancing"></a>
57
-
### Nested Schema for `auto_resource_rebalancing`
58
-
59
-
Optional:
61
+
-`vm_storage` (String) The path on each hypervisor where instance (ephemeral) storage lives, e.g. `/opt/data/instances`.
62
+
-`vnc_floating_ip` (String) A floating IP through which VM VNC consoles are reached. Leave unset for none.
60
63
61
-
-`enabled` (Boolean) Whether auto-rebalancing is enabled.
62
-
-`rebalancing_frequency_mins` (Number) Rebalancing frequency in minutes (1-60).
63
-
-`rebalancing_strategy` (String) `vm_workload_consolidation` or `node_resource_consolidation`.
64
+
### Read-Only
64
65
66
+
-`enable_distributed_routing` (Boolean) Whether distributed routing is enabled. Always `true` — set by the provider to match the product; not user-configurable.
67
+
-`networking_type` (String) The region's networking type. Always `ovn` — set by the provider to match the product; not user-configurable.
65
68
66
69
<aid="nestedatt--virtual_networking"></a>
67
70
### Nested Schema for `virtual_networking`
@@ -72,14 +75,6 @@ Optional:
72
75
-`underlay_type` (String) The underlay type: `vlan` or `other`.
73
76
-`vnid_range` (String) The VLAN/VNI segmentation ID range (e.g. `1000:2000`).
74
77
75
-
76
-
<aid="nestedatt--vm_high_availability"></a>
77
-
### Nested Schema for `vm_high_availability`
78
-
79
-
Optional:
80
-
81
-
-`enabled` (Boolean) Auto-detect host failure and recover VMs.
MarkdownDescription: "Reads a PCD cluster blueprint by name.",
90
91
Attributes: map[string]schema.Attribute{
91
92
"name": schema.StringAttribute{Required: true, MarkdownDescription: "The blueprint (cluster) name."},
92
-
"networking_type": schema.StringAttribute{Computed: true, MarkdownDescription: "The networking type (`ovn` or `ovs`)."},
93
-
"enable_distributed_routing": schema.BoolAttribute{Computed: true, MarkdownDescription: "Whether distributed routing is enabled."},
93
+
"networking_type": schema.StringAttribute{Computed: true, MarkdownDescription: "The networking type PCD selected for the region (`ovn`). PCD-set; not user-configurable."},
94
+
"enable_distributed_routing": schema.BoolAttribute{Computed: true, MarkdownDescription: "Whether distributed routing is enabled for the region. PCD-set; not user-configurable."},
94
95
"dns_domain_name": schema.StringAttribute{Computed: true, MarkdownDescription: "The internal DNS domain name for VMs."},
"instance_shared_storage": schema.BoolAttribute{Computed: true, MarkdownDescription: "Whether instance storage is shared."},
107
-
"vm_storage": schema.StringAttribute{Computed: true, MarkdownDescription: "The VM ephemeral storage path."},
107
+
"vm_storage": schema.StringAttribute{Computed: true, MarkdownDescription: "The path on each hypervisor where instance (ephemeral) storage lives."},
108
+
"instance_shared_storage": schema.BoolAttribute{Computed: true, MarkdownDescription: "Whether `vm_storage` is mounted as shared storage (e.g. NFS) across all hosts."},
109
+
"vnc_floating_ip": schema.StringAttribute{Computed: true, MarkdownDescription: "The floating IP through which VM VNC consoles are reached, if any."},
108
110
"storage_backends_json": schema.StringAttribute{Computed: true, Sensitive: true, MarkdownDescription: "The Cinder storage backends as a JSON string (contains credentials)."},
0 commit comments