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 ErrExecOutputExceeded = errors.New("container exec output exceeds maximum")
39
40 // Network errors
41 ErrNetworkNotFound = errors.New("network not found")
42 ErrNetworkExists = errors.New("network already exists")
43
44 // Volume errors
45 ErrVolumeNotFound = errors.New("volume not found")
46 ErrVolumeExists = errors.New("volume already exists")
47 ErrVolumeBackupUnavailable = errors.New("volume backup service unavailable")
48 ErrVolumeOwnershipUnverified = errors.New("volume ownership cannot be verified")
49
50 // Preview errors
51 ErrPreviewNotFound = errors.New("preview not found")
52
53 // Config errors
54 ErrTrafficGraphRequired = errors.New("traffic graph is required")
55 ErrClientHelloTooLarge = errors.New("client hello exceeds maximum")
56 ErrConfigNotFound = errors.New("configuration not found")
57 ErrInvalidConfig = errors.New("invalid configuration")
58 ErrConfigLoadFailed = errors.New("failed to load configuration")
59 ErrInvalidDomainPattern = errors.New("invalid domain pattern")
60 ErrRouteConflict = errors.New("route conflicts with existing configuration")
61
62 // Environment errors
63 ErrEnvFileNotFound = errors.New("environment file not found")
64 ErrSecretNotFound = errors.New("secret not found")
65 ErrSecretsAlreadyExist = errors.New("secrets already exist")
66 ErrProviderNotFound = errors.New("secret provider not found")
67 ErrInvalidContainerName = errors.New("invalid container name")
68 ErrAttachmentOwnershipMismatch = errors.New("attachment ownership mismatch")
69 ErrReadinessLogSizeExceeded = errors.New("readiness log exceeds maximum")
70
71 // Authentication errors
72 ErrInvalidToken = errors.New("invalid token")
73 ErrExpiredToken = errors.New("token has expired")
74 ErrRevokedToken = errors.New("token has been revoked")
75 ErrInvalidCredentials = errors.New("invalid credentials")
76 ErrTokenNotFound = errors.New("token not found")
77
78 // Security errors
79 ErrPathTraversal = errors.New("path traversal not allowed")
80 ErrInvalidPath = errors.New("invalid path format")
81 ErrInsufficientScope = errors.New("insufficient scope for operation")
82 ErrInvalidScope = errors.New("invalid scope format")
83 ErrSSRFBlocked = errors.New("request to internal/blocked network not allowed")
84 ErrInvalidEnvKey = errors.New("invalid environment variable key")
85 ErrEnvContainsSecretRef = errors.New("environment file contains secret reference")
86 ErrLongLivedToken = errors.New("long-lived tokens must be exchanged via /auth/token")
87
88 // Remote errors
89 ErrEmptyRemoteName = errors.New("remote name must not be empty")
90 ErrInvalidRemoteNameChar = errors.New("remote name contains invalid characters")
91 ErrConsecutiveDots = errors.New("remote name must not contain consecutive dots")
92 ErrPassUnavailable = errors.New("pass is not available")
93 ErrRemoteNotFound = errors.New("remote not found")
94
95 // Attachment errors
96 ErrAttachmentNotFound = errors.New("attachment not found")
97 ErrAttachmentExists = errors.New("attachment already exists")
98 ErrAttachmentImageEmpty = errors.New("attachment image cannot be empty")
99 ErrAttachmentTargetEmpty = errors.New("attachment target (domain or group) cannot be empty")
100 ErrAttachmentNotDeployed = errors.New("configured attachment is not deployed; run gordon deploy to create it")
101
102 // TLS / ACME errors
103 ErrACMEDisabled = errors.New("acme disabled")
104 ErrACMEEmailRequired = errors.New("acme email required")
105 ErrACMEChallengeInvalid = errors.New("acme challenge invalid")
106 ErrDNSConfigInvalid = errors.New("dns configuration invalid")
107 ErrCloudflareTokenMissing = errors.New("cloudflare api token missing")
108 ErrCertificateStoreRequired = errors.New("certificate store required")
109 ErrCertificateIssuerRequired = errors.New("certificate issuer required")
110 ErrRouteSourceRequired = errors.New("route source required")
111 ErrHTTPChallengeSinkRequired = errors.New("http challenge sink required")
112 ErrTLSRouteNotCovered = errors.New("tls route not covered by public certificate")
113
114 // Traffic errors
115 ErrTrafficStatusUnavailable = errors.New("traffic status unavailable")
116)