Skip to content

NO-ISSUE: Remove region references from networking designs - #182

Merged
openshift-merge-bot[bot] merged 1 commit into
osac-project:mainfrom
danmanor:fix/remove-region-references
Aug 2, 2026
Merged

openshift-merge-bot[bot] merged 1 commit into
osac-project:mainfrom
danmanor:fix/remove-region-references

Conversation

@danmanor

@danmanor danmanor commented Aug 2, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Removed all "region" references from the five networking design documents

Summary by CodeRabbit

  • Documentation
    • Updated networking guidance to use deployment-scoped NetworkClass references instead of regions.
    • Clarified virtual network and subnet provisioning behavior across Kubernetes, virtual machine, and bare-metal environments.
    • Documented bare-metal-only restrictions and validation based on NetworkClass capabilities.
    • Updated CLI examples, troubleshooting guidance, terminology, and networking assumptions to reflect the unified model.
    • Replaced the immutable VirtualNetworkSpec.region field with network_class.

@openshift-ci
openshift-ci Bot requested review from maorfr and masayag August 2, 2026 12:51
@openshift-ci

openshift-ci Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: danmanor

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

@openshift-ci openshift-ci Bot added the approved label Aug 2, 2026
@coderabbitai

coderabbitai Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

Review Change Stack

Walkthrough

The networking enhancement documents replace region-scoped references with deployment-scoped NetworkClass references. VirtualNetworkSpec now uses network_class, and VM, CaaS, and BMaaS behavior checks NetworkClass capabilities such as k8s_manager.

Changes

NetworkClass networking model

