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

Open
#884 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.