Repository navigation
OSAC-3195: Design comparison for OSAC-2645 (BCM Backend) - #53
Open
ItzikEzra-rh wants to merge 523 commits into
Open
ItzikEzra-rh wants to merge 523 commits into
ItzikEzra-rh wants to merge 523 commits into
Conversation
…y allowlist MGMT-23669 turns out to have a real OSAC equivalent: OSAC-172 is the sub-task that produced this EP (its own Jira comment links PR #32 and the tenant-storage-tiers directory directly). Rename the directory to OSAC-172-tenant-storage-tiers, update its tracking-link frontmatter and the two cross-references that pointed at the old path. With a real OSAC-prefixed name in place, the check_ep_naming.py LEGACY_KEY_ALLOWLIST carve-out added for the MGMT- case is no longer needed by anything in the repo — revert the script and its tests back to OSAC-only enforcement. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Tommy Hughes <tohughes@redhat.com>
Enable self-service hardware selection for bare metal instances through BareMetalInstanceTypes with comprehensive metadata (CPU, RAM, GPU, network) and inventory backend integration using label selectors. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Austin Jamias <ajamias@redhat.com>
OSAC-1201: PRD for BareMetalInstanceTypes
…2-storage-control-plane-prd OSAC-2872: Storage Control Plane PRD
…n-review-alignment OSAC-2946: align CI review pipeline and docs with two-document flow
…dize-ep-directory-names OSAC-2870: Standardize enhancement-proposals directory/file naming convention
Update field definitions to cover all resource spec fields (not admin-selected), simplify validation to UI-supported constraints with CLI fallback for complex schemas, change resource reference fields to use dropdown for default value selection without validation constraints, and document default non-editable state with ssh_key and pull_secret exceptions. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
The UI always includes all resource spec fields, but the API continues to accept partial field lists. This preserves backward compatibility with CLI-created catalog items that may include only a subset of fields. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Tenant Admin now uses the same creation flow as CSP Admin (template selection, same field definitions editor). Removes tighten-only concept from Tenant Admin user stories. Network attachments are excluded from the wizard but automatically included in the API payload as editable with no default or validation. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Your Name <you@example.com>
Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Your Name <you@example.com>
…tion Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Your Name <you@example.com>
Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Your Name <you@example.com>
Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Your Name <you@example.com>
Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Your Name <you@example.com>
Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Tzif <tmorgens@redhat.com>
Companion design document for the catalog items EP, covering the osac-ui admin management screens: role-gated navigation, list page, create/edit forms, field definitions editor, and detail page. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
- Remove raw JSON Schema toggle — all constraints use structured form controls including nested objects - Add resource reference, list/map, and complex object constraint types to ValidationConstraintsEditor - Add safe Markdown rendering/XSS prevention requirement - Require default value for non-editable fields - Scope Tenant Admin CRUD wording to organization-scoped items - Update alternatives section and test plan Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
- Route CSP Admin through private API (returns tenant field) and Tenant Admin/User through public API via Go proxy - Guard admin routes with role allowlist, not tenantUser blocklist - Bound useAllCatalogItems with server-side pagination and filtering - Include tenant/scope in CSP Admin create payload - Define field_definitions PATCH as whole-list replacement - Fix path regex to reject empty segments and trailing dots - Redact API response bodies from Go proxy logs Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
The FieldDefinitionsEditor is pre-populated from the template's parameter definitions (CSP Admin) or the base catalog item (Tenant Admin). Path is read-only, no add/remove/reorder buttons. Admin configures each field's editable toggle, default, display name, and validation constraints. Resolves Open Question 2 — template endpoints must return structured parameter definitions. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Field list is fixed per resource type — derived from the resource spec (e.g., ComputeInstanceSpec) at build time, not from template parameters at runtime. Added specFields to CatalogItemKindConfig. Open Question 2 fully resolved — no template API enumeration needed. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Fixes rawagner, batzionb, CodeRabbit (rounds 2+3), and AI design review comments: - Replace CatalogItemKindConfig pattern with JSX composition (shared components composed per-kind) - Add resourceRef server-side enforcement as shipping dependency - Define validationSchema wire format (google.protobuf.Struct) - Define tighten-only comparison rules for Tenant Admin overrides - Expose pagination state in aggregate hook contract - Add User Stories section and reframe goals as user outcomes - Add unit test strategy and make component tests mandatory - Add Documentation section and make graduation criteria measurable - Fix markdownlint MD031 (blank lines around fenced code block) - Replace stale risks (template path picker, FieldArray remove) - Update component file structure for per-kind pages - Update alternatives: config-driven as rejected alternative Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
…o 0.3 - Add Basic mode (structured form controls) and Advanced mode (raw JSON Schema textarea) to ValidationConstraintsEditor - Auto-detect mode on load based on schema content; warn on mode switch if unsupported keywords would be stripped - Backend accepts any valid JSON Schema — no keyword restrictions - Defer server-side tighten-only enforcement to 0.3; 0.2 enforces via UI controls in Basic mode only - Update non-goals, alternatives, security, test plan, and unit tests to reflect dual-mode approach Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Address rawagner's review feedback from PR osac-project#115: - Replace resourceRef custom keyword with standard enum constraints - Change field definitions from all-fields-required to admin-selected subset - Simplify markdown description (remove sanitization details) Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
- Remove CatalogItemForm wrapper, use explicit Formik composition at page level - TemplateSelector receives data props, does not fetch its own data - Resolve create flow ambiguity: kind-specific routes with split-button Create - Replace title field with name using existing NameField component - Add CatalogPage reuse as a documented alternative Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Replace full-page form with multi-step wizard (General → Template → Field Definitions). Show all resource spec fields (not admin-selected) with default non-editable state except ssh_key and pull_secret. Simplify validation to UI-supported constraints with CLI fallback for complex schemas. Resource reference fields use dropdown for default value selection without validation constraints. Pre-populate defaults from selected template. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Both CSP Admin and Tenant Admin now use the same creation flow with template selection. Removed tighten-only restriction mode and base-item selection that was specific to Tenant Admin. Network attachments are excluded from the wizard and automatically included in the API payload as an editable field with no default or validation, allowing tenant users to configure them during provisioning. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Remove "Template/base selection" language — both roles use template selection. The edit wizard is identical for both admin roles. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
The catalog management list page now uses three PatternFly tabs (Clusters, Virtual Machines, Bare Metal) instead of a type filter toggle group. Each tab has its own Create button, so the resource type is determined by the active tab — no resource type field is needed in the wizard. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Elay Aharoni <elayaha@gmail.com>
…rage-control-plane-design OSAC-2876: Storage Control Plane design
Add Part 2 metering PRD covering resource types deferred from the initial metering feature (OSAC-985): bare metal hosts, block storage volumes, file shares, object storage buckets, networking resources (VirtualNetworks, Subnets, PublicIPs, NATGateways), and network bandwidth. Introduces allocation-based metering model for resources that consume provider capacity regardless of tenant usage. Extends Part 1 capabilities (CAP-18 through CAP-33) with catalog item traceability (Part 1 CAP-17) and parent-child attribution. Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
Add risks section (§10) covering BMaaS proto gap, missing storage APIs, unidentified bandwidth vendor, and Part 1 dependency. Add grouping rationale to In Scope. Add explanatory context to non-obvious user stories (BMaaS dual metering, unattached PublicIP, object storage dual model). Clarify Infra Admin stories to remove false registration implication. Fix stale Part 1 reference. Remove resolved open question (unattached IP pricing). Renumber open questions. Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
- Clarify object storage capacity tracks provisioned quota, not actual bytes - Add resize acceptance criterion for storage volumes and buckets - Extend CAP-25 parent attribution to cover BMaaS hosts alongside VMs/clusters - Replace "cost view/footprint" with "usage view/footprint" (costing is out of scope) - Add ExternalIP and attachment rows to networking charge table - Qualify project-level bandwidth as vendor-dependent in CAP-30 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
Make Tenant Admin and Tenant User bandwidth stories conditional on vendor project attribution, consistent with CAP-30. Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
…ing terminology Rename enhancements/metering-bmaas-storage-networking/ to enhancements/OSAC-2506-metering-bmaas-storage-networking/ per CONTRIBUTING.md naming convention (tchughesiv review). Replace billing-oriented language with metering/usage terminology throughout the PRD to maintain separation between metering (this PRD) and billing (out of scope), per mhrivnak review. Signed-off-by: Moti Asayag <masayag@redhat.com> Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
Split the combined BMaaS/Storage/Networking/Bandwidth metering PRD into four focused features. This commit narrows OSAC-2506 to BMaaS allocation and consumption metering. Storage (OSAC-3141), Networking (OSAC-3145), and Bandwidth (OSAC-3149) are tracked as separate features with their own PRDs. Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
…g language The PRD should use strictly metering-focused terminology since billing, pricing, and costing are explicitly out of scope. This replaces all leaked billing terms: "pricing dimension" becomes "metering dimension", "Charge Calculation Model" becomes "Usage Calculation Model", dollar-amount examples are replaced with pure usage accumulation, and user stories are reframed around usage tracking rather than cost recovery. Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
Update all Part 1 PRD references to the renamed path (OSAC-985-metering-and-usage-tracking) per OSAC-2870 directory standardization. Add UI out-of-scope statement consistent with the networking metering PRD. Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
…t phrasing Expand the meta-reference to Part 1 acceptance criteria into four explicit, self-contained ACs (per-second granularity, deduplication, retention, independent deployment). Replace "apply different rates" with "distinguish reserved from active capacity" in the dual-meter user story. Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
…kage - Change metering start from "provisioning start" to "provisioning complete" — aligns with AWS/Equinix/GCP industry practice (avishayt) - Remove proto field references from Assumptions and Risks (avishayt) - Rewrite CAP-5 from deployment constraint to user-observable outcome - Replace internal acceptance criteria with PM-verifiable criteria - Move deployment detail to Assumptions - Remove "event pipeline, usage store" from Risks Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
Consumption meter is always present (not optionally enabled) — metering captures what happened, billing decides what to charge. Removes "optional" language from CAP-2, CAP-4, In Scope, usage model, and acceptance criteria. Qualifies usage-total consistency AC to finalized periods (deleted hosts). Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
CAP-5 and acceptance criterion still had provider-enabled language for the consumption meter, inconsistent with CAP-2/CAP-4 changes. Both meters are now consistently automatic throughout. Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
Allocation metering glossary definition said 'creation to deletion' while CAP-1, the usage calculation model, and all acceptance criteria consistently use 'provisioning complete to deletion'. Aligned the glossary to match. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
CAP-5 referenced (CAP-4, CAP-15, CAP-16) without the 'Part 1' prefix, creating ambiguity since this document defines its own CAP-4 (dual metering model). Now reads 'Part 1 CAP-4, Part 1 CAP-15, Part 1 CAP-16'. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
… add EP ref - Remove Open Questions §11: reviewers confirmed the BMaaS operator never transitions to FAILED post-provisioning, so with metering starting at provisioning complete the question is moot - Add BareMetalInstanceType EP (PR osac-project#119 / OSAC-2675) cross-reference to dependencies per carbonin's suggestion Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
Add assumption that BMaaS and CaaS meters are independent — they capture distinct usage dimensions (hardware reservation vs. managed service). Deduplication or bundling is a downstream billing concern. Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
Replace ambiguous "alongside existing metering data" with explicit "accessible through the same metering query APIs as existing VMaaS/CaaS meters" to clarify the AC means API availability, not response co-location. Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Moti Asayag <masayag@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Moti Asayag <masayag@redhat.com>
…iew-for-forge NO-ISSUE: skip EP review for forgeSmith-bot PRs
The fulfillment-service sets host selector labels (Spec.Selector.HostSelector) not the hostType field. Updated all sections that incorrectly referenced setting hostType in the CRD. Removed canonical hostType key validation requirement since labels pass through without transformation. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Austin Jamias <ajamias@redhat.com>
OSAC-2675: Design for BareMetalInstanceTypes
OSAC-2506: PRD: Metering for BMaaS Resources
OSAC-2921: PRD — Add standardized display_name and description fields to resource Metadata
Remove Adrian's merged PRD so Forge can generate a clean PRD from defaults without exemplar contamination. OSAC-3193 Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Itzik Ezra <iezra@redhat.com>
Temporary removal so generation agents cannot see the original. Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Itzik Ezra <iezra@redhat.com>
OSAC-3195 Assisted-by: Claude Code <noreply@anthropic.com> Signed-off-by: Itzik Ezra <iezra@redhat.com>
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.
Round 2 Design comparison
design-original.mdspec-forge-osac-skills.mdspec-forge-defaults.mdRelated: OSAC-3195