Johnny is some generic client, nothing special -- just your average johnny.
It is intended to be used by other charm test suites that need a simple consumer of the following interfaces for testing purposes:
ceph(ceph-client)ceph-rgw-ready(ceph-rgw-client)role-assignmentprovider
Johnny currently does four things:
- requests a replicated Ceph pool when the broker becomes available
- reports
blockedwithRGW is not readyuntil the related app setsready=trueon theceph-rgw-readyrelation - returns to
activewhen theceph-rgw-readyrelation is removed - provides
role-assignmentdata. By default, the first 3 registered units on each relation receivecontrol,storage, andgatewayroles plusworkload-params={"flavors": ["rgw"]}.
The default role assignment can be tuned with:
juju config johnny default-assignment-limit=3
juju config johnny default-assignment-roles=control,storage,gateway
juju config johnny default-assignment-workload-params='{"flavors": ["rgw"]}'For explicit topology, set role-assignments to JSON:
{
"units": {
"microceph/0": {
"roles": ["control", "storage", "gateway"],
"workload-params": {"flavors": ["rgw"]}
}
},
"machines": {
"0": {
"roles": ["control", "storage", "gateway"],
"workload-params": {
"microceph": {"flavors": ["rgw"]}
}
}
}
}charmcraft packjuju deploy johnny --channel edgeFor local development, consumer repos can point their tests at a built charm:
export JOHNNY_CHARM=/path/to/johnny.charmOr point at a local source checkout and let the consumer repo build it:
export JOHNNY_SOURCE=/path/to/johnnyA GitHub Actions release workflow publishes johnny to Charmhub on pushes to
main and via manual dispatch. It expects a repository secret named
CHARMHUB_TOKEN and releases to latest/edge.
Typical manual release flow:
charmcraft login
charmcraft pack
charmcraft upload *.charm
charmcraft release johnny --revision <revision> --channel latest/edgeGitHub Actions workflows are included to:
- validate that
charmcraft packcontinues to work for pull requests and pushes - release
johnnyto Charmhub frommain