Using charmhub channels in bundle definitions


I see in Charmhub there’s multiple channels for a charm, and there’s means to use --channel in upgrade-charm or deploy. This is great for a release process, but I wonder: Is there a way to specify the charm channel in the bundle yaml?

I’d like to have a bunch of charms, and deploy a bundle using the current, stable release - that’s easy. Then I’d like to deploy a fresh bundle on top of that, using new charm urls, pointing at a candidate release for those charms. Currently, e.g. with Telegraf, I’d use cs:telegraf for the stable charm, and cs:~llama-charmers-next/telegraf for the candidate. Unfortunately that’s a different namespace (stable is cs:~llama-charmers/telegraf), and that means there’s a risk that folks will push a fresh build to cs:~llama-charmers/telegraf after testing in order to release, which will break testing. The solution would be to pull and then push to the right namespace, but it’s risky. Channels solves my problems elegantly.

What I can do currently is this:

  • deploy a bundle using cs:telegraf
  • upgrade the charm with juju upgrade-charm --switch cs:telegraf --channel candidate telegraf

What I’d like to do is deploy a bundle with a bunch of charms, from the candidate channel when I specify it.

I am sure I could use, e.g. cs:telegraf-8 where -8 is the candidate revision, but I would then have to scrape through and find out those numbers when ideally I’d write a test bundle that can be re-used across multiple releases.

Am I missing a switch/parameter in the bundle?

1 Like

You can define one via channel for each charm in the bundle, provided it’s not local charm.

In juju 2.9, exported bundles will all have a channel defined.

    charm: influxdb
    channel: latest/candidate
    num_units: 1
1 Like