@kadi.build/deploy-ability 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +523 -0
- package/dist/constants.d.ts +82 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +82 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors/certificate-error.d.ts +95 -0
- package/dist/errors/certificate-error.d.ts.map +1 -0
- package/dist/errors/certificate-error.js +111 -0
- package/dist/errors/certificate-error.js.map +1 -0
- package/dist/errors/deployment-error.d.ts +122 -0
- package/dist/errors/deployment-error.d.ts.map +1 -0
- package/dist/errors/deployment-error.js +185 -0
- package/dist/errors/deployment-error.js.map +1 -0
- package/dist/errors/index.d.ts +13 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +18 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/profile-error.d.ts +106 -0
- package/dist/errors/profile-error.d.ts.map +1 -0
- package/dist/errors/profile-error.js +127 -0
- package/dist/errors/profile-error.js.map +1 -0
- package/dist/errors/provider-error.d.ts +104 -0
- package/dist/errors/provider-error.d.ts.map +1 -0
- package/dist/errors/provider-error.js +120 -0
- package/dist/errors/provider-error.js.map +1 -0
- package/dist/errors/wallet-error.d.ts +131 -0
- package/dist/errors/wallet-error.d.ts.map +1 -0
- package/dist/errors/wallet-error.js +154 -0
- package/dist/errors/wallet-error.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/targets/akash/bid-selectors.d.ts +251 -0
- package/dist/targets/akash/bid-selectors.d.ts.map +1 -0
- package/dist/targets/akash/bid-selectors.js +322 -0
- package/dist/targets/akash/bid-selectors.js.map +1 -0
- package/dist/targets/akash/bid-types.d.ts +297 -0
- package/dist/targets/akash/bid-types.d.ts.map +1 -0
- package/dist/targets/akash/bid-types.js +89 -0
- package/dist/targets/akash/bid-types.js.map +1 -0
- package/dist/targets/akash/blockchain-client.d.ts +577 -0
- package/dist/targets/akash/blockchain-client.d.ts.map +1 -0
- package/dist/targets/akash/blockchain-client.js +803 -0
- package/dist/targets/akash/blockchain-client.js.map +1 -0
- package/dist/targets/akash/certificate-manager.d.ts +228 -0
- package/dist/targets/akash/certificate-manager.d.ts.map +1 -0
- package/dist/targets/akash/certificate-manager.js +395 -0
- package/dist/targets/akash/certificate-manager.js.map +1 -0
- package/dist/targets/akash/constants.d.ts +231 -0
- package/dist/targets/akash/constants.d.ts.map +1 -0
- package/dist/targets/akash/constants.js +225 -0
- package/dist/targets/akash/constants.js.map +1 -0
- package/dist/targets/akash/deployer.d.ts +136 -0
- package/dist/targets/akash/deployer.d.ts.map +1 -0
- package/dist/targets/akash/deployer.js +599 -0
- package/dist/targets/akash/deployer.js.map +1 -0
- package/dist/targets/akash/environment.d.ts +241 -0
- package/dist/targets/akash/environment.d.ts.map +1 -0
- package/dist/targets/akash/environment.js +245 -0
- package/dist/targets/akash/environment.js.map +1 -0
- package/dist/targets/akash/index.d.ts +1113 -0
- package/dist/targets/akash/index.d.ts.map +1 -0
- package/dist/targets/akash/index.js +909 -0
- package/dist/targets/akash/index.js.map +1 -0
- package/dist/targets/akash/lease-monitor.d.ts +51 -0
- package/dist/targets/akash/lease-monitor.d.ts.map +1 -0
- package/dist/targets/akash/lease-monitor.js +110 -0
- package/dist/targets/akash/lease-monitor.js.map +1 -0
- package/dist/targets/akash/logs.d.ts +71 -0
- package/dist/targets/akash/logs.d.ts.map +1 -0
- package/dist/targets/akash/logs.js +311 -0
- package/dist/targets/akash/logs.js.map +1 -0
- package/dist/targets/akash/logs.types.d.ts +102 -0
- package/dist/targets/akash/logs.types.d.ts.map +1 -0
- package/dist/targets/akash/logs.types.js +9 -0
- package/dist/targets/akash/logs.types.js.map +1 -0
- package/dist/targets/akash/pricing.d.ts +247 -0
- package/dist/targets/akash/pricing.d.ts.map +1 -0
- package/dist/targets/akash/pricing.js +246 -0
- package/dist/targets/akash/pricing.js.map +1 -0
- package/dist/targets/akash/provider-client.d.ts +114 -0
- package/dist/targets/akash/provider-client.d.ts.map +1 -0
- package/dist/targets/akash/provider-client.js +318 -0
- package/dist/targets/akash/provider-client.js.map +1 -0
- package/dist/targets/akash/provider-metadata.d.ts +228 -0
- package/dist/targets/akash/provider-metadata.d.ts.map +1 -0
- package/dist/targets/akash/provider-metadata.js +14 -0
- package/dist/targets/akash/provider-metadata.js.map +1 -0
- package/dist/targets/akash/provider-service.d.ts +133 -0
- package/dist/targets/akash/provider-service.d.ts.map +1 -0
- package/dist/targets/akash/provider-service.js +391 -0
- package/dist/targets/akash/provider-service.js.map +1 -0
- package/dist/targets/akash/query-client.d.ts +125 -0
- package/dist/targets/akash/query-client.d.ts.map +1 -0
- package/dist/targets/akash/query-client.js +332 -0
- package/dist/targets/akash/query-client.js.map +1 -0
- package/dist/targets/akash/sdl-generator.d.ts +31 -0
- package/dist/targets/akash/sdl-generator.d.ts.map +1 -0
- package/dist/targets/akash/sdl-generator.js +279 -0
- package/dist/targets/akash/sdl-generator.js.map +1 -0
- package/dist/targets/akash/types.d.ts +285 -0
- package/dist/targets/akash/types.d.ts.map +1 -0
- package/dist/targets/akash/types.js +54 -0
- package/dist/targets/akash/types.js.map +1 -0
- package/dist/targets/akash/wallet-manager.d.ts +526 -0
- package/dist/targets/akash/wallet-manager.d.ts.map +1 -0
- package/dist/targets/akash/wallet-manager.js +953 -0
- package/dist/targets/akash/wallet-manager.js.map +1 -0
- package/dist/targets/local/compose-generator.d.ts +244 -0
- package/dist/targets/local/compose-generator.d.ts.map +1 -0
- package/dist/targets/local/compose-generator.js +324 -0
- package/dist/targets/local/compose-generator.js.map +1 -0
- package/dist/targets/local/deployer.d.ts +82 -0
- package/dist/targets/local/deployer.d.ts.map +1 -0
- package/dist/targets/local/deployer.js +367 -0
- package/dist/targets/local/deployer.js.map +1 -0
- package/dist/targets/local/engine-manager.d.ts +155 -0
- package/dist/targets/local/engine-manager.d.ts.map +1 -0
- package/dist/targets/local/engine-manager.js +250 -0
- package/dist/targets/local/engine-manager.js.map +1 -0
- package/dist/targets/local/index.d.ts +40 -0
- package/dist/targets/local/index.d.ts.map +1 -0
- package/dist/targets/local/index.js +43 -0
- package/dist/targets/local/index.js.map +1 -0
- package/dist/targets/local/network-manager.d.ts +160 -0
- package/dist/targets/local/network-manager.d.ts.map +1 -0
- package/dist/targets/local/network-manager.js +337 -0
- package/dist/targets/local/network-manager.js.map +1 -0
- package/dist/targets/local/types.d.ts +327 -0
- package/dist/targets/local/types.d.ts.map +1 -0
- package/dist/targets/local/types.js +9 -0
- package/dist/targets/local/types.js.map +1 -0
- package/dist/types/common.d.ts +585 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +13 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/options.d.ts +329 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +10 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/profiles.d.ts +329 -0
- package/dist/types/profiles.d.ts.map +1 -0
- package/dist/types/profiles.js +27 -0
- package/dist/types/profiles.js.map +1 -0
- package/dist/types/results.d.ts +443 -0
- package/dist/types/results.d.ts.map +1 -0
- package/dist/types/results.js +64 -0
- package/dist/types/results.js.map +1 -0
- package/dist/types/validators.d.ts +118 -0
- package/dist/types/validators.d.ts.map +1 -0
- package/dist/types/validators.js +198 -0
- package/dist/types/validators.js.map +1 -0
- package/dist/utils/command-runner.d.ts +128 -0
- package/dist/utils/command-runner.d.ts.map +1 -0
- package/dist/utils/command-runner.js +210 -0
- package/dist/utils/command-runner.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +68 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +93 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/profile-loader.d.ts +76 -0
- package/dist/utils/profile-loader.d.ts.map +1 -0
- package/dist/utils/profile-loader.js +194 -0
- package/dist/utils/profile-loader.js.map +1 -0
- package/dist/utils/registry/index.d.ts +27 -0
- package/dist/utils/registry/index.d.ts.map +1 -0
- package/dist/utils/registry/index.js +29 -0
- package/dist/utils/registry/index.js.map +1 -0
- package/dist/utils/registry/manager.d.ts +319 -0
- package/dist/utils/registry/manager.d.ts.map +1 -0
- package/dist/utils/registry/manager.js +671 -0
- package/dist/utils/registry/manager.js.map +1 -0
- package/dist/utils/registry/setup.d.ts +135 -0
- package/dist/utils/registry/setup.d.ts.map +1 -0
- package/dist/utils/registry/setup.js +207 -0
- package/dist/utils/registry/setup.js.map +1 -0
- package/dist/utils/registry/transformer.d.ts +92 -0
- package/dist/utils/registry/transformer.d.ts.map +1 -0
- package/dist/utils/registry/transformer.js +131 -0
- package/dist/utils/registry/transformer.js.map +1 -0
- package/dist/utils/registry/types.d.ts +241 -0
- package/dist/utils/registry/types.d.ts.map +1 -0
- package/dist/utils/registry/types.js +10 -0
- package/dist/utils/registry/types.js.map +1 -0
- package/docs/EXAMPLES.md +293 -0
- package/docs/PLACEMENT.md +433 -0
- package/docs/STORAGE.md +318 -0
- package/docs/building-provider-reliability-tracker.md +2581 -0
- package/package.json +109 -0
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Temporary Container Registry Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages a temporary container registry for making local Docker images accessible
|
|
5
|
+
* to Akash providers during deployment. Wraps the TunneledContainerRegistry from
|
|
6
|
+
* @kadi.build/container-registry-ability with deployment-specific logic.
|
|
7
|
+
*
|
|
8
|
+
* **Core Responsibilities:**
|
|
9
|
+
* - Start/stop temporary registry with public tunnel
|
|
10
|
+
* - Detect which images exist locally vs remotely
|
|
11
|
+
* - Push local images to temporary registry
|
|
12
|
+
* - Track image → registry URL mappings
|
|
13
|
+
* - Provide credentials for SDL generation
|
|
14
|
+
*
|
|
15
|
+
* @module utils/registry/manager
|
|
16
|
+
*/
|
|
17
|
+
import type { DeploymentLogger } from '../../types/common.js';
|
|
18
|
+
import type { AkashDeploymentProfile } from '../../types/profiles.js';
|
|
19
|
+
import type { RegistryCredentials, RegistryOptions } from './types.js';
|
|
20
|
+
/**
|
|
21
|
+
* Temporary Container Registry Manager
|
|
22
|
+
*
|
|
23
|
+
* Manages the lifecycle of a temporary container registry that makes local images
|
|
24
|
+
* accessible to Akash providers. This class handles starting the registry, detecting
|
|
25
|
+
* local images, pushing them, and tracking URL transformations.
|
|
26
|
+
*
|
|
27
|
+
* **Typical Workflow:**
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const manager = new TemporaryContainerRegistryManager(logger);
|
|
30
|
+
*
|
|
31
|
+
* // 1. Start registry
|
|
32
|
+
* await manager.startTemporaryRegistry({
|
|
33
|
+
* tunnelService: 'serveo',
|
|
34
|
+
* containerEngine: 'docker'
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* // 2. Add local images from profile
|
|
38
|
+
* await manager.addLocalImagesToTemporaryRegistry(profile, 'docker');
|
|
39
|
+
*
|
|
40
|
+
* // 3. Get transformed image URLs
|
|
41
|
+
* const url = manager.getPublicImageUrl('frontend', 'my-app:latest');
|
|
42
|
+
*
|
|
43
|
+
* // 4. Get credentials for SDL
|
|
44
|
+
* const creds = manager.getRegistryCredentials();
|
|
45
|
+
*
|
|
46
|
+
* // 5. Stop registry when done
|
|
47
|
+
* await manager.stopTemporaryRegistry();
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare class TemporaryContainerRegistryManager {
|
|
51
|
+
private logger;
|
|
52
|
+
private registry;
|
|
53
|
+
private registryInfo;
|
|
54
|
+
/**
|
|
55
|
+
* Maps original image names to their public registry URLs
|
|
56
|
+
*
|
|
57
|
+
* Key: Original image name (e.g., "my-app:latest")
|
|
58
|
+
* Value: Container mapping with registry URL and metadata
|
|
59
|
+
*/
|
|
60
|
+
private containerMappings;
|
|
61
|
+
/**
|
|
62
|
+
* Create a new registry manager
|
|
63
|
+
*
|
|
64
|
+
* @param logger - Logger for progress and error messages
|
|
65
|
+
*/
|
|
66
|
+
constructor(logger: DeploymentLogger);
|
|
67
|
+
/**
|
|
68
|
+
* Start temporary registry with public tunnel
|
|
69
|
+
*
|
|
70
|
+
* Creates a local container registry on the specified port and exposes it publicly
|
|
71
|
+
* via a tunnel service (ngrok, serveo, or bore). The registry is used to make
|
|
72
|
+
* local Docker images accessible to Akash providers during deployment.
|
|
73
|
+
*
|
|
74
|
+
* **What This Does:**
|
|
75
|
+
* 1. Loads environment variables (.env) for tunnel configuration
|
|
76
|
+
* 2. Starts local registry container on specified port
|
|
77
|
+
* 3. Creates public tunnel (ngrok/serveo/bore)
|
|
78
|
+
* 4. Generates authentication credentials
|
|
79
|
+
* 5. Returns when registry is accessible
|
|
80
|
+
*
|
|
81
|
+
* **Tunnel Services:**
|
|
82
|
+
* - **ngrok**: Most reliable, requires auth token (NGROK_AUTH_TOKEN env var)
|
|
83
|
+
* - **serveo**: Free SSH-based tunnel, no signup required
|
|
84
|
+
* - **bore**: Modern alternative using bore.pub
|
|
85
|
+
*
|
|
86
|
+
* @param options - Configuration options for registry and tunnel
|
|
87
|
+
* @throws Error if registry fails to start or tunnel cannot be established
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* await manager.startTemporaryRegistry({
|
|
92
|
+
* port: 3000,
|
|
93
|
+
* tunnelService: 'serveo',
|
|
94
|
+
* containerEngine: 'docker',
|
|
95
|
+
* registryDuration: 600000, // 10 minutes
|
|
96
|
+
* autoShutdown: false
|
|
97
|
+
* });
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
startTemporaryRegistry(options: RegistryOptions): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Display registry access information including domain and credentials
|
|
103
|
+
*
|
|
104
|
+
* Logs registry connection details for debugging purposes.
|
|
105
|
+
* Only logs if debug logging is enabled (DEBUG=deploy-ability:registry).
|
|
106
|
+
*/
|
|
107
|
+
private displayRegistryAccessInformation;
|
|
108
|
+
/**
|
|
109
|
+
* Check if a container image exists locally
|
|
110
|
+
*
|
|
111
|
+
* Uses `docker images -q` or `podman images -q` to check if an image exists
|
|
112
|
+
* in the local container engine. This is the ground truth for whether we need
|
|
113
|
+
* to add an image to the temporary registry.
|
|
114
|
+
*
|
|
115
|
+
* **Why This Works:**
|
|
116
|
+
* - Returns image hash if image exists locally
|
|
117
|
+
* - Returns empty string if image doesn't exist
|
|
118
|
+
* - Works for both tagged and untagged images
|
|
119
|
+
* - Handles shorthand names correctly (e.g., "nginx" vs "docker.io/library/nginx")
|
|
120
|
+
*
|
|
121
|
+
* **Reality-Based Detection:**
|
|
122
|
+
* Instead of guessing based on image name patterns (checking for "/" in the name),
|
|
123
|
+
* we check the actual state of the local container engine. This prevents false
|
|
124
|
+
* positives and false negatives.
|
|
125
|
+
*
|
|
126
|
+
* @param imageName - Full image name with tag (e.g., "my-app:latest")
|
|
127
|
+
* @param engine - Container engine to use
|
|
128
|
+
* @returns True if image exists locally, false otherwise
|
|
129
|
+
*/
|
|
130
|
+
private checkImageExistsLocally;
|
|
131
|
+
/**
|
|
132
|
+
* Add local images from deployment profile to the temporary registry
|
|
133
|
+
*
|
|
134
|
+
* **Simplified Logic (Reality-Based Detection):**
|
|
135
|
+
*
|
|
136
|
+
* Instead of guessing if an image is "local" based on name patterns (like checking
|
|
137
|
+
* if it has "/" in the name), we simply check if the image actually exists locally
|
|
138
|
+
* using `docker images -q <image>`.
|
|
139
|
+
*
|
|
140
|
+
* **This approach:**
|
|
141
|
+
* 1. Is more accurate (checks reality, not heuristics)
|
|
142
|
+
* 2. Is simpler (one check instead of multiple conditions)
|
|
143
|
+
* 3. Handles edge cases automatically:
|
|
144
|
+
* - Docker Hub shorthand ("nginx" → exists remotely, not locally)
|
|
145
|
+
* - Custom registries with default namespaces
|
|
146
|
+
* - Images that "look local" but are actually remote
|
|
147
|
+
*
|
|
148
|
+
* **Decision Flow:**
|
|
149
|
+
* - Image exists locally → Add to temporary registry and make publicly accessible
|
|
150
|
+
* - Image doesn't exist locally → Treat as remote reference (don't add to registry)
|
|
151
|
+
*
|
|
152
|
+
* **Why This Works:**
|
|
153
|
+
* The temporary registry is ONLY needed for images that exist locally but need to
|
|
154
|
+
* be made publicly accessible to Akash providers. If an image doesn't exist locally,
|
|
155
|
+
* either:
|
|
156
|
+
* - It's a remote image (providers can pull it directly)
|
|
157
|
+
* - It doesn't exist anywhere (deployment will fail later with clear error)
|
|
158
|
+
*
|
|
159
|
+
* @param profile - Deployment profile containing services with images
|
|
160
|
+
* @param containerEngine - Container engine to use for operations
|
|
161
|
+
* @throws Error if a required local image cannot be added to registry
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```typescript
|
|
165
|
+
* await manager.addLocalImagesToTemporaryRegistry(profile, 'docker');
|
|
166
|
+
* // Checks each service image, adds local ones to registry
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
addLocalImagesToTemporaryRegistry(profile: AkashDeploymentProfile, containerEngine: 'docker' | 'podman'): Promise<void>;
|
|
170
|
+
/**
|
|
171
|
+
* Intelligent container addition with fallback strategies
|
|
172
|
+
*
|
|
173
|
+
* Tries multiple strategies to add a container image to the registry:
|
|
174
|
+
* 1. **Strategy 1**: Load from tar file (from kadi-build export cache)
|
|
175
|
+
* 2. **Strategy 2**: Load from container engine (docker/podman)
|
|
176
|
+
* 3. **Failure**: Show helpful error with suggestions
|
|
177
|
+
*
|
|
178
|
+
* **Why Multiple Strategies:**
|
|
179
|
+
* - Tar files are faster and don't require container engine running
|
|
180
|
+
* - Container engine is the fallback if tar file not available
|
|
181
|
+
* - Provides clear guidance if both fail
|
|
182
|
+
*
|
|
183
|
+
* @param imageName - Full image name with tag
|
|
184
|
+
* @param serviceName - Service name from profile
|
|
185
|
+
* @param containerEngine - Container engine to use
|
|
186
|
+
* @returns Container mapping with registry URL
|
|
187
|
+
* @throws Error if image cannot be added with any strategy
|
|
188
|
+
*/
|
|
189
|
+
private addContainerIntelligently;
|
|
190
|
+
/**
|
|
191
|
+
* Create container mapping for registry URLs
|
|
192
|
+
*
|
|
193
|
+
* Transforms a local image reference into a complete registry URL mapping
|
|
194
|
+
* that can be used in SDL generation. Includes service name tracking for
|
|
195
|
+
* better debugging and error messages.
|
|
196
|
+
*
|
|
197
|
+
* @param originalImage - Original image name from agent.json (e.g., "my-app")
|
|
198
|
+
* @param serviceName - Service name from profile (e.g., "frontend")
|
|
199
|
+
* @param containerInfo - Container info from registry with alias
|
|
200
|
+
* @param repoName - Repository name extracted from image
|
|
201
|
+
* @param imageTag - Image tag (e.g., "latest")
|
|
202
|
+
* @returns Complete container mapping with registry URL
|
|
203
|
+
*/
|
|
204
|
+
private createContainerMapping;
|
|
205
|
+
/**
|
|
206
|
+
* Get public image URL for a specific service
|
|
207
|
+
*
|
|
208
|
+
* This is the key method that SDL generator calls to get the transformed
|
|
209
|
+
* registry URL for a local image.
|
|
210
|
+
*
|
|
211
|
+
* **Returns null if:**
|
|
212
|
+
* - Image is not local (no mapping exists)
|
|
213
|
+
* - Image wasn't added to registry
|
|
214
|
+
* - Service name doesn't match
|
|
215
|
+
*
|
|
216
|
+
* @param serviceName - Service name from profile
|
|
217
|
+
* @param originalImage - Original image name from profile
|
|
218
|
+
* @returns Public registry URL or null if not a local image
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* const url = manager.getPublicImageUrl('frontend', 'my-app:latest');
|
|
223
|
+
* // Returns: "abc123.serveo.net/my-app:latest" or null
|
|
224
|
+
* ```
|
|
225
|
+
*/
|
|
226
|
+
getPublicImageUrl(serviceName: string, originalImage: string): string | null;
|
|
227
|
+
/**
|
|
228
|
+
* Get registry credentials for SDL generation
|
|
229
|
+
*
|
|
230
|
+
* Returns authentication credentials that should be added to the SDL services
|
|
231
|
+
* section so Akash providers can authenticate with the temporary registry.
|
|
232
|
+
*
|
|
233
|
+
* @returns Registry credentials or null if not available
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```typescript
|
|
237
|
+
* const creds = manager.getRegistryCredentials();
|
|
238
|
+
* // Use in SDL: { host: "abc123.serveo.net", username: "...", password: "..." }
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
getRegistryCredentials(): RegistryCredentials | null;
|
|
242
|
+
/**
|
|
243
|
+
* Find tar file from kadi-build export directory
|
|
244
|
+
*
|
|
245
|
+
* Searches for container tar files exported by kadi-build in common locations:
|
|
246
|
+
* 1. ~/.kadi/tmp/container-registry-exports/containers/ (primary)
|
|
247
|
+
* 2. ./container-exports/ (backup)
|
|
248
|
+
* 3. /tmp/container-registry-exports/containers/ (fallback)
|
|
249
|
+
*
|
|
250
|
+
* **Why This Matters:**
|
|
251
|
+
* Tar files are faster to load and don't require the container engine to be running.
|
|
252
|
+
*
|
|
253
|
+
* @param imageName - Image name to search for (e.g., "my-app:0.0.1")
|
|
254
|
+
* @returns Path to tar file or null if not found
|
|
255
|
+
*/
|
|
256
|
+
private findKadiBuildTarFile;
|
|
257
|
+
/**
|
|
258
|
+
* Show helpful suggestion to run kadi-build
|
|
259
|
+
*
|
|
260
|
+
* Displays actionable suggestions when a container cannot be found or added.
|
|
261
|
+
* Helps users understand what went wrong and how to fix it.
|
|
262
|
+
*
|
|
263
|
+
* @param imageName - Image that couldn't be added
|
|
264
|
+
* @param containerType - Container engine used
|
|
265
|
+
*/
|
|
266
|
+
private showKadiBuildSuggestion;
|
|
267
|
+
/**
|
|
268
|
+
* Verify container is accessible in the registry
|
|
269
|
+
*
|
|
270
|
+
* Checks that a container with the given alias is present in the registry.
|
|
271
|
+
* Logs a warning if not found and shows available containers for debugging.
|
|
272
|
+
*
|
|
273
|
+
* @param actualAlias - Container alias to verify
|
|
274
|
+
*/
|
|
275
|
+
private verifyContainerInRegistry;
|
|
276
|
+
/**
|
|
277
|
+
* Get the registry domain (without protocol)
|
|
278
|
+
*
|
|
279
|
+
* Returns the domain to use in image URLs. Prefers tunnel domain over local.
|
|
280
|
+
*
|
|
281
|
+
* @returns Registry domain (e.g., "abc123.serveo.net" or "localhost:3000")
|
|
282
|
+
*/
|
|
283
|
+
private getRegistryDomain;
|
|
284
|
+
/**
|
|
285
|
+
* Get registry URL components including local and tunnel endpoints
|
|
286
|
+
*
|
|
287
|
+
* @returns Registry URLs with both local and tunnel information
|
|
288
|
+
*/
|
|
289
|
+
private getRegistryUrls;
|
|
290
|
+
/**
|
|
291
|
+
* Get the preferred domain (tunnel if available, otherwise local)
|
|
292
|
+
*
|
|
293
|
+
* @returns Domain without protocol
|
|
294
|
+
*/
|
|
295
|
+
private getPreferredDomain;
|
|
296
|
+
/**
|
|
297
|
+
* Check if registry is running
|
|
298
|
+
*
|
|
299
|
+
* @returns True if registry is started and accessible
|
|
300
|
+
*/
|
|
301
|
+
isRunning(): boolean;
|
|
302
|
+
/**
|
|
303
|
+
* Display container mappings for debugging
|
|
304
|
+
*
|
|
305
|
+
* Shows how original image names were transformed to registry URLs.
|
|
306
|
+
* Useful for troubleshooting deployment issues.
|
|
307
|
+
*/
|
|
308
|
+
displayContainerMappings(): Promise<void>;
|
|
309
|
+
/**
|
|
310
|
+
* Stop the temporary registry and cleanup resources
|
|
311
|
+
*
|
|
312
|
+
* Shuts down the registry container and tunnel. Should be called after
|
|
313
|
+
* deployment completes and providers have pulled all images.
|
|
314
|
+
*
|
|
315
|
+
* **Safe to call multiple times** - idempotent operation.
|
|
316
|
+
*/
|
|
317
|
+
stopTemporaryRegistry(): Promise<void>;
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/utils/registry/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAEV,mBAAmB,EAInB,eAAe,EAChB,MAAM,YAAY,CAAC;AAYpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,iCAAiC;IAC5C,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,YAAY,CAA6B;IAEjD;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB,CAAuC;IAEhE;;;;OAIG;gBACS,MAAM,EAAE,gBAAgB;IAIpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkFrE;;;;;OAKG;YACW,gCAAgC;IAgC9C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACG,iCAAiC,CACrC,OAAO,EAAE,sBAAsB,EAC/B,eAAe,EAAE,QAAQ,GAAG,QAAQ,GACnC,OAAO,CAAC,IAAI,CAAC;IA0ChB;;;;;;;;;;;;;;;;;;OAkBG;YACW,yBAAyB;IA4EvC;;;;;;;;;;;;;OAaG;YACW,sBAAsB;IA4BpC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAU5E;;;;;;;;;;;;;OAaG;IACH,sBAAsB,IAAI,mBAAmB,GAAG,IAAI;IA8BpD;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IA6B/B;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB;IAsBjC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;;OAKG;IACG,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB/C;;;;;;;OAOG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB7C"}
|