Skip to content

[Backport release-1.6] feat(kubevirt): expose migration configuration through platform values - #4402

Merged
myasnikovdaniil merged 1 commit into
release-1.6from
manual-backport-4254-to-release-1.6
Sep 25, 2026
Merged

myasnikovdaniil merged 1 commit into
release-1.6from
manual-backport-4254-to-release-1.6

Conversation

@lexfrei

Copy link
Copy Markdown
Contributor

This reopens a fork backport from a branch in this repository so its CI can run. The commit is the one from #4339 by europrinter (@yankawai), unchanged. On release-1.6 the pull-request CI pushes the images it builds, and a run from a fork has no registry credentials, so #4339 stopped at the build jobs and never reached e2e. The description below is the author's.

What this PR does

Manual backport of #4254 to release-1.6.

The automated backport, #4322, stopped with conflict markers in four files as its only commit, so it is red on DCO and unmergeable as it stands.

Every conflict has the same cause: the kubevirt.disabledFeatureGates work landed on main after 1.6 was cut, and the cherry-pick carried it into hunks this line does not have. Four differences follow:

  • platform values gains a kubevirt block holding migrations alone, and the iaas bundle gains only the migrations hop;
  • the wiring test takes the four migrations cases and the case for a null kubevirt block, without the assertions that belong to disabledFeatureGates cases this line does not have;
  • update_idempotency_test.sh gains run_update_logged, a four-line helper that arrived on main with that work and the new cases need;
  • the kubevirt Makefile header counts six sed patches rather than five.

Verified on this branch: 9 kubevirt chart tests, 31 platform wiring tests (102 across the platform suite), and update_idempotency_test PASS under GNU make and sed. Removing the new awk guard from the Makefile turns that test red naming the migrations block, so the ported guard is doing work. On this line (.Values.kubevirt).migrations is the only reader of .Values.kubevirt; rewriting it as .Values.kubevirt.migrations turns the null-block case red with a nil pointer.

Feature summary, unchanged from #4254: cluster-wide migration settings could only be applied by patching the KubeVirt CR, because the kubevirt chart did not render migrations and the platform bundle did not forward it. kubevirt.migrations now passes through the generated Package to spec.configuration.migrations. A hand patch of that Package is undone on the next platform render, so this hop is the only supported setter.

kubevirt:
  migrations:
    bandwidthPerMigration: 625M
    parallelMigrationsPerCluster: 2
    parallelOutboundMigrationsPerNode: 1

Screenshots

Not a UI change.

Downstream repositories

Walked the trigger map against the diff: platform values, the iaas bundle and the kubevirt chart. The v1.6 reference page of the platform values had no kubevirt section, so the row goes there as a follow-up that should land with this backport.

Release note

feat(kubevirt): expose `kubevirt.migrations` in the platform values and forward it to `spec.configuration.migrations` on the KubeVirt CR, so live-migration bandwidth and parallelism can be set without patching a Package that the platform re-renders.

@coderabbitai

coderabbitai Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository: cozystack/cozystack/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 48a84db1-2b6c-42af-9b7d-784ec8016793

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added area/release Issues or PRs related to release tooling (changelog, backport, release pipeline) area/virtualization Issues or PRs related to virtualization (kubevirt, cdi, vmi, vm-import) kind/feature Categorizes issue or PR as related to a new feature size/L This PR changes 100-499 lines, ignoring generated files labels Sep 23, 2026
europrinter (yankawai) added a commit to yankawai/cozystack that referenced this pull request Sep 23, 2026
Replace negative Chainsaw assertions with deletion watches, keeping the
two-minute timeout and the preceding Bound assertions for both PVCs.

Chainsaw 0.2.15 can abort polling on an API read error and report its
previous "resource matches expectation" instead. The failed cozystack#4402 run
ended this check after 4.5 seconds, not its two-minute budget.

Verified with Chainsaw 0.2.15 and kubectl 1.33.13 against a loopback API:
delayed deletion, already absent, a read failure on the old polling path,
and watch reconnect succeed; retained PVCs and forbidden reads fail.
Chainsaw lint passes. The original CI API error was not preserved; a
full E2E rerun is still needed.

