OSAC-1421: node_sets are template-driven, not tenant-composed - #166
OSAC-1421: node_sets are template-driven, not tenant-composed#166ElayAharoni wants to merge 1 commit into
Conversation
fulfillment-service's cluster create validation (PrivateClustersServer. validateNodeSets, internal/servers/private_clusters_server.go) rejects any node_sets entry whose map key or host type isn't defined in the associated ClusterTemplate.spec.node_sets — a cluster's node sets are entirely determined by the template; only size is user-configurable per template-defined slot. This supersedes this PRD/design's prior resolution (the "Cluster node_sets composition" open decision, and the "Cluster template node_sets defaults" non-goal), which had the wizard ignore ClusterTemplate.spec.node_sets entirely and let tenants freely add/remove host-type rows from the full HostTypes.List. Revises the field table, the host-type-picker section (renamed to reflect ClusterTemplates.Get as the source of truth, with HostTypes.List now used for display-name resolution only), dependencies, acceptance criteria, and test plan across both documents. Confirmed consistent with the equivalent fix already applied to the CSP Admin catalog item wizard (OSAC-2936, osac-project/osac-ui#102). See discussion on osac-project/osac-ui#99 and osac-project#102. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
|
@ElayAharoni: This pull request references OSAC-1421 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the feature to target the "5.0.0" version, but no target version was set. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: ElayAharoni The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository: osac-project/coderabbit/.coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
AI EP Review: EP-166Score: 8/10 | Verdict: PASS
Verdict: The PRD revision clearly describes a user-observable behavior change (template-driven node sets) with concrete justification, but introduces design leakage by naming internal server components (PrivateClustersServer.validateNodeSets) and file paths in the PRD. Feedback: Remove the three references to 'PrivateClustersServer.validateNodeSets' and the 'internal/servers/private_clusters_server.go' file path from prd.md — these are implementation details that belong exclusively in design.md. Replace them with user-facing language like 'the server rejects cluster creation requests with node sets that don't match the template' or 'the wizard prevents invalid node-set configurations by construction.' Also ensure the User Stories section (if it exists elsewhere in the PRD) includes a story for the revised cluster provisioning flow, e.g., 'As a Tenant User, I can provision a cluster where node-set types are pre-determined by the template and I only specify the number of nodes per set.' Critical (0)None. Important (2)
Suggestions (2)
Review costModel: claude-opus-4-6 |
AI Design Review: EP-166Score: 8/8 | Verdict: PASS
Verdict: A well-executed, narrowly scoped revision that aligns the design with the actual server-side contract — architecturally sound, feasible, well-tested, and cleanly bounded. Feedback: This revision is strong across all dimensions. Two minor improvements worth considering: (1) add a test scenario for switching between catalog items that reference different templates (verifying node-set rows re-render with the new template's keys/host types), and (2) briefly document the caching/re-fetch strategy for the ClusterTemplates.Get response — the design mentions 'reuse it if already fetched' but doesn't specify whether this is a React Query cache, a Formik-level memoization, or manual state. Neither is a blocker for merge. Critical (0)None. Important (0)None. Suggestions (3)
Review costModel: claude-opus-4-6 |
Summary
PrivateClustersServer.validateNodeSets,internal/servers/private_clusters_server.go) rejects anynode_setsentry whose map key or host type isn't defined in the associatedClusterTemplate.spec.node_sets— a cluster's node sets are entirely determined by the template; only size is user-configurable per template-defined slot.ClusterTemplate.spec.node_setsentirely and let tenants freely add/remove host-type rows from the fullHostTypes.List.ClusterTemplates.Getas the source of truth, withHostTypes.Listnow used for display-name resolution only), dependencies, acceptance criteria, and test plan across bothprd.mdanddesign.md. Prior text preserved in a collapsed<details>block for traceability.Context
This surfaced from a review discussion on osac-project/osac-ui#99 and osac-project/osac-ui#102 — batzionb flagged that this PRD's node_sets requirement had flip-flopped and no longer matched the backend's actual enforced behavior.
Test plan
internal/servers/private_clusters_server.goreference — verified against currentmainin fulfillment-serviceAssisted-by: Claude Code noreply@anthropic.com