Skip to content

OSAC-1270: PRD: Base OS Management for Bare Metal Instances - #135

Merged
openshift-merge-bot[bot] merged 5 commits into
osac-project:mainfrom
adriengentil:prd/OSAC-2659
Jul 21, 2026
Merged

openshift-merge-bot[bot] merged 5 commits into
osac-project:mainfrom
adriengentil:prd/OSAC-2659

Conversation

@adriengentil

@adriengentil adriengentil commented Jul 21, 2026 •

Copy link
Copy Markdown
Contributor

PRD: Base OS Management for Bare Metal Instances

Jira: https://redhat.atlassian.net/browse/OSAC-1270

Summary

This PRD covers the integration of the DiskImage resource (OSAC-2540) into BMaaS. It does not change DiskImage behavior — that is fully specified in OSAC-2540. The feature adds a mandatory DiskImage reference to BaremetalInstance creation, extends DiskImage deletion protection to cover active BaremetalInstances, and allows Cloud Provider Admins and Tenant Admins to reference a default DiskImage in BaremetalInstanceCatalogItems.

Requesting Review On

  • Requirements completeness and accuracy
  • Scope (in scope / out of scope)
  • User story coverage across personas
  • Relationship and boundary with OSAC-2540

Summary by CodeRabbit

  • Documentation
    • Added product requirements documentation for base operating system management for bare-metal instances.
    • Defined BMaaS integration behavior for DiskImage discoverability, selection rules, and lifecycle handling, including deletion blocking when referenced.
    • Documented admin and tenant capabilities for DiskImage management, along with UI/API expectations for provisioning-time selection and E2E test coverage requirements.

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Adrien Gentil <agentil@redhat.com>
@coderabbitai

coderabbitai Bot commented Jul 21, 2026 •

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Adds a PRD defining how BMaaS selects, references, provisions, and protects DiskImage resources, including scope boundaries, user stories, dependencies, UI/API expectations, E2E coverage, and provenance metadata.

Changes

BMaaS Base OS Management

Layer / File(s) Summary
Base OS management requirements
enhancements/OSAC-1270-base-os-management-bmaas/prd.md
Defines effective DiskImage selection through explicit or catalog-default references, provisioning behavior, deletion blocking for active references, scope boundaries, user stories, dependencies, UI/API expectations, E2E coverage, and provenance metadata.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Possibly related PRs

Suggested reviewers: maorfr, chenyosef

