See also: SDK | Status
In Juju, status can describe the status of an application or a unit, where the former can be inferred from the latter and the latter consists of the workload and the Juju agent status. This document gives more information about all of these different kinds of status – their values and their meanings.
Contents:
Types of status
Application status
As its name indicates, the application status reports on the status of each deployed application.
The application status can be specified by the charm author. When not specified, it is the highest-priority status of the workload statuses of all of the application’s units. So if all workloads are active, the application will also be active, but if even just one workload is blocked, the application will also be marked blocked.
See more: Workload / charm status
The following figure provides an illustration of the status an application may be in at a given time, and lists the reasons for the transitions between different statuses:
Unit status
The unit status is given by the status of its workload/charm and the status of its juju
agent.
A unit’s status is usually expressed as <workload status>/<agent status>
, e.g. , active/idle
or unknown/lost
.
Workload / charm status
The workload / charm status reports the status of the charm(ed service):
Except for error
, terminated
and unknown
, which are set by Juju, the workload status is generally speaking set by the charm. As such, its semantics is ultimately up to the charm author. The meanings listed below represent just the ideal case, if the charm author has followed the best practice guidelines.
Status | Meaning |
---|---|
error |
The unit is in error, likely from a hook failure. |
blocked |
The charm is stuck. Human intervention is required. |
maintenance |
The charm is performing some (long-running) task such as installing a package or restarting a service. No human intervention is required. |
waiting |
The charm is waiting for another charm it’s integrated with to be ready. No human intervention required. |
active |
The charm is alive and well. Everything’s fine. |
unknown |
The charm status is unknown. It may be still setting up, or something might have gone wrong. |
terminated |
The workload is being destroyed, e.g. as a consequence of juju destroy-model . |
Agent status
The agent status reports the status of the juju
agent running in the unit as it interacts with the juju
controller:
Status | Meaning |
---|---|
allocating |
The charm pod has not come up yet. |
idle |
The juju agent in the charm container is not doing anything at the moment, and waiting for events. |
executing |
The juju agent in the charm container is executing some task. |
error |
The juju agent in the charm container has run but has encountered an uncaught charm exception. |
lost |
The juju agent is unresponsive, or its pod/container has unexpectedly come down. |
The agent status is determined and set by the juju
agent, so it cannot be directly controlled by the charm or a human operator.
Each newly deployed unit starts in maintenance/allocating
, quickly going to maintenance/executing
as the setup phase hooks are executed. If, by the time the install hook (if any) returns, the charm has set no workload status, the unit will go to unknown/idle
. So, in principle, at the end of the install event handler it should be clear if all went well (in which case the user should set active) or not.
Status in the output of juju status
In the output of juju status
, application status is given under App[lication] > Status
and unit status – consisting, as we said, of the workload / charm status and of the Juju agent status – is given under Unit > Workload, Agent
.
Expand to view a sample `juju status` output
Model Controller Cloud/Region Version SLA Timestamp
charm-model tutorial-controller microk8s/localhost 3.1.5 unsupported 14:23:55+02:00
App Version Status Scale Charm Channel Rev Address Exposed Message
demo-api-charm 1.0.0 active 1 demo-api-charm 0 10.152.183.175 no
postgresql-k8s 14.7 active 1 postgresql-k8s 14/stable 73 10.152.183.237 no Primary
Unit Workload Agent Address Ports Message
demo-api-charm/0* active idle 10.1.157.72
postgresql-k8s/0* active idle 10.1.157.74 Primary
See more: Command
juju status