canonical / canonical/charm-integration-testing

test_build_bundle: bundle_builder_x cannot fulfill CHARM_ENDPOINT_NON_OPTIONAL relations for cilium and cinder-nimblestorage

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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.