How to manage actions
See also: Action
This document demonstrates how to manage actions.
- List all actions
- Show details about an action
- Run an action
- View the pending, running, or completed operations
- Show details about an operation
- Show details about a task
- Cancel a task
- Debug an action
To list the actions defined for a deployed application, use the
actions command followed by the deployed charm’s name. For example, assuming you’ve already deployed the
git charm, you can find out the actions it supports as below:
juju actions git
This should output:
Action Description add-repo Create a git repository. add-repo-user Give a user permissions to access a repository. add-user Create a new user. get-repo Return the repository's path. list-repo-users List all users who have access to a repository. list-repos List existing git repositories. list-user-repos List all the repositories a user has access to. list-users List all users. remove-repo Remove a git repository. remove-repo-user Revoke a user's permissions to access a repository. remove-user Remove a user.
By passing various options, you can also do a number of other things such as specify a model or an output format or request the full schema for all the actions of an application. Below we demonstrate the
juju actions git --schema --format yaml
add-repo: additionalProperties: false description: Create a git repository. properties: repo: description: Name of the git repository. type: string required: - repo title: add-repo type: object
The full schema is under the
properties key of the root action. Actions rely on JSON-Schema for validation. The top-level keys shown for the action (
properties) may include future additions to the feature.
To see detailed information about an application action, use the
show-action command followed by the name of the charm and the name of the action. For example, the code below will show detailed information about the
backup action of the
juju show-action postgresql backup
To run an action on a unit, use the
run command followed by the name of the unit and the name of the action you want to run.
juju run mysql/3 backup
By using various options, you can choose to run the action in the background, specify a timeout time, pass a list of actions in the form of a YAML file, etc. See the command reference doc for more.
Running an action returns the overall operation ID as well as the individual task ID(s) for each unit.
juju v.3.0, actions are composed of tasks and operations , where an action defines a named unit of work (e.g., back up the database) that can be executed on selected units, a task is the execution of the action on each target unit, and an operation is the group of tasks queued by running an action across one or more units.
To view the pending, running, or completed status of each
juju run ... <action> invocation, run the
This will show the operations corresponding to the actions for all the application units. You can filter this by passing various options (e.g.,
--status pending,completed, etc.).
To see the status of the individual tasks belonging to a given operation, run the
show-operation command followed by the operation ID.
juju show-operation 1
As usual, by adding various options, you can specify specify an output format, choose to watch indefinitely or specify a timeout time, etc.
To drill down to the result of running an action on a specific unit (the stdout, stderror, log messages, etc.), use the
show-task command followed by the task ID (returned by the
run command). For example,
juju show-task 1
Suppose you’ve run an action but would now like to cancel the resulting pending or running task. You can do so using the
cancel-task command. For example:
juju cancel-task 1
To debug an action (or more), use the
debug-hooks command followed by the name of the unit and the name(s) of the action(s). For example, if you want to check the
add-repo action of the
git charm, use:
juju debug-hooks git/0 add-repo
Last updated 6 days ago.