From 9th February 2022, charm publishing and consumption are served exclusively by Charmhub.io. This FAQ (Frequently Asked Questions) document explains what will happen after this transition away from Charm Store and if there is any action you need to take as a charm author. Here are some common charm operations, with equivalent Charmhub<->Charm Store commands that you may find useful. Please ask in the forum if you feel there is any other question that you would like us to answer.
How were things working until now?
For over a year, Charmhub and Charm Store have coexisted, sharing the Charm Store charm collection under both services.
Charm Store existed, unchanged until February 9th, and had its own web frontend at https://jaas.ai, as well as the API consumed by all Juju clients (2.8 and older, and 2.9 for charm identifiers prefixed with cs:
).
Charmhub has its web frontend at https://charmhub.io, and provides an API consumed by Juju 2.9 for non-prefixed and ch:
charm identifiers.
The web team has redirected most charm pages from https://jaas.ai to Charmhub.io, leveraging the fact that most of the same content is available on both.
The collection of charms offered by Charmhub includes all the charms present in Charm Store, as well as any charms registered directly on Charmhub.io or via charmcraft
.
The import process is not two-way: charms created natively on Charmhub are not reflected in Charm Store.
What happened on 9th February 2022?
- We placed redirects on api.jujucharms.com to redirect the relevant parts of the Charm Store API to Charmhub. This caused all Juju clients to transparently start talking to Charmhub.
- Charm Store became read-only; any write operations are redirected to the Charmhub compatibility API, which does not support write operations. The old backends and data are still functional but are inaccessible (except for administrative purposes).
- All charms were switched to read-write mode, meaning that publishers are now able to manage them on Charmhub.io using the web frontend and
charmcraft
tool.
After this, Charm Store will continue to exist for an undetermined amount of time. It will act only as a data backup as most parts of it will not be accessible.
Note that other services which live under api.jujucharms.com, such as Omnibus, Candid and the Charm Store image registry, will continue to exist there, as there is no direct replacement planned for them.
What is the compatibility API?
To allow pre-2.9 Juju clients to continue working after transitioning charms to Charmhub, an API compatible with a subset of the old Charm Store API was implemented in Charmhub. Only the URL changes; everything else stays compatible so these clients can deploy from Charmhub using the old protocol.
The compatibility API is aimed primarily at pre-2.9 clients, which have no knowledge of the native Charmhub API. It is also consumed by Juju 2.9 and newer for cs:
-prefixed charms (to ensure bundles using the old syntax continue working).
Note the compatibility API only covers consumption of charms and does not implement all of the old Charm Store API. Therefore, any other uses of the old API (including publishing and web display of charm data) should be (and are already, mostly) migrated to use the new, native Charmhub API.
As a charm author, how do I publish my charm on Charm Store?
As Charm Store is now deprecated (all the APIs are redirected to Charmhub), it’s no longer possible to publish charms directly to Charm Store. Instead, use charmcraft
to publish your charm to Charmhub.
Note that charms published to Charmhub are still visible and deployable by Juju using cs:
notation.
As a charm author, how do I publish my charm on Charmhub?
As of February 9th, please use charmcraft
to upload and publish builds for all charms (both charmstore-imported and charmhub-native).
How can I manage my old charm on Charmhub?
From February 9th, all charms are managed on Charmhub using the charmcraft
tool.
If you had an old charm in Charm Store, you should be the owner on Charmhub as well, and you can upload and release updates using charmcraft
.
How can my charms use Charmhub features like tracks?
These features are now available to all charms. To request creation of tracks, ownership transfers, collaborator additions, and toggling visibility for charms, please post your request in the Charmhub forum.
What will happen with old Juju clients?
Any Juju client that talked to Charm Store (Juju 2.8 and older, and Juju 2.9 for cs:
-prefixed charms) will be transparently redirected to Charmhub’s compatibility API. Clients older than Juju 2.0 use an older v4
API which is not supported, so those may stop working.
How can I have a namespace for my charms on Charmhub?
There is no namespacing in Charmhub. Read more here
Why isn’t my Charm store charm on Charmhub?
All Charm Store charms should be on Charmhub, unless they are private.
This is usually related to “findability”. Charmhub has a “show charm in search results” flag, which, for imported charms, is only set for promulgated charms.
This means that if your charm was not promulgated, it will not show up in search results.
Additionally, because there are no namespaces on Charmhub (see above question), all charm names are “converted” to a flat format. For non-promulgated charms, this has the form ~user/charm
-> user-charm
. For example, a charm that was available on Charm Store under https://jaas.ai/u/containers/metallb-controller is now https://charmhub/containers-metallb-controller.
Any bundles referencing the charm, or installing it directly via Juju, should still work as intended.
Charms that are natively registered on Charmhub are also created initially “unlisted” and don’t show up in search results.
The above policies were put in place to showcase promulgated charms and avoid potentially low-quality, experimental namespaced charms polluting search results.
To change visibility status, please ask the Store team (or in the Charmhub forum) to make them listed, once you’re ready to have them show up in search results. Note that any change in visibility status should be authorized by the Charmhub product managers.
Why are revision numbers different in Charmhub and Charm Store?
The way each service models charm revisions is different, so upon importing from Charm Store, Charmhub cannot always assign the same revision number to each revision. For example, if a single Charm Store revision supports multiple Ubuntu series (e.g. cs:xenial/foo-5
, cs:trusty/foo-5
), it will be imported as several Charmhub revisions, each with an incrementing number.
However, note that revision numbers presented via the compatibility API (that is, installed with Juju using the cs
prefix) will be consistent with Charm Store and should return the expected payload.
Navigation
Level | Page |
---|---|
0 | FAQ |
0 | Common Charm Operations |
0 | Charmhub Namespacing |