@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,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Container Engine Management Module
|
|
3
|
+
*
|
|
4
|
+
* Manages Docker and Podman container engine lifecycle, ensuring engines
|
|
5
|
+
* are running and accessible before deployment operations.
|
|
6
|
+
*
|
|
7
|
+
* Key Features:
|
|
8
|
+
* - Automatic Podman VM startup on macOS/Windows
|
|
9
|
+
* - Health checks and connectivity verification
|
|
10
|
+
* - Structured error handling with recovery suggestions
|
|
11
|
+
* - Type-safe Result returns (no throwing)
|
|
12
|
+
*
|
|
13
|
+
* @module targets/local/engine-manager
|
|
14
|
+
*/
|
|
15
|
+
import debug from 'debug';
|
|
16
|
+
import { success, failure, } from '../../types/index.js';
|
|
17
|
+
import { DeploymentError } from '../../errors/index.js';
|
|
18
|
+
import { runCommand } from '../../utils/command-runner.js';
|
|
19
|
+
/**
|
|
20
|
+
* Debug logger for engine operations
|
|
21
|
+
*/
|
|
22
|
+
const log = debug('deploy-ability:local:engine');
|
|
23
|
+
/**
|
|
24
|
+
* Checks if a container engine is running and accessible
|
|
25
|
+
*
|
|
26
|
+
* Performs a health check by running `docker info` or `podman info`.
|
|
27
|
+
* Returns structured engine information if successful.
|
|
28
|
+
*
|
|
29
|
+
* **Does NOT auto-start the engine** - use `ensureEngineRunning` for that.
|
|
30
|
+
*
|
|
31
|
+
* @param engine - Container engine to check
|
|
32
|
+
* @param options - Check options
|
|
33
|
+
* @returns Result with engine info or error
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const result = await checkEngineRunning('docker');
|
|
38
|
+
*
|
|
39
|
+
* if (result.success) {
|
|
40
|
+
* console.log(`Docker is running: v${result.data.version}`);
|
|
41
|
+
* } else {
|
|
42
|
+
* console.error('Docker not available:', result.error.message);
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export async function checkEngineRunning(engine, options = {}) {
|
|
47
|
+
const { timeout = 30_000, commandOptions } = options;
|
|
48
|
+
log('Checking if %s is running', engine);
|
|
49
|
+
const infoCommand = `${engine} info --format json`;
|
|
50
|
+
const result = await runCommand(infoCommand, {
|
|
51
|
+
...commandOptions,
|
|
52
|
+
timeout,
|
|
53
|
+
silent: true,
|
|
54
|
+
});
|
|
55
|
+
if (!result.success) {
|
|
56
|
+
log('%s is not running: %s', engine, result.error.message);
|
|
57
|
+
return failure(new DeploymentError(`${engine} is not running or not accessible`, 'ENGINE_NOT_RUNNING', {
|
|
58
|
+
engine,
|
|
59
|
+
command: infoCommand,
|
|
60
|
+
error: result.error.message,
|
|
61
|
+
}, true, engine === 'docker'
|
|
62
|
+
? 'Start Docker Desktop or run "dockerd" manually, then retry'
|
|
63
|
+
: 'Run "podman machine start" manually, then retry', 'error', result.error));
|
|
64
|
+
}
|
|
65
|
+
log('%s is running', engine);
|
|
66
|
+
// Parse version and platform from info output
|
|
67
|
+
let version;
|
|
68
|
+
let platform;
|
|
69
|
+
try {
|
|
70
|
+
const info = JSON.parse(result.data.stdout);
|
|
71
|
+
version = info.version?.Version || info.Version;
|
|
72
|
+
platform = info.host?.os || info.host?.arch || process.platform;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Ignore parsing errors - version/platform are optional
|
|
76
|
+
log('Could not parse engine info JSON');
|
|
77
|
+
}
|
|
78
|
+
return success({
|
|
79
|
+
engine,
|
|
80
|
+
running: true,
|
|
81
|
+
version,
|
|
82
|
+
platform,
|
|
83
|
+
autoStarted: false,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Attempts to start a Podman VM
|
|
88
|
+
*
|
|
89
|
+
* On macOS and Windows, Podman runs inside a VM that must be started
|
|
90
|
+
* before the engine can be used. This function handles the startup
|
|
91
|
+
* process and waits for the VM to become ready.
|
|
92
|
+
*
|
|
93
|
+
* @param options - Command execution options
|
|
94
|
+
* @returns Result indicating success or failure
|
|
95
|
+
*
|
|
96
|
+
* @internal
|
|
97
|
+
*/
|
|
98
|
+
async function startPodmanVM(options = {}) {
|
|
99
|
+
const { timeout = 60_000, commandOptions } = options;
|
|
100
|
+
log('Attempting to start Podman VM');
|
|
101
|
+
const startResult = await runCommand('podman machine start', {
|
|
102
|
+
...commandOptions,
|
|
103
|
+
timeout,
|
|
104
|
+
silent: false,
|
|
105
|
+
});
|
|
106
|
+
if (!startResult.success) {
|
|
107
|
+
log('Failed to start Podman VM: %s', startResult.error.message);
|
|
108
|
+
return failure(new DeploymentError('Podman VM could not be started', 'PODMAN_VM_START_FAILED', {
|
|
109
|
+
command: 'podman machine start',
|
|
110
|
+
error: startResult.error.message,
|
|
111
|
+
}, true, 'Run "podman machine init" (first time only) and "podman machine start" manually', 'error', startResult.error));
|
|
112
|
+
}
|
|
113
|
+
log('Podman VM start command completed');
|
|
114
|
+
// Wait for socket to become available
|
|
115
|
+
log('Waiting for Podman socket to become available');
|
|
116
|
+
const checkResult = await runCommand('podman info --format json', {
|
|
117
|
+
...commandOptions,
|
|
118
|
+
timeout: 30_000,
|
|
119
|
+
silent: true,
|
|
120
|
+
});
|
|
121
|
+
if (!checkResult.success) {
|
|
122
|
+
log('Podman socket did not become available: %s', checkResult.error.message);
|
|
123
|
+
return failure(new DeploymentError('Podman VM started but socket is not available', 'PODMAN_SOCKET_UNAVAILABLE', {
|
|
124
|
+
error: checkResult.error.message,
|
|
125
|
+
}, true, 'Wait a few seconds and retry, or run "podman machine stop && podman machine start"', 'error', checkResult.error));
|
|
126
|
+
}
|
|
127
|
+
log('Podman socket is now available');
|
|
128
|
+
return success(undefined);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Ensures a container engine is running and accessible
|
|
132
|
+
*
|
|
133
|
+
* This is the main entry point for engine management. It will:
|
|
134
|
+
*
|
|
135
|
+
* **For Docker:**
|
|
136
|
+
* - Check if Docker daemon is running
|
|
137
|
+
* - Return error if not (cannot auto-start Docker)
|
|
138
|
+
* - Provide clear instructions for manual startup
|
|
139
|
+
*
|
|
140
|
+
* **For Podman:**
|
|
141
|
+
* - Check if Podman socket is available
|
|
142
|
+
* - Automatically start Podman VM if not running (macOS/Windows)
|
|
143
|
+
* - Wait for VM to become ready
|
|
144
|
+
* - Return error if auto-start fails
|
|
145
|
+
*
|
|
146
|
+
* This eliminates common "connection refused" errors and provides
|
|
147
|
+
* a better developer experience, especially with Podman's VM architecture.
|
|
148
|
+
*
|
|
149
|
+
* @param engine - Container engine to ensure is running
|
|
150
|
+
* @param options - Engine check options
|
|
151
|
+
* @returns Result with engine info or error
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```typescript
|
|
155
|
+
* const result = await ensureEngineRunning('podman', { autoStart: true });
|
|
156
|
+
*
|
|
157
|
+
* if (result.success) {
|
|
158
|
+
* console.log('Engine ready:', result.data);
|
|
159
|
+
* if (result.data.autoStarted) {
|
|
160
|
+
* console.log('Podman VM was automatically started');
|
|
161
|
+
* }
|
|
162
|
+
* } else {
|
|
163
|
+
* console.error('Engine error:', result.error.getUserMessage());
|
|
164
|
+
* console.error('Suggestion:', result.error.suggestion);
|
|
165
|
+
* }
|
|
166
|
+
* ```
|
|
167
|
+
*
|
|
168
|
+
* @example With custom timeout
|
|
169
|
+
* ```typescript
|
|
170
|
+
* const result = await ensureEngineRunning('docker', {
|
|
171
|
+
* timeout: 10_000,
|
|
172
|
+
* autoStart: false
|
|
173
|
+
* });
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export async function ensureEngineRunning(engine, options = {}) {
|
|
177
|
+
const { autoStart = true } = options;
|
|
178
|
+
log('Ensuring %s is running (autoStart: %s)', engine, autoStart);
|
|
179
|
+
// Fast path: check if engine is already running
|
|
180
|
+
const checkResult = await checkEngineRunning(engine, options);
|
|
181
|
+
if (checkResult.success) {
|
|
182
|
+
log('%s is already running', engine);
|
|
183
|
+
return checkResult;
|
|
184
|
+
}
|
|
185
|
+
// Engine not running - check if we can auto-start
|
|
186
|
+
if (!autoStart) {
|
|
187
|
+
log('Auto-start disabled, returning error');
|
|
188
|
+
return checkResult;
|
|
189
|
+
}
|
|
190
|
+
// Docker cannot be auto-started (platform-specific, complex)
|
|
191
|
+
if (engine === 'docker') {
|
|
192
|
+
log('Cannot auto-start Docker, returning error');
|
|
193
|
+
return checkResult;
|
|
194
|
+
}
|
|
195
|
+
// For Podman, check if this is a connection error we can fix
|
|
196
|
+
const errorMessage = checkResult.error.context.error;
|
|
197
|
+
const isConnectionError = /cannot connect to podman|unable to connect|dial unix/i.test(errorMessage);
|
|
198
|
+
if (!isConnectionError) {
|
|
199
|
+
log('Not a connection error, cannot auto-start: %s', errorMessage);
|
|
200
|
+
return checkResult;
|
|
201
|
+
}
|
|
202
|
+
// Attempt to auto-start Podman VM
|
|
203
|
+
log('Attempting auto-start of Podman VM');
|
|
204
|
+
const startResult = await startPodmanVM(options);
|
|
205
|
+
if (!startResult.success) {
|
|
206
|
+
log('Auto-start failed');
|
|
207
|
+
return failure(startResult.error);
|
|
208
|
+
}
|
|
209
|
+
log('Auto-start succeeded, verifying engine is running');
|
|
210
|
+
// Verify engine is now running
|
|
211
|
+
const verifyResult = await checkEngineRunning(engine, options);
|
|
212
|
+
if (verifyResult.success) {
|
|
213
|
+
log('Engine verified running after auto-start');
|
|
214
|
+
return success({
|
|
215
|
+
...verifyResult.data,
|
|
216
|
+
autoStarted: true,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
log('Engine still not running after auto-start');
|
|
220
|
+
return verifyResult;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Gets version information for a container engine
|
|
224
|
+
*
|
|
225
|
+
* Convenience function to extract just the version string from an engine.
|
|
226
|
+
*
|
|
227
|
+
* @param engine - Container engine to check
|
|
228
|
+
* @param options - Check options
|
|
229
|
+
* @returns Result with version string or error
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* const result = await getEngineVersion('docker');
|
|
234
|
+
*
|
|
235
|
+
* if (result.success) {
|
|
236
|
+
* console.log('Docker version:', result.data);
|
|
237
|
+
* }
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
export async function getEngineVersion(engine, options = {}) {
|
|
241
|
+
const result = await checkEngineRunning(engine, options);
|
|
242
|
+
if (!result.success) {
|
|
243
|
+
return failure(result.error);
|
|
244
|
+
}
|
|
245
|
+
if (!result.data.version) {
|
|
246
|
+
return failure(new DeploymentError('Could not determine engine version', 'ENGINE_VERSION_UNKNOWN', { engine }, false, undefined, 'warning'));
|
|
247
|
+
}
|
|
248
|
+
return success(result.data.version);
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=engine-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-manager.js","sourceRoot":"","sources":["../../../src/targets/local/engine-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Deployment Target - Public API
|
|
3
|
+
*
|
|
4
|
+
* Main entry point for local Docker/Podman deployments.
|
|
5
|
+
* Re-exports all public APIs and types for the local target.
|
|
6
|
+
*
|
|
7
|
+
* @example Basic Usage
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { deployToLocal } from 'deploy-ability/local';
|
|
10
|
+
*
|
|
11
|
+
* const result = await deployToLocal({
|
|
12
|
+
* projectRoot: '/path/to/project',
|
|
13
|
+
* profile: 'local-dev'
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* if (result.success) {
|
|
17
|
+
* console.log('Deployed!', result.data.endpoints);
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @example With Progress Tracking
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { deployToLocal } from 'deploy-ability/local';
|
|
24
|
+
*
|
|
25
|
+
* const result = await deployToLocal({
|
|
26
|
+
* projectRoot: process.cwd(),
|
|
27
|
+
* onProgress: (event) => {
|
|
28
|
+
* console.log(`[${event.phase}] ${event.message}`);
|
|
29
|
+
* }
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @module targets/local
|
|
34
|
+
*/
|
|
35
|
+
export { deployLocal as deployToLocal } from './deployer.js';
|
|
36
|
+
export { ensureEngineRunning, checkEngineRunning, getEngineVersion, type EngineInfo, type EngineCheckOptions, } from './engine-manager.js';
|
|
37
|
+
export { ensureNetwork, networkExists, getNetworkInfo, removeNetwork, type NetworkOptions, type CreateNetworkOptions, } from './network-manager.js';
|
|
38
|
+
export { generateComposeFile, generateComposeYAML, composeFileToYAML, convertEnvArrayToObject, convertPortsToComposeFormat, type ServiceInput, type ComposeGenerationOptions, } from './compose-generator.js';
|
|
39
|
+
export type { ComposeFile, ComposeService, ComposeNetwork, PortMapping, RestartPolicy, NetworkMode, ContainerStatus, ContainerInfo, NetworkInfo, ServiceDependency, Healthcheck, VolumeMount, ServiceValidationError, } from './types.js';
|
|
40
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/targets/local/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,KAAK,YAAY,EACjB,KAAK,wBAAwB,GAC9B,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Deployment Target - Public API
|
|
3
|
+
*
|
|
4
|
+
* Main entry point for local Docker/Podman deployments.
|
|
5
|
+
* Re-exports all public APIs and types for the local target.
|
|
6
|
+
*
|
|
7
|
+
* @example Basic Usage
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { deployToLocal } from 'deploy-ability/local';
|
|
10
|
+
*
|
|
11
|
+
* const result = await deployToLocal({
|
|
12
|
+
* projectRoot: '/path/to/project',
|
|
13
|
+
* profile: 'local-dev'
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* if (result.success) {
|
|
17
|
+
* console.log('Deployed!', result.data.endpoints);
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @example With Progress Tracking
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { deployToLocal } from 'deploy-ability/local';
|
|
24
|
+
*
|
|
25
|
+
* const result = await deployToLocal({
|
|
26
|
+
* projectRoot: process.cwd(),
|
|
27
|
+
* onProgress: (event) => {
|
|
28
|
+
* console.log(`[${event.phase}] ${event.message}`);
|
|
29
|
+
* }
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @module targets/local
|
|
34
|
+
*/
|
|
35
|
+
// Main deployment function
|
|
36
|
+
export { deployLocal as deployToLocal } from './deployer.js';
|
|
37
|
+
// Engine management
|
|
38
|
+
export { ensureEngineRunning, checkEngineRunning, getEngineVersion, } from './engine-manager.js';
|
|
39
|
+
// Network management
|
|
40
|
+
export { ensureNetwork, networkExists, getNetworkInfo, removeNetwork, } from './network-manager.js';
|
|
41
|
+
// Compose generation
|
|
42
|
+
export { generateComposeFile, generateComposeYAML, composeFileToYAML, convertEnvArrayToObject, convertPortsToComposeFormat, } from './compose-generator.js';
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/targets/local/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,2BAA2B;AAC3B,OAAO,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7D,oBAAoB;AACpB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GAGjB,MAAM,qBAAqB,CAAC;AAE7B,qBAAqB;AACrB,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,GAGd,MAAM,sBAAsB,CAAC;AAE9B,qBAAqB;AACrB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,GAG5B,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Docker Network Management Module
|
|
3
|
+
*
|
|
4
|
+
* Manages Docker/Podman networks for KADI deployments, ensuring
|
|
5
|
+
* required networks exist and are properly configured for inter-service
|
|
6
|
+
* communication.
|
|
7
|
+
*
|
|
8
|
+
* Key Features:
|
|
9
|
+
* - Network creation with idempotency (safe to call multiple times)
|
|
10
|
+
* - Network inspection and validation
|
|
11
|
+
* - Automatic conflict resolution
|
|
12
|
+
* - Type-safe Result returns
|
|
13
|
+
*
|
|
14
|
+
* @module targets/local/network-manager
|
|
15
|
+
*/
|
|
16
|
+
import { type Result, type ContainerEngine } from '../../types/index.js';
|
|
17
|
+
import { DeploymentError } from '../../errors/index.js';
|
|
18
|
+
import { type CommandOptions } from '../../utils/command-runner.js';
|
|
19
|
+
import type { NetworkInfo } from './types.js';
|
|
20
|
+
/**
|
|
21
|
+
* Options for network operations
|
|
22
|
+
*/
|
|
23
|
+
export interface NetworkOptions {
|
|
24
|
+
/**
|
|
25
|
+
* Timeout for network operations in milliseconds
|
|
26
|
+
* @default 30000 (30 seconds)
|
|
27
|
+
*/
|
|
28
|
+
readonly timeout?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Command execution options
|
|
31
|
+
*/
|
|
32
|
+
readonly commandOptions?: CommandOptions;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Network creation options
|
|
36
|
+
*/
|
|
37
|
+
export interface CreateNetworkOptions extends NetworkOptions {
|
|
38
|
+
/**
|
|
39
|
+
* Network driver to use
|
|
40
|
+
* @default 'bridge'
|
|
41
|
+
*/
|
|
42
|
+
readonly driver?: 'bridge' | 'host' | 'overlay' | 'macvlan' | 'none' | string;
|
|
43
|
+
/**
|
|
44
|
+
* Enable IPv6
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
readonly ipv6?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Additional driver options
|
|
50
|
+
*/
|
|
51
|
+
readonly driverOpts?: Record<string, string>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Checks if a Docker network exists
|
|
55
|
+
*
|
|
56
|
+
* Queries the container engine to verify if a network with the given
|
|
57
|
+
* name exists. Returns true if it exists, false otherwise.
|
|
58
|
+
*
|
|
59
|
+
* @param engine - Container engine to use
|
|
60
|
+
* @param networkName - Name of the network to check
|
|
61
|
+
* @param options - Network operation options
|
|
62
|
+
* @returns Result with boolean indicating existence
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const result = await networkExists('docker', 'kadi-net');
|
|
67
|
+
*
|
|
68
|
+
* if (result.success && result.data) {
|
|
69
|
+
* console.log('Network exists');
|
|
70
|
+
* } else if (result.success && !result.data) {
|
|
71
|
+
* console.log('Network does not exist');
|
|
72
|
+
* } else {
|
|
73
|
+
* console.error('Error checking network:', result.error.message);
|
|
74
|
+
* }
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function networkExists(engine: ContainerEngine, networkName: string, options?: NetworkOptions): Promise<Result<boolean, DeploymentError>>;
|
|
78
|
+
/**
|
|
79
|
+
* Gets detailed information about a Docker network
|
|
80
|
+
*
|
|
81
|
+
* Retrieves and parses network information including driver, scope,
|
|
82
|
+
* and whether the network was created externally.
|
|
83
|
+
*
|
|
84
|
+
* @param engine - Container engine to use
|
|
85
|
+
* @param networkName - Name of the network to inspect
|
|
86
|
+
* @param options - Network operation options
|
|
87
|
+
* @returns Result with network information
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const result = await getNetworkInfo('docker', 'kadi-net');
|
|
92
|
+
*
|
|
93
|
+
* if (result.success) {
|
|
94
|
+
* console.log('Network ID:', result.data.id);
|
|
95
|
+
* console.log('Driver:', result.data.driver);
|
|
96
|
+
* console.log('Pre-existing:', result.data.preexisting);
|
|
97
|
+
* }
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export declare function getNetworkInfo(engine: ContainerEngine, networkName: string, options?: NetworkOptions): Promise<Result<NetworkInfo, DeploymentError>>;
|
|
101
|
+
/**
|
|
102
|
+
* Creates a Docker network if it doesn't already exist
|
|
103
|
+
*
|
|
104
|
+
* This function is idempotent - safe to call multiple times. If the
|
|
105
|
+
* network already exists, it will return success with `preexisting: true`.
|
|
106
|
+
*
|
|
107
|
+
* Handles the common "already exists" error gracefully and returns
|
|
108
|
+
* structured network information.
|
|
109
|
+
*
|
|
110
|
+
* @param engine - Container engine to use
|
|
111
|
+
* @param networkName - Name of the network to create
|
|
112
|
+
* @param options - Network creation options
|
|
113
|
+
* @returns Result with network information
|
|
114
|
+
*
|
|
115
|
+
* @example Basic Usage
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const result = await ensureNetwork('docker', 'kadi-net');
|
|
118
|
+
*
|
|
119
|
+
* if (result.success) {
|
|
120
|
+
* if (result.data.preexisting) {
|
|
121
|
+
* console.log('Network already existed');
|
|
122
|
+
* } else {
|
|
123
|
+
* console.log('Network created:', result.data.id);
|
|
124
|
+
* }
|
|
125
|
+
* }
|
|
126
|
+
* ```
|
|
127
|
+
*
|
|
128
|
+
* @example With Custom Driver
|
|
129
|
+
* ```typescript
|
|
130
|
+
* const result = await ensureNetwork('docker', 'my-overlay-net', {
|
|
131
|
+
* driver: 'overlay',
|
|
132
|
+
* ipv6: true
|
|
133
|
+
* });
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export declare function ensureNetwork(engine: ContainerEngine, networkName: string, options?: CreateNetworkOptions): Promise<Result<NetworkInfo, DeploymentError>>;
|
|
137
|
+
/**
|
|
138
|
+
* Removes a Docker network
|
|
139
|
+
*
|
|
140
|
+
* Deletes the specified network. Will fail if containers are still
|
|
141
|
+
* attached to the network.
|
|
142
|
+
*
|
|
143
|
+
* @param engine - Container engine to use
|
|
144
|
+
* @param networkName - Name of the network to remove
|
|
145
|
+
* @param options - Network operation options
|
|
146
|
+
* @returns Result indicating success or failure
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* const result = await removeNetwork('docker', 'kadi-net');
|
|
151
|
+
*
|
|
152
|
+
* if (result.success) {
|
|
153
|
+
* console.log('Network removed');
|
|
154
|
+
* } else if (result.error.code === 'NETWORK_IN_USE') {
|
|
155
|
+
* console.log('Network still has containers attached');
|
|
156
|
+
* }
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export declare function removeNetwork(engine: ContainerEngine, networkName: string, options?: NetworkOptions): Promise<Result<void, DeploymentError>>;
|
|
160
|
+
//# sourceMappingURL=network-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-manager.d.ts","sourceRoot":"","sources":["../../../src/targets/local/network-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EACL,KAAK,MAAM,EAGX,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAE9E;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CA8C3C;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CA0F/C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CA8I/C;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAmExC"}
|