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
| Networking |`pcd_networking_floatingip_associate`|**VALIDATED** (2026-07-12) — associates a separately-allocated floating IP to a port; acc test builds the router path and skips unless `PCD_ACC_EXTERNAL_NETWORK` set. |
| Compute |`pcd_compute_instance` (boot) |**PENDING**— lab image-library gap: images don't reach the onboarded host's local library → nova returns HTTP 204 for image data. Create/schedule/wait/error-report verified; passes with a library-backed image. |
65
-
| Compute |`pcd_compute_flavor``extra_specs`|**PENDING** — code-complete; in-place add/change/remove; other flavor attrs now correctly force replacement. Acc test written (create + in-place update + import). Not yet run live (credentials unavailable this session). No lab blocker expected — flavors work on the lab. |
66
-
| Compute |`pcd_compute_instance` resize + `image_name`|**PENDING**— code-complete; flavor change → Nova resize/confirm (revert on failure); `image_name` resolved via Glance. Boot-blocked (same as instance boot above). |
67
-
| Compute |`pcd_compute_interface_attach`|**PENDING**— code-complete; needs a booted instance (boot-blocked). Acc test written. |
68
-
| 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. |
69
-
| Block storage |`pcd_blockstorage_volume`|**PENDING**— no Cinder storage backend on the lab (`storageBackends={}`); volumes go `creating → error`. Create + waiter + error-detection verified. |
86
+
| Compute |`pcd_compute_instance` (boot) |**VALIDATED**(2026-07-13) — boots against a library-synced image. The acc test resolves an existing image by name via a data source (env `PCD_ACC_IMAGE_NAME`), because PCD does not sync web-download (`copy-from`) images to the hypervisor's local Glance. |
87
+
| Compute |`pcd_compute_flavor``extra_specs`|**VALIDATED** — in-place add/change/remove; other flavor attrs force replacement. |
88
+
| Compute |`pcd_compute_instance` resize + `image_name`|**VALIDATED**(2026-07-13) — flavor change resizes in place (verified same instance ID); `image_name` resolved via Glance. |
89
+
| Compute |`pcd_compute_interface_attach`|**VALIDATED**(2026-07-13) — hot-attach a second NIC + import. |
| Block storage |`pcd_blockstorage_volume`|**VALIDATED**(2026-07-13) — create on the `synology-iscsi` backend → available → extend → import. |
70
92
| Block storage (DS) |`pcd_blockstorage_volume`, `_snapshot`|**PENDING** — untestable without volumes on this lab. |
71
93
| Load balancing (Octavia) |`pcd_lb_loadbalancer`, `_listener`, `_pool`, `_member`, `_monitor` + `_loadbalancer` DS |**VALIDATED** (2026-07-12) — full-tree apply on OVN (lb + TCP listener + `SOURCE_IP_PORT` pool + member + TCP monitor + DS + rename + import). **PCD ships the OVN provider only** (`providers=[ovn]`, no amphora), which is L4 — use TCP/UDP/SCTP listeners and OVN pool algorithms; L7 policy/rule resources were removed (see backout entry). `loadbalancer_provider` was added (default `ovn`) because Octavia's server-side default `amphora` is not enabled — without it every create failed. |
72
94
| 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). |
"metadata": schema.MapAttribute{Optional: true, Computed: true, ElementType: types.StringType, MarkdownDescription: "Key-value metadata attached to the instance."},
102
+
"metadata": schema.MapAttribute{Optional: true, Computed: true, ElementType: types.StringType, MarkdownDescription: "Key-value metadata attached to the instance.", PlanModifiers: []planmodifier.Map{mapplanmodifier.UseStateForUnknown()}},
102
103
"user_data": schema.StringAttribute{Optional: true, MarkdownDescription: "User data (cloud-init) for the instance. Changing this forces a new resource.", PlanModifiers: fn},
103
104
"availability_zone": schema.StringAttribute{Optional: true, Computed: true, MarkdownDescription: "Availability zone to launch in. Changing this forces a new resource.", PlanModifiers: fnC},
104
105
"config_drive": schema.BoolAttribute{Optional: true, MarkdownDescription: "Whether to use a config drive. Changing this forces a new resource.", PlanModifiers: []planmodifier.Bool{}},
"uuid": schema.StringAttribute{Optional: true, Computed: true, MarkdownDescription: "Network UUID to attach to (required unless port is set)."},
114
+
"uuid": schema.StringAttribute{Optional: true, Computed: true, MarkdownDescription: "Network UUID to attach to (required unless port is set).", PlanModifiers: stable},
114
115
"name": schema.StringAttribute{Optional: true, MarkdownDescription: "Network name (informational)."},
115
-
"port": schema.StringAttribute{Optional: true, Computed: true, MarkdownDescription: "Existing port to attach (required unless uuid is set)."},
116
+
"port": schema.StringAttribute{Optional: true, Computed: true, MarkdownDescription: "Existing port to attach (required unless uuid is set).", PlanModifiers: stable},
0 commit comments