Skip to content

feat: CR controller checks for host overload scenario and resolves via reservation re-placements - #1125

Open
mblos wants to merge 2 commits into
mainfrom
cr-investiage-overbooking
Open

feat: CR controller checks for host overload scenario and resolves via reservation re-placements#1125
mblos wants to merge 2 commits into
mainfrom
cr-investiage-overbooking

Conversation

@mblos

@mblos mblos commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

…a reservation re-placements

Signed-off-by: Marcel <156897072+mblos@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@mblos, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 22 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

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, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 70984f53-4c29-4d9c-8da3-28ea5ffc4317

📥 Commits

Reviewing files that changed from the base of the PR and between 069aedd and f5e31e4.

📒 Files selected for processing (2)
  • internal/scheduling/reservations/commitments/reservation_controller.go
  • internal/scheduling/reservations/commitments/reservation_controller_test.go
📝 Walkthrough

Walkthrough

The committed-resource reservation controller now calculates host free capacity, detects and remediates host oversubscription, indexes reservations by host, exposes Prometheus metrics, and adds deployment configuration, alerting, and tests.

Changes

Host reservation oversubscription

Layer / File(s) Summary
Capacity accounting and host indexing
internal/scheduling/reservations/capacity_accounting.go, internal/scheduling/reservations/capacity_accounting_test.go, internal/scheduling/reservations/field_index.go, internal/scheduling/reservations/commitments/committed_resource_controller_test.go
HostFreeCapacity calculates remaining host resources from capacity, allocations, and relevant reservations. A reservation host index covers target and confirmed hosts. Tests cover fallback, filtering, confirmed VM accounting, and negative capacity.
Monitoring and deployment wiring
internal/scheduling/reservations/commitments/reservation_controller_monitor.go, internal/scheduling/reservations/commitments/config.go, cmd/manager/main.go, helm/bundles/cortex-nova/values.yaml, helm/bundles/cortex-nova/templates/alerts.yaml
The controller receives a registered Prometheus monitor. Configuration sets a 30-minute active requeue interval and a 2-minute oversubscription grace period. A KVM-only warning alert reports host oversubscription.
Detection, reconciliation, and eviction
internal/scheduling/reservations/commitments/reservation_controller.go, internal/scheduling/reservations/commitments/reservation_controller_test.go, internal/scheduling/reservations/commitments/field_index.go
Hypervisor watches react to instance, allocation, and effective-capacity changes. The controller tracks host violations, updates metrics, enforces the grace period, and unplaces one reservation slot after sustained oversubscription. Tests cover predicates, non-violations, grace-period deferral, and eviction.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

Suggested reviewers: arno.uhlig@sap.com, juliusclausnitzer, sowiemarkus

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive No pull request description was provided, so its relevance to the changeset cannot be assessed. Add a brief description of the host overload detection, grace-period handling, monitoring, and reservation re-placement changes.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes host overload detection and reservation re-placement, which are the main changes in the pull request.
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.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cr-investiage-overbooking

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.

@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: 8

🧹 Nitpick comments (3)
internal/scheduling/reservations/commitments/committed_resource_controller_test.go (1)

141-158: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Share the host index function instead of copying it.

This closure duplicates the index logic in internal/scheduling/reservations/field_index.go (lines 34-52). If the production indexer changes, this copy will not change and the tests will pass against different index semantics.

Export the extractor from the reservations package and use it in both places.

♻️ Proposed refactor

In internal/scheduling/reservations/field_index.go:

// ReservationHostIndexValues returns the host keys for IdxReservationByHost.
func ReservationHostIndexValues(obj client.Object) []string {
	res, ok := obj.(*v1alpha1.Reservation)
	if !ok {
		return nil
	}
	hosts := make([]string, 0, 2)
	if res.Spec.TargetHost != "" {
		hosts = append(hosts, res.Spec.TargetHost)
	}
	if res.Status.Host != "" && res.Status.Host != res.Spec.TargetHost {
		hosts = append(hosts, res.Status.Host)
	}
	return hosts
}

Then in this file:

-		WithIndex(&v1alpha1.Reservation{}, reservations.IdxReservationByHost, func(obj client.Object) []string {
-			res, ok := obj.(*v1alpha1.Reservation)
-			if !ok {
-				return nil
-			}
-			hosts := make(map[string]struct{})
-			if res.Spec.TargetHost != "" {
-				hosts[res.Spec.TargetHost] = struct{}{}
-			}
-			if res.Status.Host != "" {
-				hosts[res.Status.Host] = struct{}{}
-			}
-			result := make([]string, 0, len(hosts))
-			for h := range hosts {
-				result = append(result, h)
-			}
-			return result
-		}).
+		WithIndex(&v1alpha1.Reservation{}, reservations.IdxReservationByHost, reservations.ReservationHostIndexValues).
🤖 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
`@internal/scheduling/reservations/commitments/committed_resource_controller_test.go`
around lines 141 - 158, Export the reservation host extractor from
field_index.go as ReservationHostIndexValues, preserving the production behavior
of indexing unique non-empty target and status hosts. Replace the duplicated
WithIndex closure in the test with reservations.ReservationHostIndexValues so
tests and production share the same index semantics.
internal/scheduling/reservations/commitments/reservation_controller.go (2)

1097-1103: 🚀 Performance & Scalability | 🔵 Trivial | 🏗️ Heavy lift

Eviction picks the smallest slot, so convergence is slow.

Both candidate slices are sorted ascending by memory at lines 1075-1086, and line 1103 takes candidates[0]. The controller therefore evicts the smallest slot first, which frees the least capacity. A host that is over-subscribed by 1 TiB and holds four 256 GiB slots needs four eviction rounds, each separated by a full grace period.

Select the smallest slot that covers the violation, and fall back to the largest slot when no single slot covers it.

🤖 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 `@internal/scheduling/reservations/commitments/reservation_controller.go`
around lines 1097 - 1103, Update the eviction selection logic in the reservation
controller around candidates and target so it chooses the smallest reservation
slot whose memory covers the current over-subscription, using the existing
ascending ordering; if none covers the violation, select the largest candidate
instead of candidates[0].

921-922: 🩺 Stability & Availability | 🔵 Trivial | 🏗️ Heavy lift

The mutex is held across remote API calls.

The field comment at line 61 states that the mutex protects three maps. This defered lock holds it for the whole function, which includes the Get at line 953, the List at line 958, and checkHostOversubscription, which issues two Patch calls and one Get inside unplaceReservation.

MaxConcurrentReconciles is 1 today, so there is no contention. If that value is ever raised, every reconcile serializes behind these network calls.

Narrow the critical section to the map accesses.

🤖 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 `@internal/scheduling/reservations/commitments/reservation_controller.go`
around lines 921 - 922, In the reservation reconciliation function, replace the
function-wide oversubscriptionMu lock around the remote Get/List and
checkHostOversubscription calls with short critical sections that lock only
while reading or updating the protected maps. Ensure all map accesses remain
synchronized, but release the mutex before any remote API calls or
unplaceReservation network operations.
🤖 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 `@helm/bundles/cortex-nova/templates/alerts.yaml`:
- Around line 780-784: Update the alert description for the host reservation
capacity rule to use the resource-agnostic humanize formatter instead of
humanize1024 when rendering $value. Keep the existing compute_host, resource,
and capacity wording unchanged.

In `@internal/scheduling/reservations/commitments/reservation_controller_test.go`:
- Around line 1377-1384: Update the eviction assertion in the reservation test
instead of assuming slot-1 is selected from the equal-memory candidates.
Retrieve all three slots and assert that exactly one has an empty
Spec.TargetHost, while preserving the existing validation that the eviction
clears the target host.

In `@internal/scheduling/reservations/commitments/reservation_controller.go`:
- Around line 1136-1155: The unplaceReservation update order can leave a ready
reservation counted on its old host when the status patch fails. Apply the
status changes clearing Status.Host and setting Ready=False before clearing
Spec.TargetHost, preserving the existing rollback-safe behavior, and update
runOversubscriptionCheck to return the unplaceReservation error so
reconciliation retries instead of returning success.
- Around line 1031-1038: Update the violation-handling flow in the reservation
controller to call monitor.ClearHost(host, az) before processing violations on
every run, not only when len(violations) == 0. Then set gauges for the current
entries in violations and retain the existing return behavior for empty and
non-empty violation sets.
- Around line 926-950: Decouple the oversubscription rate limit in the
reservation controller from RequeueIntervalActive by introducing or reusing a
dedicated minimum check interval appropriate for the grace-period flow. Update
the timeSinceLastCheck branch to always return a positive requeue duration,
including when oversubscriptionPendingCheck[host] is already true, so
rate-limited hosts are reliably rechecked without dropping the trigger.
- Around line 57-59: Update the Monitor field documentation to accurately state
that a nil monitor disables the over-subscription check, detection, and
eviction, while retaining the existing nil guard in checkHostOversubscription
and its callers.
- Around line 836-853: Update hvCapacityChangePredicate’s UpdateFunc to compare
oldHV.Status.Capacity with newHV.Status.Capacity alongside Instances,
Allocation, and EffectiveCapacity, so capacity-only changes trigger
reconciliation.
- Around line 1062-1095: The fallback loop over allocatedReservations must not
select allocation-bearing committed-resource reservations for eviction, because
unplaceReservation clears required VM allocation mappings. Remove that fallback
selection and restrict eviction to unallocatedReservations; when no eligible
unallocated slot exists, report the memory over-subscription as unresolvable
through the existing monitor path.

---

Nitpick comments:
In
`@internal/scheduling/reservations/commitments/committed_resource_controller_test.go`:
- Around line 141-158: Export the reservation host extractor from field_index.go
as ReservationHostIndexValues, preserving the production behavior of indexing
unique non-empty target and status hosts. Replace the duplicated WithIndex
closure in the test with reservations.ReservationHostIndexValues so tests and
production share the same index semantics.

In `@internal/scheduling/reservations/commitments/reservation_controller.go`:
- Around line 1097-1103: Update the eviction selection logic in the reservation
controller around candidates and target so it chooses the smallest reservation
slot whose memory covers the current over-subscription, using the existing
ascending ordering; if none covers the violation, select the largest candidate
instead of candidates[0].
- Around line 921-922: In the reservation reconciliation function, replace the
function-wide oversubscriptionMu lock around the remote Get/List and
checkHostOversubscription calls with short critical sections that lock only
while reading or updating the protected maps. Ensure all map accesses remain
synchronized, but release the mutex before any remote API calls or
unplaceReservation network operations.
🪄 Autofix

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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 52168470-26ed-42dc-856d-c2baae0f4b0a

📥 Commits

Reviewing files that changed from the base of the PR and between 85d9d0c and 069aedd.

📒 Files selected for processing (12)
  • cmd/manager/main.go
  • helm/bundles/cortex-nova/templates/alerts.yaml
  • helm/bundles/cortex-nova/values.yaml
  • internal/scheduling/reservations/capacity_accounting.go
  • internal/scheduling/reservations/capacity_accounting_test.go
  • internal/scheduling/reservations/commitments/committed_resource_controller_test.go
  • internal/scheduling/reservations/commitments/config.go
  • internal/scheduling/reservations/commitments/field_index.go
  • internal/scheduling/reservations/commitments/reservation_controller.go
  • internal/scheduling/reservations/commitments/reservation_controller_monitor.go
  • internal/scheduling/reservations/commitments/reservation_controller_test.go
  • internal/scheduling/reservations/field_index.go
💤 Files with no reviewable changes (1)
  • internal/scheduling/reservations/commitments/field_index.go

