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: CHANGELOG.md
+46Lines changed: 46 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,52 @@ All notable changes to this project are documented here. The format is based on
6
6
7
7
## [Unreleased]
8
8
9
+
## [0.1.7] - 2026-08-18
10
+
11
+
### Fixed
12
+
13
+
-`pcd_cluster`, `pcd_cluster_blueprint`, `pcd_host_config` and the host reads behind
14
+
`pcd_host_config_assignment` / `pcd_host_role`: an object resmgr no longer has is now removed from
15
+
state. resmgr answers `GET` for a deleted cluster with `200` and a body of `null` rather than a
16
+
`404`; that decoded into a zero-value struct with no error, so Read reported the resource as
17
+
present-but-blank and never called `RemoveResource` — leaving Terraform convinced a destroyed
18
+
region still existed and unable to rebuild it. A 200 that describes no object is now absence.
19
+
-`pcd_compute_instance`: `availability_zone = "<az>:<host>"` (admin host pin) no longer fails with "inconsistent result after apply" — the pin is preserved on read, as upstream does.
-`availability_zone` (String) Availability zone to launch in. Changing this forces a new resource.
184
+
-`availability_zone` (String) Availability zone to launch in. Admins may pin a host with `<az>:<host>` (e.g. `nova:hyp2`); the pin is preserved on refresh (Nova only reports the zone); `terraform import` recovers only the zone, so re-set the pin in state before applying. Changing this forces a new resource.
185
+
-`block_device` (Block List) Block devices to create the instance with (Nova `block_device_mapping_v2`), one block per device. Mirrors `openstack_compute_instance_v2`. Use it to boot from a new volume, an existing volume, or a volume snapshot, to install from an ISO, or to attach extra disks at boot. The device with `boot_index = 0` is the root disk; when one is present `image_id`/`image_name` may be omitted. Create-only: changing this forces a new resource. Attach/detach volumes on a running instance with `pcd_compute_volume_attach` instead. (see [below for nested schema](#nestedblock--block_device))
48
186
-`config_drive` (Boolean) Whether to use a config drive. Changing this forces a new resource.
49
187
-`flavor_id` (String) The flavor ID (alternative to flavor_name). Changing this triggers an in-place resize.
50
188
-`flavor_name` (String) The flavor name (alternative to flavor_id). Changing this triggers an in-place resize.
51
-
-`image_id` (String) The image ID to boot from (alternative to image_name). Changing this forces a new resource.
52
-
-`image_name` (String) The image name to boot from, resolved via Glance (alternative to image_id). Exactly one of image_id/image_name is required. Changing this forces a new resource.
189
+
-`image_id` (String) The image ID to boot from (alternative to image_name). Required unless a `block_device` with `boot_index = 0` supplies the boot disk. Changing this forces a new resource.
190
+
-`image_name` (String) The image name to boot from, resolved via Glance (alternative to image_id). Required unless a `block_device` with `boot_index = 0` supplies the boot disk. Changing this forces a new resource.
53
191
-`key_pair` (String) The name of a keypair to inject. Changing this forces a new resource.
54
-
-`metadata` (Map of String) Key-value metadata attached to the instance.
192
+
-`metadata` (Map of String) Key-value metadata attached to the instance. The key `migration-priority` is reserved — set it through `migration_priority` instead.
193
+
-`migration_priority` (String) How PCD's Dynamic Resource Rebalancing (DRR) service treats this VM when balancing hosts: `normal`, `low`, `high`, or `never` (excluded from automatic migration). Unset means DRR's default. Stored as the `migration-priority` server metadata key, exactly as the PCD UI's Set Migration Priority dialog does. Updatable in place; set `""` to clear.
55
194
-`network` (Block List) Networks to attach. Changing this forces a new resource. (see [below for nested schema](#nestedblock--network))
56
195
-`region` (String) The region. Defaults to the provider's region.
196
+
-`scheduler_hints` (Block List) Scheduler hints passed to Nova at boot (`os:scheduler_hints`). Mirrors `openstack_compute_instance_v2`. Use `group` with a `pcd_compute_servergroup` for affinity / anti-affinity placement, `different_host` / `same_host` to place relative to existing instances. At most one block. Create-only: changing this forces a new resource. Nova does not report hints back, so the block round-trips from configuration. (see [below for nested schema](#nestedblock--scheduler_hints))
57
197
-`security_groups` (Set of String) Names of security groups to associate. Changing this forces a new resource.
58
198
-`user_data` (String) User data (cloud-init) for the instance. Changing this forces a new resource.
-`source_type` (String) The source of the device: `image`, `volume`, `snapshot`, or `blank`.
212
+
213
+
Optional:
214
+
215
+
-`boot_index` (Number) Boot order. `0` is the root disk, `1` the next device (e.g. an installer ISO), `-1` for a non-bootable data disk. Defaults to `-1`.
216
+
-`delete_on_termination` (Boolean) Delete the created volume when the instance is deleted. Defaults to `false`.
217
+
-`destination_type` (String) Where the device lives: `volume` (Cinder-backed, persistent) or `local` (ephemeral on the hypervisor). Defaults to `volume`.
218
+
-`device_type` (String) The device type: `disk` (default) or `cdrom` (for an installer ISO).
219
+
-`disk_bus` (String) The bus to attach the device on (e.g. `virtio`, `scsi`, `ide`).
220
+
-`guest_format` (String) Filesystem format for a `blank` device (e.g. `ext4`, `swap`).
221
+
-`uuid` (String) The ID of the source image, volume, or snapshot. Not used with `source_type = "blank"`.
222
+
-`volume_size` (Number) Size in GiB of the volume to create. Required for `blank`; for `image`/`snapshot` sources it must be at least the source size.
223
+
-`volume_type` (String) The Cinder volume type for a created volume.
224
+
225
+
66
226
<aid="nestedblock--network"></a>
67
227
### Nested Schema for `network`
68
228
@@ -72,6 +232,17 @@ Optional:
72
232
-`port` (String) Existing port to attach (required unless uuid is set).
73
233
-`uuid` (String) Network UUID to attach to (required unless port is set).
74
234
235
+
236
+
<aid="nestedblock--scheduler_hints"></a>
237
+
### Nested Schema for `scheduler_hints`
238
+
239
+
Optional:
240
+
241
+
-`additional_properties` (Map of String) Arbitrary extra hints (key → value) passed through unvalidated, e.g. `query`. Merged last, so a key here overrides the typed attributes (`group`, `different_host`, `same_host`); `query` must be a JSON-encoded string.
242
+
-`different_host` (List of String) Instance IDs whose hosts this instance must NOT be scheduled on.
243
+
-`group` (String) A server group ID to place the instance in (see `pcd_compute_servergroup`).
244
+
-`same_host` (List of String) Instance IDs whose host this instance MUST be scheduled on.
-`description` (String) A description of the network.
44
65
-`external` (Boolean) Whether the network has an external routing facility.
45
66
-`name` (String) The name of the network.
67
+
-`port_security_enabled` (Boolean) Whether port security (security groups and anti-spoofing) is enforced on ports of this network. Defaults to `true`. Set `false` for a Layer 2 / "Simple" network, where the VM manages its own addressing and security groups do not apply — mirrors the PCD UI's Simple Network option.
46
68
-`region` (String) The region. Defaults to the provider's region.
47
69
-`segments` (Attributes List) Provider-network segments (admin only). One segment creates a physical network (e.g. `network_type = "flat"` / `"vlan"` on a `physical_network` label from the host config); multiple segments create a multi-provider network. Create-only: segments are not refreshed from the API and cannot be imported. Changing this forces a new resource. (see [below for nested schema](#nestedatt--segments))
48
70
-`shared` (Boolean) Whether the network is shared across projects.
0 commit comments