This is the multi-page printable view of this section. Click here to print.
Deployment
- 1: SOLO-2001
- 2: SOLO-2002
- 3: SOLO-2003
- 4: SOLO-2004
- 5: SOLO-2005
- 6: SOLO-2006
- 7: SOLO-2007
- 8: SOLO-2008
- 9: SOLO-2009
- 10: SOLO-2010
- 11: SOLO-2011
- 12: SOLO-2012
- 13: SOLO-2013
- 14: SOLO-2014
- 15: SOLO-2015
- 16: SOLO-2016
- 17: SOLO-2017
- 18: SOLO-2018
- 19: SOLO-2019
- 20: SOLO-2020
- 21: SOLO-2021
- 22: SOLO-2022
- 23: SOLO-2023
- 24: SOLO-2024
- 25: SOLO-2025
- 26: SOLO-2026
- 27: SOLO-2027
- 28: SOLO-2028
- 29: SOLO-2029
- 30: SOLO-2030
1 - SOLO-2001
CreateDeploymentSoloError
| Code | SOLO-2001 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | Yes |
Description
Thrown when solo deployment config create cannot record a new deployment; the underlying failure is wrapped in cause. Creating a deployment writes its entry to the local configuration and provisions the associated namespace, so this is raised when that work fails — for example the local config could not be written, or the Kubernetes API rejected or could not create the namespace. It is retryable because a transient cluster or filesystem issue often clears on a second attempt.
Troubleshooting Steps
- Check the logs for details: tail -n 100 ~/.solo/logs/solo.log
2 - SOLO-2002
DeploymentAlreadyExistsSoloError
| Code | SOLO-2002 |
| Category | Deployment |
| Ownership | User |
| Retryable | No |
Description
Thrown when solo deployment config create is asked to create a deployment whose name is already present in the local configuration; the message names the conflicting deployment. Deployment names must be unique because solo keys each deployment’s namespace and cluster references by name, so it refuses to overwrite an existing entry. Choose a different name, or operate on the existing deployment instead of recreating it.
Troubleshooting Steps
- Check existing deployments: solo deployment config list
- Choose a different name for your deployment
3 - SOLO-2003
DeploymentNotFoundError
| Code | SOLO-2003 |
| Category | Deployment |
| Ownership | User |
| Retryable | No |
Description
Thrown when a command resolves a deployment by name but that name is not registered in the local configuration; the error message names the deployment that was requested. solo looks the deployment up to find its namespace and cluster references before acting, so the lookup fails when the --deployment value is misspelled, when the deployment was never created with solo deployment config create, or when it was removed by a prior delete. It can also surface after switching SOLO_HOME to a config that does not contain the deployment.
Troubleshooting Steps
- List available deployments: solo deployment config list
- Create a deployment if needed: solo deployment config create
4 - SOLO-2004
DeploymentHasRemoteResourcesError
| Code | SOLO-2004 |
| Category | Deployment |
| Ownership | User |
| Retryable | No |
Description
Thrown when a deployment is deleted while it still has live components running in one of its clusters; the message names the deployment and the clusterReference where resources remain. Before removing a deployment’s local entry, solo checks each attached cluster and refuses to proceed if it still hosts components (mirror node, relay, explorer, block node, or the consensus network), since deleting the entry would orphan those running workloads. Destroy the components first, then delete the deployment.
Troubleshooting Steps
- Destroy all components in the deployment before deleting it:
- solo mirror node destroy
- solo relay node destroy
- solo explorer node destroy
- solo block node destroy
- solo consensus network destroy
5 - SOLO-2005
DeploymentDeleteFailedError
| Code | SOLO-2005 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | Yes |
Description
Thrown when removing a deployment fails; the underlying failure is wrapped in cause. Deleting a deployment removes its entry from the local configuration and may reach into each attached cluster to clean up, so this is raised when that work cannot complete — most often because one of the deployment’s cluster references or its kubeconfig context is invalid or unreachable. It is retryable, since a transient connectivity problem often clears on a later attempt once the contexts are reachable again.
Troubleshooting Steps
- Check logs for details: tail -n 100 ~/.solo/logs/solo.log
- Verify cluster references and their contexts are valid: solo cluster-ref config list
6 - SOLO-2006
ClusterAddFailedError
| Code | SOLO-2006 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | Yes |
Description
Thrown when attaching a cluster to a deployment fails; the underlying failure is wrapped in cause. Attaching binds a registered cluster reference (and its kubeconfig context) to the deployment so components can be placed there, so this is raised when that step cannot complete — commonly because the cluster reference has not been created/connected yet, the kubeconfig context does not exist, or the cluster is unreachable. It is retryable, since a transient connectivity issue often clears once the reference and context are valid.
Troubleshooting Steps
- Verify the cluster context exists: kubectl config get-contexts
- Make sure the cluster reference is created: cluster-ref config connect
- Check logs for details: tail -n 100 ~/.solo/logs/solo.log
7 - SOLO-2007
DeploymentListFailedError
| Code | SOLO-2007 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | Yes |
Description
Thrown when solo deployment config list cannot enumerate the configured deployments; the underlying failure is wrapped in cause. Listing reads the deployment entries from the local configuration and may consult the clusters they reference, so this is raised when that read fails — for example the local config could not be read or parsed, or a referenced cluster could not be queried. It is retryable because transient filesystem or cluster issues often resolve on a later attempt.
Troubleshooting Steps
- Check logs for details: tail -n 100 ~/.solo/logs/solo.log
8 - SOLO-2008
ClusterReferenceNotFoundError
| Code | SOLO-2008 |
| Category | Deployment |
| Ownership | User |
| Retryable | No |
Description
Thrown when a command refers to a cluster reference that is not registered in the local configuration; the message names the missing reference. A cluster reference is the named link between solo and a kubeconfig context, created with solo cluster-ref config connect, so this is raised when the supplied name was never connected, was misspelled, or was disconnected. Connect the cluster reference (or correct the name) before retrying.
Troubleshooting Steps
- List available cluster references: solo cluster-ref config list
- Connect a cluster: solo cluster-ref config connect
9 - SOLO-2009
ClusterReferenceAlreadyExistsError
| Code | SOLO-2009 |
| Category | Deployment |
| Ownership | User |
| Retryable | No |
Description
Thrown when a cluster reference that is already attached to the deployment is added again; the message names the duplicate reference. solo keeps each cluster reference attached to a deployment at most once, so it rejects a second add rather than creating a conflicting duplicate entry. If you intend to re-add it (for example to change its binding), disconnect it first and then connect it again.
Troubleshooting Steps
- List current cluster references: solo cluster-ref config list
- Disconnect it first if you want to re-add it: solo cluster-ref config disconnect
10 - SOLO-2010
NamespaceNotSetError
| Code | SOLO-2010 |
| Category | Deployment |
| Ownership | User |
| Retryable | No |
Description
Thrown when a command needs a target Kubernetes namespace but none could be resolved. solo determines the namespace from the --namespace flag or from the selected deployment’s configuration, so this is raised when neither is available — the flag was not passed and the deployment has no namespace recorded. Supply --namespace, or select a deployment whose configuration defines one.
Troubleshooting Steps
- Ensure a namespace is specified: pass –namespace
to your command - Check deployment config: solo deployment config info –deployment
11 - SOLO-2011
NoClustersForDeploymentError
| Code | SOLO-2011 |
| Category | Deployment |
| Ownership | User |
| Retryable | No |
Description
Thrown when an operation targets a deployment that has no clusters attached; the message names the deployment. A deployment must have at least one cluster reference attached before solo can place or manage its components, so this is raised when the deployment exists but its cluster list is empty — typically because solo deployment cluster attach has not yet been run for it. Attach a cluster to the deployment before retrying.
Troubleshooting Steps
- Attach a cluster to the deployment: solo deployment cluster attach –deployment
12 - SOLO-2012
ClusterReferenceResolutionFailedError
| Code | SOLO-2012 |
| Category | Deployment |
| Ownership | Solo |
| Retryable | No |
Description
Thrown when solo cannot resolve which cluster reference a deployment should use; the message names the deployment. Internally a command expected the deployment to yield a single, unambiguous cluster reference (so it knows where to act) but the resolution returned nothing usable. While an unattached deployment is the visible trigger, this is classified as a Solo-owned error because the calling code should have ensured a cluster was attached before reaching this point — it points to a missing precondition in solo’s flow.
Troubleshooting Steps
- Verify the deployment has clusters attached: solo deployment config info
- Attach the cluster reference to the deployment: solo deployment cluster attach
13 - SOLO-2013
ContextNotFoundForClusterError
| Code | SOLO-2013 |
| Category | Deployment |
| Ownership | User |
| Retryable | No |
Description
Thrown when a cluster reference exists in the local configuration but has no kubeconfig context bound to it; the message names the cluster reference. solo needs the context to know which cluster the reference points at, so this is raised when the mapping is missing — usually because the reference was recorded without being connected to a context, or the binding was removed. Connect a kubeconfig context to the cluster reference before retrying.
Troubleshooting Steps
- Connect a kubeconfig context to the cluster: solo cluster-ref config connect
14 - SOLO-2014
NoDeploymentsFoundError
| Code | SOLO-2014 |
| Category | Deployment |
| Ownership | User |
| Retryable | No |
Description
Thrown when a command needs at least one deployment to act on but the local configuration contains none. solo stores every deployment in local config and several commands assume one already exists, so this is raised when that list is empty — typically because no deployment has been created yet, or because they were all deleted (or the active SOLO_HOME/local config does not contain any). Create a deployment before running the command.
Troubleshooting Steps
- Create a deployment: solo deployment config create
15 - SOLO-2015
DeploymentListPortsFailedError
| Code | SOLO-2015 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | Yes |
Description
Thrown when solo cannot enumerate the forwarded ports for a deployment; the underlying failure is wrapped in cause. Listing ports queries the Kubernetes API in the deployment’s namespace to discover the active port-forwards exposing its components, so this is raised when that query fails — typically because the cluster’s API server is unreachable or the namespace cannot be inspected. It is retryable, as a transient connectivity problem often clears on a later attempt.
Troubleshooting Steps
- Check logs for details: tail -n 100 ~/.solo/logs/solo.log
- Verify the Kubernetes API server is reachable: kubectl cluster-info
- List port-forwards in the namespace to check for any issues: kubectl get port-forwards -n
16 - SOLO-2016
ClusterSetupFailedSoloError
| Code | SOLO-2016 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown when solo cluster-ref config setup cannot install the cluster-level shared infrastructure that deployments depend on — the solo-cluster-setup chart and its components (Prometheus, MinIO, metrics-server, and the cluster role). It wraps the underlying failure (cause.message), which is most often a failed Helm release (bad chart version or values), an image that cannot be pulled, missing RBAC permissions on the target cluster, or a cluster that lacks the CPU/memory to schedule the new pods.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- List installed Helm releases: helm list -A
- Inspect cluster pods: kubectl get pods -A
- Re-run cluster setup: solo cluster-ref config setup
17 - SOLO-2017
ClusterResetFailedSoloError
| Code | SOLO-2017 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown when solo cluster-ref config reset cannot tear down the cluster-level resources that setup installed (the solo-cluster-setup chart and its components); the underlying failure is wrapped in cause. It means the uninstall did not complete cleanly — for example a Helm release could not be removed, or the cluster API was unreachable mid-reset — so some resources may still be present. Inspect the remaining Helm releases and pods to see what was left behind.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Inspect cluster state: kubectl get pods -A
- Check Helm releases still present: helm list -A
- Re-run cluster reset: solo cluster-ref config reset
18 - SOLO-2018
MinioInstallFailedSoloError
| Code | SOLO-2018 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown during cluster setup when the MinIO Operator Helm chart fails to install; the underlying failure is wrapped in cause. MinIO provides the S3-compatible object storage that solo’s cluster-level stack relies on, so its install is part of solo cluster-ref config setup. The failure is usually a Helm error (bad chart version or values), an image that cannot be pulled, or a cluster lacking the resources/connectivity to schedule the operator.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Inspect cluster state: kubectl get pods -A
- Check Helm release status: helm list -A
- Verify cluster connectivity: kubectl cluster-info
19 - SOLO-2019
PrometheusInstallFailedSoloError
| Code | SOLO-2019 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown during cluster setup when the Prometheus stack Helm chart fails to install; the underlying failure is wrapped in cause. The Prometheus stack supplies the monitoring and metrics collection for the cluster-level stack installed by solo cluster-ref config setup. The failure is typically a Helm error (bad chart version or values), an image that cannot be pulled, or a cluster without the resources/connectivity to schedule its pods.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Inspect cluster pods: kubectl get pods -A
- Check Helm release status: helm list -A
- Verify cluster connectivity: kubectl cluster-info
20 - SOLO-2020
MetricsServerInstallFailedSoloError
| Code | SOLO-2020 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown during cluster setup when the metrics-server Helm chart fails to install; the underlying failure is wrapped in cause. metrics-server provides the resource-usage metrics API the cluster-level stack depends on, installed as part of solo cluster-ref config setup. The failure is usually a Helm error (bad chart version or values), an image that cannot be pulled, or a cluster lacking the resources/connectivity to schedule the pod.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Inspect cluster pods: kubectl get pods -A
- Check Helm release status: helm list -A
- Verify cluster connectivity: kubectl cluster-info
21 - SOLO-2021
ClusterRoleInstallFailedSoloError
| Code | SOLO-2021 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown during cluster setup when the pod-monitor-role ClusterRole cannot be installed; the underlying failure is wrapped in cause. This ClusterRole grants the monitoring stack permission to scrape pods cluster-wide, so it is created as part of solo cluster-ref config setup. The failure most often means the current kubeconfig user lacks the RBAC permission to create ClusterRoles, but it can also stem from an API server that is unreachable or rejected the request.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Verify RBAC permissions: kubectl get clusterroles
- Inspect cluster state: kubectl get pods -A
22 - SOLO-2022
ClusterApiServerTimeoutSoloError
| Code | SOLO-2022 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | Yes |
Description
Thrown when a cluster’s Kubernetes API server does not become ready within the allowed number of attempts; the message names the context and the maxAttempts tried, and wraps the last failure in cause. solo polls the API server before proceeding so it does not act against a cluster that is still starting, and raises this once polling is exhausted. It is retryable because a cluster that is merely slow to come up (for example a Kind cluster still initialising) often becomes ready shortly after; a persistent failure points to a cluster that is down, unreachable, or pointed at by the wrong context.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Verify the cluster context is reachable: kubectl cluster-info –context
- Check cluster node status: kubectl get nodes
- Inspect cluster pods: kubectl get pods -A
23 - SOLO-2023
KindClusterNetworkSetupFailedSoloError
| Code | SOLO-2023 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown when solo cannot configure networking for a Kind cluster — either the Kind network setup itself or the MetalLB Helm repository configuration it depends on; the underlying failure is wrapped in cause. solo configures MetalLB so that LoadBalancer services in the local Kind cluster receive reachable addresses, and raises this when that setup fails. Common roots are Docker not running (Kind needs it), an unreachable or misconfigured Helm repository, or a problem with the Kind cluster’s Docker network.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Verify Docker is running: docker ps
- Check existing Kind clusters: kind get clusters
- Verify Helm repository access: helm repo list
24 - SOLO-2024
BackupExportFailedSoloError
| Code | SOLO-2024 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown during solo config ops backup when a particular resource cannot be exported into the backup; the message names the resourceType and wraps the underlying failure in cause. Backup reads each resource from the cluster and writes it to the backup archive, so this is raised when reading a resource or writing it out fails — for example the Kubernetes API is unreachable, the deployment or resource no longer exists, or the archive destination cannot be written.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Verify Kubernetes connectivity: kubectl get pods -A
- Check that the deployment exists: solo deployment config list
- Run backup again: solo config ops backup
25 - SOLO-2025
BackupImportFailedSoloError
| Code | SOLO-2025 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown during solo config ops restore-config when a particular resource cannot be imported from a backup; the message names the resourceType and wraps the underlying failure in cause. Restore reads each resource from the backup archive and applies it to the cluster, so this is raised when reading the archive entry or applying it fails — for example the backup archive is incomplete or corrupt, the resource is invalid, or the Kubernetes API is unreachable or rejected it.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Verify Kubernetes connectivity: kubectl get pods -A
- Verify the backup archive is complete and valid
- Run restore: solo config ops restore-config
26 - SOLO-2026
BackupRestoreClustersFailedSoloError
| Code | SOLO-2026 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown when solo config ops restore-clusters cannot recreate the clusters captured in a backup; the underlying failure is wrapped in cause. This step reads the backup archive and rebuilds the cluster(s) it describes (for example recreating a Kind cluster) before the rest of a restore can proceed, so the error means that rebuild failed. Common roots are an invalid or incomplete backup archive, an incorrect input directory, or Docker/Kind not being available to create the clusters.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Verify the backup archive is valid and the input directory is correct
- Check Docker or Kind cluster availability: kind get clusters
- Run cluster restore: solo config ops restore-clusters
27 - SOLO-2027
DeployNetworkFailedSoloError
| Code | SOLO-2027 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown when solo consensus network deploy cannot bring up the consensus network; the underlying failure is wrapped in cause. This step installs the solo-deployment Helm chart that creates the consensus node pods and their supporting services, so the error means that install did not succeed. Typical roots are a Helm release failure (bad chart version or values), an image that cannot be pulled, insufficient cluster resources to schedule the nodes, or a loss of connectivity to the cluster during the deploy.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Inspect consensus node pods: kubectl get pods -A
- Check Helm release status: helm list -A
- Verify cluster connectivity: kubectl cluster-info
28 - SOLO-2028
InitFailedSoloError
| Code | SOLO-2028 |
| Category | Deployment |
| Ownership | Infrastructure |
| Retryable | No |
Description
Thrown when solo init cannot complete the one-time setup it performs before other commands can run; when a cause is available its message is appended. solo init prepares the local environment — creating the ~/.solo working directory and verifying or installing the required external tools (kubectl, helm, kind, docker). This error means one of those steps failed, most often because a prerequisite is missing or could not be installed, or the working directory could not be created.
Troubleshooting Steps
- Check solo logs: tail -n 100 ~/.solo/logs/solo.log
- Verify all prerequisites are installed (kubectl, helm, kind, docker)
- Re-run initialization: solo init
29 - SOLO-2029
BlockNodeClusterContextNotFoundSoloError
| Code | SOLO-2029 |
| Category | Deployment |
| Ownership | User |
| Retryable | No |
Description
Thrown when solo needs to act on a block node but cannot determine which cluster (kubeconfig context) it lives in; the message names the blockNodeId. solo maps each block node to a registered cluster reference to find the context for its operations, so this is raised when no such mapping resolves — typically because the block node is not associated with a registered cluster reference, or the referenced cluster is missing from the deployment configuration.
Troubleshooting Steps
- List registered cluster references: solo cluster-ref config list
- Verify the block node is associated with a registered cluster
- Check deployment configuration: solo deployment config info
30 - SOLO-2030
MirrorNodeClusterContextNotFoundSoloError
| Code | SOLO-2030 |
| Category | Deployment |
| Ownership | User |
| Retryable | No |
Description
Thrown when solo needs to act on a mirror node but cannot determine which cluster (kubeconfig context) it lives in; the message names the mirrorNodeId. solo maps each mirror node to a registered cluster reference to find the context for its operations, so this is raised when no such mapping resolves — typically because the mirror node is not associated with a registered cluster reference, or the referenced cluster is missing from the deployment configuration.
Troubleshooting Steps
- List registered cluster references: solo cluster-ref config list
- Verify the mirror node is associated with a registered cluster
- Check deployment configuration: solo deployment config info