feat(compute): Nova keypair/flavor/servergroup/instance and data sources - #6
Merged
Conversation
- pcd_compute_keypair: create (with server-side key generation when no public_key), read, import. Acceptance-tested against the CE lab. - pcd_compute_instance: boot-from-image with network blocks, security groups, keypair, metadata, user_data, config drive; ACTIVE and deleted waiters; flavor name -> id resolution; first-IPv4 access address. Code complete and builds. - clients: ComputeV2Client (Nova). NOTE: the pcd_compute_instance boot acceptance test cannot pass yet because the CE hypervisor pcd-iso-test fails to spawn instances (Nova MaxRetriesExceeded / build failures). Nested virt and capacity are fine; the compute-node error is unreachable (SSH to the host is rejected). Tracked in DECISIONS.md; needs owner action.
…urces Nova v2. All acceptance-tested against the CE lab (boot-independent). - pcd_compute_flavor: create/read/import (immutable), + pcd_compute_flavor data source. - pcd_compute_servergroup: affinity/anti-affinity group, create/read/import. - pcd_compute_keypair data source and pcd_compute_availability_zones data source. pcd_compute_instance remains code-complete but its boot acceptance test is blocked on a CE image-library issue (images created via the API don't populate the onboarded host's local library -> nova gets HTTP 204 for image data). Tracked in DECISIONS.md.
This was referenced Jul 12, 2026
PF9-pushkar
added a commit
that referenced
this pull request
Jul 14, 2026
feat(compute): Nova keypair/flavor/servergroup/instance and data sources
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 1 — compute (Nova v2)
Fourth feature family. Boot-independent resources/data sources are acceptance-tested green against the CE lab; the flagship instance is code-complete and boot-gated on a lab issue (below).
Resources (acc-green)
pcd_compute_keypair— create (with server-side key generation), read, import.pcd_compute_flavor— admin flavor, immutable, create/read/import.pcd_compute_servergroup— affinity/anti-affinity, immutable, create/read/import.Resource (code-complete, boot-gated)
pcd_compute_instance— boot-from-image with network blocks, security groups, keypair, metadata, user_data, config drive; ACTIVE/deleted waiters; flavor name→id resolution; first-IPv4 access address. It drove Nova cleanly through four host-onboarding gaps on the CE hypervisor (dir perms, stale glance endpoint, glance reachability, and finally the image-library gap) and reported each precisely. Its boot test flips green the moment the lab can serve a library-backed image (seeDECISIONS.md).Data sources (acc-green)
pcd_compute_flavor,pcd_compute_keypair,pcd_compute_availability_zones.Test evidence
TF_ACC=1 make testaccfor./internal/services/compute/— flavor, servergroup, keypair (+DS), availability-zones: 5/5 passing. Instance boot: blocked on lab image library.Notes
networkuses HCL block syntax (network { uuid = ... }) for community-provider parity.compute_interface_attach,compute_volume_attach(needs Cinder + a booted instance), flavorextra_specs, and instance resize.