Signed-off-by: Yan Bondarenko <[email protected]>
@myasnikovdaniil
myasnikovdaniil force-pushed the manual-backport-4254-to-release-1.6 branch from d45eb9b to da05a51 Compare September 24, 2026 15:00
myasnikovdaniil added a commit that referenced this pull request Sep 25, 2026
… CRD wait is cancelled (#4475)

Backport of #3742 to `release-1.6`.

`TestWaitForCRDsEstablished_timeout` fails `Unit & controller tests` on
this branch at random, last time on #4402: `error should mention stuck
CRD name, got: context cancelled while waiting for CRDs to be
established: context deadline exceeded`. `WaitForCRDsEstablished` here
still has two cancellation exits with different messages, and when the
deadline and a ticker tick are ready together the select picks one of
them at random. I ran the timeout test as 16 concurrent processes to get
the timing jitter CI has: 3 failures out of 160 runs on the current
branch, 0 out of 320 with this change.

Cherry-picked clean with `-x`.

### Testing

- stress run above, plus `make unit-tests` and `make test-controllers`
green, POSIX sh sweep clean.

```release-note
fix(manifestutil): a CRD wait cut short by a cancelled context now reports one error naming the CRD it was waiting on, where before the name was present or missing depending on which of two exits the scheduler happened to pick
```
Backport of #4254 to release-1.6.

Cluster-wide migration settings could only be applied by patching the KubeVirt
CR: the kubevirt chart did not render `migrations`, and the platform bundle did
not forward it. The optional `kubevirt.migrations` platform value now passes
through the generated Package to `spec.configuration.migrations`, and a hand
patch of that Package is undone on the next platform render, so this hop is the
only supported setter.

Four differences from main, all from release-1.6 predating the
disabledFeatureGates work:

- platform values gains a `kubevirt` block holding `migrations` alone, and the
  iaas bundle gains only the migrations hop;
- the wiring test takes the four migrations cases and the case for a null
  `kubevirt` block, without the assertions that belong to disabledFeatureGates
  cases absent here;
- update_idempotency_test.sh gains `run_update_logged`, which arrived on main
  alongside that work and the new cases need;
- the kubevirt Makefile header counts six sed patches rather than five.

Verified on this branch: 9 kubevirt chart tests, 31 platform wiring tests (102
across the platform suite), and update_idempotency_test PASS under GNU make and
sed. Removing the new awk guard from the Makefile turns that test red naming the
migrations block, so the ported guard is not decorative. On this line
(.Values.kubevirt).migrations is the only reader of .Values.kubevirt, and
rewriting it as .Values.kubevirt.migrations turns the null-block case red with a
nil pointer.

The automated backport in #4322 stopped with conflict markers in four files as
its only commit, which is why this exists.

Assisted-by: LLM
Signed-off-by: Yan Bondarenko <[email protected]>
@myasnikovdaniil
myasnikovdaniil force-pushed the manual-backport-4254-to-release-1.6 branch from da05a51 to bfb4224 Compare September 25, 2026 05:31
@myasnikovdaniil
myasnikovdaniil merged commit 6f00d30 into release-1.6 Sep 25, 2026
14 checks passed
@myasnikovdaniil
myasnikovdaniil deleted the manual-backport-4254-to-release-1.6 branch September 25, 2026 09:46
Aleksei Sviridkin (lexfrei) added a commit that referenced this pull request Sep 25, 2026
This reopens a fork pull request from a branch in this repository so its
CI can run. The commit is the one from #4481 by @yankawai, unchanged. On
release-1.6 the pull-request CI pushes the images it builds, and a run
from a fork has no registry credentials, so #4481 could never get past
the build jobs to e2e. The description below is the author's.

## What this PR does

Wait for both ZooKeeper PVCs to disappear after Kafka deletion. Negative
assertions can stop on an API read error before their timeout; deletion
watches wait for the resource to be removed. The existing Bound and
KafkaTopic checks are unchanged.

Carries the test-only change from c92828c in #4339, which was not
included in #4402. This targets `release-1.6`; the Kafka suite on `main`
uses KRaft without ZooKeeper.

Validated with Chainsaw 0.2.15: delayed deletion, an already absent PVC,
an interrupted watch, and the read-error fixture pass. A retained PVC
and forbidden access fail. The full Kafka E2E run remains for CI.

### Screenshots

Not applicable.

### Downstream repositories

- [x] No downstream repository is affected by this change
- [ ] [cozystack/website](https://github.com/cozystack/website) -
follow-up:
- [ ]
[cozystack/terraform-provider-cozystack](https://github.com/cozystack/terraform-provider-cozystack)
- follow-up:
- [ ]
[cozystack/ansible-cozystack](https://github.com/cozystack/ansible-cozystack)
- follow-up:
- [ ] [cozystack/ccp](https://github.com/cozystack/ccp) - follow-up:
- [ ] [cozystack/talm](https://github.com/cozystack/talm) - follow-up:
- [ ] [cozystack/cozyhr](https://github.com/cozystack/cozyhr) -
follow-up:
- [ ] [cozystack/cozy-proxy](https://github.com/cozystack/cozy-proxy) -
follow-up:
- [ ]
[cozystack/cozystack-telemetry-server](https://github.com/cozystack/cozystack-telemetry-server)
- follow-up:
- [ ]
[cozystack/external-apps-example](https://github.com/cozystack/external-apps-example)
- follow-up:
- [ ] [cozystack/examples](https://github.com/cozystack/examples) -
follow-up:

### Release note

```release-note
NONE
```
europrinter (yankawai) added a commit to yankawai/website that referenced this pull request Sep 25, 2026
cozystack/cozystack#4402 backports the kubevirt.migrations platform value
to the 1.6 line, and the v1.6 reference had no KubeVirt section at all.
This adds the migrations row and its example from the next page, with a
line saying the value is available since v1.6.4, because earlier 1.6
releases ignore it. The disabledFeatureGates row stays out, as that value
is not on the 1.6 line.

Signed-off-by: Yan Bondarenko <[email protected]>
myasnikovdaniil added a commit to cozystack/website that referenced this pull request Sep 28, 2026
## What this PR does

Adds a KubeVirt section with the `kubevirt.migrations` row, its example
and the note on bandwidth units to the v1.6 platform-package reference.
It documents the value that cozystack/cozystack#4402 backported to
`release-1.6`. That backport first ships in v1.6.4, so the section says
the value is available since Cozystack v1.6.4 and that earlier 1.6
releases ignore it. The `kubevirt.disabledFeatureGates` row from `next`
stays out because that value is not on the 1.6 line. The row and the
example are the ones #697 added to `next`.

Checks run for this change.

- `bash hack/check-i18n.sh check` passed with 29 translation keys and 20
tracked translated pages.
- `git diff origin/main...HEAD --check` passed, and the PR changes one
reference file.
- Hugo was not built locally.

### Screenshots

Not applicable, reference documentation only.

### Downstream repositories

- [x] No downstream repository is affected by this change
- [ ] [cozystack/website](https://github.com/cozystack/website) -
follow-up:
- [ ]
[cozystack/terraform-provider-cozystack](https://github.com/cozystack/terraform-provider-cozystack)
- follow-up:
- [ ]
[cozystack/ansible-cozystack](https://github.com/cozystack/ansible-cozystack)
- follow-up:
- [ ] [cozystack/ccp](https://github.com/cozystack/ccp) - follow-up:
- [ ] [cozystack/talm](https://github.com/cozystack/talm) - follow-up:
- [ ] [cozystack/cozyhr](https://github.com/cozystack/cozyhr) -
follow-up:
- [ ] [cozystack/cozy-proxy](https://github.com/cozystack/cozy-proxy) -
follow-up:
- [ ]
[cozystack/cozystack-telemetry-server](https://github.com/cozystack/cozystack-telemetry-server)
- follow-up:
- [ ]
[cozystack/external-apps-example](https://github.com/cozystack/external-apps-example)
- follow-up:
- [ ] [cozystack/examples](https://github.com/cozystack/examples) -
follow-up:
- [ ] [cozystack/community](https://github.com/cozystack/community) -
follow-up:

This reference-only change does not alter any downstream API, schema,
build tooling, installer setting or runtime behavior.

### Release note

```release-note
docs(platform-package): Document kubevirt.migrations, available since v1.6.4, on the v1.6 platform values reference.
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/release Issues or PRs related to release tooling (changelog, backport, release pipeline) area/virtualization Issues or PRs related to virtualization (kubevirt, cdi, vmi, vm-import) kind/feature Categorizes issue or PR as related to a new feature size/L This PR changes 100-499 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants