canonical / canonical/charm-integration-testing
test_build_bundle: bundle_builder_x cannot fulfill CHARM_ENDPOINT_NON_OPTIONAL relations for cilium and cinder-nimblestorage
- Dominant language
- Python
- Stars
- 6
- Forks
- 1
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 96
Description
**Note: This issue was generated with AI assistance (GitHub Copilot) based on automated log analysis and triage.**
Filed by @canonical/solutions-qa
**Edit 2026-08-24:** Most of the original scope of this issue (the OpenStack-family charms below) was caused by those charms previously being marked `listed: false` in charm overrides (PR #727/SQT-1081), hiding them from CharmHub search and producing this generic "cannot fulfill"/domain-expansion failure. PR #871 (SQT-1134, merged 2026-08-24) replaced that with explicit `assumes: [unsupported-openstack]` tags, so those cases now correctly fail with an `assumes_mismatch` error and are tracked as duplicates of #886. Reruns have been requested for the affected OpenStack charms so they pick up the corrected error. **This issue is being narrowed to the remaining, genuinely distinct cases below, which are unaffected by that fix.**
## Summary
`test_build_bundle` fails with `bundle_builder_x.bundle_builder.UncompletableBundleError` for a small number of unrelated charms/test plans where the solver expands its domain to satisfy an `Assertions.CHARM_ENDPOINT_NON_OPTIONAL` constraint before giving up with a "Cannot fulfill charm endpoints" error. These charms are **not** part of the OpenStack `assumes: [unsupported-openstack]` override set (PR #871), so they are not resolved by that fix.
## Remaining scope
| Charm (revision/track) | Distinct test plans affected | Failed results |
|---|---|---|
| cilium (24 / 1.28) | kubernetes-cni matrix (kubernetes-control-plane, kubernetes-worker) | 4 |
| cinder-nimblestorage | cinder-backend/cinder:storage-backend | 2 |
## Observed io_log evidence (verbatim, representative sample)
**cilium (rev 24, 1.28) — test plan `integration/kubernetes-worker:cni/kubernetes-cni/cilium:cni`**, TR 12654812 — 14 solver iterations, expanding for `cilium:grafana-dashboard`, `kubernetes-worker:certificates`, `kubernetes-worker:kube-control`, `kubernetes-worker:container-runtime`, `kubernetes-control-plane:etcd`, `kubernetes-control-plane:container-runtime` in turn, before failing on `cilium:grafana-dashboard, training-operator:dashboard-links, training-operator:dashboard-links`.
**cinder-three-par / cinder-nimblestorage (rev 530-family `cinder` as neighbor)** — expand for `cinder:amqp/rabbitmq` then `cinder:shared-db/mysql-shared` before failing on `cinder:cinder-volume-service`. (Note: `cinder-three-par` itself was resolved as a duplicate of #886, since `cinder` — the actual blocking neighbor — is in the openstack `assumes` set; `cinder-nimblestorage` has no charm override at all and remains unresolved here.)
## Test Observer links
- https://test-observer.canonical.com/#/charms/337475?testExecutionId=337114&testResultId=12654812 (cilium)
## Suggested investigation
- `cilium` has no `assumes` tag and is a Kubernetes CNI charm unrelated to the OpenStack override set — check whether `cilium:grafana-dashboard`/`training-operator:dashboard-links` need to be marked optional, or whether a genuine provider is missing from the candidate pool.
- `cinder-nimblestorage` has no override file at all — may need one (similar to other `cinder-*-storage-backend` charms) to mark non-required endpoints optional.
Contributor guide
Research direction
Start with the test_build_bundle failures and the representative io_log entries for cilium and cinder-nimblestorage. Inspect the charm overrides and CHARM_ENDPOINT_NON_OPTIONAL handling, especially cilium:grafana-dashboard, training-operator:dashboard-links, and cinder:cinder-volume-service. Done means the remaining affected test plans no longer fail with the generic cannot-fulfill error, with coverage for the corrected behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100