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
| 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. |
33
+
| 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. |
34
+
| 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). |
35
+
| Compute |`pcd_compute_interface_attach`|**PENDING** — code-complete; needs a booted instance (boot-blocked). Acc test written. |
36
+
| 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. |
33
37
| Block storage |`pcd_blockstorage_volume`|**PENDING** — no Cinder storage backend on the lab (`storageBackends={}`); volumes go `creating → error`. Create + waiter + error-detection verified. |
34
38
| Block storage (DS) |`pcd_blockstorage_volume`, `_snapshot`|**PENDING** — untestable without volumes on this lab. |
MarkdownDescription: "Manages a compute flavor in PCD's Nova service (admin). Flavors are immutable; "+
68
-
"any change forces a new resource.",
72
+
MarkdownDescription: "Manages a compute flavor in PCD's Nova service (admin). Every attribute except "+
73
+
"`extra_specs` is immutable; changing one forces a new resource. `extra_specs` can be added, "+
74
+
"changed, or removed in place.",
69
75
Attributes: map[string]schema.Attribute{
70
76
"id": schema.StringAttribute{Computed: true, MarkdownDescription: "The flavor ID.", PlanModifiers: []planmodifier.String{stringplanmodifier.UseStateForUnknown()}},
71
-
"name": schema.StringAttribute{Required: true, MarkdownDescription: "The name of the flavor.", PlanModifiers: fn},
72
-
"ram": schema.Int64Attribute{Required: true, MarkdownDescription: "Memory in MB.", PlanModifiers: []planmodifier.Int64{}},
73
-
"vcpus": schema.Int64Attribute{Required: true, MarkdownDescription: "Number of vCPUs.", PlanModifiers: []planmodifier.Int64{}},
74
-
"disk": schema.Int64Attribute{Required: true, MarkdownDescription: "Root disk in GB.", PlanModifiers: []planmodifier.Int64{}},
75
-
"flavor_id": schema.StringAttribute{Optional: true, Computed: true, MarkdownDescription: "The desired flavor ID (auto-generated if omitted).", PlanModifiers: fnC},
76
-
"swap": schema.Int64Attribute{Optional: true, Computed: true, Default: int64default.StaticInt64(0), MarkdownDescription: "Swap space in MB."},
"is_public": schema.BoolAttribute{Optional: true, Computed: true, Default: booldefault.StaticBool(true), MarkdownDescription: "Whether the flavor is public."},
79
-
"ephemeral": schema.Int64Attribute{Optional: true, Computed: true, Default: int64default.StaticInt64(0), MarkdownDescription: "Ephemeral disk in GB."},
77
+
"name": schema.StringAttribute{Required: true, MarkdownDescription: "The name of the flavor. Changing this forces a new resource.", PlanModifiers: fn},
78
+
"ram": schema.Int64Attribute{Required: true, MarkdownDescription: "Memory in MB. Changing this forces a new resource.", PlanModifiers: fnInt},
79
+
"vcpus": schema.Int64Attribute{Required: true, MarkdownDescription: "Number of vCPUs. Changing this forces a new resource.", PlanModifiers: fnInt},
80
+
"disk": schema.Int64Attribute{Required: true, MarkdownDescription: "Root disk in GB. Changing this forces a new resource.", PlanModifiers: fnInt},
81
+
"flavor_id": schema.StringAttribute{Optional: true, Computed: true, MarkdownDescription: "The desired flavor ID (auto-generated if omitted). Changing this forces a new resource.", PlanModifiers: fnC},
82
+
"swap": schema.Int64Attribute{Optional: true, Computed: true, Default: int64default.StaticInt64(0), MarkdownDescription: "Swap space in MB. Changing this forces a new resource.", PlanModifiers: fnInt},
83
+
"rx_tx_factor": schema.Float64Attribute{Optional: true, Computed: true, MarkdownDescription: "RX/TX factor. Changing this forces a new resource.", PlanModifiers: []planmodifier.Float64{float64planmodifier.RequiresReplace(), float64planmodifier.UseStateForUnknown()}},
84
+
"is_public": schema.BoolAttribute{Optional: true, Computed: true, Default: booldefault.StaticBool(true), MarkdownDescription: "Whether the flavor is public. Changing this forces a new resource.", PlanModifiers: []planmodifier.Bool{boolplanmodifier.RequiresReplace()}},
85
+
"ephemeral": schema.Int64Attribute{Optional: true, Computed: true, Default: int64default.StaticInt64(0), MarkdownDescription: "Ephemeral disk in GB. Changing this forces a new resource.", PlanModifiers: fnInt},
86
+
"extra_specs": schema.MapAttribute{Optional: true, Computed: true, ElementType: types.StringType, MarkdownDescription: "Key/value extra specs (e.g. `hw:cpu_policy`). Can be added, changed, or removed on an existing flavor without replacing it."},
80
87
"region": schema.StringAttribute{Optional: true, Computed: true, MarkdownDescription: "The region. Defaults to the provider's region.", PlanModifiers: []planmodifier.String{stringplanmodifier.UseStateForUnknown()}},
0 commit comments