Run results, refusal reasons and exit codes
For feature teams and platform teams. This page lists the words that the CLI prints for the result of a plan or an apply, and what each one means. Each table gives the printed word, the word that this documentation uses, and what to do.
Statuses of a run
joomiz runs prints the status of each run. A run has one status.
| Printed | This documentation says | Meaning | What to do |
|---|---|---|---|
running | Running | The call is still working. | Follow it with joomiz runs watch. |
accepted | Waiting for provisioner | The call ended, and a provisioner still works in the background. | Wait. runs watch follows it until the provisioners finish. |
succeeded | Succeeded | Every change worked. | Nothing. |
failed | Failed | At least one change failed. | Read joomiz runs show, and fix the cause. |
partially_applied | Partly applied | Some changes worked and some did not. | Check the environment. Fix the failure, and apply again. |
refused | Not started | The control plane stopped the call before any work. A reason follows in parentheses. | Read the reason in the next table. |
abandoned | Abandoned | Someone released the apply lock. Work that is already running was not stopped. | Check the resources before the next apply. |
Statuses of the resources of one type
joomiz runs show lists one line for each group. A group is the resources of one category and one type that a provisioner handles in one call. The word group is used only on this page and where an operator investigates a run.
| Printed | Meaning |
|---|---|
queued | The group waits for its turn. |
running | A provisioner works on the group. |
succeeded | Every change of the group worked. |
failed | A change of the group failed, or the group could not start. |
skipped | A group that this group needs did not succeed, so this one was not tried. |
accepted | The provisioner will finish later. This documentation says waiting for provisioner. |
unknown | The control plane stopped waiting before the group finished, for example after the lock was released. |
Refusal reasons
A refused call has a reason. The CLI prints it in parentheses after refused, for example refused (stale_plan). This documentation says not started.
| Reason | What it means | What to do |
|---|---|---|
invalid_request | The control plane could not read the request. For example, a required parameter is missing. | Check the command and its options. |
malformed_body | The file could not be read as a joomiz.yaml document. | Check that the file is valid YAML. |
body_too_large | The file is bigger than 262144 bytes. | Make the file smaller. |
unsupported_version | The file has a version that the control plane does not know. | Write version: 1, or remove the key. |
invalid_application_id | The id of the application is not a UUID. | Use the id that joomiz init wrote. |
invalid_submission | The file did not pass the checks of the plan. | Run joomiz validate, and fix the problems. |
application_not_found | The application is not registered. | Run joomiz register. |
not_owner | The application belongs to another team. | Sign in with the role of the owner team. |
forbidden | Your role does not allow this call. | Check your role. |
no_appliable_plan | The file was never planned for this environment, or it changed after the plan. | Run plan, then apply, with the same file. |
unclaimed_resource_type | No provisioner handles a type of your file. | Tell your platform team the type. |
circular_reference | The changes need each other's values, so no order works. | Remove one reference. |
reserved_spec_field | A deployment has a setting whose name starts with artifact-, target- or application-. The platform fills in such names itself. | Rename the setting. |
apply_in_progress | Another apply holds the lock for this application and environment. | Follow that run, and apply again after it ends. |
stale_plan | The environment changed after your plan. | Plan again, then apply. |
server_error | The control plane failed before any work. | Run the command again. If it fails again, tell your platform team. |
Exit codes
| Code | Meaning | Commands |
|---|---|---|
0 | The command worked. | All |
1 | The control plane found problems in the file or refused the call. For runs show and runs watch, the run did not end with success. For init, the file exists already. For tooling add, the file is missing or has the entry already. | register, validate, plan, apply, runs, audit, init, tooling add |
2 | The command cannot start: a missing option, a wrong value, an unknown command or no credential. | All |
3 | The control plane gave no usable answer. It was not reachable, or a time limit cut the answer. For login, the identity provider could not be reached or refused the sign-in. | register, validate, plan, apply, runs, audit, login |
4 | The run has no final status yet (running or accepted). | runs show |
5 | The plan succeeded, but its drift check was incomplete. | plan --strict |
When two codes apply, 3 comes first, then 1, then 5.
Drift words
| Printed | This documentation says | Meaning |
|---|---|---|
changed | Different | The resource exists, and a setting differs from the record. |
absent | Missing | The resource does not exist any more. |
incomplete | The drift check is incomplete | A provisioner could not answer for some resources. The plan may miss changes. |
A resource that a provisioner could not check is never reported as different.
See also
- Fix an error helps you to read a failure.
- Read your runs shows the commands for runs.
- Find and fix drift shows a plan with drift.
- The CLI reference lists every command.