Repository navigation
feat(reservations): honor domain restrictions for CR reservation scheduling - #955
Conversation
|
Warning Review limit reached
More reviews will be available in 28 minutes and 7 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (9)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Test Coverage ReportTest Coverage 📊: 69.6% |
## Release cortex core v0.1.2 & bundles v0.0.76 ### Prerequisites - [x] Merge chart-bump PR: #969 - [x] Merge changelog PR: #970 - [x] Merge changelog update PR: #974 ### cortex v0.1.2 (sha-6daa5050) Non-breaking changes: - Pre-allocate PAYG VMs into CR reservation slots on CR creation/modification (#951) - Keep failover allocation if VM missing from postgres but present on hypervisor (#909) - All datasources are synced on restart (#956) - Honor domain restrictions for CR reservation scheduling (#955) - Create InFlightReservation as part of Reservation CRD (#954) - Move committed resource status summary business logic to internal (#953) - Bypass grace period for confirmed VM departure (#925) - Track VM placements in reservations and classify no-host-found (#847) - Refactor reservations: move VMSource to shared package, unify VM data layer (#930) - Add suffix gX to postgresql (#939) - Update External dependencies to v1.9.1 (#952), v1.14.46 (#959) - Update `github.com/sapcc` (#938) ### cortex-nova v0.0.76 Includes updated chart cortex v0.1.2. - Add `keystoneSecretRef` and `ssoSecretRef` config keys for domain resolution in committed resource reservation scheduling (#955) - Add `enablePaygPreAllocation` config key for pre-allocating PAYG VMs into reservation slots (#951) ### cortex-crds v0.0.76 Includes updated chart cortex v0.1.2. ### cortex-cinder v0.0.76 Includes updated chart cortex v0.1.2. ### cortex-pods v0.0.76 Includes updated chart cortex v0.1.2. ### cortex-ironcore v0.0.76 Includes updated chart cortex v0.1.2. ### cortex-manila v0.0.76 Includes updated chart cortex v0.1.2. ### General - Switch chart appVersion bump to PR-based flow via ghcr (#943) - Track Helm chart appVersions via custom regex managers (#940) - Document candidate reservation cleanup on VM confirm (#916) - Document scheduling.Options struct fields (#941)
…RS metrics (#963) ## Summary - Document InFlightReservation CRD type (#954): temporary capacity blocks for VMs being scheduled that prevent double-booking across candidate hosts, including lifecycle, spec fields, and interaction with CR reservation blocking - Document domain name resolution via Keystone (#955): placement requests include domain_name scheduler hints resolved from DomainID to enforce host restrictions for external customer domains via filter_external_customer - Document CRS evaluation subsystem (#847): post-placement classification of outcomes (no_cr, cr_exhausted, slot_exhausted, slot_blocked, slot_missed, slot_used) and new Prometheus metrics cortex_nova_no_host_found_total and cortex_nova_placement_total ## Test plan - [ ] Verify markdown renders correctly on GitHub - [ ] Confirm internal links to #inflightreservation anchor resolve correctly - [ ] Review metric names and classification categories match source code Assisted-by: Claude Code:claude-sonnet-4-20250514 [Bash] [Read] Co-authored-by: cortex-ai-agents[bot] <279748396+cortex-ai-agents[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
feat(reservations): honor domain restrictions for CR reservation scheduling
CR reservation scheduling was not passing a
domain_namescheduler hint, causingfilter_external_customerto silently skip domain-based host restrictions for all CR reservations.This PR resolves the
DomainIDstored in theReservationCRD to a domain name via Keystone and passes it as thedomain_namescheduler hint, sofilter_external_customercan enforceCUSTOM_EXTERNAL_CUSTOMER_EXCLUSIVEhost restrictions for external customer domains. Failover reservations are unaffected — the filter already skips them by intent.Changes
domain_resolver.go—DomainResolverinterface +keystoneDomainResolverbacked by gophercloud with an in-process cache (domain names are immutable)reservation_controller.go— resolves domain name before building the scheduler request; best-effort: resolver failure logs and proceeds without the hintconfig.go—KeystoneSecretRefandSSOSecretRefadded toReservationControllerConfighelm/bundles/cortex-nova/values.yaml— wireskeystoneSecretRefundercommittedResourceReservationController;ssoSecretRefcommented out following existing conventioncmd/manager/main.go—e2e-novanow accepts a JSON override (same ase2e-commitments) enabling ad-hocdomainNameHintCheckrunse2e_checks.go(nova) —CheckDomainNameHintRoutingsends a synthetic CR scheduling request and confirms the pipeline accepts the hintfilter_external_customercases covering CR intent andSpec.CustomTraits