canonical / canonical/charm-integration-testing
minio S3 fixture charm fails install on Juju 4.x (pod-spec-set removed), blocking kyuubi-k8s and other S3-dependent test plans
- Dominant language
- Python
- Stars
- 6
- Forks
- 1
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 98
Description
## Summary
The `minio` charm used as the S3 backend fixture (`s3-integrator-minio`) in S3-dependent integration test bundles is a **legacy Kubernetes _podspec_ charm**. Its `install` hook calls the `pod-spec-set` hook tool, which **no longer exists in Juju 4.x**. The hook therefore fails deterministically, the S3 backend never comes up, and the artefact under test times out waiting for the model to settle.
This is **not** a bug in the charm under test — it is collateral damage from an incompatible test fixture. A rerun will fail identically, so these failures should not be retried or filed against the target charms.
## Root cause (verified in juju debug-log)
```
self._backend.pod_spec_set(spec, k8s_resources)
File ".../venv/ops/model.py", line 3472, in pod_spec_set
self._run('pod-spec-set', *args)
RuntimeError: command not found: pod-spec-set
```
- Environment: `juju:4/stable` (**4.0.14**), `ubuntu:22.04`, kubernetes, amd64
- Fixture: `s3-integrator-minio` = **minio rev 583** (`ckf-1.10/stable`)
- Juju 4.x removed support for podspec charms, so `pod-spec-set` is gone. The log confirms every sidecar charm reports *"not a Kubernetes podspec charm"* — only `minio` is podspec, and only `minio` dies.
## Causal chain
1. `minio` `install` hook → `pod-spec-set` → `RuntimeError: command not found` → `hook failed: "install"`.
2. `s3-integrator` stays `blocked (Missing parameters)` — waiting on minio.
3. `spark-integration-hub-k8s` → `blocked (Invalid S3 credentials)`.
4. `kyuubi-k8s` (target) → `blocked (Missing Object Storage backend)`.
5. `test_deploy` → `juju.backend.JujuWaitTimeoutError` waiting for `s3-integrator-minio`.
## Example failure
- Artefact under test: **kyuubi-k8s** rev 183 (track 3.5)
- Test case: `test_deploy`
- Test plan: `kyuubi-k8s:grafana-dashboard/grafana_dashboard/grafana-k8s:grafana-dashboard`
- CI run: https://github.com/canonical/charm-integration-testing/actions/runs/32655002132
- Test Observer: https://test-observer.canonical.com/#/charms/409789?testExecutionId=681956&testResultId=13058448
## Suggested fix
Replace the legacy podspec `minio` fixture with a Juju-4-compatible (sidecar) S3/MinIO backend, or pin S3-dependent test plans to Juju 3.x until a compatible fixture is available. Any charm whose test bundle deploys this `minio` fixture will fail on Juju 4.x until this is addressed.
---
_Filed by an AI triage assistant (GitHub Copilot) on behalf of @LucasPluta. Root cause verified against the juju debug-log for test execution 681956; please validate before acting._
Contributor guide
Research direction
Start by inspecting the S3-dependent test plans, the s3-integrator-minio fixture setup, and the test_deploy path that waits for model settlement; reproduce the failure on Juju 4.x and review the debug-log evidence. Done means the plans use a Juju-4-compatible backend or are pinned to Juju 3.x, with the affected integration tests no longer blocked by the minio install hook.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- kubernetes, python
- Domain
- devops, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100