Comment on lines +780 to +784
summary: "Host {{ "{{" }} $labels.compute_host {{ "}}" }} reservation blocks exceed capacity for {{ "{{" }} $labels.resource {{ "}}" }}"
description: >
The total of running VM allocations and reservation blocks (committed resource +
failover) on host {{ "{{" }} $labels.compute_host {{ "}}" }} exceeds its effective
capacity for {{ "{{" }} $labels.resource {{ "}}" }} by {{ "{{" }} $value | humanize1024 {{ "}}" }}.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

humanize1024 is wrong for non-memory resources.

The alert fires per resource. For memory the binary formatting is correct. For cpu the value is a core count, and humanize1024 renders it with binary prefixes (for example 1.5Ki cores). Use humanize for a resource-agnostic annotation.

🔤 Proposed fix
-          capacity for {{ "{{" }} $labels.resource {{ "}}" }} by {{ "{{" }} $value | humanize1024 {{ "}}" }}.
+          capacity for {{ "{{" }} $labels.resource {{ "}}" }} by {{ "{{" }} $value | humanize {{ "}}" }}.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
summary: "Host {{ "{{" }} $labels.compute_host {{ "}}" }} reservation blocks exceed capacity for {{ "{{" }} $labels.resource {{ "}}" }}"
description: >
The total of running VM allocations and reservation blocks (committed resource +
failover) on host {{ "{{" }} $labels.compute_host {{ "}}" }} exceeds its effective
capacity for {{ "{{" }} $labels.resource {{ "}}" }} by {{ "{{" }} $value | humanize1024 {{ "}}" }}.
summary: "Host {{ "{{" }} $labels.compute_host {{ "}}" }} reservation blocks exceed capacity for {{ "{{" }} $labels.resource {{ "}}" }}"
description: >
The total of running VM allocations and reservation blocks (committed resource +
failover) on host {{ "{{" }} $labels.compute_host {{ "}}" }} exceeds its effective
capacity for {{ "{{" }} $labels.resource {{ "}}" }} by {{ "{{" }} $value | humanize {{ "}}" }}.
🤖 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 `@helm/bundles/cortex-nova/templates/alerts.yaml` around lines 780 - 784,
Update the alert description for the host reservation capacity rule to use the
resource-agnostic humanize formatter instead of humanize1024 when rendering
$value. Keep the existing compute_host, resource, and capacity wording
unchanged.

Comment on lines +57 to +59
// Monitor reports over-subscription violations as Prometheus metrics.
// Nil disables metric reporting (check still runs, only logging).
Monitor *ReservationControllerMonitor

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

The doc comment contradicts the code.

The comment states that the check still runs when Monitor is nil. Line 917 returns early when r.Monitor == nil, so the whole over-subscription feature is disabled, including detection and eviction. checkHostOversubscription also dereferences monitor at lines 1032 and 1037, so the guard is required to avoid a nil-pointer panic.

Correct the comment, or make the monitor calls nil-safe so the documented behavior holds.

🔤 Proposed comment fix
-	// Monitor reports over-subscription violations as Prometheus metrics.
-	// Nil disables metric reporting (check still runs, only logging).
+	// Monitor reports over-subscription violations as Prometheus metrics.
+	// Nil disables the over-subscription check entirely.
 	Monitor *ReservationControllerMonitor
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// Monitor reports over-subscription violations as Prometheus metrics.
// Nil disables metric reporting (check still runs, only logging).
Monitor *ReservationControllerMonitor
// Monitor reports over-subscription violations as Prometheus metrics.
// Nil disables the over-subscription check entirely.
Monitor *ReservationControllerMonitor
🤖 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 `@internal/scheduling/reservations/commitments/reservation_controller.go`
around lines 57 - 59, Update the Monitor field documentation to accurately state
that a nil monitor disables the over-subscription check, detection, and
eviction, while retaining the existing nil guard in checkHostOversubscription
and its callers.

Comment on lines +836 to +853
// hvCapacityChangePredicate fires when Status.Instances, Status.Allocation, or
// Status.EffectiveCapacity changes on a Hypervisor. Instances covers VM presence
// (used by allocation verification); Allocation and EffectiveCapacity cover capacity
// accounting (used by the over-subscription check).
var hvCapacityChangePredicate = predicate.Funcs{
CreateFunc: func(e event.CreateEvent) bool { _, ok := e.Object.(*hv1.Hypervisor); return ok },
DeleteFunc: func(e event.DeleteEvent) bool { _, ok := e.Object.(*hv1.Hypervisor); return ok },
GenericFunc: func(e event.GenericEvent) bool { _, ok := e.Object.(*hv1.Hypervisor); return ok },
UpdateFunc: func(e event.UpdateEvent) bool {
oldHV, ok1 := e.ObjectOld.(*hv1.Hypervisor)
newHV, ok2 := e.ObjectNew.(*hv1.Hypervisor)
if !ok1 || !ok2 {
return false
}
return !reflect.DeepEqual(oldHV.Status.Instances, newHV.Status.Instances) ||
!reflect.DeepEqual(oldHV.Status.Allocation, newHV.Status.Allocation) ||
!reflect.DeepEqual(oldHV.Status.EffectiveCapacity, newHV.Status.EffectiveCapacity)
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

The predicate does not watch Status.Capacity.

reservations.HostFreeCapacity falls back to hv.Status.Capacity when Status.EffectiveCapacity is nil (see internal/scheduling/reservations/capacity_accounting.go lines 84-87). On a hypervisor that reports only Status.Capacity, a capacity change does not trigger this predicate, so the over-subscription check does not run until an unrelated event arrives.

Add Status.Capacity to the comparison.

🐛 Proposed fix
 		return !reflect.DeepEqual(oldHV.Status.Instances, newHV.Status.Instances) ||
 			!reflect.DeepEqual(oldHV.Status.Allocation, newHV.Status.Allocation) ||
-			!reflect.DeepEqual(oldHV.Status.EffectiveCapacity, newHV.Status.EffectiveCapacity)
+			!reflect.DeepEqual(oldHV.Status.EffectiveCapacity, newHV.Status.EffectiveCapacity) ||
+			!reflect.DeepEqual(oldHV.Status.Capacity, newHV.Status.Capacity)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// hvCapacityChangePredicate fires when Status.Instances, Status.Allocation, or
// Status.EffectiveCapacity changes on a Hypervisor. Instances covers VM presence
// (used by allocation verification); Allocation and EffectiveCapacity cover capacity
// accounting (used by the over-subscription check).
var hvCapacityChangePredicate = predicate.Funcs{
CreateFunc: func(e event.CreateEvent) bool { _, ok := e.Object.(*hv1.Hypervisor); return ok },
DeleteFunc: func(e event.DeleteEvent) bool { _, ok := e.Object.(*hv1.Hypervisor); return ok },
GenericFunc: func(e event.GenericEvent) bool { _, ok := e.Object.(*hv1.Hypervisor); return ok },
UpdateFunc: func(e event.UpdateEvent) bool {
oldHV, ok1 := e.ObjectOld.(*hv1.Hypervisor)
newHV, ok2 := e.ObjectNew.(*hv1.Hypervisor)
if !ok1 || !ok2 {
return false
}
return !reflect.DeepEqual(oldHV.Status.Instances, newHV.Status.Instances) ||
!reflect.DeepEqual(oldHV.Status.Allocation, newHV.Status.Allocation) ||
!reflect.DeepEqual(oldHV.Status.EffectiveCapacity, newHV.Status.EffectiveCapacity)
},
// hvCapacityChangePredicate fires when Status.Instances, Status.Allocation, or
// Status.EffectiveCapacity changes on a Hypervisor. Instances covers VM presence
// (used by allocation verification); Allocation and EffectiveCapacity cover capacity
// accounting (used by the over-subscription check).
var hvCapacityChangePredicate = predicate.Funcs{
CreateFunc: func(e event.CreateEvent) bool { _, ok := e.Object.(*hv1.Hypervisor); return ok },
DeleteFunc: func(e event.DeleteEvent) bool { _, ok := e.Object.(*hv1.Hypervisor); return ok },
GenericFunc: func(e event.GenericEvent) bool { _, ok := e.Object.(*hv1.Hypervisor); return ok },
UpdateFunc: func(e event.UpdateEvent) bool {
oldHV, ok1 := e.ObjectOld.(*hv1.Hypervisor)
newHV, ok2 := e.ObjectNew.(*hv1.Hypervisor)
if !ok1 || !ok2 {
return false
}
return !reflect.DeepEqual(oldHV.Status.Instances, newHV.Status.Instances) ||
!reflect.DeepEqual(oldHV.Status.Allocation, newHV.Status.Allocation) ||
!reflect.DeepEqual(oldHV.Status.EffectiveCapacity, newHV.Status.EffectiveCapacity) ||
!reflect.DeepEqual(oldHV.Status.Capacity, newHV.Status.Capacity)
},
🤖 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 `@internal/scheduling/reservations/commitments/reservation_controller.go`
around lines 836 - 853, Update hvCapacityChangePredicate’s UpdateFunc to compare
oldHV.Status.Capacity with newHV.Status.Capacity alongside Instances,
Allocation, and EffectiveCapacity, so capacity-only changes trigger
reconciliation.

Comment on lines +926 to +950
gracePeriod := r.Conf.OversubscriptionGracePeriod.Duration
if gracePeriod == 0 {
gracePeriod = 2 * time.Minute
}
minCheckInterval := r.Conf.RequeueIntervalActive.Duration
if minCheckInterval == 0 {
minCheckInterval = 30 * time.Second
}

if r.oversubscriptionLastCheckedAt == nil {
r.oversubscriptionLastCheckedAt = make(map[string]time.Time)
r.oversubscriptionPendingCheck = make(map[string]bool)
r.oversubscriptionFirstSeen = make(map[string]time.Time)
}

// Rate limit: if checked recently and if pending flag marks already dirty
if timeSinceLastCheck := time.Since(r.oversubscriptionLastCheckedAt[host]); timeSinceLastCheck < minCheckInterval {
if !r.oversubscriptionPendingCheck[host] {
r.oversubscriptionPendingCheck[host] = true
return minCheckInterval - timeSinceLastCheck + time.Second
} else {
// already dirty, so someone else requeued already
return 0
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

The rate limit defeats OversubscriptionGracePeriod.

minCheckInterval reuses RequeueIntervalActive. This PR raises that value from 5m to 30m in helm/bundles/cortex-nova/values.yaml line 180, while oversubscriptionGracePeriod is 2m.

Trace the sequence for an over-subscribed host:

  1. First check runs, sets firstSeen, returns gracePeriod (2m).
  2. The reconcile arrives 2m later. timeSinceLastCheck is 2m, which is below 30m, so line 942 short-circuits before the check runs. It returns ~28m.
  3. The reconcile arrives ~28m later and only then can evict.

The eviction that the 2m grace period is designed to trigger is delayed by roughly 30 minutes per slot. A host that needs several evictions takes hours to converge.

Line 946 makes this worse. If pendingCheck is already true, the function returns 0 and drops the requeue. If that requeue was the only pending trigger, the host is not re-checked until an unrelated event arrives.

Use a dedicated minimum check interval that is independent of RequeueIntervalActive, and always return a requeue duration on the rate-limited path.

🐛 Proposed fix
-	minCheckInterval := r.Conf.RequeueIntervalActive.Duration
-	if minCheckInterval == 0 {
-		minCheckInterval = 30 * time.Second
-	}
+	// The minimum interval between two checks for the same host. Keep it below
+	// gracePeriod so the grace period drives the eviction cadence.
+	minCheckInterval := gracePeriod / 4
+	if minCheckInterval < 30*time.Second {
+		minCheckInterval = 30 * time.Second
+	}
 	if timeSinceLastCheck := time.Since(r.oversubscriptionLastCheckedAt[host]); timeSinceLastCheck < minCheckInterval {
-		if !r.oversubscriptionPendingCheck[host] {
-			r.oversubscriptionPendingCheck[host] = true
-			return minCheckInterval - timeSinceLastCheck + time.Second
-		} else {
-			// already dirty, so someone else requeued already
-			return 0
-		}
+		r.oversubscriptionPendingCheck[host] = true
+		return minCheckInterval - timeSinceLastCheck + time.Second
 	}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
gracePeriod := r.Conf.OversubscriptionGracePeriod.Duration
if gracePeriod == 0 {
gracePeriod = 2 * time.Minute
}
minCheckInterval := r.Conf.RequeueIntervalActive.Duration
if minCheckInterval == 0 {
minCheckInterval = 30 * time.Second
}
if r.oversubscriptionLastCheckedAt == nil {
r.oversubscriptionLastCheckedAt = make(map[string]time.Time)
r.oversubscriptionPendingCheck = make(map[string]bool)
r.oversubscriptionFirstSeen = make(map[string]time.Time)
}
// Rate limit: if checked recently and if pending flag marks already dirty
if timeSinceLastCheck := time.Since(r.oversubscriptionLastCheckedAt[host]); timeSinceLastCheck < minCheckInterval {
if !r.oversubscriptionPendingCheck[host] {
r.oversubscriptionPendingCheck[host] = true
return minCheckInterval - timeSinceLastCheck + time.Second
} else {
// already dirty, so someone else requeued already
return 0
}
}
gracePeriod := r.Conf.OversubscriptionGracePeriod.Duration
if gracePeriod == 0 {
gracePeriod = 2 * time.Minute
}
// The minimum interval between two checks for the same host. Keep it below
// gracePeriod so the grace period drives the eviction cadence.
minCheckInterval := gracePeriod / 4
if minCheckInterval < 30*time.Second {
minCheckInterval = 30 * time.Second
}
if r.oversubscriptionLastCheckedAt == nil {
r.oversubscriptionLastCheckedAt = make(map[string]time.Time)
r.oversubscriptionPendingCheck = make(map[string]bool)
r.oversubscriptionFirstSeen = make(map[string]time.Time)
}
// Rate limit: if checked recently and if pending flag marks already dirty
if timeSinceLastCheck := time.Since(r.oversubscriptionLastCheckedAt[host]); timeSinceLastCheck < minCheckInterval {
r.oversubscriptionPendingCheck[host] = true
return minCheckInterval - timeSinceLastCheck + time.Second
}
🤖 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 `@internal/scheduling/reservations/commitments/reservation_controller.go`
around lines 926 - 950, Decouple the oversubscription rate limit in the
reservation controller from RequeueIntervalActive by introducing or reusing a
dedicated minimum check interval appropriate for the grace-period flow. Update
the timeSinceLastCheck branch to always return a positive requeue duration,
including when oversubscriptionPendingCheck[host] is already true, so
rate-limited hosts are reliably rechecked without dropping the trigger.

Comment on lines +1031 to +1038
if len(violations) == 0 {
monitor.ClearHost(host, az)
return false, true, nil
}

for rn, excess := range violations {
monitor.SetOversubscribed(host, az, string(rn), float64(excess.Value()))
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Per-resource gauges go stale.

ClearHost runs only when the violation set is empty. SetOversubscribed runs only for the resources that currently violate. If memory violates in one run and only CPU violates in the next, the memory gauge keeps its last non-zero value forever.

Clear the host gauges first, then set the current violations.

🐛 Proposed fix
 	if len(violations) == 0 {
 		monitor.ClearHost(host, az)
 		return false, true, nil
 	}
 
+	// Drop previous series so resources that no longer violate do not stay non-zero.
+	monitor.ClearHost(host, az)
 	for rn, excess := range violations {
 		monitor.SetOversubscribed(host, az, string(rn), float64(excess.Value()))
 	}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if len(violations) == 0 {
monitor.ClearHost(host, az)
return false, true, nil
}
for rn, excess := range violations {
monitor.SetOversubscribed(host, az, string(rn), float64(excess.Value()))
}
if len(violations) == 0 {
monitor.ClearHost(host, az)
return false, true, nil
}
// Drop previous series so resources that no longer violate do not stay non-zero.
monitor.ClearHost(host, az)
for rn, excess := range violations {
monitor.SetOversubscribed(host, az, string(rn), float64(excess.Value()))
}
🤖 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 `@internal/scheduling/reservations/commitments/reservation_controller.go`
around lines 1031 - 1038, Update the violation-handling flow in the reservation
controller to call monitor.ClearHost(host, az) before processing violations on
every run, not only when len(violations) == 0. Then set gauges for the current
entries in violations and retain the existing return behavior for empty and
non-empty violation sets.

Comment on lines +1062 to +1095
var unallocatedReservations, allocatedReservations []*v1alpha1.Reservation
for i := range allReservations {
res := &allReservations[i]
if res.Spec.Type != v1alpha1.ReservationTypeCommittedResource {
continue
}
if res.Spec.CommittedResourceReservation == nil ||
len(res.Spec.CommittedResourceReservation.Allocations) == 0 {
unallocatedReservations = append(unallocatedReservations, res)
} else {
allocatedReservations = append(allocatedReservations, res)
}
}
sort.Slice(unallocatedReservations, func(i, j int) bool {
mi := unallocatedReservations[i].Spec.Resources[hv1.ResourceMemory]
mj := unallocatedReservations[j].Spec.Resources[hv1.ResourceMemory]
return mi.Cmp(mj) < 0
})
sort.Slice(allocatedReservations, func(i, j int) bool {
ui := reservations.UnusedReservationCapacity(allocatedReservations[i], false)
uj := reservations.UnusedReservationCapacity(allocatedReservations[j], false)
mi := ui[hv1.ResourceMemory]
mj := uj[hv1.ResourceMemory]
return mi.Cmp(mj) < 0
})
memViolation := violations[hv1.ResourceMemory]
for _, res := range allocatedReservations {
unused := reservations.UnusedReservationCapacity(res, false)
unusedMem := unused[hv1.ResourceMemory]
if unusedMem.Cmp(memViolation) >= 0 {
allocatedReservations = []*v1alpha1.Reservation{res}
break
}
}

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Find other consumers of CommittedResourceReservation.Allocations to assess the impact of clearing them.
set -euo pipefail

rg -n -C 6 'CommittedResourceReservation\.Allocations' --type=go -g '!**/*_test.go'

Repository: cobaltcore-dev/cortex

Length of output: 159


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Find Go files matching reservation_controller"
fd -a 'reservation_controller\.go$' . || true

echo
echo "Search all references to relevant API/data fields"
rg -n 'CommittedResourceReservation|Allocations|unplaceReservation|UsageReservationCapacity|UnusedReservationCapacity' --type=go -g '!**/*_test.go' .

echo
echo "Search V1alpha1 Reservation type definitions"
fd -a '.*\.go$' . | xargs rg -n 'type CommittedResourceReservation|Allocations map|struct CommittedResource|type Reservation' -g '*go' || true

Repository: cobaltcore-dev/cortex

Length of output: 49542


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "reservation_controller.go relevant sections"
sed -n '1020,1165p' internal/scheduling/reservations/commitments/reservation_controller.go

echo
echo "resource_provider_allocations.go"
sed -n '1,120p' internal/shim/placement/handle_resource_provider_allocations.go

echo
echo "handle_allocations.go"
sed -n '1,90p' internal/shim/placement/handle_allocations.go

echo
echo "Capacity accounting relevant section"
sed -n '110,155p' internal/scheduling/reservations/capacity_accounting.go

echo
echo "nova capacity filter around committed_reservation block"
sed -n '215,245p' internal/scheduling/nova/plugins/filters/filter_has_enough_capacity.go

echo
echo "nova CRS recorder around spec allocation writes/status clear check"
sed -n '110,165p' internal/scheduling/nova/crs/recorder.go

echo
echo "reservation_controller_monitor.go outline and relevant references"
sed -n '1,240p' internal/scheduling/reservations/commitments/reservation_controller_monitor.go

echo
echo "change_commitments relevant section"
sed -n '680,730p' internal/scheduling/reservations/commitments/api/change_commitments.go

Repository: cobaltcore-dev/cortex

Length of output: 18988


Do not evict allocation-bearing committed-resource reservations without moving/terminating VMs.

When no unallocated slot exists, the code falls back to allocatedReservations, then unplaceReservation clears Spec.CommittedResourceReservation.Allocations and Status.CommittedResourceReservation.Allocations. Those maps preserve the VM UUID to host mapping for already-placed VMs and are used by resource-provider allocation reads, availability filtering, and committed-resource capacity accounting. Clearing them without moving or stopping those VMs loses required allocation records. Restrict eviction to unallocated slots, or report the over-subscription as unresolvable through the monitor.

🤖 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 `@internal/scheduling/reservations/commitments/reservation_controller.go`
around lines 1062 - 1095, The fallback loop over allocatedReservations must not
select allocation-bearing committed-resource reservations for eviction, because
unplaceReservation clears required VM allocation mappings. Remove that fallback
selection and restrict eviction to unallocatedReservations; when no eligible
unallocated slot exists, report the memory over-subscription as unresolvable
through the existing monitor path.

Comment on lines +1136 to +1155
if err := r.Patch(ctx, res, client.MergeFrom(old)); err != nil {
return nil, fmt.Errorf("failed to patch reservation %s: %w", res.Name, err)
}
if err := r.Get(ctx, client.ObjectKeyFromObject(res), res); err != nil {
return nil, fmt.Errorf("failed to re-fetch reservation %s: %w", res.Name, err)
}
old = res.DeepCopy()
meta.SetStatusCondition(&res.Status.Conditions, metav1.Condition{
Type: v1alpha1.ReservationConditionReady,
Status: metav1.ConditionFalse,
Reason: "OversubscriptionRemediation",
Message: fmt.Sprintf("evicted from %s due to host over-subscription", host),
})
res.Status.Host = ""
if res.Status.CommittedResourceReservation != nil {
res.Status.CommittedResourceReservation.Allocations = nil
}
if err := r.Status().Patch(ctx, res, client.MergeFrom(old)); err != nil {
return nil, fmt.Errorf("failed to patch reservation %s status: %w", res.Name, err)
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift

A failed status patch leaves the slot in a stuck state.

unplaceReservation writes in two phases. If the spec patch at line 1136 succeeds and the status patch at line 1153 fails, the reservation ends with Spec.TargetHost == "", Status.Host == host, and Ready == True.

That state does not self-repair:

  • Reconcile returns early at line 130 because res.IsReady() is true, so the slot is never rescheduled.
  • The sync branch at line 205 requires Spec.TargetHost != "", so Status.Host is never cleared.
  • HostFreeCapacity still counts the slot against the host because Status.Host matches, so the host stays over-subscribed.

The caller compounds this. runOversubscriptionCheck logs the error at line 970 and returns 0, so no requeue is scheduled.

Clear Status.Host and set Ready=False before clearing Spec.TargetHost, so a failure between the two writes leaves a state that the reconcile loop can repair. Also return the error from runOversubscriptionCheck so the controller retries.

🤖 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 `@internal/scheduling/reservations/commitments/reservation_controller.go`
around lines 1136 - 1155, The unplaceReservation update order can leave a ready
reservation counted on its old host when the status patch fails. Apply the
status changes clearing Status.Host and setting Ready=False before clearing
Spec.TargetHost, preserving the existing rollback-safe behavior, and update
runOversubscriptionCheck to return the unplaceReservation error so
reconciliation retries instead of returning success.

Signed-off-by: Marcel <156897072+mblos@users.noreply.github.com>
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Test Coverage Report

Test Coverage 📊: 70.6%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/monitor.go:21:							NewMonitor					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/monitor.go:39:							Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/monitor.go:45:							Collect						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/cinder/cinder_api.go:37:			NewCinderAPI					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/cinder/cinder_api.go:45:			Init						81.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/cinder/cinder_api.go:68:			GetAllStoragePools				73.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/cinder/cinder_sync.go:27:			Init						83.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/cinder/cinder_sync.go:40:			Sync						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/cinder/cinder_sync.go:51:			SyncAllStoragePools				53.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/cinder/cinder_types.go:46:			TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/cinder/cinder_types.go:49:			Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/cinder/cinder_types.go:52:			UnmarshalJSON					93.9%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/cinder/cinder_types.go:131:			MarshalJSON					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/controller.go:75:				Reconcile					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/controller.go:281:				predicateIgnoreStatusConditions			100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/controller.go:299:				SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_api.go:35:			NewIdentityAPI					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_api.go:39:			Init						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_api.go:59:			GetAllDomains					66.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_api.go:83:			GetAllProjects					72.2%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_sync.go:26:			Init						85.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_sync.go:41:			Sync						83.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_sync.go:54:			SyncDomains					53.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_sync.go:74:			SyncProjects					53.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_types.go:16:		TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_types.go:19:		Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_types.go:47:		TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/identity/identity_types.go:50:		Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/limes/limes_api.go:45:			NewLimesAPI					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/limes/limes_api.go:50:			Init						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/limes/limes_api.go:75:			GetAllCommitments				90.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/limes/limes_api.go:125:			getCommitments					86.4%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/limes/limes_sync.go:28:			Init						83.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/limes/limes_sync.go:41:			Sync						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/limes/limes_sync.go:52:			SyncCommitments					63.2%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/limes/limes_types.go:69:			TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/limes/limes_types.go:72:			Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/manila/manila_api.go:41:			NewManilaAPI					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/manila/manila_api.go:46:			Init						81.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/manila/manila_api.go:69:			GetAllStoragePools				75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/manila/manila_sync.go:28:			Init						83.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/manila/manila_sync.go:41:			Sync						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/manila/manila_sync.go:52:			SyncAllStoragePools				53.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/manila/manila_types.go:47:			UnmarshalJSON					87.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/manila/manila_types.go:137:			MarshalJSON					72.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/manila/manila_types.go:234:			TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/manila/manila_types.go:237:			Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_api.go:59:				NewNovaAPI					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_api.go:64:				Init						85.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_api.go:95:				GetAllServers					82.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_api.go:162:				probeOSTypes					20.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_api.go:195:				probeOSType					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_api.go:209:				GetDeletedServers				82.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_api.go:272:				GetAllHypervisors				82.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_api.go:334:				GetAllFlavors					68.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_api.go:371:				GetAllMigrations				82.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_api.go:432:				GetAllAggregates				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_api.go:497:				initOSTypeProber				66.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_sync.go:30:				Init						90.9%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_sync.go:54:				Sync						50.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_sync.go:76:				isKVMFlavor					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_sync.go:81:				SyncAllServers					57.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_sync.go:104:			SyncDeletedServers				64.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_sync.go:134:			SyncAllHypervisors				57.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_sync.go:158:			SyncAllFlavors					57.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_sync.go:180:			SyncAllMigrations				57.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_sync.go:202:			SyncAllAggregates				57.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:37:			UnmarshalJSON					77.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:60:			MarshalJSON					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:80:			TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:83:			Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:143:			UnmarshalJSON					45.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:195:			MarshalJSON					84.6%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:241:			TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:244:			Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:277:			UnmarshalJSON					80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:313:			MarshalJSON					85.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:345:			TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:348:			Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:390:			GetHypervisorType				71.4%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:416:			UnmarshalJSON					54.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:439:			MarshalJSON					55.6%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:460:			TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:463:			Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:487:			TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:490:			Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:511:			TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/nova/nova_types.go:514:			Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_api.go:48:		NewPlacementAPI					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_api.go:53:		Init						81.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_api.go:77:		GetAllResourceProviders				66.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_api.go:105:		GetAllTraits					90.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_api.go:155:		getTraits					90.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_api.go:179:		GetAllInventoryUsages				71.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_api.go:229:		getInventoryUsages				77.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_sync.go:28:		Init						87.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_sync.go:46:		Sync						71.4%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_sync.go:62:		SyncResourceProviders				53.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_sync.go:83:		SyncTraits					57.9%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_sync.go:112:		SyncInventoryUsages				57.9%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_types.go:17:		TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_types.go:20:		Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_types.go:31:		TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_types.go:34:		Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_types.go:74:		TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/placement/placement_types.go:77:		Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/openstack/supported_syncers.go:22:			getSupportedSyncer				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/controller.go:62:				Reconcile					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/controller.go:216:				SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/sync.go:32:					newTypedSyncer					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/sync.go:100:					fetch						79.2%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/sync.go:205:					getSyncWindowStart				81.2%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/sync.go:245:					sync						68.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/sync.go:295:					Sync						70.6%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/triggers.go:7:				TriggerMetricAliasSynced			0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/triggers.go:12:				TriggerMetricTypeSynced				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:42:					TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:43:					Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:44:					GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:45:					GetTimestamp					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:46:					GetValue					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:47:					With						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:90:					TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:91:					Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:92:					GetName						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:93:					GetTimestamp					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:94:					GetValue					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:95:					With						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:145:				TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:146:				Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:147:				GetName						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:148:				GetTimestamp					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:149:				GetValue					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:150:				With						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:170:				TableName					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:171:				Indexes						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:172:				GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:173:				GetTimestamp					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:174:				GetValue					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:175:				With						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:211:				TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:212:				Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:213:				GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:214:				GetTimestamp					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:215:				GetValue					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:216:				With						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:242:				TableName					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:243:				Indexes						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:244:				GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:245:				GetTimestamp					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:246:				GetValue					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:247:				With						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:282:				TableName					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:285:				Indexes						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:286:				GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:287:				GetTimestamp					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:288:				GetValue					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/datasources/plugins/prometheus/types.go:289:				With						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/db.go:51:								FromSecretRef					6.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/db.go:133:								SelectTimed					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/db.go:142:								CreateTable					63.6%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/db.go:161:								AddTable					66.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/db.go:172:								TableExists					58.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/db.go:201:								ReplaceAll					62.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/db.go:230:								BulkInsert					91.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/monitor.go:21:								newMonitor					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/monitor.go:63:								Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/monitor.go:73:								Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/testing/containers/postgres.go:21:					GetPort						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/testing/containers/postgres.go:25:					Init						70.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/testing/containers/postgres.go:69:					Close						50.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/db/testing/env.go:24:							SetupDBEnv					59.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/controller.go:46:							Reconcile					55.2%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/controller.go:238:						SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/monitor.go:26:							NewMonitor					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/monitor.go:44:							Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/monitor.go:50:							Collect						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/monitor.go:69:							Init						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/monitor.go:78:							monitorFeatureExtractor				100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/monitor.go:97:							Extract						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/base.go:28:						Init						87.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/base.go:45:						ExtractSQL					83.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/base.go:58:						Extracted					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/flavor_groups.go:50:				HasFixedRamCoreRatio				100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/flavor_groups.go:61:				Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/flavor_groups.go:86:				RAMUnitMiB					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/flavor_groups.go:93:				DeclaredUnitsToGiB				100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/flavor_groups.go:97:				GiBToDeclaredUnits				100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/flavor_groups.go:126:				Extract						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/host_az.go:31:					Extract						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/host_capabilities.go:35:				Extract						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/host_details.go:59:				Extract						87.2%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/host_pinned_projects.go:45:			Extract						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/host_utilization.go:47:				Extract						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/libvirt_domain_cpu_steal_pct.go:35:		Extract						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/vm_host_residency.go:53:				Extract						85.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/vm_life_span.go:52:				extractHistogramBuckets				89.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/vm_life_span.go:97:				Extract						88.9%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/vrops_hostsystem_contention_long_term.go:39:	Extract						82.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/vrops_hostsystem_contention_short_term.go:39:	Extract						82.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/vrops_hostsystem_resolver.go:33:			Extract						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/compute/vrops_project_noisiness.go:33:			Extract						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/plugins/storage/storage_pool_cpu_usage.go:35:			Extract						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/trigger.go:42:							Reconcile					77.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/trigger.go:95:							findDependentKnowledge				96.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/trigger.go:142:							triggerKnowledgeReconciliation			100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/trigger.go:175:							enqueueKnowledgeReconciliation			81.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/trigger.go:201:							getResourceType					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/trigger.go:213:							mapDatasourceToKnowledge			100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/trigger.go:234:							mapKnowledgeToKnowledge				100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/extractor/trigger.go:255:							SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:53:							Reconcile					42.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:107:							InitAllKPIs					83.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:147:							getJointDB					27.8%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:185:							handleKPIChange					52.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:310:							handleDatasourceChange				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:335:							handleDatasourceCreated				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:345:							handleDatasourceUpdated				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:363:							handleDatasourceDeleted				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:375:							handleKnowledgeChange				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:400:							handleKnowledgeCreated				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:410:							handleKnowledgeUpdated				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:428:							handleKnowledgeDeleted				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/controller.go:438:							SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/logger.go:21:								Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/logger.go:26:								Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/logger.go:32:								Init						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/logger.go:37:								GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/base.go:24:							Init						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/host_contention.go:28:					GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/host_contention.go:32:					Init						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/host_contention.go:49:					Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/host_contention.go:54:					Collect						82.6%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/project_noisiness.go:27:				GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/project_noisiness.go:31:				Init						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/project_noisiness.go:43:				Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/project_noisiness.go:47:				Collect						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_commitments.go:30:					GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_commitments.go:34:					Init						85.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_commitments.go:81:					Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_commitments.go:89:					convertLimesMemory				100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_commitments.go:106:					Collect						89.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_faults.go:35:					GetName						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_faults.go:40:					Init						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_faults.go:53:					Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_faults.go:57:					Collect						91.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_life_span.go:29:					GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_life_span.go:33:					Init						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_life_span.go:46:					Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_life_span.go:50:					Collect						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_life_span.go:57:					collectVMBuckets				71.4%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_migration_statistics.go:28:				GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_migration_statistics.go:32:				Init						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_migration_statistics.go:45:				Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/compute/vm_migration_statistics.go:49:				Collect						69.2%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/datasource_state.go:47:				GetName						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/datasource_state.go:52:				Init						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/datasource_state.go:71:				Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/datasource_state.go:78:				Collect						90.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/decision_state.go:32:				GetName						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/decision_state.go:35:				Init						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/decision_state.go:49:				Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/decision_state.go:52:				Collect						94.1%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/knowledge_state.go:32:				GetName						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/knowledge_state.go:35:				Init						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/knowledge_state.go:49:				Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/knowledge_state.go:52:				Collect						85.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/kpi_state.go:32:					GetName						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/kpi_state.go:35:					Init						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/kpi_state.go:49:					Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/kpi_state.go:52:					Collect						92.9%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/multicluster_object_count_kpi.go:52:		GetName						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/multicluster_object_count_kpi.go:54:		Init						52.6%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/multicluster_object_count_kpi.go:86:		Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/multicluster_object_count_kpi.go:92:		Collect						86.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/multicluster_object_count_kpi.go:126:		buildObjectCountSchema				93.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/multicluster_object_count_kpi.go:158:		parseGVK					87.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/multicluster_object_count_kpi.go:173:		toSnakeCase					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/multicluster_object_count_kpi.go:186:		labelValueForSnakeKey				100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/pipeline_state.go:32:				GetName						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/pipeline_state.go:35:				Init						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/pipeline_state.go:49:				Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/pipeline_state.go:52:				Collect						92.9%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/reservation_state.go:44:				GetName						100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/reservation_state.go:47:				Init						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/reservation_state.go:61:				Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/deployment/reservation_state.go:64:				Collect						91.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_hana_stacking.go:36:			GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_hana_stacking.go:40:			Init						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_hana_stacking.go:52:			Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_hana_stacking.go:56:			Collect						75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_hana_stacking.go:81:			getKVMHosts					87.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_hana_stacking.go:94:			queryHanaStacking				80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_host_capacity.go:35:			GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_host_capacity.go:39:			Init						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_host_capacity.go:58:			Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_host_capacity.go:65:			aggregateReservationsByHost			91.9%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_host_capacity.go:133:			getHypervisors					85.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_host_capacity.go:146:			Collect						91.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_project_utilization.go:54:			GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_project_utilization.go:58:			Init						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_project_utilization.go:76:			Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_project_utilization.go:81:			Collect						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_project_utilization.go:127:			getKVMHosts					87.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_project_utilization.go:142:			queryProjectCapacityUsage			80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/kvm_project_utilization.go:176:			queryProjectInstanceCount			80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/shared.go:32:					getHostLabels					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/shared.go:87:					getHostLabels					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/shared.go:140:					getResourceCapacity				100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/shared.go:157:					getResourceAllocation				83.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/shared.go:171:					getMetricName					75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/shared.go:190:					isKVMFlavor					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/shared.go:209:					flavorCPUArchitecture				100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/shared.go:231:					bytesFromUnit					100.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_host_capacity.go:26:			GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_host_capacity.go:30:			Init						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_host_capacity.go:47:			Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_host_capacity.go:52:			Collect						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_host_capacity.go:82:			getVMwareHosts					83.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_host_capacity.go:101:			getHostUtilizations				84.6%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:36:		GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:40:		Init						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:58:		Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:63:		Collect						58.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:85:		getFlavorsByName				85.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:98:		getGeneralPurposeCommitments			75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:113:		getGeneralPurposeServers			87.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:132:		getHanaInstanceCommitments			75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:146:		getRunningHanaServers				87.5%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:166:		collectGeneralPurpose				75.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:224:		collectHana					89.2%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_commitments.go:289:		getProjectsWithDomains				85.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_utilization.go:55:		GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_utilization.go:59:		Init						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_utilization.go:77:		Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_utilization.go:82:		Collect						66.7%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_utilization.go:129:		getVMwareHosts					83.3%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_utilization.go:152:		queryProjectCapacityUsage			80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/infrastructure/vmware_project_utilization.go:187:		queryProjectInstanceCount			80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/storage/storage_pool_cpu.go:28:				GetName						0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/storage/storage_pool_cpu.go:32:				Init						80.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/storage/storage_pool_cpu.go:49:				Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/knowledge/kpis/plugins/storage/storage_pool_cpu.go:54:				Collect						82.6%
github.com/cobaltcore-dev/cortex/internal/knowledge/math/histogram.go:7:							Histogram					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/e2e_checks.go:21:							RunChecks					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/e2e_checks.go:26:							checkCinderSchedulerReturnsValidHosts		0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/external_scheduler_api.go:42:					NewAPI						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/external_scheduler_api.go:50:					Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/external_scheduler_api.go:57:					canRunScheduler					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/external_scheduler_api.go:80:					inferPipelineName				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/external_scheduler_api.go:90:					CinderExternalScheduler				71.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/filter_weigher_pipeline_controller.go:48:				PipelineType					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/filter_weigher_pipeline_controller.go:53:				Reconcile					83.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/filter_weigher_pipeline_controller.go:73:				ProcessNewDecisionFromAPI			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/filter_weigher_pipeline_controller.go:96:				process						79.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/filter_weigher_pipeline_controller.go:136:				InitPipeline					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/filter_weigher_pipeline_controller.go:149:				SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/history_cleanup.go:30:						HistoryCleanup					76.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/cinder/pipeline_webhook.go:15:						NewPipelineWebhook				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/nova.go:34:							NewNovaReader					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/nova.go:39:							GetAllServers					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/nova.go:49:							GetAllFlavors					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/nova.go:59:							GetAllHypervisors				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/nova.go:69:							GetAllMigrations				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/nova.go:79:							GetAllAggregates				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/nova.go:89:							GetServersByProject				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/nova.go:100:							GetServerByID					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/nova.go:114:							GetFlavorByName					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/nova.go:128:							GetDeletedServerByID				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/postgres.go:33:							NewPostgresReader				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/postgres.go:48:							DB						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/external/postgres.go:67:							Select						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/activation.go:12:							NoEffect					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/activation.go:15:							Norm						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/activation.go:21:							Apply						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/api_monitor.go:22:							NewSchedulerMonitor				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/api_monitor.go:32:							Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/api_monitor.go:36:							Collect						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/api_monitor.go:50:							Callback					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/api_monitor.go:56:							Respond						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector.go:53:							Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector.go:64:							Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector.go:75:							CheckKnowledges					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_monitor.go:26:						NewDetectorPipelineMonitor			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_monitor.go:46:						SubPipeline					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_monitor.go:52:						Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_monitor.go:58:						Collect						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_monitor.go:76:						monitorDetector					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_monitor.go:99:						Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_monitor.go:107:						Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_monitor.go:112:						Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_pipeline.go:33:						Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_pipeline.go:63:						Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_pipeline.go:98:						Combine						97.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/detector_step_opts.go:15:						Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter.go:31:								Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_monitor.go:23:							monitorFilter					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_monitor.go:36:							Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_monitor.go:41:							Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_monitor.go:46:							Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_validation.go:22:						Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_validation.go:28:						Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_validation.go:33:						validateFilter					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_validation.go:38:						Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline.go:46:						InitNewFilterWeigherPipeline			86.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline.go:139:					runFilters					75.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline.go:171:					runWeighers					81.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline.go:211:					normalizeInputWeights				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline.go:220:					applyWeights					80.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline.go:256:					sortHostsByWeights				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline.go:266:					Run						95.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_monitor.go:40:					NewPipelineMonitor				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_monitor.go:96:					SubPipeline					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_monitor.go:103:				observePipelineResult				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_monitor.go:124:				Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_monitor.go:142:				Collect						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step.go:50:					Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step.go:65:					Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step.go:77:					IncludeAllHostsFromRequest			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step.go:87:					PrepareStats					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step_monitor.go:47:				monitorStep					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step_monitor.go:71:				RunWrapped					50.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step_monitor.go:228:				impact						94.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step_monitor.go:297:				newPipelineStepEventCollector			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step_monitor.go:317:				Record						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step_monitor.go:342:				Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step_monitor.go:348:				Collect						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step_monitor.go:370:				stepEventKey					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/filter_weigher_pipeline_step_opts.go:15:				Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/history_client.go:32:							joinHostsCapped					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/history_client.go:39:							getName						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/history_client.go:46:							generateExplanation				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/history_client.go:136:							CreateOrUpdateHistory				73.5%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/history_client.go:285:							Delete						80.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_controller.go:41:						GetPipeline					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_controller.go:49:						GetPipelineConfig				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_controller.go:57:						InitAllPipelines				94.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_controller.go:83:						handlePipelineChange				80.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_controller.go:202:						HandlePipelineCreated				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_controller.go:216:						HandlePipelineUpdated				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_controller.go:229:						HandlePipelineDeleted				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_controller.go:243:						handleKnowledgeChange				71.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_controller.go:276:						HandleKnowledgeCreated				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_controller.go:289:						HandleKnowledgeUpdated				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_controller.go:311:						HandleKnowledgeDeleted				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_webhook.go:38:						ValidateCreate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_webhook.go:47:						ValidateUpdate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_webhook.go:56:						ValidateDelete					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_webhook.go:65:						validatePipeline				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/pipeline_webhook.go:149:						SetupWebhookWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/scaling.go:7:								clamp						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/scaling.go:22:								MinMaxScale					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weigher.go:35:								Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weigher.go:40:								Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weigher.go:45:								CheckKnowledges					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weigher_monitor.go:23:							monitorWeigher					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weigher_monitor.go:36:							Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weigher_monitor.go:41:							Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weigher_monitor.go:46:							Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weigher_validation.go:22:						Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weigher_validation.go:28:						Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weigher_validation.go:33:						validateWeigher					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weigher_validation.go:38:						Run						85.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weighing_explainer.go:58:						ExplainWeighing					97.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weighing_explainer.go:202:						explainWithoutMultipliers			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weighing_explainer.go:242:						identifyWeigherSteps				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weighing_explainer.go:283:						recoverMultipliers				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weighing_explainer.go:339:						solveLinearSystem				93.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weighing_explainer.go:402:						computeCounterfactualRanking			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/lib/weighing_explainer.go:423:						sortedMapKeys					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/filter_weigher_pipeline_controller.go:52:				PipelineType					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/filter_weigher_pipeline_controller.go:56:				Reconcile					83.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/filter_weigher_pipeline_controller.go:76:				ProcessNewMachine				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/filter_weigher_pipeline_controller.go:117:			process						79.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/filter_weigher_pipeline_controller.go:178:			InitPipeline					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/filter_weigher_pipeline_controller.go:191:			handleMachine					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/filter_weigher_pipeline_controller.go:223:			SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/pipeline_webhook.go:15:						NewPipelineWebhook				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/plugins/filters/filter_noop.go:21:				Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/plugins/filters/filter_noop.go:25:				Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/plugins/filters/filter_noop.go:34:				Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/machines/plugins/filters/filter_noop.go:44:				init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/e2e_checks.go:34:							RunChecks					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/e2e_checks.go:39:							checkManilaSchedulerReturnsValidHosts		0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/external_scheduler_api.go:42:					NewAPI						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/external_scheduler_api.go:50:					Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/external_scheduler_api.go:57:					canRunScheduler					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/external_scheduler_api.go:80:					inferPipelineName				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/external_scheduler_api.go:90:					ManilaExternalScheduler				71.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/filter_weigher_pipeline_controller.go:48:				PipelineType					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/filter_weigher_pipeline_controller.go:53:				Reconcile					83.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/filter_weigher_pipeline_controller.go:73:				ProcessNewDecisionFromAPI			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/filter_weigher_pipeline_controller.go:96:				process						79.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/filter_weigher_pipeline_controller.go:136:				InitPipeline					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/filter_weigher_pipeline_controller.go:149:				SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/history_cleanup.go:32:						HistoryCleanup					77.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/pipeline_webhook.go:15:						NewPipelineWebhook				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/plugins/weighers/netapp_cpu_usage_balancing.go:35:			Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/plugins/weighers/netapp_cpu_usage_balancing.go:53:			Init						60.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/plugins/weighers/netapp_cpu_usage_balancing.go:64:			Run						88.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/manila/plugins/weighers/netapp_cpu_usage_balancing.go:110:			init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/candidate_gatherer.go:29:						MutateWithAllCandidates				94.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/evaluator.go:26:							BuildSlotEvaluator				77.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/evaluator.go:68:							SlotsForHost					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/evaluator.go:86:							HasUsableSlot					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/evaluator.go:109:							ReservationRemainingMemory			88.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/evaluator.go:130:							PickSlot					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/metrics.go:14:							NewNoHostFoundCounter				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/metrics.go:26:							NewPlacementCounter				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/metrics.go:40:							ClassifyNoHostFound				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/metrics.go:76:							ClassifyPlacement				86.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/recorder.go:43:							resolveFlavorGroup				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/recorder.go:58:							RecordPlacement					83.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/crs/recorder.go:173:							RecordNoHostFound				87.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/deschedulings_cleanup.go:24:						Start						82.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/deschedulings_cleanup.go:63:						Reconcile					70.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/deschedulings_cleanup.go:95:						SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/deschedulings_executor.go:45:						Reconcile					68.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/deschedulings_executor.go:256:					SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/detector_cycle_breaker.go:17:						Filter						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/detector_pipeline_controller.go:42:					PipelineType					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/detector_pipeline_controller.go:47:					InitPipeline					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/detector_pipeline_controller.go:65:					CreateDeschedulingsPeriodically			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/detector_pipeline_controller.go:126:					Reconcile					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/detector_pipeline_controller.go:131:					SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/e2e_checks.go:86:							getHypervisors					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/e2e_checks.go:129:							prepare						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/e2e_checks.go:282:							randomRequest					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/e2e_checks.go:355:							checkNovaSchedulerReturnsValidHosts		0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/e2e_checks.go:389:							CheckDomainNameHintRouting			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/e2e_checks.go:443:							RunChecks					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/external_scheduler_api.go:54:						NewAPI						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/external_scheduler_api.go:63:						Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/external_scheduler_api.go:70:						canRunScheduler					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/external_scheduler_api.go:93:						inferPipelineName				93.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/external_scheduler_api.go:127:					shuffleTopHosts					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/external_scheduler_api.go:153:					limitHostsToRequest				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/external_scheduler_api.go:175:					NovaExternalScheduler				70.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/filter_weigher_pipeline_controller.go:58:				PipelineType					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/filter_weigher_pipeline_controller.go:63:				Reconcile					76.5%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/filter_weigher_pipeline_controller.go:93:				ProcessNewDecisionFromAPI			82.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/filter_weigher_pipeline_controller.go:139:				upsertHistory					90.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/filter_weigher_pipeline_controller.go:160:				process						84.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/filter_weigher_pipeline_controller.go:228:				peekReadOnly					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/filter_weigher_pipeline_controller.go:239:				InitPipeline					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/filter_weigher_pipeline_controller.go:252:				SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/history_cleanup.go:30:						HistoryCleanup					79.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/hypervisor_overcommit_controller.go:48:				Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/hypervisor_overcommit_controller.go:82:				Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/hypervisor_overcommit_controller.go:111:				Reconcile					93.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/hypervisor_overcommit_controller.go:178:				handleRemoteHypervisor				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/hypervisor_overcommit_controller.go:207:				predicateRemoteHypervisor			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/hypervisor_overcommit_controller.go:220:				SetupWithManager				23.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/nova_client.go:80:							NewNovaClient					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/nova_client.go:84:							Init						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/nova_client.go:132:							Get						75.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/nova_client.go:141:							LiveMigrate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/nova_client.go:152:							GetServerMigrations				70.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/nova_client.go:195:							ListProjectServers				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/pipeline_webhook.go:16:						NewPipelineWebhook				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/detectors/avoid_high_steal_pct.go:26:				Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/detectors/avoid_high_steal_pct.go:39:				Init						80.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/detectors/avoid_high_steal_pct.go:49:				Run						86.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/detectors/avoid_high_steal_pct.go:85:				init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_aggregate_metadata.go:24:			Run						96.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_aggregate_metadata.go:97:			init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_allowed_projects.go:23:			Run						90.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_allowed_projects.go:66:			init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_capabilities.go:25:				hvToNovaCapabilities				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_capabilities.go:48:				Run						89.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_capabilities.go:137:				init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_correct_az.go:21:				Run						92.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_correct_az.go:68:				init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_exclude_hosts.go:28:				Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_exclude_hosts.go:30:				Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_exclude_hosts.go:43:				init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_external_customer.go:24:			Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_external_customer.go:37:			Run						95.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_external_customer.go:103:			init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_has_accelerators.go:21:			Run						92.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_has_accelerators.go:58:			init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_has_enough_capacity.go:35:			Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_has_enough_capacity.go:65:			Run						81.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_has_enough_capacity.go:358:			init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_has_requested_traits.go:24:			Run						95.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_has_requested_traits.go:100:			init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_host_instructions.go:21:			Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_host_instructions.go:44:			init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_image_properties.go:22:			Run						92.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_image_properties.go:87:			init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_instance_group_affinity.go:20:			Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_instance_group_affinity.go:64:			init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_instance_group_anti_affinity.go:23:		Run						89.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_instance_group_anti_affinity.go:112:		init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_live_migratable.go:22:				checkHasSufficientFeatures			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_live_migratable.go:51:				Run						94.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_live_migratable.go:112:			init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_quota_enforcement.go:33:			Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_quota_enforcement.go:75:			Run						91.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_quota_enforcement.go:330:			quantityToGiB					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_quota_enforcement.go:338:			init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_quota_enforcement_metrics.go:40:		NewQuotaEnforcementMetrics			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_quota_enforcement_metrics.go:57:		Describe					66.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_quota_enforcement_metrics.go:67:		Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_quota_enforcement_metrics.go:86:		RecordDecision					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_requested_destination.go:27:			processRequestedAggregates			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_requested_destination.go:80:			processRequestedHost				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_requested_destination.go:104:			Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_requested_destination.go:141:			init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_status_conditions.go:23:			Run						93.5%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/filters/filter_status_conditions.go:91:			init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/vm_detection.go:17:						GetResource					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/vm_detection.go:18:						GetReason					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/vm_detection.go:19:						GetHost						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/vm_detection.go:20:						WithReason					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_binpack.go:29:					Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_binpack.go:72:					Run						89.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_binpack.go:144:					calcVMResources					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_binpack.go:157:					init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_committed_resource_reservation.go:28:		Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_committed_resource_reservation.go:32:		GetReservationHostWeight			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_committed_resource_reservation.go:39:		GetDefaultHostWeight				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_committed_resource_reservation.go:55:		Run						95.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_committed_resource_reservation.go:131:		freeMemoryBytes					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_committed_resource_reservation.go:144:		init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_failover_evacuation.go:25:			Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_failover_evacuation.go:29:			GetFailoverHostWeight				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_failover_evacuation.go:36:			GetDefaultHostWeight				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_failover_evacuation.go:53:			Run						93.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_failover_evacuation.go:114:			init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_failover_reservation_consolidation.go:29:	Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_failover_reservation_consolidation.go:47:	GetTotalCountWeight				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_failover_reservation_consolidation.go:54:	GetSameSpecPenalty				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_failover_reservation_consolidation.go:81:	Run						94.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_failover_reservation_consolidation.go:160:	init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_instance_group_soft_affinity.go:29:		Run						92.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_instance_group_soft_affinity.go:88:		init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_prefer_smaller_hosts.go:29:			Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_prefer_smaller_hosts.go:60:			Run						92.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/kvm_prefer_smaller_hosts.go:157:			init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_anti_affinity_noisy_projects.go:29:		Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_anti_affinity_noisy_projects.go:44:		Init						80.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_anti_affinity_noisy_projects.go:55:		Run						81.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_anti_affinity_noisy_projects.go:93:		init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_avoid_long_term_contended_hosts.go:35:	Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_avoid_long_term_contended_hosts.go:53:	Init						80.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_avoid_long_term_contended_hosts.go:64:	Run						88.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_avoid_long_term_contended_hosts.go:111:	init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_avoid_short_term_contended_hosts.go:35:	Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_avoid_short_term_contended_hosts.go:53:	Init						80.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_avoid_short_term_contended_hosts.go:64:	Run						88.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_avoid_short_term_contended_hosts.go:111:	init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_binpack.go:32:				Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_binpack.go:75:				Init						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_binpack.go:88:				Run						80.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_binpack.go:165:				calcHostCapacity				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_binpack.go:177:				calcHostAllocation				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_binpack.go:187:				calcVMResources					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/nova/plugins/weighers/vmware_binpack.go:200:				init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/filter_weigher_pipeline_controller.go:51:				PipelineType					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/filter_weigher_pipeline_controller.go:55:				Reconcile					83.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/filter_weigher_pipeline_controller.go:75:				ProcessNewPod					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/filter_weigher_pipeline_controller.go:117:				process						80.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/filter_weigher_pipeline_controller.go:190:				InitPipeline					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/filter_weigher_pipeline_controller.go:203:				handlePod					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/filter_weigher_pipeline_controller.go:235:				SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/helpers/resources.go:12:						GetPodResourceRequests				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/helpers/resources.go:31:						AddResourcesInto				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/helpers/resources.go:41:						MaxResourcesInto				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/pipeline_webhook.go:15:						NewPipelineWebhook				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_affinity.go:22:				Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_affinity.go:26:				Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_affinity.go:30:				Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_affinity.go:43:				matchesNodeAffinity				88.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_affinity.go:62:				matchesNodeSelectorTerm				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_affinity.go:71:				matchesNodeSelectorRequirement			90.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_affinity.go:124:				init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_available.go:21:				Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_available.go:25:				Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_available.go:29:				Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_available.go:42:				isNodeHealthy					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_available.go:70:				isNodeSchedulable				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_available.go:74:				init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_capacity.go:22:				Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_capacity.go:26:				Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_capacity.go:30:				Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_capacity.go:45:				hasCapacityForPod				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_node_capacity.go:60:				init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_noop.go:21:					Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_noop.go:25:					Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_noop.go:34:					Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_noop.go:44:					init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_taint.go:21:					Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_taint.go:25:					Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_taint.go:29:					Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_taint.go:42:					canScheduleOnNode				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_taint.go:53:					hasToleration					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/filters/filter_taint.go:67:					init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/weighers/binpack.go:21:					Validate					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/weighers/binpack.go:34:					Run						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/weighers/binpack.go:48:					calculateBinpackScore				85.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/pods/plugins/weighers/binpack.go:83:					init						50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/config.go:38:					ApplyDefaults					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/config.go:58:					Validate					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/config.go:66:					DefaultConfig					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/context.go:15:					WithNewGlobalRequestID				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/context.go:22:					LoggerFromContext				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:88:					capacityMapsEqual				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:113:					NewController					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:125:					Reconcile					83.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:150:					SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:208:					flavorSlots					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:219:					reconcileAll					86.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:263:					computeVMUsage					60.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:326:					hvRemainingResources				78.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:366:					probeGroup					89.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:447:					buildSplitInputs				92.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:502:					reconcileAZ					93.5%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:581:					computeTotalCapacity				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:600:					writeCRD					91.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:680:					markCRDNotReady					81.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:705:					probeScheduler					84.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:801:					blockedResourcesByHost				22.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:840:					sumCommittedCapacity				94.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:874:					resMapToQuantity				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:891:					availabilityZones				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/controller.go:909:					crdNameFor					88.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/metrics.go:39:					NewMonitor					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/metrics.go:90:					Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/metrics.go:105:					Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/split.go:30:						fits						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/split.go:44:						sortGroups					88.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/split.go:62:						bestHost					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/split.go:96:						initGroupStates					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/split.go:113:					computeFreeResources				95.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/split.go:145:					copyHostResources				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/split.go:160:					allocateRoundRobin				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/split.go:202:					computeUnassigned				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/split.go:230:					collectExclusiveResources			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity/split.go:258:					SplitCapacity					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity_accounting.go:27:					HostHasCapacityForReservation			96.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity_accounting.go:83:					HostFreeCapacity				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/capacity_accounting.go:127:					UnusedReservationCapacity			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments.go:33:			sortedKeys					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments.go:66:			HandleChangeCommitments				82.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments.go:164:			processCommitmentChanges			81.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments.go:378:			watchCRsUntilReady				75.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments.go:473:			rollbackCR					76.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments.go:515:			performDryRun					76.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments.go:685:			cleanupDryRunProbes				64.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments.go:720:			applyCRSpec					90.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments_metrics.go:15:		recordMetrics					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments_metrics.go:35:		countCommitments				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments_metrics.go:47:		computeNetUnitDeltas				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments_monitor.go:17:		NewChangeCommitmentsAPIMonitor			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments_monitor.go:56:		Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/change_commitments_monitor.go:63:		Collect						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/handler.go:35:				NewAPI						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/handler.go:40:				NewAPIWithConfig				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/handler.go:53:				Init						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/handler.go:72:				handleProjectEndpoint				60.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/info.go:26:					HandleInfo					96.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/info.go:71:					recordInfoMetrics				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/info.go:87:					mibToGiB					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/info.go:101:					buildServiceInfo				91.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/info_monitor.go:15:				NewInfoAPIMonitor				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/info_monitor.go:36:				Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/info_monitor.go:41:				Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/quota.go:34:					projectQuotaCRDName				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/quota.go:43:					HandleQuota					86.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/quota.go:274:					quotaError					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/quota.go:280:					recordQuotaMetrics				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/quota_monitor.go:13:				NewQuotaAPIMonitor				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/quota_monitor.go:32:				Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/quota_monitor.go:37:				Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_capacity.go:22:			unitSizeForResource				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_capacity.go:37:			HandleReportCapacity				62.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_capacity.go:112:			recordCapacityMetrics				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_capacity_monitor.go:16:		NewReportCapacityAPIMonitor			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_capacity_monitor.go:41:		Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_capacity_monitor.go:47:		Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_usage.go:25:				HandleReportUsage				66.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_usage.go:98:				recordUsageMetrics				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_usage.go:108:				extractProjectIDFromPath			77.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_usage_monitor.go:15:			NewReportUsageAPIMonitor			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_usage_monitor.go:36:			Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/api/report_usage_monitor.go:41:			Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/capacity.go:31:					NewCapacityCalculator				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/capacity.go:40:					CalculateCapacity				94.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/client.go:43:					NewCommitmentsClient				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/client.go:47:					Init						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/client.go:107:					ListProjects					90.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/client.go:126:					ListCommitmentsByID				79.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/client.go:170:					listCommitments					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:46:		Reconcile					72.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:91:		reconcilePending				78.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:147:		reconcileCommitted				91.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:212:		reconcileCoresHeadroom				89.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:306:		applyReservationState				90.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:349:		checkChildReservationStatus			92.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:398:		setAccepted					92.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:429:		reconcileInactive				75.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:439:		deleteChildReservations				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:445:		DeleteChildReservations				75.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:466:		rollbackToAccepted				85.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:504:		isRejectedForGeneration				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:517:		retryDelay					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:536:		setNotReady					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:543:		setNotReadyRetry				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:551:		patchNotReady					83.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:566:		setReadyConditionFalse				90.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller.go:598:		SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller_monitor.go:31:	NewCRControllerMonitor				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller_monitor.go:48:	RecordSlotLimitRejection			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller_monitor.go:53:	Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_controller_monitor.go:60:	Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_summary.go:19:			computeStatusSummary				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_summary.go:75:			buildSpecDiff					91.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/committed_resource_summary.go:97:			formatRemaining					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/config.go:38:					DefaultUsageReconcilerConfig			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/config.go:45:					ApplyDefaults					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/config.go:137:					RAMUnitMiB					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/config.go:145:					DeclaredUnitsToGiB				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/config.go:150:					GiBToDeclaredUnits				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/config.go:163:					LogFlavorGroupResourceConfig			91.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/config.go:187:					ResourceConfigForGroup				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/config.go:227:					ResourceConfigForGroup				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/config.go:231:					DefaultAPIConfig				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/context.go:20:					WithNewGlobalRequestID				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/context.go:26:					WithGlobalRequestID				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/context.go:33:					LoggerFromContext				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/domain_resolver.go:34:				newKeystoneDomainResolver			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/domain_resolver.go:43:				ResolveDomainName				92.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:54:					e2eRequestTimeout				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:73:					e2eProjectID					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:85:					e2eAZs						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:100:				CheckCommitmentsInfoEndpoint			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:137:				CheckCommitmentsRoundTrip			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:161:				e2eRoundTripResource				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:260:				CheckCommitmentsMultiFlavorGroupBatch		0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:284:				e2eBatchFlavorGroupResource			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:470:				CheckCommitmentsDryRun				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:494:				e2eDryRunResource				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:545:				e2eFetchUsageReport				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:569:				e2eLogUsageReport				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:605:				e2eSendChangeCommitments			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:631:				e2eFetchServiceInfo				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:649:				e2eBaseURL					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/e2e_checks.go:657:				RunCommitmentsE2EChecks				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/field_index.go:36:				indexCommittedResourceByUUID			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/field_index.go:61:				indexCommittedResourceByProjectID		0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/field_index.go:86:				indexReservationByCommitmentUUID		0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/field_index.go:111:				indexProjectQuotaByProjectID			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/field_index.go:137:				indexReservationByAllocationVMUUID		0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/messages.go:135:					UnmarshalJSON					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/messages.go:158:					MarshalJSON					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/payg_candidates.go:31:				ScanAZForPaygCandidates				92.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/payg_candidates.go:87:				buildAllocatedVMSet				75.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/payg_candidates.go:113:				filterPaygCandidates				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/payg_candidates.go:164:				sortCandidatesDesc				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller.go:71:			echoParentGeneration				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller.go:84:			Reconcile					74.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller.go:417:			reconcileAllocations				85.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller.go:689:			cleanupCandidateReservations			73.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller.go:721:			getPipelineForFlavorGroup			66.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller.go:740:			hypervisorToReservations			76.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller.go:763:			Init						23.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller.go:857:			SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller.go:916:			runOversubscriptionCheck			66.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller.go:1004:			checkHostOversubscription			77.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller.go:1142:			unplaceReservation				82.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller_monitor.go:16:		NewReservationControllerMonitor			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller_monitor.go:29:		SetOversubscribed				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller_monitor.go:34:		ClearHost					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller_monitor.go:39:		Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_controller_monitor.go:44:		Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_manager.go:47:			Error						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_manager.go:71:			NewReservationManager				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_manager.go:93:			ApplyCommitmentState				82.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_manager.go:346:			syncReservationMetadata				82.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_manager.go:394:			selectFlavor					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_manager.go:410:			countNewSlots					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_manager.go:420:			newReservation					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/reservation_manager.go:491:			newPaygReservation				88.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/state.go:32:					ResourceNameRAM					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/state.go:38:					ResourceNameCores				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/state.go:44:					ResourceNameInstances				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/state.go:51:					GetFlavorGroupNameFromResource			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/state.go:78:					GetFlavorGroupAndTypeFromResource		100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/state.go:142:					FromCommitment					82.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/state.go:193:					FromChangeCommitmentTargetState			86.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/state.go:264:					FromCommittedResource				93.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/state.go:305:					FromReservations				86.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer.go:46:					ResourceConfigForGroup				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer.go:63:					NewSyncer					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer.go:71:					Init						80.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer.go:89:					getCommitmentStates				65.5%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer.go:214:					SyncReservations				59.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer.go:406:					applyCommittedResourceSpec			82.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer.go:433:					upsertCommittedResource				75.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer.go:468:					updateCommittedResourceIfExists			73.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer.go:497:					isTerminalCommitment				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer_monitor.go:32:				NewSyncerMonitor				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer_monitor.go:83:				RecordError					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer_monitor.go:87:				RecordDuration					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer_monitor.go:91:				SetLimesCommitmentsActive			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer_monitor.go:95:				RecordStaleCRs					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer_monitor.go:99:				RecordCommitmentSkipped				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer_monitor.go:103:				RecordCRCreates					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer_monitor.go:107:				RecordCRUpdates					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer_monitor.go:111:				RecordCRDeletes					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer_monitor.go:116:				Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/syncer_monitor.go:128:				Collect						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:31:					NewUsageCalculator				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:48:					NewCommitmentStateWithUsage			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:57:					AssignVM					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:68:					HasRemainingCapacity				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:94:					CalculateUsage					87.5%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:152:					BuildVMAssignmentsFromStatus			87.5%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:167:					azFlavorGroupKey				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:174:					buildCommitmentCapacityMap			78.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:238:					getProjectVMs					88.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:327:					sortVMsForUsageCalculation			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:346:					sortCommitmentsForAssignment			92.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:375:					assignVMsToCommitments				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:401:					buildCombinedQuotaMap				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:420:					buildUsageResponse				92.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:579:					buildVMAttributes				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage.go:607:					countCommitmentStates				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage_reconciler.go:41:				Reconcile					88.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage_reconciler.go:205:				writeUsageStatus				93.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage_reconciler.go:235:				hypervisorToCommittedResources			81.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage_reconciler.go:274:				SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage_reconciler.go:335:				Update						92.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage_reconciler_monitor.go:18:			NewUsageReconcilerMonitor			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage_reconciler_monitor.go:44:			Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/usage_reconciler_monitor.go:51:			Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/utils.go:13:					GetMaxSlotIndex					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/utils.go:30:					GetNextSlotIndex				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/commitments/utils.go:36:					extractCommitmentUUID				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/context.go:20:						WithGlobalRequestID				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/context.go:26:						WithRequestID					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/context.go:32:						GlobalRequestIDFromContext			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/context.go:43:						RequestIDFromContext				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/config.go:92:					intPtr						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/config.go:97:					ApplyDefaults					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/config.go:135:					DefaultConfig					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/context.go:15:					WithNewGlobalRequestID				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/context.go:22:					LoggerFromContext				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:50:					NewFailoverReservationController		100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:72:					Reconcile					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:107:					reconcileValidateAndAcknowledge			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:183:					validateReservation				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:251:					ReconcilePeriodic				71.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:413:					reconcileRemoveInvalidVMFromReservations	97.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:485:					reconcileRemoveNoneligibleVMFromReservations	93.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:545:					reconcileRemoveEmptyReservations		70.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:569:					selectVMsToProcess				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:613:					sortVMsByMemory					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:627:					reconcileCreateAndAssignReservations		78.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:746:					calculateVMsMissingFailover			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:797:					getRequiredFailoverCount			81.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:819:					patchReservationStatus				50.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:853:					SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/controller.go:875:					Start						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/helpers.go:35:					sanitizeAZForName				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/helpers.go:58:					ResourceGroup					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/helpers.go:68:					HypervisorResources				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/helpers.go:78:					resolveVMSpecForScheduling			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/helpers.go:127:					getFailoverAllocations				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/helpers.go:135:					filterFailoverReservations			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/helpers.go:146:					countReservationsForVM				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/helpers.go:159:					addVMToReservation				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/helpers.go:185:					ValidateFailoverReservationResources		0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/helpers.go:206:					newFailoverReservation				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/monitor.go:29:					NewFailoverMonitor				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/monitor.go:88:					preInitialize					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/monitor.go:105:					RecordReconciliation				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/monitor.go:121:					Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/monitor.go:137:					Collect						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:40:			IsVMEligibleForReservation			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:65:			CheckVMsStillEligible				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:106:			FindEligibleReservations			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:140:			reservationKey					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:145:			newBaseDependencyGraph				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:175:			newDependencyGraph				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:191:			ensureVMInMaps					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:200:			ensureResInMaps					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:207:			addVMToReservation				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:217:			removeVMFromReservation				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:224:			checkAllVMConstraints				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:283:			isVMEligibleForReservation			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_eligibility.go:293:			doesVMFitInReservation				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_scheduling.go:36:			inferFailoverPipeline				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_scheduling.go:61:			imagePropertiesFromFlavor			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_scheduling.go:75:			queryHypervisorsFromScheduler			82.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_scheduling.go:157:			tryReuseExistingReservation			84.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_scheduling.go:218:			validateVMViaSchedulerEvacuation		77.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover/reservation_scheduling.go:303:			scheduleAndBuildNewFailoverReservation		77.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/field_index.go:27:						IndexReservationByHost				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/flavor_groups.go:24:						FindFlavorInGroups				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/flavor_groups.go:42:						Get						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/flavor_groups.go:63:						GetAllFlavorGroups				94.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/hypervisor_diff_handler.go:23:				Create						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/hypervisor_diff_handler.go:26:				Update						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/hypervisor_diff_handler.go:32:				Delete						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/hypervisor_diff_handler.go:35:				Generic						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/inflight/controller.go:61:					Reconcile					83.5%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/inflight/controller.go:251:					handleReservations				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/inflight/controller.go:278:					predicateReservations				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/inflight/controller.go:295:					handleHypervisors				90.5%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/inflight/controller.go:350:					predicateHypervisors				57.1%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/inflight/controller.go:381:					SetupWithManager				18.8%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/inflight/vm_client.go:43:					NewNovaVMClient					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/inflight/vm_client.go:49:					StartWithKubernetesSecrets			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/inflight/vm_client.go:95:					GetCurrentVMSize				83.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/monitor.go:33:						NewMonitor					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/monitor.go:48:						Describe					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/monitor.go:54:						Collect						100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/config.go:35:						ApplyDefaults					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/config.go:49:						IsHVDiffEnabled					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/config.go:57:						DefaultQuotaControllerConfig			100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/context.go:15:						WithNewGlobalRequestID				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/context.go:22:						LoggerFromContext				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:48:					NewQuotaController				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:70:					ReconcilePeriodic				71.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:180:					Reconcile					52.2%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:268:					computeTotalUsageForProject			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:302:					newUsageDelta					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:309:					addIncrement					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:316:					addDecrement					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:327:					ReconcileHVDiff					85.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:407:					accumulateAddedVM				78.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:466:					isVMNewSinceLastReconcile			64.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:501:					accumulateRemovedVM				71.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:560:					applyDeltaAndUpdateStatus			80.4%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:655:					SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:675:					SetupHVWatcher					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:704:					Start						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:741:					computeTotalUsage				96.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:797:					groupCRsByProject				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:808:					computeCRUsage					80.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:879:					isCRStateIncluded				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:889:					derivePaygUsage					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:919:					extractAZSlice					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:931:					expandAZSlice					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:945:					updateProjectQuotaStatusWithRetry		78.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:1003:					buildUsageSummary				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:1073:					buildLimesSummary				91.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:1096:					vmResourceUnits					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:1106:					buildFlavorToGroupMap				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:1117:					incrementUsage					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:1127:					decrementUsage					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:1140:					recordUsageMetrics				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:1167:					mapCRToProjectQuota				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:1180:					crUsedAmountChangePredicate			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:1208:					projectQuotaGenerationChangePredicate		0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/controller.go:1216:					hvInstanceChangePredicate			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/metrics.go:20:						NewQuotaMetrics					37.5%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/metrics.go:71:						RecordUsage					80.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/metrics.go:81:						RecordReconcileDuration				66.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota/metrics.go:89:						RecordReconcileResult				83.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/scheduler_client.go:26:					loggerFromContext				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/scheduler_client.go:45:					NewSchedulerClient				100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/scheduler_client.go:97:					ScheduleReservation				76.9%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/scheduler_client.go:220:					getSchedulerHints				66.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:91:						NewDBVMSource					100.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:96:						ListVMs						78.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:166:						ListVMsByProject				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:220:						GetVM						91.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:259:						ListVMsOnHypervisors				27.3%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:288:						IsServerActive					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:300:						GetDeletedVMInfo				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:330:						parseExtraSpecs					28.6%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:343:						truncateString					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:351:						normalizeOSType					66.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:358:						buildVMsFromHypervisors				66.7%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:417:						filterVMsOnKnownHypervisors			93.5%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:475:						warnUnknownVMsOnHypervisors			0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:535:						NewPostgresVMSource				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:539:						get						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:553:						ListVMs						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:561:						ListVMsByProject				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:569:						ListVMsOnHypervisors				0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:577:						GetVM						0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:585:						IsServerActive					0.0%
github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/vm_source.go:593:						GetDeletedVMInfo				0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth.go:72:								compileAuthPolicies				0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth.go:106:								compileRoles					94.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth.go:140:								extractBodyField				94.1%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth.go:184:								tokenCacheKey					100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth.go:189:								get						100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth.go:204:								put						100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth.go:208:								delete						0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth.go:246:								matchPath					100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth.go:256:								matchPolicy					100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth.go:265:								authError					100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth.go:277:								checkAuth					93.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth_keystone.go:20:							initTokenIntrospector				0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/auth_keystone.go:67:							introspect					84.2%
github.com/cobaltcore-dev/cortex/internal/shim/placement/field_index.go:33:							IndexFields					81.8%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_allocation_candidates.go:35:					HandleListAllocationCandidates			100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_allocations.go:25:						HandleManageAllocations				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_allocations.go:40:						HandleListAllocations				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_allocations.go:58:						HandleUpdateAllocations				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_allocations.go:70:						HandleDeleteAllocations				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_reshaper.go:25:							HandlePostReshaper				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:33:						HandleListResourceClasses			73.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:76:						HandleCreateResourceClass			61.3%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:129:					handleCreateResourceClassHybrid			0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:169:					HandleShowResourceClass				71.4%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:214:					HandleUpdateResourceClass			76.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:258:					handleUpdateResourceClassHybrid			81.2%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:296:					HandleDeleteResourceClass			78.6%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:342:					handleDeleteResourceClassHybrid			81.2%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:373:					getResourceClasses				75.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:382:					parseResourceClasses				80.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:398:					hasResourceClass				80.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:408:					writeResourceClassesToConfigMap			81.8%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:429:					addResourceClassToConfigMap			56.4%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_classes.go:496:					removeResourceClassFromConfigMap		66.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_aggregates.go:48:				HandleListResourceProviderAggregates		87.5%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_aggregates.go:67:				listResourceProviderAggregatesHybrid		100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_aggregates.go:84:				listResourceProviderAggregatesCRD		66.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_aggregates.go:109:				writeAggregatesFromCRD				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_aggregates.go:133:				HandleUpdateResourceProviderAggregates		87.5%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_aggregates.go:152:				updateResourceProviderAggregatesHybrid		23.5%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_aggregates.go:210:				updateResourceProviderAggregatesCRD		71.4%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_allocations.go:18:				HandleListResourceProviderAllocations		100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_inventories.go:19:				HandleListResourceProviderInventories		100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_inventories.go:36:				HandleUpdateResourceProviderInventories		100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_inventories.go:52:				HandleDeleteResourceProviderInventories		100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_inventories.go:66:				HandleShowResourceProviderInventory		80.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_inventories.go:85:				HandleUpdateResourceProviderInventory		80.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_inventories.go:102:				HandleDeleteResourceProviderInventory		80.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_traits.go:42:					HandleListResourceProviderTraits		87.5%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_traits.go:61:					listResourceProviderTraitsHybrid		100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_traits.go:78:					listResourceProviderTraitsCRD			66.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_traits.go:103:				writeTraitsFromCRD				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_traits.go:125:				HandleUpdateResourceProviderTraits		87.5%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_traits.go:144:				updateResourceProviderTraitsHybrid		23.5%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_traits.go:202:				updateResourceProviderTraitsCRD			71.4%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_traits.go:279:				HandleDeleteResourceProviderTraits		87.5%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_traits.go:298:				deleteResourceProviderTraitsHybrid		33.3%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_traits.go:336:				deleteResourceProviderTraitsCRD			53.1%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_provider_usages.go:18:					HandleListResourceProviderUsages		100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:54:					translateToResourceProvider			100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:114:					HandleCreateResourceProvider			67.3%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:209:					HandleShowResourceProvider			64.5%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:279:					HandleUpdateResourceProvider			71.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:375:					HandleDeleteResourceProvider			64.5%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:454:					HandleListResourceProviders			60.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:468:					listResourceProvidersHybrid			88.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:560:					listResourceProvidersCRD			0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:589:					applyHypervisorQueryFilters			100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:616:					filterHypervisorsByUUID				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:630:					filterHypervisorsByName				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:649:					filterHypervisorsByMemberOf			100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:693:					filterHypervisorsByInTree			100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:712:					filterHypervisorsByRequired			100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:736:					matchesTraitExpr				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_resource_providers.go:778:					filterHypervisorsByResources			92.9%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_root.go:49:							HandleGetRoot					58.3%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_root.go:90:							staticVersionDocument				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_root.go:106:							intersectVersions				80.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_root.go:133:							compareVersions					100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_root.go:158:							maxVersion					66.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_root.go:165:							minVersion					66.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:40:							HandleListTraits				83.3%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:112:							HandleShowTrait					71.4%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:154:							HandleUpdateTrait				68.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:198:							handleUpdateTraitHybrid				0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:236:							HandleDeleteTrait				71.4%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:282:							handleDeleteTraitHybrid				0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:313:							getTraits					75.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:322:							parseTraits					80.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:338:							hasTrait					80.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:348:							writeTraitsToConfigMap				81.8%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:368:							addTraitToConfigMap				56.4%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_traits.go:437:							removeTraitFromConfigMap			66.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/handle_usages.go:22:							HandleListUsages				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:85:								orDefault					100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:94:								valid						100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:106:								dispatchPassthroughOnly				80.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:125:								featureModeFromConfOrHeader			100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:232:								validate					91.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:342:								Describe					0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:348:								Collect						0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:355:								initHTTPClient					60.6%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:411:								initPlacementServiceClient			0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:450:								Start						0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:496:								Reconcile					0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:502:								handleRemoteHypervisor				0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:510:								predicateRemoteHypervisor			0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:520:								SetupWithManager				0.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:592:								forward						100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:601:								forwardWithHook					72.3%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim.go:691:								RegisterRoutes					100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim_io.go:24:								Read						100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim_io.go:37:								Write						100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim_io.go:61:								WriteHeader					100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim_io.go:66:								Write						100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim_io.go:86:								writeJSON					55.6%
github.com/cobaltcore-dev/cortex/internal/shim/placement/shim_io.go:103:							wrapHandler					75.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/syncer_resource_classes.go:52:						NewResourceClassSyncer				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/syncer_resource_classes.go:70:						Init						70.6%
github.com/cobaltcore-dev/cortex/internal/shim/placement/syncer_resource_classes.go:102:					Run						26.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/syncer_resource_classes.go:134:					sync						64.3%
github.com/cobaltcore-dev/cortex/internal/shim/placement/syncer_traits.go:35:							NewTraitSyncer					100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/syncer_traits.go:53:							Init						70.6%
github.com/cobaltcore-dev/cortex/internal/shim/placement/syncer_traits.go:85:							Run						26.7%
github.com/cobaltcore-dev/cortex/internal/shim/placement/syncer_traits.go:117:							sync						64.3%
github.com/cobaltcore-dev/cortex/internal/shim/placement/validation.go:16:							requiredPathParam				100.0%
github.com/cobaltcore-dev/cortex/internal/shim/placement/validation.go:28:							requiredUUIDPathParam				85.7%
total:																(statements)					70.6%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant