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