From a99416ce927dd931b0e45e05a80ffc00417429cd Mon Sep 17 00:00:00 2001 From: Philipp Matthes Date: Thu, 26 Feb 2026 16:42:54 +0100 Subject: [PATCH 01/18] Fix dashboard selector and integration test pipeline name [skip ci] --- internal/scheduling/nova/integration_test.go | 16 ++++++++-------- .../provisioning/dashboards/cortex-status.json | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/internal/scheduling/nova/integration_test.go b/internal/scheduling/nova/integration_test.go index 33b2fc5f..137ac5a1 100644 --- a/internal/scheduling/nova/integration_test.go +++ b/internal/scheduling/nova/integration_test.go @@ -222,7 +222,7 @@ type PipelineConfig struct { // filter_has_enough_capacity and kvm_failover_evacuation func DefaultPipelineConfig() PipelineConfig { return PipelineConfig{ - Name: "nova-external-scheduler-kvm-all-filters-enabled", + Name: "kvm-general-purpose-load-balancing-all-filters-enabled", Filters: []v1alpha1.FilterSpec{ {Name: "filter_has_enough_capacity"}, }, @@ -371,7 +371,7 @@ func TestIntegration_SchedulingWithReservations(t *testing.T) { reservations: []*v1alpha1.Reservation{ newFailoverReservation("failover-vm-existing", "host3", "m1.large", "4", "8Gi", map[string]string{"vm-existing": "host1"}), }, - request: newNovaRequest("new-vm-uuid", "project-B", "m1.medium", "gp-1", 2, "4Gi", false, []string{"host1", "host2", "host3"}, "nova-external-scheduler-kvm-all-filters-enabled"), + request: newNovaRequest("new-vm-uuid", "project-B", "m1.medium", "gp-1", 2, "4Gi", false, []string{"host1", "host2", "host3"}, "kvm-general-purpose-load-balancing-all-filters-enabled"), filteredHosts: []string{"host3"}, minExpectedHostsCount: 2, }, @@ -384,7 +384,7 @@ func TestIntegration_SchedulingWithReservations(t *testing.T) { reservations: []*v1alpha1.Reservation{ newFailoverReservation("failover-vm-123", "host3", "m1.large", "4", "8Gi", map[string]string{"vm-123": "host1"}), }, - request: newNovaRequest("vm-123", "project-A", "m1.large", "gp-1", 4, "8Gi", true, []string{"host2", "host3"}, "nova-external-scheduler-kvm-all-filters-enabled"), + request: newNovaRequest("vm-123", "project-A", "m1.large", "gp-1", 4, "8Gi", true, []string{"host2", "host3"}, "kvm-general-purpose-load-balancing-all-filters-enabled"), expectedHosts: []string{"host3", "host2"}, // Failover host should be first expectedHostsOrdered: true, minExpectedHostsCount: 2, @@ -400,7 +400,7 @@ func TestIntegration_SchedulingWithReservations(t *testing.T) { newFailoverReservation("failover-vm-456-on-host1", "host1", "m1.large", "4", "8Gi", map[string]string{"vm-456": "host-original"}), newFailoverReservation("failover-vm-456-on-host3", "host3", "m1.large", "4", "8Gi", map[string]string{"vm-456": "host-original"}), }, - request: newNovaRequest("vm-456", "project-A", "m1.large", "gp-1", 4, "8Gi", true, []string{"host1", "host2", "host3"}, "nova-external-scheduler-kvm-all-filters-enabled"), + request: newNovaRequest("vm-456", "project-A", "m1.large", "gp-1", 4, "8Gi", true, []string{"host1", "host2", "host3"}, "kvm-general-purpose-load-balancing-all-filters-enabled"), expectedHosts: []string{"host1", "host2", "host3"}, minExpectedHostsCount: 3, // Both host1 and host3 have failover reservations, so they should be preferred over host2 @@ -416,7 +416,7 @@ func TestIntegration_SchedulingWithReservations(t *testing.T) { newFailoverReservation("failover-vm-456-on-host1", "host1", "m1.large", "4", "8Gi", map[string]string{"some-other-vm": "host-original"}), newFailoverReservation("failover-vm-456-on-host3", "host3", "m1.large", "4", "8Gi", map[string]string{"vm-456": "host-original"}), }, - request: newNovaRequest("vm-456", "project-A", "m1.large", "gp-1", 4, "8Gi", true, []string{"host1", "host2", "host3"}, "nova-external-scheduler-kvm-all-filters-enabled"), + request: newNovaRequest("vm-456", "project-A", "m1.large", "gp-1", 4, "8Gi", true, []string{"host1", "host2", "host3"}, "kvm-general-purpose-load-balancing-all-filters-enabled"), expectedHosts: []string{"host3", "host2"}, expectedHostsOrdered: true, minExpectedHostsCount: 2, @@ -431,7 +431,7 @@ func TestIntegration_SchedulingWithReservations(t *testing.T) { reservations: []*v1alpha1.Reservation{ newCommittedReservation("committed-res-host1", "host1", "host1", "project-A", "m1.large", "gp-1", "4", "8Gi"), }, - request: newNovaRequest("new-vm should work", "project-A", "m1.large", "gp-1", 4, "8Gi", false, []string{"host1", "host2"}, "nova-external-scheduler-kvm-all-filters-enabled"), + request: newNovaRequest("new-vm should work", "project-A", "m1.large", "gp-1", 4, "8Gi", false, []string{"host1", "host2"}, "kvm-general-purpose-load-balancing-all-filters-enabled"), expectedHosts: []string{"host1", "host2"}, // host1 unlocked because project/flavor match minExpectedHostsCount: 2, }, @@ -444,7 +444,7 @@ func TestIntegration_SchedulingWithReservations(t *testing.T) { reservations: []*v1alpha1.Reservation{ newCommittedReservation("committed-res-host1", "host1", "host1", "project-A", "m1.large", "gp-1", "4", "8Gi"), }, - request: newNovaRequest("new-vm", "project-B", "m1.large", "gp-1", 4, "8Gi", false, []string{"host1", "host2"}, "nova-external-scheduler-kvm-all-filters-enabled"), + request: newNovaRequest("new-vm", "project-B", "m1.large", "gp-1", 4, "8Gi", false, []string{"host1", "host2"}, "kvm-general-purpose-load-balancing-all-filters-enabled"), expectedHosts: []string{"host2"}, filteredHosts: []string{"host1"}, // host1 blocked because project doesn't match minExpectedHostsCount: 1, @@ -457,7 +457,7 @@ func TestIntegration_SchedulingWithReservations(t *testing.T) { newHypervisor("host3", "16", "4", "32Gi", "8Gi"), }, reservations: []*v1alpha1.Reservation{}, - request: newNovaRequest("new-vm", "project-A", "m1.large", "gp-1", 4, "8Gi", false, []string{"host1", "host2", "host3"}, "nova-external-scheduler-kvm-all-filters-enabled"), + request: newNovaRequest("new-vm", "project-A", "m1.large", "gp-1", 4, "8Gi", false, []string{"host1", "host2", "host3"}, "kvm-general-purpose-load-balancing-all-filters-enabled"), filters: []v1alpha1.FilterSpec{{Name: "filter_has_enough_capacity"}}, weighers: []v1alpha1.WeigherSpec{}, // No weighers filteredHosts: []string{"host2"}, diff --git a/tools/plutono/provisioning/dashboards/cortex-status.json b/tools/plutono/provisioning/dashboards/cortex-status.json index 95dc7372..043d0798 100644 --- a/tools/plutono/provisioning/dashboards/cortex-status.json +++ b/tools/plutono/provisioning/dashboards/cortex-status.json @@ -499,7 +499,7 @@ ], "timeFrom": null, "timeShift": null, - "title": "Pipeline: nova-external-scheduler-*", + "title": "Pipeline: kvm-* (Nova)", "type": "text" }, { @@ -571,7 +571,7 @@ "targets": [ { "exemplar": false, - "expr": "sum(delta(cortex_filter_weigher_pipeline_step_shift_origin_bucket{outidx=\"0\",pipeline=~\"nova-external-scheduler-.*\"}[2m]) / 2) by (le)", + "expr": "sum(delta(cortex_filter_weigher_pipeline_step_shift_origin_bucket{outidx=\"0\",pipeline=~\"kvm-.*\"}[2m]) / 2) by (le)", "format": "heatmap", "instant": false, "interval": "", From 8bf0d4bc4541be21a53714ad4d0d6ebaab7d15aa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 05:13:33 +0000 Subject: [PATCH 02/18] Renovate: Update github.com/sapcc/go-bits digest to c20f89b (#556) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/sapcc/go-bits](https://redirect.github.com/sapcc/go-bits) | require | digest | `1c2b75d` → `c20f89b` | --- ### Configuration 📅 **Schedule**: Branch creation - "before 8am on Friday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cobaltcore-dev/cortex). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index ff151926..07192af6 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/ironcore-dev/ironcore v0.2.4 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/sapcc/go-bits v0.0.0-20260219121224-1c2b75dbf776 + github.com/sapcc/go-bits v0.0.0-20260226170120-c20f89b66c3c k8s.io/api v0.35.1 k8s.io/apimachinery v0.35.1 k8s.io/client-go v0.35.1 diff --git a/go.sum b/go.sum index 4485160b..a8146be4 100644 --- a/go.sum +++ b/go.sum @@ -176,8 +176,8 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sapcc/go-api-declarations v1.19.0 h1:AdCHBhoDGC1REMJF6Rc/XLIcf4qMqjUXs5WLq83HImM= github.com/sapcc/go-api-declarations v1.19.0/go.mod h1:eiRrXXUeQS5C/1kKn8/KMjk0Y0goUzgDQswj30rH0Zc= -github.com/sapcc/go-bits v0.0.0-20260219121224-1c2b75dbf776 h1:WFpq3qAk60WUoqCMYOkTRiFkpKyjQ/Wq6xUslz/3y7g= -github.com/sapcc/go-bits v0.0.0-20260219121224-1c2b75dbf776/go.mod h1:AYC4f8FYO9DllSt4TyMwm1e5iPn32/DGIrlgXtuEsJ0= +github.com/sapcc/go-bits v0.0.0-20260226170120-c20f89b66c3c h1:GX6ADtKR6Bs2bBRBqeJf376MsxLNppC1SOHLIBuQwIA= +github.com/sapcc/go-bits v0.0.0-20260226170120-c20f89b66c3c/go.mod h1:AYC4f8FYO9DllSt4TyMwm1e5iPn32/DGIrlgXtuEsJ0= github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= From f668c534daec7c0a379d752c7edcf5151c05aed5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 27 Feb 2026 05:22:24 +0000 Subject: [PATCH 03/18] Bump cortex chart appVersions to sha-8bf0d4bc [skip ci] --- helm/library/cortex/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/library/cortex/Chart.yaml b/helm/library/cortex/Chart.yaml index 5ee4696b..646c2595 100644 --- a/helm/library/cortex/Chart.yaml +++ b/helm/library/cortex/Chart.yaml @@ -3,6 +3,6 @@ name: cortex description: A Helm chart to distribute cortex. type: application version: 0.0.24 -appVersion: "sha-94f91e5c" +appVersion: "sha-8bf0d4bc" icon: "https://example.com/icon.png" dependencies: [] From 950544a9a49eb6dec117cca728e4658d1b5df417 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 06:58:54 +0100 Subject: [PATCH 04/18] Renovate: Update GitHub Artifact Actions (major) (#559) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/download-artifact](https://redirect.github.com/actions/download-artifact) | action | major | `v7` → `v8` | | [actions/upload-artifact](https://redirect.github.com/actions/upload-artifact) | action | major | `v6` → `v7` | --- ### Release Notes
actions/download-artifact (actions/download-artifact) ### [`v8`](https://redirect.github.com/actions/download-artifact/compare/v7...v8) [Compare Source](https://redirect.github.com/actions/download-artifact/compare/v7...v8)
actions/upload-artifact (actions/upload-artifact) ### [`v7`](https://redirect.github.com/actions/upload-artifact/compare/v6...v7) [Compare Source](https://redirect.github.com/actions/upload-artifact/compare/v6...v7)
--- ### Configuration 📅 **Schedule**: Branch creation - "before 8am on Friday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cobaltcore-dev/cortex). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index fb60f664..69bfac01 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -52,7 +52,7 @@ jobs: go tool cover -func profile.cov > func_coverage.txt - name: Upload coverage files - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: pr-func-coverage path: | @@ -80,7 +80,7 @@ jobs: } - name: Download coverage files (PR only) if: ${{ github.event_name == 'pull_request' }} - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: name: pr-func-coverage path: . From 5dc3af4026f538472d3f6bb4b3807d6e0ca998a7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 06:59:06 +0100 Subject: [PATCH 05/18] Renovate: Update actions/attest-build-provenance action to v4 (#558) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/attest-build-provenance](https://redirect.github.com/actions/attest-build-provenance) | action | major | `v3` → `v4` | --- ### Release Notes
actions/attest-build-provenance (actions/attest-build-provenance) ### [`v4`](https://redirect.github.com/actions/attest-build-provenance/compare/v3...v4) [Compare Source](https://redirect.github.com/actions/attest-build-provenance/compare/v3...v4)
--- ### Configuration 📅 **Schedule**: Branch creation - "before 8am on Friday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cobaltcore-dev/cortex). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/push-images.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/push-images.yaml b/.github/workflows/push-images.yaml index a1e25dd3..7addc3e7 100644 --- a/.github/workflows/push-images.yaml +++ b/.github/workflows/push-images.yaml @@ -66,7 +66,7 @@ jobs: GIT_COMMIT=${{ github.sha }} - name: Generate Artifact Attestation for Cortex Postgres if: steps.changed_postgres_files.outputs.all_changed_files != '' - uses: actions/attest-build-provenance@v3 + uses: actions/attest-build-provenance@v4 with: subject-name: ${{ env.REGISTRY }}/${{ github.repository }}-postgres subject-digest: ${{ steps.push_cortex_postgres.outputs.digest }} @@ -99,7 +99,7 @@ jobs: GIT_TAG=${{ github.ref_name }} GIT_COMMIT=${{ github.sha }} - name: Generate Artifact Attestation for Cortex - uses: actions/attest-build-provenance@v3 + uses: actions/attest-build-provenance@v4 with: subject-name: ${{ env.REGISTRY }}/${{ github.repository }} subject-digest: ${{ steps.push_cortex.outputs.digest }} From 1b8cf5bc21dfa889bfaed81e3807be0ba403a02c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 06:59:19 +0100 Subject: [PATCH 06/18] Renovate: Update github.com/cobaltcore-dev/openstack-hypervisor-operator digest to 0e26bc8 (#555) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/cobaltcore-dev/openstack-hypervisor-operator](https://redirect.github.com/cobaltcore-dev/openstack-hypervisor-operator) | require | digest | `8f1e688` → `0e26bc8` | --- ### Configuration 📅 **Schedule**: Branch creation - "before 8am on Friday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cobaltcore-dev/cortex). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 12 ++++++------ go.sum | 28 ++++++++++++++-------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/go.mod b/go.mod index 07192af6..697896cf 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/cobaltcore-dev/cortex go 1.26 require ( - github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260219132051-8f1e68817a12 + github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260226120401-0e26bc8aa127 github.com/go-gorp/gorp v2.2.0+incompatible github.com/gophercloud/gophercloud/v2 v2.10.0 github.com/ironcore-dev/ironcore v0.2.4 @@ -78,14 +78,14 @@ require ( github.com/stoewer/go-strcase v1.3.1 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/ziutek/mymysql v1.5.4 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect - go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect - go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.40.0 // indirect + go.opentelemetry.io/otel/sdk v1.40.0 // indirect + go.opentelemetry.io/otel/trace v1.40.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect diff --git a/go.sum b/go.sum index a8146be4..53505a4f 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1x github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260219132051-8f1e68817a12 h1:W/CX9aGGy/Qtf7uuPoO465u1rJ57az09UP2h6fXrPJo= -github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260219132051-8f1e68817a12/go.mod h1:tp9h2MM6OkufwEiIek9tIndpBar0SiPf8q31KM6MRUg= +github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260226120401-0e26bc8aa127 h1:ILZs0hxLy7a673Hqb1kbzKFSnjVorgvxjbCycvUqxFQ= +github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260226120401-0e26bc8aa127/go.mod h1:rJcEJJvLA02KI4uwNjpIi8F+JYxvvHvCFk+ZzMvInBU= github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= @@ -205,24 +205,24 @@ github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= +go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= From f3e5cf36c81873aee27084450b5ee9bf2676fd73 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 27 Feb 2026 06:09:59 +0000 Subject: [PATCH 07/18] Bump cortex chart appVersions to sha-1b8cf5bc [skip ci] --- helm/library/cortex/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/library/cortex/Chart.yaml b/helm/library/cortex/Chart.yaml index 646c2595..12cbf011 100644 --- a/helm/library/cortex/Chart.yaml +++ b/helm/library/cortex/Chart.yaml @@ -3,6 +3,6 @@ name: cortex description: A Helm chart to distribute cortex. type: application version: 0.0.24 -appVersion: "sha-8bf0d4bc" +appVersion: "sha-1b8cf5bc" icon: "https://example.com/icon.png" dependencies: [] From 374ee4198f0b4242258c62f9750689bebaad67ff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 07:52:33 +0100 Subject: [PATCH 08/18] Renovate: Update External dependencies (#557) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [kube-prometheus-stack](https://redirect.github.com/prometheus-operator/kube-prometheus) ([source](https://redirect.github.com/prometheus-community/helm-charts)) | | minor | `82.1.1` → `82.4.1` | | [python](https://redirect.github.com/actions/python-versions) | uses-with | minor | `3.12` → `3.14` | --- ### Release Notes
prometheus-community/helm-charts (kube-prometheus-stack) ### [`v82.4.1`](https://redirect.github.com/prometheus-community/helm-charts/releases/tag/kube-prometheus-stack-82.4.1) [Compare Source](https://redirect.github.com/prometheus-community/helm-charts/compare/kube-prometheus-stack-82.4.0...kube-prometheus-stack-82.4.1) kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. #### What's Changed - \[kube-prometheus-stack] Update kube-prometheus-stack dependency non-major updates by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​6684](https://redirect.github.com/prometheus-community/helm-charts/pull/6684) **Full Changelog**: ### [`v82.4.0`](https://redirect.github.com/prometheus-community/helm-charts/releases/tag/kube-prometheus-stack-82.4.0) [Compare Source](https://redirect.github.com/prometheus-community/helm-charts/compare/kube-prometheus-stack-82.3.0...kube-prometheus-stack-82.4.0) kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. #### What's Changed - \[kube-prometheus-stack] unify PodDisruptionBudget configuration by [@​mkmet](https://redirect.github.com/mkmet) in [#​6669](https://redirect.github.com/prometheus-community/helm-charts/pull/6669) #### New Contributors - [@​mkmet](https://redirect.github.com/mkmet) made their first contribution in [#​6669](https://redirect.github.com/prometheus-community/helm-charts/pull/6669) **Full Changelog**: ### [`v82.3.0`](https://redirect.github.com/prometheus-community/helm-charts/compare/kube-prometheus-stack-82.2.1...kube-prometheus-stack-82.3.0) [Compare Source](https://redirect.github.com/prometheus-community/helm-charts/compare/kube-prometheus-stack-82.2.1...kube-prometheus-stack-82.3.0) ### [`v82.2.1`](https://redirect.github.com/prometheus-community/helm-charts/releases/tag/kube-prometheus-stack-82.2.1) kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. #### What's Changed - \[kube-prometheus-stack] Update kube-prometheus-stack dependency non-major updates by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​6668](https://redirect.github.com/prometheus-community/helm-charts/pull/6668) **Full Changelog**: ### [`v82.2.0`](https://redirect.github.com/prometheus-community/helm-charts/releases/tag/kube-prometheus-stack-82.2.0) kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. #### What's Changed - \[kube-prometheus-stack] Update kube-prometheus-stack dependency non-major updates by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​6665](https://redirect.github.com/prometheus-community/helm-charts/pull/6665) **Full Changelog**:
actions/python-versions (python) ### [`v3.14.3`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.3-21673711214): 3.14.3 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.14.2-20014991423...3.14.3-21673711214) Python 3.14.3 ### [`v3.14.2`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.2-20014991423): 3.14.2 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.14.1-19879739908...3.14.2-20014991423) Python 3.14.2 ### [`v3.14.1`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.1-19879739908): 3.14.1 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.14.0-18313368925...3.14.1-19879739908) Python 3.14.1 ### [`v3.14.0`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.0-18313368925): 3.14.0 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.12-21673645133...3.14.0-18313368925) Python 3.14.0 ### [`v3.13.12`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.12-21673645133): 3.13.12 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.11-20014977833...3.13.12-21673645133) Python 3.13.12 ### [`v3.13.11`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.11-20014977833): 3.13.11 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.10-19879712315...3.13.11-20014977833) Python 3.13.11 ### [`v3.13.10`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.10-19879712315): 3.13.10 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.9-18515951191...3.13.10-19879712315) Python 3.13.10 ### [`v3.13.9`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.9-18515951191): 3.13.9 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.8-18331000654...3.13.9-18515951191) Python 3.13.9 ### [`v3.13.8`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.8-18331000654): 3.13.8 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.7-16980743123...3.13.8-18331000654) Python 3.13.8 ### [`v3.13.7`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.7-16980743123): 3.13.7 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.6-16792117939...3.13.7-16980743123) Python 3.13.7 ### [`v3.13.6`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.6-16792117939): 3.13.6 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.5-15601068749...3.13.6-16792117939) Python 3.13.6 ### [`v3.13.5`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.5-15601068749): 3.13.5 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.4-15433317575...3.13.5-15601068749) Python 3.13.5 ### [`v3.13.4`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.4-15433317575): 3.13.4 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.3-14344076652...3.13.4-15433317575) Python 3.13.4 ### [`v3.13.3`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.3-14344076652): 3.13.3 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.2-13708744326...3.13.3-14344076652) Python 3.13.3 ### [`v3.13.2`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.2-13708744326): 3.13.2 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.1-13437882550...3.13.2-13708744326) Python 3.13.2 ### [`v3.13.1`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.1-13437882550): 3.13.1 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.0-13707372259...3.13.1-13437882550) Python 3.13.1 ### [`v3.13.0`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.0-13707372259): 3.13.0 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.12.12-18393146713...3.13.0-13707372259) Python 3.13.0
--- ### Configuration 📅 **Schedule**: Branch creation - "before 8am on Friday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cobaltcore-dev/cortex). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/helm-lint.yaml | 2 +- helm/dev/cortex-prometheus-operator/Chart.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/helm-lint.yaml b/.github/workflows/helm-lint.yaml index 30709063..5490e8c0 100644 --- a/.github/workflows/helm-lint.yaml +++ b/.github/workflows/helm-lint.yaml @@ -24,7 +24,7 @@ jobs: - uses: actions/setup-python@v6.2.0 with: - python-version: "3.12" + python-version: "3.14" check-latest: true - name: Set up chart linting diff --git a/helm/dev/cortex-prometheus-operator/Chart.yaml b/helm/dev/cortex-prometheus-operator/Chart.yaml index 687e6a42..2c28dfe7 100644 --- a/helm/dev/cortex-prometheus-operator/Chart.yaml +++ b/helm/dev/cortex-prometheus-operator/Chart.yaml @@ -10,4 +10,4 @@ dependencies: # CRDs of the prometheus operator, such as PrometheusRule, ServiceMonitor, etc. - name: kube-prometheus-stack repository: oci://ghcr.io/prometheus-community/charts - version: 82.1.1 + version: 82.4.1 From 1bd9461ae4a9dbacfc50bca49e0f35bbd9097fc8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 27 Feb 2026 07:01:40 +0000 Subject: [PATCH 09/18] Bump cortex chart appVersions to sha-374ee419 [skip ci] --- helm/library/cortex/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/library/cortex/Chart.yaml b/helm/library/cortex/Chart.yaml index 12cbf011..95d03cc8 100644 --- a/helm/library/cortex/Chart.yaml +++ b/helm/library/cortex/Chart.yaml @@ -3,6 +3,6 @@ name: cortex description: A Helm chart to distribute cortex. type: application version: 0.0.24 -appVersion: "sha-1b8cf5bc" +appVersion: "sha-374ee419" icon: "https://example.com/icon.png" dependencies: [] From 7ff10ea5b26d5797687f5299bb5bafefa2b35496 Mon Sep 17 00:00:00 2001 From: Philipp Matthes Date: Fri, 27 Feb 2026 17:00:51 +0100 Subject: [PATCH 10/18] Stop filtering on kvm hypervisor tainted status condition --- .../plugins/filters/filter_status_conditions.go | 10 ++++++---- .../filters/filter_status_conditions_test.go | 14 +++++++------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/internal/scheduling/nova/plugins/filters/filter_status_conditions.go b/internal/scheduling/nova/plugins/filters/filter_status_conditions.go index 19f1036e..3d7f2aae 100644 --- a/internal/scheduling/nova/plugins/filters/filter_status_conditions.go +++ b/internal/scheduling/nova/plugins/filters/filter_status_conditions.go @@ -33,10 +33,12 @@ func (s *FilterStatusConditionsStep) Run(traceLog *slog.Logger, request api.Exte hv1.ConditionTypeReady: metav1.ConditionTrue, hv1.ConditionTypeHypervisorDisabled: metav1.ConditionFalse, hv1.ConditionTypeTerminating: metav1.ConditionFalse, - hv1.ConditionTypeTainted: metav1.ConditionFalse, - hv1.ConditionTypeOnboarding: "", // Don't care - hv1.ConditionTypeTraitsUpdated: "", // Don't care - hv1.ConditionTypeAggregatesUpdated: "", // Don't care + // The hypervisor tainted condition is set when users touch the resource + // via kubectl, and shouldn't impact if we can schedule on this hypervisor. + hv1.ConditionTypeTainted: "", + hv1.ConditionTypeOnboarding: "", // Don't care + hv1.ConditionTypeTraitsUpdated: "", // Don't care + hv1.ConditionTypeAggregatesUpdated: "", // Don't care } var hostsReady = make(map[string]struct{}) diff --git a/internal/scheduling/nova/plugins/filters/filter_status_conditions_test.go b/internal/scheduling/nova/plugins/filters/filter_status_conditions_test.go index beec0785..adbfc8c6 100644 --- a/internal/scheduling/nova/plugins/filters/filter_status_conditions_test.go +++ b/internal/scheduling/nova/plugins/filters/filter_status_conditions_test.go @@ -226,8 +226,8 @@ func TestFilterStatusConditionsStep_Run(t *testing.T) { {ComputeHost: "host4"}, }, }, - expectedHosts: []string{"host1"}, - filteredHosts: []string{"host2", "host3", "host4"}, + expectedHosts: []string{"host1", "host4"}, + filteredHosts: []string{"host2", "host3"}, }, { name: "Host not ready should be filtered", @@ -250,14 +250,14 @@ func TestFilterStatusConditionsStep_Run(t *testing.T) { filteredHosts: []string{"host3"}, }, { - name: "Tainted host should be filtered", + name: "Tainted host should not be filtered", request: api.ExternalSchedulerRequest{ Hosts: []api.ExternalSchedulerHost{ {ComputeHost: "host4"}, }, }, - expectedHosts: []string{}, - filteredHosts: []string{"host4"}, + expectedHosts: []string{"host4"}, + filteredHosts: []string{}, }, { name: "Disabled hypervisor should be filtered", @@ -329,8 +329,8 @@ func TestFilterStatusConditionsStep_Run(t *testing.T) { {ComputeHost: "host5"}, }, }, - expectedHosts: []string{"host1", "host5"}, - filteredHosts: []string{"host2", "host3", "host4"}, + expectedHosts: []string{"host1", "host5", "host4"}, + filteredHosts: []string{"host2", "host3"}, }, } From 014482e8589fa119bb3baa36e2748e97caaa4546 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 27 Feb 2026 16:10:30 +0000 Subject: [PATCH 11/18] Bump cortex chart appVersions to sha-7ff10ea5 [skip ci] --- helm/library/cortex/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/library/cortex/Chart.yaml b/helm/library/cortex/Chart.yaml index 95d03cc8..a46c0fbc 100644 --- a/helm/library/cortex/Chart.yaml +++ b/helm/library/cortex/Chart.yaml @@ -3,6 +3,6 @@ name: cortex description: A Helm chart to distribute cortex. type: application version: 0.0.24 -appVersion: "sha-374ee419" +appVersion: "sha-7ff10ea5" icon: "https://example.com/icon.png" dependencies: [] From 38d94cdca10e520430003223cc4a989b294d1d4a Mon Sep 17 00:00:00 2001 From: Markus Wieland <44964229+SoWieMarkus@users.noreply.github.com> Date: Fri, 6 Mar 2026 13:55:38 +0100 Subject: [PATCH 12/18] Fix hypervisor crd breaking changes (#562) The hypervisor operator changed the representation of aggregates in HypervisorStatus from a simple string array (`[]string`) to a structured type (`[]Aggregate` with Name and UUID fields). Without this update, watching Hypervisor resources fails with a "cannot unmarshal object into Go struct field" error. The filter logic in filter_requested_destination.go has been adjusted to extract aggregate names from the new structure, and the corresponding tests have been updated. Go mod tidy updated the sap go bits dependency as well. Tbh I don't know why renovate hasn't opened a PR today. --- go.mod | 4 ++-- go.sum | 8 ++++---- .../filters/filter_requested_destination.go | 4 +++- .../filters/filter_requested_destination_test.go | 14 +++++++------- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index 697896cf..245513cb 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/cobaltcore-dev/cortex go 1.26 require ( - github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260226120401-0e26bc8aa127 + github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260305105543-733c59b0b17c github.com/go-gorp/gorp v2.2.0+incompatible github.com/gophercloud/gophercloud/v2 v2.10.0 github.com/ironcore-dev/ironcore v0.2.4 @@ -71,7 +71,7 @@ require ( github.com/poy/onpar v0.3.5 // indirect github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.17.0 // indirect - github.com/sapcc/go-api-declarations v1.19.0 // indirect + github.com/sapcc/go-api-declarations v1.20.2 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cobra v1.10.1 // indirect github.com/spf13/pflag v1.0.10 // indirect diff --git a/go.sum b/go.sum index 53505a4f..03dfd27f 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1x github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260226120401-0e26bc8aa127 h1:ILZs0hxLy7a673Hqb1kbzKFSnjVorgvxjbCycvUqxFQ= -github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260226120401-0e26bc8aa127/go.mod h1:rJcEJJvLA02KI4uwNjpIi8F+JYxvvHvCFk+ZzMvInBU= +github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260305105543-733c59b0b17c h1:XBqsQQwdSep27eJN7sACjahkhmR2zRlJwv9PrYcEou8= +github.com/cobaltcore-dev/openstack-hypervisor-operator v0.0.0-20260305105543-733c59b0b17c/go.mod h1:b0KmJdxvRI8UXlGe8cRm5BD8Tm2WhF7zSKMSIRGyVL4= github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= @@ -174,8 +174,8 @@ github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUO github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sapcc/go-api-declarations v1.19.0 h1:AdCHBhoDGC1REMJF6Rc/XLIcf4qMqjUXs5WLq83HImM= -github.com/sapcc/go-api-declarations v1.19.0/go.mod h1:eiRrXXUeQS5C/1kKn8/KMjk0Y0goUzgDQswj30rH0Zc= +github.com/sapcc/go-api-declarations v1.20.2 h1:GWqv8VgsF4k9id6N051AVTaEpcjT02APsOuz2yCvTPQ= +github.com/sapcc/go-api-declarations v1.20.2/go.mod h1:eiRrXXUeQS5C/1kKn8/KMjk0Y0goUzgDQswj30rH0Zc= github.com/sapcc/go-bits v0.0.0-20260226170120-c20f89b66c3c h1:GX6ADtKR6Bs2bBRBqeJf376MsxLNppC1SOHLIBuQwIA= github.com/sapcc/go-bits v0.0.0-20260226170120-c20f89b66c3c/go.mod h1:AYC4f8FYO9DllSt4TyMwm1e5iPn32/DGIrlgXtuEsJ0= github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= diff --git a/internal/scheduling/nova/plugins/filters/filter_requested_destination.go b/internal/scheduling/nova/plugins/filters/filter_requested_destination.go index 1e3449b7..0c6b6d4c 100644 --- a/internal/scheduling/nova/plugins/filters/filter_requested_destination.go +++ b/internal/scheduling/nova/plugins/filters/filter_requested_destination.go @@ -86,7 +86,9 @@ func (s *FilterRequestedDestinationStep) Run(traceLog *slog.Logger, request api. continue } hvAggregates := hv.Spec.Aggregates - hvAggregates = append(hvAggregates, hv.Status.Aggregates...) + for _, agg := range hv.Status.Aggregates { + hvAggregates = append(hvAggregates, agg.Name) + } // Check if any of the host's aggregates match the requested aggregates. found := false for _, reqAgg := range aggregatesToConsider { diff --git a/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go b/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go index 02afad2c..085268e7 100644 --- a/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go +++ b/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go @@ -184,15 +184,15 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Status: hv1.HypervisorStatus{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Status: hv1.HypervisorStatus{Aggregates: []string{"aggregate2"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate2"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, - Status: hv1.HypervisorStatus{Aggregates: []string{"aggregate1", "aggregate3"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate1"}, {Name: "aggregate3"}}}, }, }, expectedHosts: []string{"host1", "host3"}, @@ -262,17 +262,17 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, - Status: hv1.HypervisorStatus{Aggregates: []string{"aggregate3"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate3"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate3"}}, - Status: hv1.HypervisorStatus{Aggregates: []string{"aggregate2"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate2"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate4"}}, - Status: hv1.HypervisorStatus{Aggregates: []string{"aggregate5"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate5"}}}, }, }, expectedHosts: []string{"host1", "host2"}, @@ -374,7 +374,7 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, Spec: hv1.HypervisorSpec{Aggregates: []string{}}, - Status: hv1.HypervisorStatus{Aggregates: []string{}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, From 155a83a8083ab3723dfbd4858ad43c423016309a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 6 Mar 2026 13:07:02 +0000 Subject: [PATCH 13/18] Bump cortex chart appVersions to sha-38d94cdc [skip ci] --- helm/library/cortex/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/library/cortex/Chart.yaml b/helm/library/cortex/Chart.yaml index a46c0fbc..882c422a 100644 --- a/helm/library/cortex/Chart.yaml +++ b/helm/library/cortex/Chart.yaml @@ -3,6 +3,6 @@ name: cortex description: A Helm chart to distribute cortex. type: application version: 0.0.24 -appVersion: "sha-7ff10ea5" +appVersion: "sha-38d94cdc" icon: "https://example.com/icon.png" dependencies: [] From 87a325cf39aa619b96fe0c4cdec5278b48c98e07 Mon Sep 17 00:00:00 2001 From: Markus Wieland Date: Fri, 6 Mar 2026 14:14:14 +0100 Subject: [PATCH 14/18] Update hypervisor aggregate field from Name to UUID in filters --- .../plugins/filters/filter_requested_destination.go | 2 +- .../filters/filter_requested_destination_test.go | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/scheduling/nova/plugins/filters/filter_requested_destination.go b/internal/scheduling/nova/plugins/filters/filter_requested_destination.go index 0c6b6d4c..f5cf7b42 100644 --- a/internal/scheduling/nova/plugins/filters/filter_requested_destination.go +++ b/internal/scheduling/nova/plugins/filters/filter_requested_destination.go @@ -87,7 +87,7 @@ func (s *FilterRequestedDestinationStep) Run(traceLog *slog.Logger, request api. } hvAggregates := hv.Spec.Aggregates for _, agg := range hv.Status.Aggregates { - hvAggregates = append(hvAggregates, agg.Name) + hvAggregates = append(hvAggregates, agg.UUID) } // Check if any of the host's aggregates match the requested aggregates. found := false diff --git a/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go b/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go index 085268e7..1a72b22e 100644 --- a/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go +++ b/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go @@ -184,15 +184,15 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate1"}}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate2"}}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate2"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, - Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate1"}, {Name: "aggregate3"}}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}, {UUID: "aggregate3"}}}, }, }, expectedHosts: []string{"host1", "host3"}, @@ -262,17 +262,17 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, - Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate3"}}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate3"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate3"}}, - Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate2"}}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate2"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate4"}}, - Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{Name: "aggregate5"}}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate5"}}}, }, }, expectedHosts: []string{"host1", "host2"}, From 9b8c072edc886e670390b8e15eafbb2564696b37 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 6 Mar 2026 13:23:29 +0000 Subject: [PATCH 15/18] Bump cortex chart appVersions to sha-87a325cf [skip ci] --- helm/library/cortex/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/library/cortex/Chart.yaml b/helm/library/cortex/Chart.yaml index 882c422a..c979bff8 100644 --- a/helm/library/cortex/Chart.yaml +++ b/helm/library/cortex/Chart.yaml @@ -3,6 +3,6 @@ name: cortex description: A Helm chart to distribute cortex. type: application version: 0.0.24 -appVersion: "sha-38d94cdc" +appVersion: "sha-87a325cf" icon: "https://example.com/icon.png" dependencies: [] From 349d742bb6f9a6b3285b8b6df306f3ae27fcf4ac Mon Sep 17 00:00:00 2001 From: Philipp Matthes <27271818+PhilippMatthes@users.noreply.github.com> Date: Mon, 9 Mar 2026 08:57:19 +0100 Subject: [PATCH 16/18] Only consider status aggregates in filter requested destination (#563) Before, we considered both spec and status aggregates. However, we should only extract the ones from the status to see which aggregates were actually reflected by the openstack hypervisor operator. --- .../filters/filter_requested_destination.go | 9 ++- .../filter_requested_destination_test.go | 78 +++++++++---------- 2 files changed, 42 insertions(+), 45 deletions(-) diff --git a/internal/scheduling/nova/plugins/filters/filter_requested_destination.go b/internal/scheduling/nova/plugins/filters/filter_requested_destination.go index f5cf7b42..fd49aa5c 100644 --- a/internal/scheduling/nova/plugins/filters/filter_requested_destination.go +++ b/internal/scheduling/nova/plugins/filters/filter_requested_destination.go @@ -85,14 +85,15 @@ func (s *FilterRequestedDestinationStep) Run(traceLog *slog.Logger, request api. traceLog.Info("filtered out host not in requested_destination aggregates (unknown host)", "host", host) continue } - hvAggregates := hv.Spec.Aggregates + // The requested destination from Nova will contain aggregate uuids. + hvAggregateUUIDs := make([]string, 0, len(hv.Status.Aggregates)) for _, agg := range hv.Status.Aggregates { - hvAggregates = append(hvAggregates, agg.UUID) + hvAggregateUUIDs = append(hvAggregateUUIDs, agg.UUID) } // Check if any of the host's aggregates match the requested aggregates. found := false for _, reqAgg := range aggregatesToConsider { - if slices.Contains(hvAggregates, reqAgg) { + if slices.Contains(hvAggregateUUIDs, reqAgg) { found = true break } @@ -101,7 +102,7 @@ func (s *FilterRequestedDestinationStep) Run(traceLog *slog.Logger, request api. delete(result.Activations, host) traceLog.Info( "filtered out host not in requested_destination aggregates", - "host", host, "hostAggregates", hvAggregates, + "host", host, "hostAggregates", hvAggregateUUIDs, "requestedAggregates", rd.Data.Aggregates, "ignoredAggregates", s.Options.IgnoredAggregates, "aggregatesConsidered", aggregatesToConsider, diff --git a/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go b/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go index 1a72b22e..101d10b2 100644 --- a/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go +++ b/internal/scheduling/nova/plugins/filters/filter_requested_destination_test.go @@ -44,15 +44,15 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate2"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate2"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate3"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate3"}}}, }, }, expectedHosts: []string{"host1", "host2", "host3"}, @@ -80,11 +80,11 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate2"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate2"}}}, }, }, expectedHosts: []string{"host1", "host2"}, @@ -112,15 +112,15 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, }, expectedHosts: []string{"host2"}, @@ -148,15 +148,15 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate2"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate2"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1", "aggregate2"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}, {UUID: "aggregate2"}}}, }, }, expectedHosts: []string{"host1", "host3"}, @@ -221,19 +221,19 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate2"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate2"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate3"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate3"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host4"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate4"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate4"}}}, }, }, expectedHosts: []string{"host1", "host3"}, @@ -261,18 +261,15 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, - Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate3"}}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}, {UUID: "aggregate3"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate3"}}, - Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate2"}}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate2"}, {UUID: "aggregate3"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate4"}}, - Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate5"}}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate4"}, {UUID: "aggregate5"}}}, }, }, expectedHosts: []string{"host1", "host2"}, @@ -301,15 +298,15 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate2"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate2"}}}, }, }, expectedHosts: []string{"host2"}, @@ -337,11 +334,11 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, }, expectedHosts: []string{"host1", "host2"}, @@ -369,16 +366,15 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{}}, Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, }, expectedHosts: []string{"host1", "host3"}, @@ -405,11 +401,11 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate2"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate2"}}}, }, }, expectedHosts: []string{}, @@ -436,15 +432,15 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate2"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate2"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host-not-in-list"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate3"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate3"}}}, }, }, expectedHosts: []string{}, @@ -468,7 +464,7 @@ func TestFilterRequestedDestinationStep_Run(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"aggregate1"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "aggregate1"}}}, }, }, expectedHosts: []string{}, @@ -608,15 +604,15 @@ func TestFilterRequestedDestinationStepOpts_Combined(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"az-west"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "az-west"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"az-east"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "az-east"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"az-west"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "az-west"}}}, }, }, ignoredAggregates: []string{"az-west"}, @@ -646,15 +642,15 @@ func TestFilterRequestedDestinationStepOpts_Combined(t *testing.T) { hypervisors: []hv1.Hypervisor{ { ObjectMeta: metav1.ObjectMeta{Name: "host1"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"production"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "production"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host2"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"production"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "production"}}}, }, { ObjectMeta: metav1.ObjectMeta{Name: "host3"}, - Spec: hv1.HypervisorSpec{Aggregates: []string{"staging"}}, + Status: hv1.HypervisorStatus{Aggregates: []hv1.Aggregate{{UUID: "staging"}}}, }, }, // az-west is ignored, so only production is considered From e33d1b291845f1b6dfed1b23ac8440afbe769159 Mon Sep 17 00:00:00 2001 From: Philipp Matthes Date: Mon, 9 Mar 2026 09:01:21 +0100 Subject: [PATCH 17/18] Bump bundles to 0.0.38 and core to 0.0.25 [skip ci] --- helm/bundles/cortex-cinder/Chart.yaml | 6 +++--- helm/bundles/cortex-crds/Chart.yaml | 4 ++-- helm/bundles/cortex-ironcore/Chart.yaml | 4 ++-- helm/bundles/cortex-manila/Chart.yaml | 6 +++--- helm/bundles/cortex-nova/Chart.yaml | 6 +++--- helm/bundles/cortex-pods/Chart.yaml | 4 ++-- helm/library/cortex/Chart.yaml | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/helm/bundles/cortex-cinder/Chart.yaml b/helm/bundles/cortex-cinder/Chart.yaml index 4dca3668..b81e033d 100644 --- a/helm/bundles/cortex-cinder/Chart.yaml +++ b/helm/bundles/cortex-cinder/Chart.yaml @@ -5,7 +5,7 @@ apiVersion: v2 name: cortex-cinder description: A Helm chart deploying Cortex for Cinder. type: application -version: 0.0.37 +version: 0.0.38 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex-postgres @@ -16,12 +16,12 @@ dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.0.24 + version: 0.0.25 alias: cortex-knowledge-controllers # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.0.24 + version: 0.0.25 alias: cortex-scheduling-controllers # Owner info adds a configmap to the kubernetes cluster with information on diff --git a/helm/bundles/cortex-crds/Chart.yaml b/helm/bundles/cortex-crds/Chart.yaml index 45cc25c7..5427ac30 100644 --- a/helm/bundles/cortex-crds/Chart.yaml +++ b/helm/bundles/cortex-crds/Chart.yaml @@ -5,13 +5,13 @@ apiVersion: v2 name: cortex-crds description: A Helm chart deploying Cortex CRDs. type: application -version: 0.0.37 +version: 0.0.38 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.0.24 + version: 0.0.25 # Owner info adds a configmap to the kubernetes cluster with information on # the service owner. This makes it easier to find out who to contact in case diff --git a/helm/bundles/cortex-ironcore/Chart.yaml b/helm/bundles/cortex-ironcore/Chart.yaml index 6b5d59ee..a555ba20 100644 --- a/helm/bundles/cortex-ironcore/Chart.yaml +++ b/helm/bundles/cortex-ironcore/Chart.yaml @@ -5,13 +5,13 @@ apiVersion: v2 name: cortex-ironcore description: A Helm chart deploying Cortex for IronCore. type: application -version: 0.0.37 +version: 0.0.38 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.0.24 + version: 0.0.25 # Owner info adds a configmap to the kubernetes cluster with information on # the service owner. This makes it easier to find out who to contact in case diff --git a/helm/bundles/cortex-manila/Chart.yaml b/helm/bundles/cortex-manila/Chart.yaml index ce88b451..98e7f587 100644 --- a/helm/bundles/cortex-manila/Chart.yaml +++ b/helm/bundles/cortex-manila/Chart.yaml @@ -5,7 +5,7 @@ apiVersion: v2 name: cortex-manila description: A Helm chart deploying Cortex for Manila. type: application -version: 0.0.37 +version: 0.0.38 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex-postgres @@ -16,12 +16,12 @@ dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.0.24 + version: 0.0.25 alias: cortex-knowledge-controllers # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.0.24 + version: 0.0.25 alias: cortex-scheduling-controllers # Owner info adds a configmap to the kubernetes cluster with information on diff --git a/helm/bundles/cortex-nova/Chart.yaml b/helm/bundles/cortex-nova/Chart.yaml index 1d66f8e2..ec1c16b2 100644 --- a/helm/bundles/cortex-nova/Chart.yaml +++ b/helm/bundles/cortex-nova/Chart.yaml @@ -5,7 +5,7 @@ apiVersion: v2 name: cortex-nova description: A Helm chart deploying Cortex for Nova. type: application -version: 0.0.37 +version: 0.0.38 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex-postgres @@ -16,12 +16,12 @@ dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.0.24 + version: 0.0.25 alias: cortex-knowledge-controllers # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.0.24 + version: 0.0.25 alias: cortex-scheduling-controllers # Owner info adds a configmap to the kubernetes cluster with information on diff --git a/helm/bundles/cortex-pods/Chart.yaml b/helm/bundles/cortex-pods/Chart.yaml index 223914ee..949a2493 100644 --- a/helm/bundles/cortex-pods/Chart.yaml +++ b/helm/bundles/cortex-pods/Chart.yaml @@ -5,13 +5,13 @@ apiVersion: v2 name: cortex-pods description: A Helm chart deploying Cortex for Pods. type: application -version: 0.0.37 +version: 0.0.38 appVersion: 0.1.0 dependencies: # from: file://../../library/cortex - name: cortex repository: oci://ghcr.io/cobaltcore-dev/cortex/charts - version: 0.0.24 + version: 0.0.25 # Owner info adds a configmap to the kubernetes cluster with information on # the service owner. This makes it easier to find out who to contact in case diff --git a/helm/library/cortex/Chart.yaml b/helm/library/cortex/Chart.yaml index c979bff8..e357779e 100644 --- a/helm/library/cortex/Chart.yaml +++ b/helm/library/cortex/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: cortex description: A Helm chart to distribute cortex. type: application -version: 0.0.24 +version: 0.0.25 appVersion: "sha-87a325cf" icon: "https://example.com/icon.png" dependencies: [] From e8b5e3dd94b48d2be5a08f3dec94d0a604bae74a Mon Sep 17 00:00:00 2001 From: Philipp Matthes Date: Mon, 9 Mar 2026 09:29:33 +0100 Subject: [PATCH 18/18] Bump cortex image version to sha-349d742b [skip ci] --- helm/library/cortex/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/library/cortex/Chart.yaml b/helm/library/cortex/Chart.yaml index e357779e..684bbd75 100644 --- a/helm/library/cortex/Chart.yaml +++ b/helm/library/cortex/Chart.yaml @@ -3,6 +3,6 @@ name: cortex description: A Helm chart to distribute cortex. type: application version: 0.0.25 -appVersion: "sha-87a325cf" +appVersion: "sha-349d742b" icon: "https://example.com/icon.png" dependencies: []