🚥 Pre-merge checks | ✅ 11
✅ Passed checks (11 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the PRD’s focus on base OS management for bare metal instances.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
No-Hardcoded-Secrets ✅ Passed PASS: The only changed file is a PRD markdown doc; no API key/token/password/private-key patterns, base64 blobs, or credentialed URLs were found.
No-Weak-Crypto ✅ Passed Only a PRD markdown file changed; no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB or custom crypto patterns were present.
No-Injection-Vectors ✅ Passed Only a PRD markdown file changed; no executable code or risky sinks like eval, shell=True, or unsafe deserialization were introduced.
Container-Privileges ✅ Passed Only a PRD markdown file changed; no container/K8s manifests or pod specs were added or modified.
No-Sensitive-Data-In-Logs ✅ Passed The PR only adds a PRD markdown file and contains no logging code or sensitive values like secrets, tokens, PII, or session IDs.
Ai-Attribution ✅ Passed AI assistance is attributed with Assisted-by trailers on all PR commits; no AI-related Co-Authored-By trailer appears.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…nceCatalogItems

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Adrien Gentil <agentil@redhat.com>
@adriengentil
adriengentil marked this pull request as ready for review July 21, 2026 09:05
@openshift-ci
openshift-ci Bot requested review from maorfr and ronniel1 July 21, 2026 09:05
@github-actions

github-actions Bot commented Jul 21, 2026 •

Copy link
Copy Markdown

AI EP Review: EP-135

Score: 10/10 | Verdict: PASS

Criterion Score Notes
What 2/2 Clear, specific user-facing capabilities described. Three personas (Cloud Provider Admin, Tenant Admin, Tenant User) each have at least one user story. BMaaS service explicitly in scope. In Scope items describe concrete, observable outcomes (browsing with metadata, mandatory DiskImage reference, deprecation warnings, lifecycle management, deletion blocking).
Why 2/2 Concrete justification in Problem Statement: bare metal instances use raw URL strings with no discoverability, metadata, governance, or lifecycle management. Consequence clearly stated — opaque and error-prone provisioning, no guard against stale or unsupported images. Ties to BMaaS usability and adoption.
How 2/2 In Scope items are specific and measurable — each can be verified by using the product (e.g., 'browse the list of available OS images with metadata via the UI and API', 'DiskImage reference is mandatory when creating a BaremetalInstance', 'deletion is blocked when active BaremetalInstances reference the image'). Dependency on OSAC-2540 is clearly delineated.
Task 2/2 Clearly a product feature enhancement — adds new user-facing capabilities (image catalog, mandatory selection, lifecycle management, UI support) across multiple personas. Not a bug, task, or documentation-only change.
Size 2/2 Focused on one coherent capability: integrating DiskImage into BMaaS. Browsing, selection, lifecycle management, and deletion protection are interdependent — image selection without a catalog is incomplete, lifecycle management without selection is meaningless. Out of Scope is well-defined. Appropriately defers DiskImage resource definition to OSAC-2540.

Verdict: A well-focused, clearly written PRD that describes concrete user-facing capabilities for DiskImage integration into BMaaS with strong business justification, though user stories underrepresent the stated scope and cross-cutting dimensions are not addressed.

Feedback: User stories only cover catalog item creation and deletion blocking, but In Scope describes much broader capabilities (browsing, lifecycle management, deprecation UX) — add stories for these so each In Scope capability maps to a verifiable user story. CPA and TA stories are near-identical; differentiate them or justify the duplication. Consider addressing relevant cross-cutting dimensions (documentation needs, E2E testing scope, installation impact) even briefly, as the OSAC dimensions checklist expects these for feature PRDs.

Critical (0)

None.

Important (3)

  1. User stories underrepresent In Scope capabilities: no stories for image browsing/discovery (In Scope Bump actions/setup-python from 5 to 6 #1), admin lifecycle management actions (register, update, deprecate, reactivate — In Scope Create bare metal fulfillment proposal #4-5), or deprecation/obsolete warning UX (In Scope adds Apache 2.0 LICENSE file #3). A PM verifying against user stories alone would miss testing half the stated scope.
  2. Cloud Provider Admin and Tenant Admin user stories are near-identical copies (catalog item creation + deletion blocking). If the personas truly have identical capabilities, a brief justification would clarify this is intentional; if they differ (e.g., CPA manages global images, TA manages tenant-scoped images), the stories should reflect those differences.
  3. No cross-cutting dimension coverage: documentation needs, E2E testing scope, installation impact, and milestone scoping are not addressed. The OSAC dimensions checklist expects these for feature PRDs.

Suggestions (3)

  1. Add a Tenant User story for browsing and discovering available OS images — this is the first In Scope item and the primary user journey.
  2. Add admin stories for the lifecycle management flow (register a new DiskImage, deprecate an aging image, reactivate a mistakenly deprecated image) to make the full admin workflow verifiable.
  3. Consider adding a brief 'Verification Scope' or 'Acceptance Criteria' section to explicitly state what must be demonstrably working for this milestone.

Review cost

Model: claude-opus-4-6
Cost: $0.4428
Tokens: 6 in / 8.2k out
Cache: 200.0k read
Active time: 2m 41s
API calls: 0

@github-actions github-actions Bot added the rfe-creator-auto-reviewed EP was reviewed by AI label Jul 21, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@enhancements/OSAC-1270-base-os-management-bmaas/prd.md`:
- Around line 20-21: Update the DiskImage deletion requirements for both Cloud
Provider Admins and Tenant Admins to apply the same deletion guard to global and
tenant-scoped images. Explicitly define which BaremetalInstance and
BaremetalInstanceCatalogItem lifecycle states are considered active and
therefore block deletion.
- Line 1: Update the document title and all compound modifier usages in the PRD
to consistently use “bare-metal” with a hyphen, including user-facing
requirements; preserve standalone noun usages where “bare metal” is
grammatically correct.
- Line 18: Clarify the DiskImage requirement in the BaremetalInstance creation
behavior: resolve a user-provided DiskImage first, then fall back to the
catalog-item default, and reject creation only when neither provides a
reference. Update the mandatory wording so it describes this effective-reference
requirement rather than requiring direct user input.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: osac-project/coderabbit/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: da192b16-f4ae-4844-bc62-486bf8fbd1d5

📥 Commits

Reviewing files that changed from the base of the PR and between a84a7b8 and 326a20c.

📒 Files selected for processing (1)
  • enhancements/OSAC-1270-base-os-management-bmaas/prd.md

Comment thread enhancements/OSAC-1270-base-os-management-bmaas/prd.md Outdated
Comment thread enhancements/OSAC-1270-base-os-management-bmaas/prd.md Outdated
Comment thread enhancements/OSAC-1270-base-os-management-bmaas/prd.md Outdated
@adriengentil adriengentil changed the title PRD: Base OS Management for Bare Metal Instances (OSAC-1270) OSAC-1270: PRD: Base OS Management for Bare Metal Instances Jul 21, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 21, 2026 •

Copy link
Copy Markdown

@adriengentil: This pull request references OSAC-1270 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.

Details

In response to this:

PRD: Base OS Management for Bare Metal Instances

Jira: https://redhat.atlassian.net/browse/OSAC-1270

Summary

This PRD covers the integration of the DiskImage resource (OSAC-2540) into BMaaS. It does not change DiskImage behavior — that is fully specified in OSAC-2540. The feature adds a mandatory DiskImage reference to BaremetalInstance creation, extends DiskImage deletion protection to cover active BaremetalInstances, and allows Cloud Provider Admins and Tenant Admins to reference a default DiskImage in BaremetalInstanceCatalogItems.

Requesting Review On

  • Requirements completeness and accuracy
  • Scope (in scope / out of scope)
  • User story coverage across personas
  • Relationship and boundary with OSAC-2540

Summary by CodeRabbit

  • Documentation
  • Added product requirements documentation for base operating system management of bare metal instances.
  • Defined the integration scope, supported capabilities, user stories, dependencies, and out-of-scope functionality.
  • Documented expected behavior alignment with the DiskImage API and bare metal instance lifecycle.

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.

- Clarify effective DiskImage resolution (user input or catalog default)
- Explicitly define deletion-blocking scope (any non-deleted BMI or catalog item)
- Differentiate CPA vs Tenant Admin catalog item stories (global vs tenant-scoped)
- Fix bare-metal hyphenation as compound modifier

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Adrien Gentil <agentil@redhat.com>
@adriengentil

adriengentil commented Jul 21, 2026 •

Copy link
Copy Markdown
Contributor Author

Addressing the AI EP review feedback:

User stories underrepresent In Scope capabilities — intentional. This PRD covers only the BMaaS-specific integration of DiskImage: the mandatory effective-reference at BaremetalInstance creation, catalog item default, and deletion protection extension. Browsing, lifecycle management (deprecate/obsolete/reactivate), deprecation warnings, and obsolete filtering are unchanged behaviors defined in OSAC-2540 and not duplicated here. The In Scope section references OSAC-2540 explicitly for this reason.

Cross-cutting dimensions (docs, E2E, installation) — these are addressed at the Design EP stage per OSAC convention, not the PRD. The PRD template used here (.prd/templates/prd.md) scopes to user-observable outcomes only.

Jira target version warning — will set fix version to 5.0.0 on OSAC-1270.

@github-actions

github-actions Bot commented Jul 21, 2026 •

Copy link
Copy Markdown

AI EP Review: EP-135

Score: 10/10 | Verdict: PASS

Criterion Score Notes
What 2/2 Clear, specific user-observable capabilities. BMaaS service explicitly identified. Three personas (Cloud Provider Admin, Tenant Admin, Tenant User) each have per-persona user stories. In Scope bullets are concrete and user-focused — browsing with metadata, creation-time image selection with defaulting and rejection, deprecation/obsolete lifecycle visibility, full CRUD for CPA and TA, UI support. Cloud Infrastructure Admin is not affected and correctly omitted.
Why 2/2 Concrete justification in the Problem Statement: names the current pain (raw URL string, no discoverability, no metadata, no governance), describes what happens without it (opaque and error-prone provisioning, no guard against stale or unsupported images), and ties to practical consequence (blocks image curation and tenant self-service).
How 2/2 The In Scope bullets are specific and measurable — behaviors are well-defined (e.g., 'Creation is rejected when neither the user input nor the catalog item provides a DiskImage reference', 'Deprecated DiskImages display a warning when selected', 'Deletion blocked when referenced'). Out of Scope is clearly delineated with five explicit exclusions. Dependencies are well-documented with OSAC-2540 and OSAC-1118.
Task 2/2 This is a proper product feature enhancement — integrating the DiskImage resource into BMaaS with browsing, selection, lifecycle management, deletion protection, and UI support. Not a bug, task, or documentation-only change.
Size 2/2 Tightly coupled capabilities: browsing is useless without registration, selection requires a catalog to browse, deprecation/obsolete lifecycle is meaningless without creation-time enforcement, deletion protection is part of lifecycle management. The PRD correctly scopes to BMaaS integration of an already-defined resource (OSAC-2540), keeping it focused.

Verdict: A well-written, focused PRD that clearly describes user-observable capabilities for DiskImage integration into BMaaS, with concrete justification, clean persona coverage, no design leakage, and tightly coupled scope.

Feedback: Minor improvements: the user stories are narrower than the In Scope — CPA and TA stories only cover catalog item creation and deletion blocking, but not the core registration/update/deprecation lifecycle or image browsing. Adding 1-2 stories per persona for those capabilities would strengthen completeness. Consider briefly addressing cross-cutting dimensions (installation prerequisites, E2E testing scope, documentation needs) even if just to declare them out of scope or deferred.

Critical (0)

None.

Important (0)

None.

Suggestions (3)

  1. User stories for CPA and TA are narrow — they cover catalog item creation and deletion blocking but omit image registration, update, deprecation, and browsing. Adding stories like 'As a Cloud Provider Admin, I want to register and manage global OS images so that tenants can discover platform-approved images' would align stories with In Scope bullets.
  2. Cross-cutting dimensions from osac-dimensions.md (installation, E2E testing, documentation) are not addressed. Even a brief 'Out of Scope for this PRD' note per dimension would signal completeness to reviewers.
  3. No explicit milestone target is declared. Per OSAC conventions, stating the target milestone and what's deferred helps reviewers evaluate scope.

Review cost

Model: claude-opus-4-6
Cost: $0.4259
Tokens: 6 in / 4.9k out
Cache: 188.8k read
Active time: 1m 52s
API calls: 0

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Adrien Gentil <agentil@redhat.com>
@github-actions

Copy link
Copy Markdown

AI EP Review: EP-135

Score: 10/10 | Verdict: PASS

Criterion Score Notes
What 2/2 Clear user-observable capabilities: image browsing with metadata, DiskImage selection/defaulting at BaremetalInstance creation, deprecated/obsolete behavior, and full lifecycle management. Three personas (Cloud Provider Admin, Tenant Admin, Tenant User) each have at least one user story. In Scope items are specific and user-facing.
Why 2/2 Concrete justification: names the current pain (raw URL strings with no discoverability, metadata, or governance), describes the consequence (opaque and error-prone provisioning, no guard against stale or unsupported images), and ties to adoption impact.
How 2/2 Requirements are specific and measurable. Creation rejection when no DiskImage reference is provided, deletion blocking when resources reference the image, deprecated/obsolete display behavior — all verifiable by a PM or QA using the product via UI or API.
Task 2/2 Proper product feature enhancement — adds DiskImage integration to BMaaS with new user-facing capabilities for image discovery, selection, lifecycle management, and UI support. Not a bug, task, or documentation-only change.
Size 2/2 Well-scoped and tightly coupled. Browsing, selection, lifecycle management, and deletion safeguards are interdependent — you cannot ship image selection without discoverability, and lifecycle management without deletion protection is unsafe. Coherent single feature.

Verdict: A strong PRD with clear user-observable outcomes, concrete business justification, specific and testable requirements, and well-scoped interdependent capabilities across three personas.

Feedback: The user stories are somewhat narrow compared to the In Scope items — key user journeys like browsing/discovering images and seeing deprecation warnings lack corresponding 'As a...' stories, which makes it harder for reviewers to verify persona coverage is complete. Consider adding a Tenant User story for browsing available images and a Cloud Provider Admin story for the full register/deprecate/obsolete lifecycle to ensure all In Scope capabilities trace back to explicit user needs.

Critical (0)

None.

Important (1)

  1. User stories don't cover all In Scope capabilities — browsing/discovery of OS images (In Scope bullet 1) and deprecated/obsolete image behavior (In Scope bullet 3) have no corresponding user stories. This leaves gaps in traceability between user needs and requirements.

Suggestions (2)

  1. Consider adding a Tenant User story for browsing available OS images with metadata, since this is the primary discovery flow and is listed first in In Scope.
  2. The Out of Scope item about BaremetalInstanceCatalogItem schema changes could benefit from a brief explanation of how the existing parameter model accepts a DiskImage reference, to reassure reviewers that no schema gap exists.

Review cost

Model: claude-opus-4-6
Cost: $0.2861
Tokens: 5 in / 4.5k out
Cache: 142.4k read
Active time: 1m 35s
API calls: 0

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@enhancements/OSAC-1270-base-os-management-bmaas/prd.md`:
- Around line 21-22: Revise the global and tenant-scoped DiskImage admin stories
to clarify that “update” is limited to mutable metadata and lifecycle fields.
Explicitly exclude changes to immutable source_type and source_ref, while
preserving the existing registration, deprecation, obsolescence, reactivation,
and deletion permissions and constraints.
- Around line 18-25: Trim the OSAC-1270 scope bullets to BMaaS-specific
behavior: BaremetalInstance DiskImage picker/default resolution, provisioning,
and reference-aware deletion effects. Remove requirements for DiskImage
browsing, lifecycle operations, warnings/filtering, full lifecycle UI, and
standalone E2E coverage; reference OSAC-2540 for shared DiskImage behavior, and
move deferred E2E tracking to the Design EP if applicable.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: osac-project/coderabbit/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: be462247-94cb-4545-9139-4df59846a3b7

📥 Commits

Reviewing files that changed from the base of the PR and between 326a20c and bad5ea6.

📒 Files selected for processing (1)
  • enhancements/OSAC-1270-base-os-management-bmaas/prd.md

Comment thread enhancements/OSAC-1270-base-os-management-bmaas/prd.md Outdated
Comment on lines +21 to +22
- Cloud Provider Admins can register, update, deprecate, obsolete, reactivate, and delete global DiskImages available to all tenants for bare-metal provisioning. Deletion of a global DiskImage is blocked when any BaremetalInstance (in any non-deleted state) or any BaremetalInstanceCatalogItem references it.
- Tenant Admins can register, update, deprecate, obsolete, reactivate, and delete tenant-scoped DiskImages visible only within their organization. Deletion of a tenant DiskImage is blocked when any BaremetalInstance (in any non-deleted state) or any BaremetalInstanceCatalogItem references it.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Constrain “update” to mutable DiskImage fields.

OSAC-2540 makes source_type and source_ref immutable. Clarify that these admin stories permit metadata/lifecycle updates only; otherwise “update” can be interpreted as replacing the backing image reference and conflicts with the upstream contract.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@enhancements/OSAC-1270-base-os-management-bmaas/prd.md` around lines 21 - 22,
Revise the global and tenant-scoped DiskImage admin stories to clarify that
“update” is limited to mutable metadata and lifecycle fields. Explicitly exclude
changes to immutable source_type and source_ref, while preserving the existing
registration, deprecation, obsolescence, reactivation, and deletion permissions
and constraints.

- Tenant Admins can register, update, deprecate, obsolete, reactivate, and delete tenant-scoped DiskImages visible only within their organization. Deletion of a tenant DiskImage is blocked when any BaremetalInstance (in any non-deleted state) or any BaremetalInstanceCatalogItem references it.
- UI support for the full DiskImage lifecycle (image list, image picker in BaremetalInstance creation, image detail, and lifecycle management controls) for all affected personas.
- E2E test coverage for DiskImage selection at bare-metal instance provision time, added to the existing bare-metal test suite.
- DiskImages for bare metal use the same resource, metadata schema, image source format, and two-tier visibility model (global + tenant-scoped) as defined in OSAC-2540.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A lot of these items seem like they're not specific to BMaaS, and are general to DiskImages. Is there some additional BMaaS/DiskImage interaction - being able to specify a DiskImage as appropriate for bare metal use, or something like that?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not really all that is the integration of DiskImage with BMaaS. I'll try to trim a little more, thanks

Remove OSAC-2540-owned bullets (browsing, lifecycle warnings, lifecycle UI,
management CRUD). Keep only BaremetalInstance effective-reference requirement,
deletion blocking extension, BMaaS creation UI/API, and E2E scope.

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Adrien Gentil <agentil@redhat.com>
@github-actions

Copy link
Copy Markdown

AI EP Review: EP-135

Score: 10/10 | Verdict: PASS

Criterion Score Notes
What 2/2 Clear, specific, user-observable capabilities. BMaaS service explicitly in scope. Three affected personas (Cloud Provider Admin, Tenant Admin, Tenant User) each have user stories describing what they can do. DiskImage selection, defaulting from catalog items, creation rejection, and deletion protection are all concrete, observable behaviors.
Why 2/2 Concrete justification naming specific pain: bare metal instances use raw URL strings with no discoverability, metadata, or governance. Consequences are clear — opaque provisioning, no guard against stale or unsupported images, no scoping per tenant. Ties to BMaaS adoption.
How 2/2 Requirements are specific and measurable. 'Creation is rejected when neither provides a reference' is a testable gate. 'DiskImage deletion is blocked when any BaremetalInstance or BaremetalInstanceCatalogItem references it' is verifiable. E2E test coverage is explicitly in scope. No design leakage — no controllers, reconcilers, playbooks, or internal conditions named.
Task 2/2 This is a proper product feature enhancement — integrating the DiskImage resource into BMaaS provisioning with selection, defaulting, deletion protection, and UI/API support. Not a bug, task, or documentation-only change.
Size 2/2 Well-scoped and focused. The PRD covers a tightly coupled set of capabilities (image selection, defaulting, creation gating, deletion protection) that cannot function independently. DiskImage resource definition, lifecycle management, and browsing are explicitly deferred to OSAC-2540, keeping the boundary clean.

Verdict: A strong, focused PRD that clearly describes DiskImage integration into BMaaS with concrete user-observable outcomes, per-persona user stories, and testable requirements — no design leakage or scope bloat.

Feedback: The PRD is ready for design work. Two minor improvements: add a Tenant User story for the defaulting path (e.g., 'As a Tenant User, I want my bare-metal instance to receive the catalog item's default OS image when I don't explicitly select one, so that provisioning is simple for standard workloads'). Also consider explicitly noting which cross-cutting dimensions (documentation, installation, networking, storage) are not applicable to this feature to preempt reviewer questions.

Critical (0)

None.

Important (1)

  1. The Tenant User has only one user story covering explicit selection. The defaulting behavior (instance provisioned with catalog item's default image when user doesn't select) is described in In Scope but has no corresponding Tenant User story, making it unclear whether the user observes the default or needs to acknowledge it.

Suggestions (2)

  1. Cloud Provider Admin and Tenant Admin deletion-protection stories are structurally identical — consider whether the different scopes (global vs tenant-scoped DiskImages) warrant distinct observable behavior worth calling out.
  2. Explicitly state which OSAC cross-cutting dimensions (documentation, installation, networking, storage, tenant onboarding) are not applicable or deferred, to preempt reviewer questions about missing dimension coverage.

Review cost

Model: claude-opus-4-6
Cost: $0.5675
Tokens: 6 in / 3.8k out
Cache: 159.0k read
Active time: 1m 20s
API calls: 0

@tzumainn tzumainn left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thanks!

@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: adriengentil, tzumainn

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
enhancements/OSAC-1270-base-os-management-bmaas/prd.md (1)

29-30: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Align the default-image contract. BareMetalInstanceTemplateSpecDefaults.image is the only default OS base image field in the API docs, but this PRD routes the effective DiskImage default through BaremetalInstanceCatalogItem while also saying BaremetalInstanceTemplate has no DiskImage field. Define where that default is stored, or move the default to the template/spec-defaults path.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@enhancements/OSAC-1270-base-os-management-bmaas/prd.md` around lines 29 - 30,
Align the PRD’s default OS image contract by choosing one authoritative location
for the effective DiskImage default: either define how
BaremetalInstanceCatalogItem stores and supplies it, or route it through
BareMetalInstanceTemplateSpecDefaults.image. Update the statements about
BaremetalInstanceTemplate and catalog-item parameters so they consistently
describe that chosen source.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@enhancements/OSAC-1270-base-os-management-bmaas/prd.md`:
- Line 18: Clarify the DiskImage requirement in the BaremetalInstance creation
contract by explicitly defining how existing raw-URL values are handled. State
whether raw URLs are rejected, converted to DiskImage references, or remain
supported, and ensure the catalog and instance behavior is consistent with that
decision.

---

Outside diff comments:
In `@enhancements/OSAC-1270-base-os-management-bmaas/prd.md`:
- Around line 29-30: Align the PRD’s default OS image contract by choosing one
authoritative location for the effective DiskImage default: either define how
BaremetalInstanceCatalogItem stores and supplies it, or route it through
BareMetalInstanceTemplateSpecDefaults.image. Update the statements about
BaremetalInstanceTemplate and catalog-item parameters so they consistently
describe that chosen source.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: osac-project/coderabbit/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: b6cecf29-2eb8-4575-9021-b4ce729d5f59

📥 Commits

Reviewing files that changed from the base of the PR and between bad5ea6 and 99a7701.

📒 Files selected for processing (1)
  • enhancements/OSAC-1270-base-os-management-bmaas/prd.md


## In Scope

- A BaremetalInstance must have an effective DiskImage reference at creation time — either explicitly selected by the user or defaulted from the BaremetalInstanceCatalogItem. Creation is rejected when neither provides a reference. The instance is provisioned with the OS from that image.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Define the raw-URL compatibility path.

Line 14 documents the existing raw URL behavior, while Line 18 makes a DiskImage reference mandatory. Specify whether raw URLs are rejected, migrated to DiskImages, or remain supported; otherwise the API and existing catalog/instance data contract is ambiguous.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@enhancements/OSAC-1270-base-os-management-bmaas/prd.md` at line 18, Clarify
the DiskImage requirement in the BaremetalInstance creation contract by
explicitly defining how existing raw-URL values are handled. State whether raw
URLs are rejected, converted to DiskImage references, or remain supported, and
ensure the catalog and instance behavior is consistent with that decision.

@openshift-merge-bot
openshift-merge-bot Bot merged commit ccb05eb into osac-project:main Jul 21, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants