The following sections might help you if you run into problems while using
Deployment Manager.

## Common errors during deployments

The errors that you see in your deployments are in the following format:

    - code: ERROR_CODE
      location: /path/to/template
      message: "{"Error message"}"

The types of errors you might commonly see are described in the following
sections.

### Resource errors (code: `RESOURCE_ERROR`)

Resource errors are propagated from the underlying APIs for the resources
that you are managing with Deployment Manager. For example, if your
deployment has a Compute Engine VM instance, and there was an error
creating the instance, you see that error as a resource error in
Deployment Manager.

In the Deployment Manager response, you can see the error from the
underlying API in the `message.ResourceErrorCode` and
`message.ResourceErrorMessage` fields.

### Validation errors (code: `CONDITION_NOT_MET`)

You get a validation error when a field in your configuration fails validation,
such as if it uses a string value when a boolean is expected.

### Dependency loops (code: `CYCLIC_REFERENCES`)

Indicates that your configuration has a dependency loop. For example, if
resource A depends on resource B, B depends on C, and C depends on A.

The error message shows the resources that are in the dependency loop.

You might see dependencies in resources in the following scenarios:

- A reference to a property of another resource. For example, if your
  deployment has an instance group manager that uses an instance template from
  the same deployment, the instance group manager implicitly depends on
  the instance template. Deployment Manager creates the instance template
  first, then creates the instance group manager.

- An explicit `dependsOn` property, which indicates that the current resource
  must be created after the resource it depends on.

To resolve the error, change the references or `dependsOn` properties so that
the loop is broken.

### Errors while expanding your templates

Your templates are limited in the amount of time and
resources that Deployment Manager uses to expand the templates into a
single configuration.

You might see one of the following errors:

- `MANIFEST_EXPANSION_TOO_MUCH_CPU`: Expanding the configuration took too much CPU.
- `MANIFEST_EXPANSION_TOO_MUCH_MEMORY`: Expanding the configuration took too much memory.
- `MANIFEST_EXPANSION_TOO_MUCH_WALL_TIME`: Expanding the configuration took too much time.
- `MANIFEST_EXPANSION_USER_ERROR`: There was an error in your configuration or one of your templates.

`MANIFEST_EXPANSION_TOO_MUCH_CPU` and `MANIFEST_EXPANSION_TOO_MUCH_MEMORY` might
indicate that your templates might have complex structures involving recursion,
or too many loops.

To resolve these errors, consider splitting your templates into smaller
templates, or simplifying your templates.