Layer / File(s) Summary
Unified NetworkClass contract and provisioning flow
enhancements/OSAC-1433-unified-networking/design.md
The VirtualNetwork contract, CLI examples, dispatcher resolution, subnet provisioning, hosting-cluster overlays, and BM-only restrictions now use NetworkClass.
VMaaS NetworkClass validation
enhancements/OSAC-1435-vmaas-networking/design.md, enhancements/OSAC-1435-vmaas-networking/prd.md
VM creation validation, requirements, events, tests, and troubleshooting now reject or describe NetworkClasses without k8s_manager.
CaaS and BMaaS NetworkClass alignment
enhancements/OSAC-1436-caas-networking/*, enhancements/OSAC-1437-bmaas-networking/*
CaaS and BMaaS examples, subnet behavior, troubleshooting, and infrastructure assumptions now use NetworkClass terminology and capability requirements.

Estimated code review effort: 2 (Simple) | ~15 minutes

Possibly related PRs

Suggested labels: jira/valid-reference, rfe-creator-auto-reviewed

Suggested reviewers: avishayt, jhernand

🚥 Pre-merge checks | ✅ 11
✅ Passed checks (11 passed)
Check name Status Explanation
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 The added lines contain no API keys, tokens, passwords, private-key material, credential URLs, or secret assignments; the long Google Doc ID predates this change and is a documentation URL.
No-Weak-Crypto ✅ Passed The seven changed files are documentation only; exact searches of all content and added lines found no MD5, SHA-1, DES, 3DES, RC4, Blowfish, ECB, custom crypto, or secret comparisons.
No-Injection-Vectors ✅ Passed The commit changes only seven Markdown documents; added-content scans found no SQL concatenation, shell=True, eval/exec, unsafe YAML or pickle loads, os.system, or dangerous HTML.
Container-Privileges ✅ Passed The commit modifies only seven Markdown documents. No added or current examples contain privileged:true, host PID/IPC/network, SYS_ADMIN, root execution, or allowPrivilegeEscalation:true settings.
No-Sensitive-Data-In-Logs ✅ Passed The PR changes only Markdown terminology and examples; it adds no logging code or log fields, and the documented event names expose no passwords, tokens, PII, hostnames, or customer data.
Ai-Attribution ✅ Passed AI use is disclosed in the PR and commit with Assisted-by: Claude Code; no AI Co-Authored-By trailer was found.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: removing region references from networking design documents.
✨ 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.

@github-actions

github-actions Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

AI EP Review: EP-182

Score: 10/10 | Verdict: PASS

Criterion Score Notes
WHAT (clear need) 2/2 The PRD fragments show clear user-facing capabilities: multi-NIC VM creation with primary designation, auto external IP attachment, default networking, and BM-only NetworkClass validation. Per-persona user stories are present (Tenant User, Tenant Admin, Cloud Infrastructure Admin, Cloud Provider Admin). Services are clearly scoped (VMaaS, CaaS, BMaaS). The terminology update from 'region' to 'NetworkClass' improves clarity by aligning with the actual API resource users reference via --network-cl
WHY (justification) 2/2 Concrete pain points are visible across all three PRDs: 'Tenants cannot create VMs with multiple network interfaces or designate which interface provides the default gateway' (OSAC-1435), 'Cluster provisioning has no networking configuration' (OSAC-1436), 'Provisioning bare-metal servers requires manual switch configuration outside the platform' (OSAC-1437). Each articulates what users cannot do today and why it matters.
User-Facing Focus 2/2 PRD sections describe CLI commands (osac create virtualnetwork --network-class), user-observable outcomes (error messages, status fields), and acceptance criteria testable through the product. Design leakage (controllers, dispatchers, reconcilers, AAP playbooks) appears only in the design.md files, which is appropriate — the PRD portions remain clean. The rename from 'region' to 'NetworkClass' keeps terminology aligned with user-visible API constructs.
Right-Sized 2/2 Each PRD is focused on networking for a single service type (VMaaS, CaaS, BMaaS). The terminology update is a coherent, atomic change across related documents. No unrelated capabilities are bundled.
Testability 2/2 Visible acceptance criteria are concrete and verifiable: 'A Tenant User can create a VM with multiple --network-attachment flags and designate one as --primary', 'Creating a VM in a bare-metal-only NetworkClass returns an error with a clear message', 'VM status shows the allocated IP address for each network attachment after provisioning completes'. All can be verified by a PM or QA engineer using the product.

Verdict: Clean terminology update that correctly replaces 'region' with 'NetworkClass' across three well-structured PRDs, improving alignment between user-facing documentation and the actual API resource model.

Feedback: The terminology rename is well-executed and improves consistency. One minor point: since the design doc notes NetworkClass is 'provider-only, tenants never see it,' consider whether tenant-facing user stories should reference 'NetworkClass' directly or describe the limitation in terms tenants encounter (e.g., 'the platform prevents VM creation when the underlying infrastructure does not support virtualization'). The current phrasing works because tenants do reference NetworkClass by name via --network-class flags, but a brief note in the PRD clarifying this user-visibility model would strengthen the document.

Critical (0)

None.

Important (0)

None.

Suggestions (1)

  1. Tenant-facing user stories now reference 'NetworkClass' directly (e.g., 'I want clear error messages when I try to create a VM in a NetworkClass that only supports bare-metal servers'). Since tenants interact with NetworkClass only indirectly (via --network-class on virtualnetwork creation), consider adding a brief clarification in the PRD about how tenants encounter NetworkClass constraints — through error messages on VM/cluster creation, not by managing NetworkClass resources directly.

Review cost

Model: claude-opus-4-6
Cost: $0.7268
Tokens: 8 in / 7.0k out
Cache: 287.5k read
Active time: 2m 23s
API calls: 0

@github-actions github-actions Bot added the rfe-creator-auto-reviewed EP was reviewed by AI label Aug 2, 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: 5

🤖 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-1433-unified-networking/design.md`:
- Around line 368-374: Update the CLI examples around the NetworkClass and
ExternalIPPool creation steps to replace the `moc-region-1` value and matching
metadata with a NetworkClass name that contains no `region` token, keeping both
examples consistent with the no-region test.
- Around line 1101-1106: Update the “Multiple Hosting Clusters Per NetworkClass”
design to define how existing subnets are reconciled when a hosting cluster
joins after subnet creation: provision its K8s overlay and fabric bridge through
k8sManager, or explicitly restrict support to clusters present at creation.
- Around line 739-741: Document the compatibility and migration strategy for the
network_class field-number change in the VirtualNetworkSpec schema. Explicitly
state whether prior resources with region at field 1 are unsupported because the
schema is pre-release, or define the conversion/backfill process needed to
safely migrate existing data before interpreting field 1 as network_class.

In `@enhancements/OSAC-1435-vmaas-networking/design.md`:
- Line 244: Align the BM-only ComputeInstance lifecycle in the design: either
document the synchronous fulfillment-service API error returned when a
NetworkClass lacks k8sManager, or move that validation into the controller and
specify the resulting Pending NetworkingResolutionFailed status and event
contract. Update the BM-only NetworkClass check and related
lifecycle/support-coverage sections consistently.

In `@enhancements/OSAC-1436-caas-networking/design.md`:
- Around line 102-110: Update enhancements/OSAC-1436-caas-networking/design.md
lines 102-110 so CaaS cluster subnet creation always invokes the k8s_manager
path and provisions the required MetalLB IPAddressPool for endpoint VIP
allocation. Update enhancements/OSAC-1436-caas-networking/prd.md line 126 to
explicitly require the target NetworkClass to support k8s_manager and MetalLB
VIPs.
🪄 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: Pro Plus

Run ID: 9f9be4b1-1650-44b4-a166-b98600ca2b63

📥 Commits

Reviewing files that changed from the base of the PR and between 9fab7b7 and 46c2085.

📒 Files selected for processing (7)
  • enhancements/OSAC-1433-unified-networking/design.md
  • enhancements/OSAC-1435-vmaas-networking/design.md
  • enhancements/OSAC-1435-vmaas-networking/prd.md
  • enhancements/OSAC-1436-caas-networking/design.md
  • enhancements/OSAC-1436-caas-networking/prd.md
  • enhancements/OSAC-1437-bmaas-networking/design.md
  • enhancements/OSAC-1437-bmaas-networking/prd.md

Comment thread enhancements/OSAC-1433-unified-networking/design.md
Comment on lines +739 to +741
string network_class = 1; // required, immutable
string ipv4_cidr = 2; // optional, immutable
string ipv6_cidr = 3; // optional, immutable

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 | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

rg -n -C 4 --glob '*.proto' --glob '*.md' --glob '*.yaml' --glob '*.yml' \
  'VirtualNetworkSpec|network_class|region' .

rg -n -C 4 --glob '*.md' \
  'migration|backfill|conversion|upgrade|stored' \
  enhancements/OSAC-1433-unified-networking

Repository: osac-project/enhancement-proposals

Length of output: 50392


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

# Inspect the relevant design sections and nearby compatibility/migration text.
sed -n '680,785p' enhancements/OSAC-1433-unified-networking/design.md
sed -n '800,900p' enhancements/OSAC-1433-unified-networking/design.md

# Search only this design for compatibility-related concerns.
rg -n -C 3 \
  'compatibility|upgrade|downgrade|migration|backfill|conversion|stored|previous|old.*data|released|pre-release|unsupported|network_class|region' \
  enhancements/OSAC-1433-unified-networking/design.md

# Summarize proto field-number references to VirtualNetworkSpec in this repository.
python3 - <<'PY'
from pathlib import Path
for p in Path('.').rglob('*.md'):
    txt=p.read_text(errors='replace')
    if 'VirtualNetworkSpec' in txt or 'network_class = 1' in txt or 'region = 1' in txt:
        print(f'--- {p}')
        for i,line in enumerate(txt.splitlines(),1):
            if 'VirtualNetworkSpec' in line or 'network_class = 1' in line or 'region = 1' in line or 'region = 3' in line:
                print(f'{i}: {line}')
PY

Repository: osac-project/enhancement-proposals

Length of output: 12016


Define compatibility and migration for the scope-field change.

network_class now uses field number 1. If released region data used field 1 and the proto is generated as VirtualNetworkSpec { string region = 1; ... }, old resources are parsed with the wrong semantics. Document the compatibility story, a conversion/backfill path, or state that this schema is pre-release and previous resources are unsupported.

🤖 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-1433-unified-networking/design.md` around lines 739 - 741,
Document the compatibility and migration strategy for the network_class
field-number change in the VirtualNetworkSpec schema. Explicitly state whether
prior resources with region at field 1 are unsupported because the schema is
pre-release, or define the conversion/backfill process needed to safely migrate
existing data before interpreting field 1 as network_class.

Source: Learnings

Comment on lines 1101 to 1106
#### Multiple Hosting Clusters Per NetworkClass

Multiple hosting clusters are supported per region. At subnet creation, the
Multiple hosting clusters are supported per NetworkClass. At subnet creation, the
k8sManager creates a K8s overlay on each hosting cluster and bridges it to
the fabric segment. VMs on different hosting clusters share the same subnet
via the fabric.

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 | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

rg -n -C 5 --glob '*.md' \
  'hosting cluster|hosting clusters|NetworkClass|subnet creation|reconcile' \
  enhancements/OSAC-1433-unified-networking \
  enhancements/OSAC-1436-caas-networking \
  enhancements/OSAC-1437-bmaas-networking

Repository: osac-project/enhancement-proposals

Length of output: 50393


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo "== target section =="
sed -n '1060,1130p' enhancements/OSAC-1433-unified-networking/design.md

echo
echo "== relevant NetworkClass/subnet/provisioning sections =="
rg -n -C 4 --glob '*.md' \
  'Multiple hosting clusters|Multiple Hosting Clusters|hosting cluster|hosting clusters|subnets|virtual networks|subnet provisioning|subnet creation|Create VirtualNetwork|Create Subnet' \
  enhancements/OSAC-1433-unified-networking/design.md

echo
echo "== reconciliation mentions =="
rg -n -C 3 --glob '*.md' '\b(reconcile|reconciliation|requeue|watch|add|remove|backwards compatibility|existing)' \
  enhancements/OSAC-1433-unified-networking/design.md

Repository: osac-project/enhancement-proposals

Length of output: 27055


Define reconciliation for hosting clusters added after subnet creation.

Multiple hosting clusters are supported per NetworkClass, but subnet provisioning calls k8sManager only at subnet creation. If a hosting cluster joins the NetworkClass later, existing subnets do not get a K8s overlay or bridge. Define a reconciliation/re-provisioning path for this case, or restrict the support claim to clusters present at creation.

🤖 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-1433-unified-networking/design.md` around lines 1101 -
1106, Update the “Multiple Hosting Clusters Per NetworkClass” design to define
how existing subnets are reconciled when a hosting cluster joins after subnet
creation: provision its K8s overlay and fabric bridge through k8sManager, or
explicitly restrict support to clusters present at creation.

Comment thread enhancements/OSAC-1435-vmaas-networking/design.md Outdated
Comment on lines +102 to +110
osac create virtualnetwork --network-class moc-bm-1 --cidr 10.0.0.0/16 --name my-net
```
Dispatcher → `osac.templates.{{ fabric_manager }}.create_virtual_network`

2. **Create Subnet:**
```bash
osac create subnet --virtual-network my-net --cidr 10.0.1.0/24 --name my-subnet
```
Dispatcher → TWO jobs: fabric_manager creates VLAN/fabric segment + k8s_manager creates CUDN overlay (if region hosts VMs)
Dispatcher → TWO jobs: fabric_manager creates VLAN/fabric segment + k8s_manager creates CUDN overlay (if NetworkClass hosts VMs)

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

Require K8s-manager capability for CaaS NetworkClasses.

CaaS uses bare-metal node sets, but endpoint VIP allocation still requires the K8s manager and its MetalLB IPAddressPool. The current design can skip this setup, while the PRD can allow a generic NetworkClass assumption.

  • enhancements/OSAC-1436-caas-networking/design.md#L102-L110: run the K8s-manager path for CaaS clusters and create the required VIP pool.
  • enhancements/OSAC-1436-caas-networking/prd.md#L126-L126: state that the target NetworkClass requires K8s-manager and MetalLB VIP support.
🧰 Tools
🪛 markdownlint-cli2 (0.23.1)

[warning] 103-103: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 107-107: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 109-109: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

📍 Affects 2 files
  • enhancements/OSAC-1436-caas-networking/design.md#L102-L110 (this comment)
  • enhancements/OSAC-1436-caas-networking/prd.md#L126-L126
🤖 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-1436-caas-networking/design.md` around lines 102 - 110,
Update enhancements/OSAC-1436-caas-networking/design.md lines 102-110 so CaaS
cluster subnet creation always invokes the k8s_manager path and provisions the
required MetalLB IPAddressPool for endpoint VIP allocation. Update
enhancements/OSAC-1436-caas-networking/prd.md line 126 to explicitly require the
target NetworkClass to support k8s_manager and MetalLB VIPs.

@github-actions

github-actions Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

AI Design Review: EP-182

Score: 8/8 | Verdict: PASS

Criterion Score Notes
Feasibility 2/2 The changes are concrete and specific. Proto field rename (region -> network_class in VirtualNetworkSpec) preserves wire compatibility (field number stays 1). Removal of the tautological region field from NetworkClassSpec is straightforward. CLI flag changes (--region -> --network-class) are explicit and consistent across all four design families. No hand-waving — every instance of 'region' is replaced with the correct resource reference.
Testability 2/2 Test plan entries across all designs are properly updated to reflect the new terminology (e.g., 'BM-only NetworkClass' instead of 'BM-only region'). The test scenarios themselves remain valid and specific — the terminology change doesn't alter what's being tested, just how it's described. E2E scenarios like 'create ComputeInstance in BM-only NetworkClass, verify error returned' remain concrete and actionable.
Scope 2/2 Well-scoped terminology alignment across exactly the four related networking design families (unified networking, VMaaS, CaaS, BMaaS) plus their PRDs. No scope creep — the changes are limited to region->NetworkClass replacement and the consequent removal of the redundant spec.region field. Each document is touched only where needed.
Architecture 2/2 Architecturally correct refinement. NetworkClass is the actual OSAC resource that determines networking capabilities (fabricManager, k8sManager, capabilities). Using 'region' was imprecise — a region is an informal deployment concept, while NetworkClass is the typed resource that VirtualNetworks reference. Removing the self-referential spec.region field from NetworkClass eliminates redundancy (the resource's metadata.name already identifies it). The VirtualNetworkSpec now correctly references

Verdict: Clean, architecturally sound terminology alignment replacing the informal 'region' concept with the actual OSAC resource name 'NetworkClass' across all four networking design documents and their PRDs — improves precision without altering design intent.

Feedback: Strong execution on a cross-document terminology refinement. One minor inconsistency: the example NetworkClass names diverge across designs (moc-region-1 in OSAC-1433, moc-bm-virt in 1435, moc-bm-1 in 1436, moc in 1437) — while each name may be contextually appropriate, using a consistent example name across the family would make it easier for readers to follow the relationship between the unified design and its service-specific companions. Consider also adding a brief note in the unified networking design (OSAC-1433) explaining why the rename was made (NetworkClass is the typed resource, not a geographic region), since future readers won't have the PR context.

Critical (0)

None.

Important (0)

None.

Suggestions (2)

  1. Example NetworkClass names are inconsistent across the four design families (moc-region-1, moc-bm-virt, moc-bm-1, moc). Consider aligning on a common example name to help readers trace concepts across the unified and service-specific designs.
  2. Consider adding a sentence in OSAC-1433's Terminology or NetworkClass section explaining the distinction between NetworkClass (typed resource determining capabilities) and region (informal deployment concept) to help future readers understand the naming choice.

Review cost

Model: claude-opus-4-6
Cost: $0.4355
Tokens: 7 in / 4.5k out
Cache: 248.6k read
Active time: 1m 39s
API calls: 0

@danmanor danmanor changed the title Remove region references from networking designs NO-ISSUE: Remove region references from networking designs Aug 2, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@danmanor: This pull request explicitly references no jira issue.

Details

In response to this:

Summary

  • Removed all "region" references from the five networking design documents (OSAC-1433 unified/default, OSAC-1435 VMaaS, OSAC-1436 CaaS, OSAC-1437 BMaaS) and their PRDs
  • The region concept was excluded from the API — replaced with NetworkClass, the actual API construct
  • Changes include: --region → --network-class CLI flags, removed region: fields from YAML specs, replaced string region in proto definitions, renamed section titles, and rewrote prose/user stories

Test plan

  • Verify no remaining "region" references beyond resource names (e.g., moc-region-1 as a NetworkClass name is fine)
  • Review that rewording reads naturally in context

Assisted-by: Claude Code noreply@anthropic.com

Summary by CodeRabbit

  • Documentation
  • Updated networking guidance to use deployment-scoped NetworkClass references instead of regions.
  • Clarified virtual network and subnet provisioning behavior across Kubernetes, virtual machine, and bare-metal environments.
  • Documented bare-metal-only restrictions and validation based on NetworkClass capabilities.
  • Updated CLI examples, troubleshooting guidance, terminology, and networking assumptions to reflect the unified model.
  • Replaced the immutable VirtualNetworkSpec.region field with network_class.

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.

The region concept was excluded from the API. Replace all region
references with the appropriate term:

- "NetworkClass" where the text refers to the actual API resource or
  its fields (e.g., proto field, CLI --network-class flag, YAML specs)
- "deployment" where the text refers to the general infrastructure
  scope (e.g., "BM-only deployment", section titles, user stories)

Affected designs: OSAC-1433 (unified, default), OSAC-1435 (VMaaS),
OSAC-1436 (CaaS), OSAC-1437 (BMaaS).

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Dan Manor <dmanor@redhat.com>
@github-actions

github-actions Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

AI EP Review: EP-182

Score: 9/10 | Verdict: PASS

Criterion Score Notes
WHAT (clear need) 2/2 The three PRDs (OSAC-1435 VMaaS, OSAC-1436 CaaS, OSAC-1437 BMaaS) each describe clear, user-observable networking capabilities: multi-NIC VMs with primary designation, auto external IP attachment, default networking, and deployment validation. Personas are identified (Tenant User, Tenant Admin, Cloud Infrastructure Admin, Cloud Provider Admin) with per-persona user stories. The terminology change from 'region' to 'deployment' and '--region' to '--network-class' is consistent across all three PRD
WHY (justification) 1/2 The problem statements name concrete user pain — 'Tenants cannot create VMs with multiple network interfaces' (1435), 'Cluster provisioning has no networking configuration' (1436), 'Provisioning bare-metal servers requires manual switch configuration outside the platform' (1437). These clearly describe the gap, but from the visible PRD fragments the justification stays at the gap level without quantifying impact or explicitly tying to a strategic goal (e.g., adoption blockers, competitive positi
User-Facing Focus 2/2 The PRDs describe user-observable outcomes cleanly. FR-6 in OSAC-1435: 'When a VM is created, the platform validates that the target deployment supports virtualization. If the deployment only supports bare-metal servers, the create request fails with a clear error message.' User stories use 'As a Tenant User...' and 'As a Cloud Infrastructure Admin...' language focused on what users can do. The design leakage is appropriately confined to the design documents. Minor note: OSAC-1437's assumption '
Right-Sized 2/2 Each PRD is scoped to a single service type's networking capabilities (VMaaS, CaaS, BMaaS). Within each PRD the capabilities (multi-NIC, external IP, defaults, validation) are interdependent — multi-NIC without deployment validation would be incomplete. The three PRDs are correctly split rather than bundled into one oversized networking PRD.
Testability 2/2 All visible requirements and DoD items are verifiable by a PM/QA using the product: 'A Tenant User can create a VM with multiple --network-attachment flags and designate one as --primary', 'Creating a VM in a bare-metal-only deployment returns an error with a clear message', 'VM status shows the allocated IP address for each network attachment after provisioning completes', 'External IP attachment with a VM target routes inbound traffic to the VM's primary attachment IP'. Every item describes an

Verdict: Solid PRDs with clear user-facing capabilities, proper persona coverage, and testable acceptance criteria. The terminology refactoring from 'region' to 'deployment' and '--region' to '--network-class' is consistently applied across all three PRDs and their companion design docs. The only weakness is business justification depth — gap descriptions are clear but lack impact quantification.

Feedback: Strengthen the WHY in each PRD by adding a sentence connecting the gap to business impact — e.g., 'This blocks tenants from deploying production workloads that require network segmentation, limiting CaaS adoption for multi-tier applications.' The terminology change from 'region' to 'deployment' is clean but consider adding a one-line definition of 'deployment' in the PRDs (e.g., in a Glossary or Background section) since the term is more ambiguous than 'region' to readers unfamiliar with the OSAC model. In OSAC-1437's Assumptions section, consider rephrasing 'The NetworkClass has a fabric manager configured' to something more user-accessible like 'The deployment's network infrastructure is configured for automated switch management.'

Critical (0)

None.

Important (1)

  1. WHY criterion scores 1/2 across all three PRDs: problem statements describe the user gap clearly ('Tenants cannot create VMs with multiple network interfaces', 'Cluster provisioning has no networking configuration', 'manual switch configuration outside the platform') but do not articulate business consequences, adoption impact, or strategic drivers. Adding one sentence per PRD connecting the gap to measurable impact would raise this to a 2.

Suggestions (3)

  1. The term 'deployment' is more generic than 'region' — it could mean a Kubernetes deployment, a release deployment, or an infrastructure deployment. Consider defining 'deployment' explicitly in the PRD background or glossary section (e.g., 'a deployment is a discrete OSAC infrastructure installation with its own NetworkClass and hosting clusters').
  2. OSAC-1437 PRD Assumptions: 'The NetworkClass has a fabric manager configured' uses internal vocabulary; consider phrasing it as 'The deployment's network infrastructure supports automated network provisioning' to keep the PRD accessible to non-engineering stakeholders.
  3. The '--network-class' CLI flag name is technically precise but may be unfamiliar to tenants; consider whether a more intuitive alias (e.g., '--network' or '--network-profile') would improve the CLI UX. This is a design-level decision but worth flagging at the PRD level since the PRDs show CLI examples.

Review cost

Model: claude-opus-4-6
Cost: $0.8121
Tokens: 11 in / 6.4k out
Cache: 461.2k read
Active time: 2m 16s
API calls: 0

@danmanor
danmanor force-pushed the fix/remove-region-references branch from 064e10d to b0230a8 Compare August 2, 2026 13:19
@github-actions

github-actions Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

AI EP Review: EP-182

Score: 9/10 | Verdict: PASS

Criterion Score Notes
WHAT (clear need) 2/2 The modified PRDs (OSAC-1435, 1436, 1437) describe clear user-facing capabilities: multi-NIC VM creation with primary interface designation, CaaS cluster networking integration, and BMaaS network attachment configuration. Each PRD has per-persona user stories (Tenant User, Tenant Admin, Cloud Infrastructure Admin, Cloud Provider Admin). Services are explicitly scoped (VMaaS, CaaS, BMaaS respectively). The terminology change from 'region' to 'deployment'/'NetworkClass' improves precision — Networ
WHY (justification) 1/2 Problem statements exist and describe concrete gaps (e.g., 'Tenants cannot create VMs with multiple network interfaces or designate which interface serves as primary for default gateway and DNS'). However, from the visible content, the justification stays at the gap-description level without quantifying impact or tying to a strategic goal. The PRDs explain what's missing but don't strongly argue why it matters (e.g., no 'this blocks N tenants' or 'required for GA').
User-Facing Focus 2/2 The PRD content is cleanly user-focused. User stories describe observable outcomes ('I want clear error messages when I try to create a VM in a deployment that only supports bare-metal servers'). Functional requirements reference user-visible behavior (CLI commands, error messages, status fields). The terminology change itself improves user-facing focus by replacing the ambiguous 'region' with the API-visible 'NetworkClass' and the user-concept 'deployment'. Design docs in the same PR contain im
Right-Sized 2/2 Each PRD is focused on one service's networking integration (VMaaS, CaaS, BMaaS). Within each, the capabilities (multi-NIC, primary designation, defaults, validation, cleanup) are interdependent — multi-NIC without primary designation is incomplete, defaults without validation is unsafe. The PR's cross-PRD terminology change is coherent — it updates a shared concept consistently across all related documents.
Testability 2/2 DoD items are concrete and verifiable by PM/QA: 'A Tenant User can create a VM with multiple --network-attachment flags and designate one as --primary', 'Creating a VM in a bare-metal-only deployment returns an error with a clear message', 'VM status shows the allocated IP address for each network attachment after provisioning completes'. Functional requirements (FR-5, FR-6) specify observable behavior with clear pass/fail criteria.

Verdict: The three networking PRDs are solid — clear user-facing capabilities with persona-specific stories, focused scope per service, and testable acceptance criteria. The terminology refactoring (region → deployment/NetworkClass) is a clean improvement. WHY is the weakest criterion: gaps are described but business impact is not quantified.

Feedback: The PRDs describe the gap well but would benefit from a stronger 'why this matters' case — even one sentence tying to a strategic goal or quantifying the impact (e.g., 'required for multi-tenant VMaaS GA' or 'blocks N% of tenant workloads that need multi-NIC'). The terminology change from 'region' to 'deployment'/'NetworkClass' is well-executed and consistent across all documents. Consider adding a brief note in each PRD's problem statement explaining the deployment concept for readers unfamiliar with the recent terminology shift.

Critical (0)

None.

Important (1)

  1. WHY justification is thin across all three PRDs — problem statements describe the technical gap but don't quantify user impact or tie to a business/strategic goal. Adding one concrete consequence sentence (e.g., 'Without this, tenants requiring multi-NIC VMs must manually configure networking outside the platform, which is error-prone and breaks the self-service model') would strengthen the case.

Suggestions (2)

  1. The terminology change from 'region' to 'deployment' is introduced without a glossary entry or brief explanation in the PRDs. Readers encountering these PRDs for the first time may not understand what 'deployment' means in this context vs. the common DevOps usage. A one-line definition in the assumptions or terminology section would help.
  2. OSAC-1437 (BMaaS) PRD assumptions now reference 'The NetworkClass has a fabric manager configured' — this is slightly more implementation-aware than the other PRDs' phrasing. Consider aligning to 'The deployment's network infrastructure is configured to support...' for consistency with the other PRDs.

Review cost

Model: claude-opus-4-6
Cost: $0.5067
Tokens: 56 in / 7.1k out
Cache: 395.2k read
Active time: 2m 34s
API calls: 0

@github-actions

github-actions Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

AI Design Review: EP-182

Score: 8/8 | Verdict: PASS

Criterion Score Notes
Feasibility 2/2 All changes are specific and well-defined: proto field rename (region -> network_class in VirtualNetworkSpec), CLI flag rename (--region -> --network-class), removal of redundant region field from NetworkClass spec. Each change is straightforward to implement with no hand-waving.
Testability 2/2 Test plans across all four affected designs (OSAC-1435, 1436, 1437) are updated consistently with the new terminology. No test coverage is lost. E2E scenarios like 'BM-only deployment validation' remain specific and verifiable.
Scope 2/2 Well-scoped terminology and model refinement applied consistently across all four related networking enhancement proposals (OSAC-1433, 1435, 1436, 1437) and their PRDs. No scope creep; the changes are focused on a single concern.
Architecture 2/2 Changes align with networking-decisions.md decision #6 ('One NetworkClass per deployment'). Removing the redundant region field from NetworkClass spec is correct since the resource name already serves as identifier. Replacing region with network_class in VirtualNetworkSpec better models the actual relationship. Consistent terminology across all designs.

Verdict: A well-executed terminology and model refinement that aligns all four networking designs with the established 'one NetworkClass per deployment' decision, improving architectural clarity by removing the overloaded 'region' concept.

Feedback: The K8s Manager description in OSAC-1433 has a semantic change beyond terminology: 'Needed for regions that host VMs or CaaS clusters' became 'Needed for deployments that host both VMs and BMs and require multi-tenancy across all' -- this changes the requirement from OR-logic (VMs/CaaS) to AND-logic (VMs AND BMs) and drops CaaS clusters as a trigger. If intentional, call this out explicitly in the PR description so reviewers don't miss it. Also, the changed line in the K8s Manager description runs long compared to surrounding text; consider re-wrapping for consistency.

Critical (0)

None.

Important (1)

  1. Semantic change in K8s Manager description (OSAC-1433 design.md lines 11-12): 'Needed for regions that host VMs or CaaS clusters' changed to 'Needed for deployments that host both VMs and BMs and require multi-tenancy across all.' This alters the requirement logic (OR to AND) and drops CaaS clusters as a K8s Manager trigger. If intentional, this should be called out explicitly rather than buried in a terminology update.

Suggestions (1)

  1. Re-wrap the K8s Manager description line ('Needed for deployments that host both VMs and BMs and require multi-tenancy across all.') to match the surrounding line length convention (~80 chars).

Review cost

Model: claude-opus-4-6
Cost: $0.3204
Tokens: 7 in / 5.1k out
Cache: 278.8k read
Active time: 1m 42s
API calls: 0

@vladikr

vladikr commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

thanks :)
/lgtm

@openshift-ci openshift-ci Bot added the lgtm label Aug 2, 2026
@openshift-merge-bot
openshift-merge-bot Bot merged commit 2d8f396 into osac-project:main Aug 2, 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