errors.go RawHistoryFolder
1package domain
2
3import "errors"
4
5// Domain errors represent business-level errors that can occur in the system.
6// These errors are used across layers to communicate specific failure conditions.
7var (
8 // Container errors
9 ErrContainerNotFound = errors.New("container not found")
10 ErrContainerExists = errors.New("container already exists")
11 ErrContainerNotRunning = errors.New("container is not running")
12 ErrContainerRunning = errors.New("container is already running")
13 ErrContainerExited = errors.New("container exited")
14
15 // Image errors
16 ErrImageNotFound = errors.New("image not found")
17 ErrImagePullFailed = errors.New("failed to pull image")
18 ErrInvalidImageFormat = errors.New("invalid image format")
19
20 // Route errors
21 ErrRouteNotFound = errors.New("route not found")
22 ErrRouteExists = errors.New("route already exists")
23 ErrInvalidRoute = errors.New("invalid route configuration")
24 ErrNoRouteForImage = errors.New("no route configured for image")
25 ErrRouteDomainEmpty = errors.New("route domain cannot be empty")
26 ErrRouteImageEmpty = errors.New("route image cannot be empty")
27 ErrRouteDomainInvalid = errors.New("route domain is not a valid public hostname")
28 ErrNoTargetAvailable = errors.New("no target available for route")
29
30 // Registry errors
31 ErrManifestNotFound = errors.New("manifest not found")
32 ErrBlobNotFound = errors.New("blob not found")
33 ErrUploadNotFound = errors.New("upload not found")
34 ErrInvalidDigest = errors.New("invalid digest")
35 ErrDigestMismatch = errors.New("digest mismatch")
36 ErrUnauthorized = errors.New("unauthorized")
37 ErrBlobSizeExceeded = errors.New("blob size exceeds maximum")
38
39 // Network errors
40 ErrNetworkNotFound = errors.New("network not found")
41 ErrNetworkExists = errors.New("network already exists")
42
43 // Volume errors
44 ErrVolumeNotFound = errors.New("volume not found")
45 ErrVolumeExists = errors.New("volume already exists")
46 ErrVolumeBackupUnavailable = errors.New("volume backup service unavailable")
47
48 // Preview errors
49 ErrPreviewNotFound = errors.New("preview not found")
50
51 // Config errors
52 ErrTrafficGraphRequired = errors.New("traffic graph is required")
53 ErrClientHelloTooLarge = errors.New("client hello exceeds maximum")
54 ErrConfigNotFound = errors.New("configuration not found")
55 ErrInvalidConfig = errors.New("invalid configuration")
56 ErrConfigLoadFailed = errors.New("failed to load configuration")
57 ErrInvalidDomainPattern = errors.New("invalid domain pattern")
58 ErrRouteConflict = errors.New("route conflicts with existing configuration")
59
60 // Environment errors
61 ErrEnvFileNotFound = errors.New("environment file not found")
62 ErrSecretNotFound = errors.New("secret not found")
63 ErrSecretsAlreadyExist = errors.New("secrets already exist")
64 ErrProviderNotFound = errors.New("secret provider not found")
65 ErrInvalidContainerName = errors.New("invalid container name")
66
67 // Authentication errors
68 ErrInvalidToken = errors.New("invalid token")
69 ErrExpiredToken = errors.New("token has expired")
70 ErrRevokedToken = errors.New("token has been revoked")
71 ErrInvalidCredentials = errors.New("invalid credentials")
72 ErrTokenNotFound = errors.New("token not found")
73
74 // Security errors
75 ErrPathTraversal = errors.New("path traversal not allowed")
76 ErrInvalidPath = errors.New("invalid path format")
77 ErrInsufficientScope = errors.New("insufficient scope for operation")
78 ErrInvalidScope = errors.New("invalid scope format")
79 ErrSSRFBlocked = errors.New("request to internal/blocked network not allowed")
80 ErrInvalidEnvKey = errors.New("invalid environment variable key")
81 ErrEnvContainsSecretRef = errors.New("environment file contains secret reference")
82 ErrLongLivedToken = errors.New("long-lived tokens must be exchanged via /auth/token")
83
84 // Remote errors
85 ErrEmptyRemoteName = errors.New("remote name must not be empty")
86 ErrInvalidRemoteNameChar = errors.New("remote name contains invalid characters")
87 ErrConsecutiveDots = errors.New("remote name must not contain consecutive dots")
88 ErrPassUnavailable = errors.New("pass is not available")
89 ErrRemoteNotFound = errors.New("remote not found")
90
91 // Attachment errors
92 ErrAttachmentNotFound = errors.New("attachment not found")
93 ErrAttachmentExists = errors.New("attachment already exists")
94 ErrAttachmentImageEmpty = errors.New("attachment image cannot be empty")
95 ErrAttachmentTargetEmpty = errors.New("attachment target (domain or group) cannot be empty")
96 ErrAttachmentNotDeployed = errors.New("configured attachment is not deployed; run gordon deploy to create it")
97
98 // TLS / ACME errors
99 ErrACMEDisabled = errors.New("acme disabled")
100 ErrACMEEmailRequired = errors.New("acme email required")
101 ErrACMEChallengeInvalid = errors.New("acme challenge invalid")
102 ErrDNSConfigInvalid = errors.New("dns configuration invalid")
103 ErrCloudflareTokenMissing = errors.New("cloudflare api token missing")
104 ErrCertificateStoreRequired = errors.New("certificate store required")
105 ErrCertificateIssuerRequired = errors.New("certificate issuer required")
106 ErrRouteSourceRequired = errors.New("route source required")
107 ErrHTTPChallengeSinkRequired = errors.New("http challenge sink required")
108 ErrTLSRouteNotCovered = errors.New("tls route not covered by public certificate")
109
110 // Traffic errors
111 ErrTrafficStatusUnavailable = errors.New("traffic status unavailable")
112)