fix(hack): keep the backup stack in the vminstance selective install (#5027)

## What this PR does

`vminstance` chainsaw suite has two velero round-trips
(`vmdisk-2-backup-roundtrip` and `vminstance-2-backup-roundtrip`), both
wait for `cozy-default` BSL that `backupstrategy-controller` package
renders together with platform Bucket. `hack/select-install.sh` keeps
this package only for database and broker suites
([#4022](https://github.com/cozystack/cozystack/pull/4022)), so PR with
selection of exactly `vminstance` gets platform without it: no Bucket,
no BucketClaim, no BSL, and both round-trips fail on BSL wait after
about 190 seconds, before any step of example scripts runs.

Seen on the [E2E run of
#4955](https://github.com/cozystack/cozystack/actions/runs/39225333408),
selected apps there are `vminstance` only and the backup packages are in
disabled list. Any edit of `examples/backups/vmi` or
`examples/backups/vmdisk` selects `vminstance` and nothing else, so PRs
that change those scripts can't run them.

Fix is one more entry in `suite_runtime_sources`, the table that already
keeps the stack for database suites. Install closure of `vminstance`
grows by `backup-controller`, `backupstrategy-controller`,
`bucket-application`, `velero`, `metrics-server` and
`monitoring-agents`. Bats test for backup suites now includes
`vminstance` and fails without the script change.

`hack/select-install_test.bats` and `hack/select-e2e_test.bats` pass
(110 tests), `hack/select-install.sh --validate` is clean. Own E2E run
of this PR doesn't cover the fix, because `hack/*.sh` escalates to full
suite and database suites install the backup stack anyway. Real check is
re-run of E2E for
[#4955](https://github.com/cozystack/cozystack/pull/4955) after merge,
it selects `vminstance` alone.

### Screenshots

Not a UI change.

### Downstream repositories

Walked the trigger map against the diff, it is one selector table entry
and its bats test, no file under `hack/` moved or renamed and no make
target changed.

- [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:

### Release note

```release-note
fix(hack): E2E install for `vminstance`-only selection keeps the backup stack, so VMInstance and VMDisk backup round-trips run instead of timing out on BSL wait.
```


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

<!-- coderabbit-ai-generated:v1 -->

## Summary by CodeRabbit

- **Bug Fixes**
- Virtual machine instances now correctly include the backup strategy
component required for backup-related functionality.
- Installation checks now consistently validate this requirement,
including when backup features are disabled. This improves setup
reliability and helps prevent incomplete or misconfigured virtual
machine deployments.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Aleksei Sviridkin authored and GitHub committed 2026-10-21 17:10:19 +03:00
commit 215e582f03
2 files changed
+2 -2

No files matched your search

+1 -1
View File
@@ -141,7 +141,7 @@ suite_to_source() {
# would also change reverse test selection.
suite_runtime_sources() {
case "$1" in
clickhouse|etcd|kafka|kafka-metadata|mariadb|mongodb|postgres|rabbitmq|redis|valkey)
clickhouse|etcd|kafka|kafka-metadata|mariadb|mongodb|postgres|rabbitmq|redis|valkey|vminstance)
echo cozystack.backupstrategy-controller ;;
gateway) echo cozystack.kubeovn-webhook ;;
esac
+1 -1
View File
@@ -177,7 +177,7 @@ assert_output_graph_error() {
}
@test "backup suites keep the APIs used by their roundtrip examples" {
for suite in clickhouse etcd kafka kafka-metadata mariadb mongodb postgres rabbitmq redis valkey; do
for suite in clickhouse etcd kafka kafka-metadata mariadb mongodb postgres rabbitmq redis valkey vminstance; do
keep=$(hack/select-install.sh "$suite")
drop=$(hack/select-install.sh --disabled "$suite")
for required in cozystack.backupstrategy-controller cozystack.backup-controller \