Error codes
Every error code and message id of the API and the console, with the text the console shows and a link to cause and remedy.
This code is not in this version of the documentation. The search field holds the code.
The console and the API name an error by its message id. Each row links to the entry with the cause and the remedy. The codes at the end are the classes every error belongs to, with their HTTP and gRPC status.
Message ids
| Message id | Text in the console | Code |
|---|---|---|
error.api_token.name | The API token needs a name of 1 to 64 characters. | INVALID_ARGUMENT |
error.api_token.limit | This account already has {max} API tokens. Remove one before creating another. | RESOURCE_EXHAUSTED |
error.api_token.ttl | The token lifetime must be at least one second and at most {max} seconds. | INVALID_ARGUMENT |
error.auth.invalid_credentials | Sign-in failed. The user name or password is not correct. Check both and try again. | UNAUTHENTICATED |
error.auth.rate_limited | Too many sign-in attempts. Try again in {retryAfterSeconds} seconds. | RESOURCE_EXHAUSTED |
error.auth.invalid_code | The code was not accepted. It may have expired or been used already. Wait for the next code and try again. | UNAUTHENTICATED |
error.auth.mfa_expired | The sign-in took too long and was cancelled. Sign in again. | UNAUTHENTICATED |
error.auth.mfa_proof | The verification does not belong to this sign-in. Sign in again. | INVALID_ARGUMENT |
error.auth.access_expired | Your access expired. The session is being renewed; try again. | UNAUTHENTICATED |
error.auth.session_expired | Your session ended. Sign in again. | UNAUTHENTICATED |
error.auth.refresh_reuse | Your session was ended because a sign-in token was presented twice. Sign in again; if this repeats, tell an administrator. | UNAUTHENTICATED |
error.auth.refresh_race | Another tab renewed the session at the same moment. Try again. | CONFLICT |
error.auth.csrf | The request was refused because its security token did not match. Reload the page and try again. | PERMISSION_DENIED |
error.auth.origin | The request came from an address this server does not accept. Open the interface at its published address. | PERMISSION_DENIED |
error.backup.no_repository | No backup repository is configured on the controller. | FAILED_PRECONDITION |
error.backup.repository_unusable | The repository {repository} cannot be created or written on this controller. | FAILED_PRECONDITION |
error.backup.export_unreachable | The controller cannot reach the export of a disk on the host. | UNAVAILABLE |
error.backup.change_tracking | Change tracking could not be turned on for {vm}. | FAILED_PRECONDITION |
error.backup.no_disks | {vm} has no disk to back up. | FAILED_PRECONDITION |
error.backup.vm_powered_on | {vm} is powered on. Power it off before a restore in place: the restore replaces its disks. | FAILED_PRECONDITION |
error.backup.verify_failed | The restore finished, but backup point {point} did not pass the verification in quarantine. | FAILED_PRECONDITION |
error.backup.controller_running | A backup of the controller state is already running. | CONFLICT |
error.backup.controller_target | The folder {target} for the controller archives cannot be created. | FAILED_PRECONDITION |
error.backup.controller_changed | {file} changed while it was archived. Run the backup again. | CONFLICT |
error.backup.controller_unreadable | The archive of the controller state does not read back as written; it was not kept. | INTERNAL |
error.backup.controller_unavailable | This controller keeps its state in memory; there is nothing to archive. | FAILED_PRECONDITION |
error.backup.source_gone | The virtual machine of this backup point no longer exists; its configuration is needed for a restore. | FAILED_PRECONDITION |
error.catalogue.not_template | Only templates can be catalogue images. | FAILED_PRECONDITION |
error.console.powered_off | The virtual machine is powered off. | FAILED_PRECONDITION |
error.console.not_available | This virtual machine has no graphical console. | FAILED_PRECONDITION |
error.console.host_disconnected | The host of the virtual machine is not connected. | UNAVAILABLE |
error.console.rate_limited | Too many console tickets. Retry in {retryAfterSeconds} seconds. | RESOURCE_EXHAUSTED |
error.console.ticket_invalid | The console ticket is invalid, used or expired. | UNAUTHENTICATED |
error.datacenter.not_empty | Datacenter {datacenter} still holds clusters, hosts, virtual machines, networks or datastores. Move or remove them first. | FAILED_PRECONDITION |
error.datastore.not_shareable | Datastore {datastore} cannot be mounted on or unmounted from a single host. Remove it instead, or choose an NFS datastore. | FAILED_PRECONDITION |
error.datastore.insufficient_space | Datastore {datastore} has room for {available} bytes; {requested} bytes were asked for. Choose a smaller disk or another datastore. | FAILED_PRECONDITION |
error.image_in_use | The image file still backs the virtual machine {vm}. Delete or move that virtual machine first. | FAILED_PRECONDITION |
error.datastore_bad_path | The path is not valid: it must be relative, below the datastore root and not empty. Correct the path. | INVALID_ARGUMENT |
error.datastore_file_exists | A file or folder with that name already exists. Choose another name, or allow overwriting. | ALREADY_EXISTS |
error.datastore_file_not_found | The file does not exist on the datastore. It may have been removed. Refresh the list. | NOT_FOUND |
error.datastore_folder_not_found | The folder does not exist on the datastore. It may have been removed. Refresh the list. | NOT_FOUND |
error.datastore_folder_not_empty | The folder still contains files. Delete its contents first. | FAILED_PRECONDITION |
error.datastore_file_in_use | The file backs a disk of the virtual machine {vm}. Remove the disk from that virtual machine first. | FAILED_PRECONDITION |
error.datastore_upload_too_large | The upload exceeds the limit of {limit} bytes. Split the file, or ask an administrator to raise the limit. | RESOURCE_EXHAUSTED |
error.datastore_upload_incomplete | The upload ended before the whole file arrived. Upload the file again. | INVALID_ARGUMENT |
error.datastore_read_only | The datastore refuses writes. Choose another datastore, or ask an administrator to make it writable. | FAILED_PRECONDITION |
error.datastore_range_invalid | The requested part of the file does not exist. Download the whole file. | INVALID_ARGUMENT |
error.datastore_inaccessible | Datastore {datastore} is not accessible from its hosts. Check the storage connection of the hosts. | FAILED_PRECONDITION |
error.datastore_no_host | No connected host mounts datastore {datastore}. Connect a host that mounts it. | depends on the cause |
error.datastore_not_on_host | The chosen host does not mount datastore {datastore}. Choose another host or datastore. | FAILED_PRECONDITION |
error.datastore_not_shared | The operation needs a datastore shared by both hosts. Choose a shared datastore. | FAILED_PRECONDITION |
error.disk.shrink_not_supported | Disk {disk} cannot be made smaller. Keep its size or choose a larger one. | INVALID_ARGUMENT |
error.disk_owned_by_other_vm | The disk file belongs to another virtual machine, and you have no disk access to that virtual machine. | PERMISSION_DENIED |
error.firewall.validation | The firewall change is not valid: {issue} at {object} ({count} problems in total). | INVALID_ARGUMENT |
error.firewall.builtin | {object} is built in and maintained by the platform; it cannot be changed or deleted. | FAILED_PRECONDITION |
error.firewall.reserved_name | Names starting with sys: are reserved for built-in firewall objects. Choose another name. | INVALID_ARGUMENT |
error.firewall.quota | The firewall quota {resource} of this tenant is {limit}; the change would make it {used}. | FAILED_PRECONDITION |
error.firewall.category_scope | Emergency and Infrastructure policies belong to the provider. Use Environment or Application. | INVALID_ARGUMENT |
error.firewall.in_use | {object} is still in use. | FAILED_PRECONDITION |
error.firewall.no_vnic | The virtual machine has no network adapter on a host-bridge network. | FAILED_PRECONDITION |
error.firewall.profile_not_selectable | The firewall profile {profile} cannot be chosen here. Open ports with rules instead. | PERMISSION_DENIED |
error.firewall.unprotected | Network adapter {nic} cannot be firewalled: {reason}. | FAILED_PRECONDITION |
error.firewall.not_pending | No firewall mode change of this virtual machine is waiting for confirmation. | FAILED_PRECONDITION |
error.not_found | The object was not found. It may have been removed. Refresh the inventory. | NOT_FOUND |
error.already_exists | An object with that name or id already exists. Choose another name. | ALREADY_EXISTS |
error.conflict | The object changed while you were editing it. Reload the page and apply your change again. | CONFLICT |
error.unauthenticated | You are not signed in. Sign in and try again. | UNAUTHENTICATED |
error.permission_denied | The request was refused. Your role does not include the required privilege. Ask an administrator for access. | PERMISSION_DENIED |
error.audit_record_immutable | Audit records cannot be deleted. | PERMISSION_DENIED |
error.guest_operations_unavailable | Guest operations are not available: the virtual machine is off, has no guest agent, or the agent blocks the command. | FAILED_PRECONDITION |
error.guest_file_exists | The file already exists in the guest. Choose overwrite to replace it. | ALREADY_EXISTS |
error.guest_path_not_found | The path does not exist in the guest. | NOT_FOUND |
error.guest_path_is_directory | The path is a directory in the guest. | INVALID_ARGUMENT |
error.guest_path_not_directory | The path is not a directory in the guest. | INVALID_ARGUMENT |
error.guest_directory_not_empty | The directory in the guest is not empty. | FAILED_PRECONDITION |
error.host.insufficient_memory | Host {host} has {available} MiB of memory free for virtual machines; this one needs {requested} MiB. Power off other virtual machines, give this one less memory, or move it to another host. | FAILED_PRECONDITION |
error.host.not_in_maintenance | Host {host} is not in maintenance mode. Enter maintenance mode first, or force the reboot or shutdown. | FAILED_PRECONDITION |
error.host.not_connected | Host {host} is not connected to the control plane. Retry when it is connected again. | UNAVAILABLE |
error.host_capability_missing | The host does not offer the capability {capability}. Choose another host, or update the host agent. | UNIMPLEMENTED |
error.host_has_running_vms | The host still has running or suspended VMs; power them off or evacuate first | FAILED_PRECONDITION |
error.host_has_vms | The host still has VMs; relocate or destroy them first | FAILED_PRECONDITION |
error.host_in_maintenance | The host is in maintenance mode | FAILED_PRECONDITION |
error.identity.group_exists | A group named {group} exists already. | ALREADY_EXISTS |
error.identity.group_not_found | There is no group named {group}. | NOT_FOUND |
error.identity.group_cycle | Group {member} cannot be nested in {group}: a group would contain itself, or the nesting would be deeper than eight levels. | INVALID_ARGUMENT |
error.identity.oidc_unreachable | The identity provider at {issuer} did not answer. The settings were not changed. | FAILED_PRECONDITION |
error.identity.policy_invalid | The policy value {field} is out of range. | INVALID_ARGUMENT |
error.identity.provider_privilege_in_tenant | Role {role} holds {privilege}, which cannot be granted inside a tenant's folders and pools. | INVALID_ARGUMENT |
error.ip_pool.exhausted | Pool {pool} has no free address left. | depends on the cause |
error.ip_pool.address_in_use | {address} is already allocated. | ALREADY_EXISTS |
error.ip_pool.address_quarantined | {address} was released recently and is still in quarantine. | FAILED_PRECONDITION |
error.ip_pool.primary_exists | The network card {mac} already has a primary address in this pool; ask for an extra address. | FAILED_PRECONDITION |
error.ip_pool.no_ipv6 | This pool has no IPv6 prefix. | FAILED_PRECONDITION |
error.ip_pool.overlap | The ranges overlap pool {pool}. | INVALID_ARGUMENT |
error.ip_pool.in_use | Pool {pool} still has allocations. | FAILED_PRECONDITION |
error.ip_pool.not_allocated | {address} is not allocated here. | NOT_FOUND |
error.ip_pool.no_nic | Virtual machine {vm} has no network card on network {network}. | FAILED_PRECONDITION |
error.ip_pool.ipv6_block_len | The IPv6 block per server must be /64 to /128. | INVALID_ARGUMENT |
error.ip_pool.ipv6_layout_in_use | The IPv6 prefix and block length cannot change while blocks are allocated or in quarantine. | INVALID_ARGUMENT |
error.licence.limit_running_vms | Power-on would exceed the running-VM licence limit ({current} of {limit}; requested {delta}). Power off unused virtual machines or install a licence. | RESOURCE_EXHAUSTED |
error.licence.limit_hosts | Enrolling a host would exceed the host licence limit ({current} of {limit}; requested {delta}). Remove a host or install a multi-host licence. | RESOURCE_EXHAUSTED |
error.licence.feature_required | This operation needs the licence feature {feature}. Install a licence that includes it. | FAILED_PRECONDITION |
error.licence.signature_invalid | The licence file signature is not valid. Check that you pasted the complete payload and signature. | FAILED_PRECONDITION |
error.licence.not_valid | The licence is outside its validity window. Check the start and end dates on the licence file. | FAILED_PRECONDITION |
error.metrics_disabled | Performance data is turned off. The management service runs with performance metrics disabled. Ask an administrator to enable them in the controller configuration. | UNAVAILABLE |
error.metrics_bad_entity | Performance data is not kept for this object. Only hosts, virtual machines and datastores have charts. Open one of those objects. | INVALID_ARGUMENT |
error.metrics_bad_interval | The time range is not available. The management service keeps 20 s, 5 min, 30 min, 2 h and 1 day samples. Choose one of the listed ranges. | INVALID_ARGUMENT |
error.metrics_unknown_counter | A requested counter does not exist. The management service may run an older version. Update the management service or reload the page. | INVALID_ARGUMENT |
error.metrics_query_empty | The request named no object or counter. Reload the page and try again. | INVALID_ARGUMENT |
error.metrics_query_too_large | The request covers too many samples. A query returns at most 200,000 points. Choose a shorter time range or fewer devices. | INVALID_ARGUMENT |
error.metrics_too_many_batches | A host agent sent more than {max} metric batches in one report, so the whole report was rejected. Update the host agent, or contact support if the agent is current. | INVALID_ARGUMENT |
error.mfa_required | Two-step verification is required before this works. Complete the verification and try again. | FAILED_PRECONDITION |
error.mfa.already_enrolled | Two-step verification is already set up for this account. | FAILED_PRECONDITION |
error.mfa.not_enrolled | Two-step verification is not set up for this account. | FAILED_PRECONDITION |
error.mfa.not_enrolling | No two-step verification set-up is in progress. Start the set-up again. | FAILED_PRECONDITION |
error.nic_network_unwired | Network adapter {nic} is connected to {network}, which has no host-bridge backing on the host. Choose a wired network or give the network a bridge. | FAILED_PRECONDITION |
error.network.proxy_uplink | Proxy mode needs an Open vSwitch bridge and the name of the uplink interface (for example eno1). | INVALID_ARGUMENT |
error.network.promiscuous_unsupported | Promiscuous mode is not available on host-bridge networks. Use a mirror session instead. | INVALID_ARGUMENT |
error.network.shaping_invalid | The traffic shaping value {field} is missing, negative or below the average bandwidth. | INVALID_ARGUMENT |
error.network.teaming_invalid | The NIC teaming value {field} is not valid: an unknown policy, an invalid interface name, or a NIC listed twice. | INVALID_ARGUMENT |
error.nsx.unsupported | The NSX Policy request uses a feature this server does not serve. Remove the field the message names and send it again. | INVALID_ARGUMENT |
error.nsx.invalid | A field of the NSX Policy request is not valid. Correct the field the message names and send it again. | INVALID_ARGUMENT |
error.nsx.not_found | The NSX Policy path names no object, or one you cannot see. Check the path and your permissions. | NOT_FOUND |
error.nsx.revision | The object changed since you read it, so its revision is stale. Read the object again and apply your change to the new version. | FAILED_PRECONDITION |
error.nsx.read_only | The object is built in, or a tenant user wrote into the provider scope. Change an object of your own instead. | PERMISSION_DENIED |
error.nsx.xsrf | A write with a session cookie needs the session’s X-XSRF-TOKEN header. Send the header, or authenticate each request with HTTP Basic instead of the cookie. | PERMISSION_DENIED |
error.password_rotation_required | The password of this account must be changed before anything else works. Change it and try again. | FAILED_PRECONDITION |
error.password.too_short | The new password is too short. Use at least {min} characters. | INVALID_ARGUMENT |
error.password.too_long | The new password is too long. Use at most {max} characters. | INVALID_ARGUMENT |
error.password.common | This password is too common or too easy to guess. Choose a longer passphrase. | INVALID_ARGUMENT |
error.password.repetitive | The password repeats one character or group. Choose a longer passphrase. | INVALID_ARGUMENT |
error.password.sequential | The password is a keyboard or alphabet sequence. Choose a longer passphrase. | INVALID_ARGUMENT |
error.password.contains_username | The new password must not contain your user name. | INVALID_ARGUMENT |
error.password.unchanged | The new password must differ from the current one. | INVALID_ARGUMENT |
error.password.current_required | Enter your current password. | INVALID_ARGUMENT |
error.password.current_incorrect | The current password is not correct. Check it and try again. | INVALID_ARGUMENT |
error.plan.in_use | {servers} server(s) use this plan; make it not orderable instead. | FAILED_PRECONDITION |
error.quota.exceeded | The tenant's quota for {resource} is {limit}; {current} are in use and {requested} more were asked for. | FAILED_PRECONDITION |
error.rdns.nothing_pending | No reverse DNS request is waiting for {address}. | FAILED_PRECONDITION |
error.rdns.reason_required | Give a reason for the rejection. | FAILED_PRECONDITION |
error.rdns.provider_failed | The DNS server did not accept the change. Try again later. If it keeps failing, the task details name the cause. | UNAVAILABLE |
error.rdns.no_zone | No reverse zone on the DNS server holds {name}. | FAILED_PRECONDITION |
error.rdns.not_forward_confirmed | {name} does not resolve to {address}. Create the A or AAAA record first. | FAILED_PRECONDITION |
error.rdns.invalid_name | This is not a valid host name. | INVALID_ARGUMENT |
error.server.not_ready | The server is {state}; the operation is not possible now. | FAILED_PRECONDITION |
error.server.plan_not_larger | A server can only move to a plan at least as large in vCPUs, memory and disk. | INVALID_ARGUMENT |
error.server.plan_not_orderable | This plan cannot be ordered. | INVALID_ARGUMENT |
error.server.image_not_allowed | The plan does not allow this image. | INVALID_ARGUMENT |
error.server.disk_too_small | The plan's disk is too small for this image. | INVALID_ARGUMENT |
error.server.no_credentials | This image takes no SSH keys, password or user data. | depends on the cause |
error.server.rescue_active | The server is already in rescue mode. | FAILED_PRECONDITION |
error.server.no_rescue_image | No rescue image is configured. | FAILED_PRECONDITION |
error.tag.not_associable | Tags of category {category} cannot be attached to a {kind}. | INVALID_ARGUMENT |
error.tag.cardinality | Object {object} already carries a tag of category {category}, which allows one tag per object. | FAILED_PRECONDITION |
error.tag.provider_managed | Tags of category {category} are attached and detached by the provider only. | PERMISSION_DENIED |
error.tag.category_change | The category value {field} cannot change this way: cardinality goes from single to multiple only, and associable kinds can only be added. | INVALID_ARGUMENT |
error.task.secrets_lost | The task's guest user data or passwords were kept in memory only and were lost when the controller restarted. Start the operation again. | FAILED_PRECONDITION |
error.tenant.suspended | The tenant is suspended: nothing can be started and the console is closed. | FAILED_PRECONDITION |
error.tenant.closed | The tenant is closed. | FAILED_PRECONDITION |
error.traffic.bad_month | The month must be written as YYYY-MM. | INVALID_ARGUMENT |
error.traffic.no_policy | Virtual machine {vm} has no traffic limit. | depends on the cause |
error.usage_bad_date | A date is not valid. Dates use the form YYYY-MM-DD. Correct the date and try again. | INVALID_ARGUMENT |
error.usage_bad_range | The period is not valid. The end must not be before the start and the period may not exceed ten years. Choose another period. | INVALID_ARGUMENT |
error.usage_bad_group | The grouping is not supported. Choose virtual machine or tenant. | INVALID_ARGUMENT |
error.usage_bad_period | The breakdown is not supported. Choose total, per month or per day. | INVALID_ARGUMENT |
error.usage_bad_format | The export format is not supported. Download the report as CSV. | INVALID_ARGUMENT |
error.usage_bad_scope | The scope is not an inventory container. Open a datacenter, folder, cluster, host, datastore or network and try again. | INVALID_ARGUMENT |
error.invalid_power_state | The operation is not possible while the virtual machine is {power_state, select, powered_on {powered on} PoweredOn {powered on} poweredon {powered on} powered_off {powered off} PoweredOff {powered off} poweredoff {powered off} suspended {suspended} Suspended {suspended} paused {paused} Paused {paused} other {in this power state}}. {required, select, powered_off {Power off the virtual machine} powered_on {Power on the virtual machine} suspended {Suspend the virtual machine} other {Change the power state}} first, then try again. | FAILED_PRECONDITION |
error.vm_not_placed | The virtual machine is not placed on a host. {reason, select, no_connected_host {No host of its cluster is connected. Reconnect a host, then move the virtual machine to it.} all_in_maintenance {Every connected host of its cluster is in maintenance mode. End maintenance mode on a host, then move the virtual machine to it.} no_hosts {Its cluster has no hosts. Add a host to the cluster, then move the virtual machine to it.} no_compute_resource {Its resource pool does not belong to a cluster or a standalone host. Move the virtual machine to a resource pool of a cluster or host.} other {No host is assigned to it. Move the virtual machine to a host.}} | FAILED_PRECONDITION |
error.vm_spec_unbuildable | The configuration of the virtual machine cannot be built on its host. Check the hardware settings and the host's capabilities. The task details name the cause. | FAILED_PRECONDITION |
error.vm.concurrent_modification | The configuration of the virtual machine changed while you were editing it. Reload the virtual machine and make the change again. | CONFLICT |
error.vm.exceeds_host_cpu | {requested} vCPUs are more than the {limit} that host {host} allows for one virtual machine. Choose fewer vCPUs. | INVALID_ARGUMENT |
error.vm.exceeds_host_memory | {requested} MiB of memory are more than the {limit} MiB that host {host} can give one virtual machine. Choose less memory. | INVALID_ARGUMENT |
error.vm.too_many_devices | A virtual machine can have at most {limit} {device, select, cdroms {CD-ROM drives} other {disks and network adapters together}}; this configuration has {count}. Remove devices first. | INVALID_ARGUMENT |
error.no_current_snapshot | The virtual machine has no current snapshot to revert to. Take a snapshot first. | NOT_FOUND |
error.template_relocate | Templates cannot be relocated | FAILED_PRECONDITION |
error.webhook.target_restricted | This webhook address points to a loopback, private or link-local network. Use a public address, or ask an administrator to allow the network in the controller configuration. | INVALID_ARGUMENT |
error.unavailable | The management service did not answer. It may be restarting or unreachable. Retry in a moment. | shown by the console itself |
error.host_not_responding | Host {host} is not responding. The host lost its connection to the management network. Retry when the host is online, or migrate the virtual machine to another host. | shown by the console itself |
Codes
| Code | HTTP status | gRPC status | Meaning for API clients |
|---|---|---|---|
INVALID_ARGUMENT | 400 | INVALID_ARGUMENT (3) | The request is malformed or a value is out of range. |
NOT_FOUND | 404 | NOT_FOUND (5) | The referenced object does not exist (or the caller may not know it does). |
ALREADY_EXISTS | 409 | ALREADY_EXISTS (6) | An object with the same unique key already exists. |
CONFLICT | 409 | ABORTED (10) | Optimistic-concurrency failure: the object changed since it was read. |
FAILED_PRECONDITION | 412 | FAILED_PRECONDITION (9) | The object is in a state that does not allow the operation. |
UNAUTHENTICATED | 401 | UNAUTHENTICATED (16) | The caller is not authenticated or the session expired. |
PERMISSION_DENIED | 403 | PERMISSION_DENIED (7) | The caller lacks a required privilege. |
RESOURCE_EXHAUSTED | 429 | RESOURCE_EXHAUSTED (8) | A quota, queue bound or rate limit was hit; retry later. |
DEADLINE_EXCEEDED | 504 | DEADLINE_EXCEEDED (4) | The operation did not finish in time. |
CANCELLED | 499 | CANCELLED (1) | The operation was cancelled by the caller. |
UNAVAILABLE | 503 | UNAVAILABLE (14) | The service cannot serve the request right now (not leader, shutting down, dependency down); safe to retry. |
UNIMPLEMENTED | 501 | UNIMPLEMENTED (12) | The operation is not implemented. |
INTERNAL | 500 | INTERNAL (13) | Anything else; a bug or an I/O failure. Details are logged, not returned. |
Version 0.1.