Glossary

This page precisely defines terms used in this documentation, the log messages, and the source code.

Understanding the full nuances of these definitions is a prerequisite to successfully understanding and following the documentation.


Application, unit, leader, charm, charm revision, and relation/integration have the same meaning as in the Juju documentation.

User

User of Juju (e.g. user of juju CLI). Same meaning as "user" in the Juju documentation

Event

Same meaning as "Juju event" or "hook" in the Juju documentation. Does not refer to an "ops event"

Workload

A software component that the charm operates (e.g. PostgreSQL)

  • Note: a charm can have 0, 1, or multiple workloads

Charm code

Contents of *.charm file or charm directory (e.g. /var/lib/juju/agents/unit-postgresql-k8s-0/charm/) on a unit. Contains charm source code and (specific versions of) Python dependencies

Charm code version

Same meaning as charm revision

Outdated version
  • Charm code version on a unit that does not match the application’s charm code version (revision),

  • Workload version on a unit that does not match the application’s workload version,

    • On Kubernetes, the application’s workload version is the OCI resource specified by the user

    • On machines, the application’s workload version is pinned in the application’s charm code version (revision)

    and/or

  • (Kubernetes only) StatefulSet ControllerRevision on a unit that does not match the application’s StatefulSet ControllerRevision

    The only circumstance where an outdated ControllerRevision is relevant (i.e. the only circumstance where a unit’s charm code version and workload version are up-to-date but the unit’s ControllerRevision is outdated) is a rollback.

    During a rollback on Kubernetes, all pods—​even those that have not refreshed—​will need to be deleted and re-created on the new ControllerRevision before the rollback is complete. This is a Juju bug: https://bugs.launchpad.net/juju/+bug/2036246

Up-to-date version
  • Charm code version on a unit that does match the application’s charm code version (revision),

  • Workload version on a unit that does match the application’s workload version,

    • On Kubernetes, the application’s workload version is the OCI resource specified by the user

    • On machines, the application’s workload version is pinned in the application’s charm code version (revision)

    and/or

  • (Kubernetes only) StatefulSet ControllerRevision on a unit that does match the application’s StatefulSet ControllerRevision

Original version

Workload and/or charm code version of all units immediately after the last completed refresh—​or, if no completed refreshes, immediately after juju deploy and (on machines) initial installation

For an application (or if not specified)

Refresh

juju refresh to a different workload and/or charm code version

  • Note: "rollback" and "downgrade" are specific types of "refresh"

In-progress refresh

1+ units have an outdated workload version, charm code version, and/or (Kubernetes only) StatefulSet ControllerRevision

Completed refresh

All units have the up-to-date workload version, charm code version, and (Kubernetes only) StatefulSet ControllerRevision

Rollback

While a refresh is in-progress and 1+ units have the original workload (and, on Kubernetes, charm code) version, juju refresh to the original workload and charm code version

  • Note: If all units have already refreshed, then it would be a downgrade, not a rollback

  • Note: If juju refresh is not to the original workload and charm code version, then it is not a rollback

Downgrade

Refresh to older (lower) workload and/or charm code version

For a unit

Charm code refresh

Contents of charm directory are replaced with up-to-date charm code version

Workload refresh

Workload is stopped (if running) and updated to up-to-date workload version

Refresh
  • For Kubernetes: charm code and workload are refreshed

  • For machines: workload is refreshed

Rollback
  • For Kubernetes: charm code and workload are refreshed to original versions

  • For machines: workload is refreshed to original version

Downgrade
  • For Kubernetes: charm code and/or workload are refreshed to older (lower) version

  • For machines: workload is refreshed to older (lower) version