synapse-mcp 1.0.0 → 1.0.2
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 +1820 -147
- package/dist/constants.d.ts +10 -4
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +18 -8
- package/dist/constants.js.map +1 -1
- package/dist/events/emitter.d.ts +63 -0
- package/dist/events/emitter.d.ts.map +1 -0
- package/dist/events/emitter.js +112 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +3 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +51 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +3 -0
- package/dist/events/types.js.map +1 -0
- package/dist/formatters/compose.d.ts +185 -0
- package/dist/formatters/compose.d.ts.map +1 -0
- package/dist/formatters/compose.js +397 -0
- package/dist/formatters/compose.js.map +1 -0
- package/dist/formatters/container.d.ts +84 -0
- package/dist/formatters/container.d.ts.map +1 -0
- package/dist/formatters/container.js +323 -0
- package/dist/formatters/container.js.map +1 -0
- package/dist/formatters/diagnostics.d.ts +20 -0
- package/dist/formatters/diagnostics.d.ts.map +1 -0
- package/dist/formatters/diagnostics.js +73 -0
- package/dist/formatters/diagnostics.js.map +1 -0
- package/dist/formatters/docker.d.ts +139 -0
- package/dist/formatters/docker.d.ts.map +1 -0
- package/dist/formatters/docker.js +216 -0
- package/dist/formatters/docker.js.map +1 -0
- package/dist/formatters/host.d.ts +137 -0
- package/dist/formatters/host.d.ts.map +1 -0
- package/dist/formatters/host.js +198 -0
- package/dist/formatters/host.js.map +1 -0
- package/dist/formatters/index.d.ts +17 -270
- package/dist/formatters/index.d.ts.map +1 -1
- package/dist/formatters/index.js +21 -456
- package/dist/formatters/index.js.map +1 -1
- package/dist/formatters/scout.d.ts +424 -0
- package/dist/formatters/scout.d.ts.map +1 -0
- package/dist/formatters/scout.js +687 -0
- package/dist/formatters/scout.js.map +1 -0
- package/dist/formatters/strategy.d.ts +105 -0
- package/dist/formatters/strategy.d.ts.map +1 -0
- package/dist/formatters/strategy.js +120 -0
- package/dist/formatters/strategy.js.map +1 -0
- package/dist/formatters/utils.d.ts +84 -0
- package/dist/formatters/utils.d.ts.map +1 -0
- package/dist/formatters/utils.js +129 -0
- package/dist/formatters/utils.js.map +1 -0
- package/dist/health-rate-limiter.d.ts +59 -0
- package/dist/health-rate-limiter.d.ts.map +1 -0
- package/dist/health-rate-limiter.js +159 -0
- package/dist/health-rate-limiter.js.map +1 -0
- package/dist/index.js +61 -100
- package/dist/index.js.map +1 -1
- package/dist/middleware/async-handler.d.ts +62 -0
- package/dist/middleware/async-handler.d.ts.map +1 -0
- package/dist/middleware/async-handler.js +58 -0
- package/dist/middleware/async-handler.js.map +1 -0
- package/dist/middleware/auth.d.ts +32 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +63 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/csrf-protection.d.ts +58 -0
- package/dist/middleware/csrf-protection.d.ts.map +1 -0
- package/dist/middleware/csrf-protection.js +123 -0
- package/dist/middleware/csrf-protection.js.map +1 -0
- package/dist/middleware/error-handler.d.ts +49 -0
- package/dist/middleware/error-handler.d.ts.map +1 -0
- package/dist/middleware/error-handler.js +90 -0
- package/dist/middleware/error-handler.js.map +1 -0
- package/dist/middleware/error-mapper.d.ts +44 -0
- package/dist/middleware/error-mapper.d.ts.map +1 -0
- package/dist/middleware/error-mapper.js +127 -0
- package/dist/middleware/error-mapper.js.map +1 -0
- package/dist/middleware/index.d.ts +13 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +13 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/request-id.d.ts +22 -0
- package/dist/middleware/request-id.d.ts.map +1 -0
- package/dist/middleware/request-id.js +31 -0
- package/dist/middleware/request-id.js.map +1 -0
- package/dist/middleware/types.d.ts +33 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +2 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/schemas/common.d.ts +205 -8
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/common.js +290 -17
- package/dist/schemas/common.js.map +1 -1
- package/dist/schemas/flux/compose.d.ts +307 -44
- package/dist/schemas/flux/compose.d.ts.map +1 -1
- package/dist/schemas/flux/compose.js +74 -48
- package/dist/schemas/flux/compose.js.map +1 -1
- package/dist/schemas/flux/container.d.ts +423 -56
- package/dist/schemas/flux/container.d.ts.map +1 -1
- package/dist/schemas/flux/container.js +83 -61
- package/dist/schemas/flux/container.js.map +1 -1
- package/dist/schemas/flux/docker.d.ts +254 -37
- package/dist/schemas/flux/docker.d.ts.map +1 -1
- package/dist/schemas/flux/docker.js +69 -39
- package/dist/schemas/flux/docker.js.map +1 -1
- package/dist/schemas/flux/host.d.ts +312 -29
- package/dist/schemas/flux/host.d.ts.map +1 -1
- package/dist/schemas/flux/host.js +74 -31
- package/dist/schemas/flux/host.js.map +1 -1
- package/dist/schemas/flux/index.d.ts +503 -11
- package/dist/schemas/flux/index.d.ts.map +1 -1
- package/dist/schemas/flux/index.js +34 -70
- package/dist/schemas/flux/index.js.map +1 -1
- package/dist/schemas/host-config.d.ts +76 -0
- package/dist/schemas/host-config.d.ts.map +1 -0
- package/dist/schemas/host-config.js +105 -0
- package/dist/schemas/host-config.js.map +1 -0
- package/dist/schemas/scout/index.d.ts +80 -23
- package/dist/schemas/scout/index.d.ts.map +1 -1
- package/dist/schemas/scout/index.js +26 -11
- package/dist/schemas/scout/index.js.map +1 -1
- package/dist/schemas/scout/logs.d.ts +17 -5
- package/dist/schemas/scout/logs.d.ts.map +1 -1
- package/dist/schemas/scout/logs.js +41 -31
- package/dist/schemas/scout/logs.js.map +1 -1
- package/dist/schemas/scout/simple.d.ts +126 -11
- package/dist/schemas/scout/simple.d.ts.map +1 -1
- package/dist/schemas/scout/simple.js +112 -57
- package/dist/schemas/scout/simple.js.map +1 -1
- package/dist/schemas/scout/zfs.d.ts +17 -5
- package/dist/schemas/scout/zfs.d.ts.map +1 -1
- package/dist/schemas/scout/zfs.js +34 -25
- package/dist/schemas/scout/zfs.js.map +1 -1
- package/dist/services/cache-layer.d.ts +160 -0
- package/dist/services/cache-layer.d.ts.map +1 -0
- package/dist/services/cache-layer.js +138 -0
- package/dist/services/cache-layer.js.map +1 -0
- package/dist/services/compose-cache.d.ts +75 -0
- package/dist/services/compose-cache.d.ts.map +1 -0
- package/dist/services/compose-cache.js +178 -0
- package/dist/services/compose-cache.js.map +1 -0
- package/dist/services/compose-discovery.d.ts +46 -0
- package/dist/services/compose-discovery.d.ts.map +1 -0
- package/dist/services/compose-discovery.js +219 -0
- package/dist/services/compose-discovery.js.map +1 -0
- package/dist/services/compose-project-lister.d.ts +27 -0
- package/dist/services/compose-project-lister.d.ts.map +1 -0
- package/dist/services/compose-project-lister.js +71 -0
- package/dist/services/compose-project-lister.js.map +1 -0
- package/dist/services/compose-scanner.d.ts +63 -0
- package/dist/services/compose-scanner.d.ts.map +1 -0
- package/dist/services/compose-scanner.js +253 -0
- package/dist/services/compose-scanner.js.map +1 -0
- package/dist/services/compose.d.ts +64 -28
- package/dist/services/compose.d.ts.map +1 -1
- package/dist/services/compose.js +220 -98
- package/dist/services/compose.js.map +1 -1
- package/dist/services/config-loader.d.ts +23 -0
- package/dist/services/config-loader.d.ts.map +1 -0
- package/dist/services/config-loader.js +124 -0
- package/dist/services/config-loader.js.map +1 -0
- package/dist/services/config-service.d.ts +38 -0
- package/dist/services/config-service.d.ts.map +1 -0
- package/dist/services/config-service.js +225 -0
- package/dist/services/config-service.js.map +1 -0
- package/dist/services/container-host-map-cache.d.ts +121 -0
- package/dist/services/container-host-map-cache.d.ts.map +1 -0
- package/dist/services/container-host-map-cache.js +188 -0
- package/dist/services/container-host-map-cache.js.map +1 -0
- package/dist/services/container.d.ts +194 -6
- package/dist/services/container.d.ts.map +1 -1
- package/dist/services/container.js +386 -11
- package/dist/services/container.js.map +1 -1
- package/dist/services/diagnostics.d.ts +57 -0
- package/dist/services/diagnostics.d.ts.map +1 -0
- package/dist/services/diagnostics.js +271 -0
- package/dist/services/diagnostics.js.map +1 -0
- package/dist/services/docker/container-service.d.ts +123 -0
- package/dist/services/docker/container-service.d.ts.map +1 -0
- package/dist/services/docker/container-service.js +347 -0
- package/dist/services/docker/container-service.js.map +1 -0
- package/dist/services/docker/image-service.d.ts +82 -0
- package/dist/services/docker/image-service.d.ts.map +1 -0
- package/dist/services/docker/image-service.js +193 -0
- package/dist/services/docker/image-service.js.map +1 -0
- package/dist/services/docker/index.d.ts +80 -0
- package/dist/services/docker/index.d.ts.map +1 -0
- package/dist/services/docker/index.js +103 -0
- package/dist/services/docker/index.js.map +1 -0
- package/dist/services/docker/network-service.d.ts +22 -0
- package/dist/services/docker/network-service.d.ts.map +1 -0
- package/dist/services/docker/network-service.js +43 -0
- package/dist/services/docker/network-service.js.map +1 -0
- package/dist/services/docker/system-service.d.ts +49 -0
- package/dist/services/docker/system-service.d.ts.map +1 -0
- package/dist/services/docker/system-service.js +215 -0
- package/dist/services/docker/system-service.js.map +1 -0
- package/dist/services/docker/utils/client-factory.d.ts +56 -0
- package/dist/services/docker/utils/client-factory.d.ts.map +1 -0
- package/dist/services/docker/utils/client-factory.js +139 -0
- package/dist/services/docker/utils/client-factory.js.map +1 -0
- package/dist/services/docker/utils/client-manager.d.ts +88 -0
- package/dist/services/docker/utils/client-manager.d.ts.map +1 -0
- package/dist/services/docker/utils/client-manager.js +124 -0
- package/dist/services/docker/utils/client-manager.js.map +1 -0
- package/dist/services/docker/utils/exec-handler.d.ts +94 -0
- package/dist/services/docker/utils/exec-handler.d.ts.map +1 -0
- package/dist/services/docker/utils/exec-handler.js +197 -0
- package/dist/services/docker/utils/exec-handler.js.map +1 -0
- package/dist/services/docker/utils/formatters.d.ts +13 -0
- package/dist/services/docker/utils/formatters.d.ts.map +1 -0
- package/dist/services/docker/utils/formatters.js +33 -0
- package/dist/services/docker/utils/formatters.js.map +1 -0
- package/dist/services/docker/utils/log-parser.d.ts +10 -0
- package/dist/services/docker/utils/log-parser.d.ts.map +1 -0
- package/dist/services/docker/utils/log-parser.js +48 -0
- package/dist/services/docker/utils/log-parser.js.map +1 -0
- package/dist/services/docker/utils/stats-calculator.d.ts +68 -0
- package/dist/services/docker/utils/stats-calculator.d.ts.map +1 -0
- package/dist/services/docker/utils/stats-calculator.js +61 -0
- package/dist/services/docker/utils/stats-calculator.js.map +1 -0
- package/dist/services/docker/volume-service.d.ts +22 -0
- package/dist/services/docker/volume-service.d.ts.map +1 -0
- package/dist/services/docker/volume-service.js +48 -0
- package/dist/services/docker/volume-service.js.map +1 -0
- package/dist/services/docker-interfaces.d.ts +283 -0
- package/dist/services/docker-interfaces.d.ts.map +1 -0
- package/dist/services/docker-interfaces.js +13 -0
- package/dist/services/docker-interfaces.js.map +1 -0
- package/dist/services/docker.d.ts +42 -5
- package/dist/services/docker.d.ts.map +1 -1
- package/dist/services/docker.js +335 -127
- package/dist/services/docker.js.map +1 -1
- package/dist/services/file-service.d.ts +6 -2
- package/dist/services/file-service.d.ts.map +1 -1
- package/dist/services/file-service.js +156 -52
- package/dist/services/file-service.js.map +1 -1
- package/dist/services/host-config-repository.d.ts +133 -0
- package/dist/services/host-config-repository.d.ts.map +1 -0
- package/dist/services/host-config-repository.js +323 -0
- package/dist/services/host-config-repository.js.map +1 -0
- package/dist/services/host-resolver.d.ts +49 -0
- package/dist/services/host-resolver.d.ts.map +1 -0
- package/dist/services/host-resolver.js +176 -0
- package/dist/services/host-resolver.js.map +1 -0
- package/dist/services/interfaces.d.ts +61 -194
- package/dist/services/interfaces.d.ts.map +1 -1
- package/dist/services/local-executor.d.ts +31 -0
- package/dist/services/local-executor.d.ts.map +1 -0
- package/dist/services/local-executor.js +71 -0
- package/dist/services/local-executor.js.map +1 -0
- package/dist/services/ssh-config-loader.d.ts +35 -0
- package/dist/services/ssh-config-loader.d.ts.map +1 -0
- package/dist/services/ssh-config-loader.js +218 -0
- package/dist/services/ssh-config-loader.js.map +1 -0
- package/dist/services/ssh-pool.d.ts +26 -1
- package/dist/services/ssh-pool.d.ts.map +1 -1
- package/dist/services/ssh-pool.js +166 -25
- package/dist/services/ssh-pool.js.map +1 -1
- package/dist/services/ssh-service.d.ts +3 -0
- package/dist/services/ssh-service.d.ts.map +1 -1
- package/dist/services/ssh-service.js +53 -31
- package/dist/services/ssh-service.js.map +1 -1
- package/dist/services/ssh.d.ts +2 -6
- package/dist/services/ssh.d.ts.map +1 -1
- package/dist/services/ssh.js +9 -40
- package/dist/services/ssh.js.map +1 -1
- package/dist/tools/definitions/flux.d.ts +13 -0
- package/dist/tools/definitions/flux.d.ts.map +1 -0
- package/dist/tools/definitions/flux.js +101 -0
- package/dist/tools/definitions/flux.js.map +1 -0
- package/dist/tools/definitions/index.d.ts +8 -0
- package/dist/tools/definitions/index.d.ts.map +1 -0
- package/dist/tools/definitions/index.js +8 -0
- package/dist/tools/definitions/index.js.map +1 -0
- package/dist/tools/definitions/scout.d.ts +13 -0
- package/dist/tools/definitions/scout.d.ts.map +1 -0
- package/dist/tools/definitions/scout.js +78 -0
- package/dist/tools/definitions/scout.js.map +1 -0
- package/dist/tools/flux.d.ts +16 -8
- package/dist/tools/flux.d.ts.map +1 -1
- package/dist/tools/flux.js +27 -66
- package/dist/tools/flux.js.map +1 -1
- package/dist/tools/handlers/base-handler.d.ts +172 -0
- package/dist/tools/handlers/base-handler.d.ts.map +1 -0
- package/dist/tools/handlers/base-handler.js +234 -0
- package/dist/tools/handlers/base-handler.js.map +1 -0
- package/dist/tools/handlers/compose-handlers.d.ts +108 -0
- package/dist/tools/handlers/compose-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/compose-handlers.js +293 -0
- package/dist/tools/handlers/compose-handlers.js.map +1 -0
- package/dist/tools/handlers/compose-utils.d.ts +35 -0
- package/dist/tools/handlers/compose-utils.d.ts.map +1 -0
- package/dist/tools/handlers/compose-utils.js +76 -0
- package/dist/tools/handlers/compose-utils.js.map +1 -0
- package/dist/tools/handlers/compose.d.ts +23 -0
- package/dist/tools/handlers/compose.d.ts.map +1 -0
- package/dist/tools/handlers/compose.js +125 -0
- package/dist/tools/handlers/compose.js.map +1 -0
- package/dist/tools/handlers/container.d.ts +23 -0
- package/dist/tools/handlers/container.d.ts.map +1 -0
- package/dist/tools/handlers/container.js +333 -0
- package/dist/tools/handlers/container.js.map +1 -0
- package/dist/tools/handlers/docker.d.ts +24 -0
- package/dist/tools/handlers/docker.d.ts.map +1 -0
- package/dist/tools/handlers/docker.js +155 -0
- package/dist/tools/handlers/docker.js.map +1 -0
- package/dist/tools/handlers/host.d.ts +23 -0
- package/dist/tools/handlers/host.d.ts.map +1 -0
- package/dist/tools/handlers/host.js +196 -0
- package/dist/tools/handlers/host.js.map +1 -0
- package/dist/tools/handlers/scout-logs.d.ts +24 -0
- package/dist/tools/handlers/scout-logs.d.ts.map +1 -0
- package/dist/tools/handlers/scout-logs.js +119 -0
- package/dist/tools/handlers/scout-logs.js.map +1 -0
- package/dist/tools/handlers/scout-simple.d.ts +23 -0
- package/dist/tools/handlers/scout-simple.d.ts.map +1 -0
- package/dist/tools/handlers/scout-simple.js +286 -0
- package/dist/tools/handlers/scout-simple.js.map +1 -0
- package/dist/tools/handlers/scout-zfs.d.ts +23 -0
- package/dist/tools/handlers/scout-zfs.d.ts.map +1 -0
- package/dist/tools/handlers/scout-zfs.js +82 -0
- package/dist/tools/handlers/scout-zfs.js.map +1 -0
- package/dist/tools/index.d.ts +32 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +41 -35
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/registry.d.ts +135 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +151 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/scout.d.ts +16 -8
- package/dist/tools/scout.d.ts.map +1 -1
- package/dist/tools/scout.js +36 -78
- package/dist/tools/scout.js.map +1 -1
- package/dist/types.d.ts +629 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/command-security.d.ts +82 -0
- package/dist/utils/command-security.d.ts.map +1 -0
- package/dist/utils/command-security.js +122 -0
- package/dist/utils/command-security.js.map +1 -0
- package/dist/utils/error-sanitization.d.ts +77 -0
- package/dist/utils/error-sanitization.d.ts.map +1 -0
- package/dist/utils/error-sanitization.js +107 -0
- package/dist/utils/error-sanitization.js.map +1 -0
- package/dist/utils/errors.d.ts +30 -6
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +91 -12
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/help-handler.d.ts +23 -0
- package/dist/utils/help-handler.d.ts.map +1 -0
- package/dist/utils/help-handler.js +21 -0
- package/dist/utils/help-handler.js.map +1 -0
- package/dist/utils/help.d.ts +1 -1
- package/dist/utils/help.d.ts.map +1 -1
- package/dist/utils/help.js +57 -16
- package/dist/utils/help.js.map +1 -1
- package/dist/utils/host-utils.d.ts +31 -0
- package/dist/utils/host-utils.d.ts.map +1 -0
- package/dist/utils/host-utils.js +80 -0
- package/dist/utils/host-utils.js.map +1 -0
- package/dist/utils/index.d.ts +8 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/init-detection.d.ts +36 -0
- package/dist/utils/init-detection.d.ts.map +1 -0
- package/dist/utils/init-detection.js +79 -0
- package/dist/utils/init-detection.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +32 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pagination.d.ts +20 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/pagination.js +29 -0
- package/dist/utils/pagination.js.map +1 -0
- package/dist/utils/path-security.d.ts +132 -18
- package/dist/utils/path-security.d.ts.map +1 -1
- package/dist/utils/path-security.js +164 -35
- package/dist/utils/path-security.js.map +1 -1
- package/dist/utils/sorting.d.ts +33 -0
- package/dist/utils/sorting.d.ts.map +1 -0
- package/dist/utils/sorting.js +57 -0
- package/dist/utils/sorting.js.map +1 -0
- package/dist/utils/text-filters.d.ts +13 -0
- package/dist/utils/text-filters.d.ts.map +1 -0
- package/dist/utils/text-filters.js +18 -0
- package/dist/utils/text-filters.js.map +1 -0
- package/dist/utils/time.d.ts +11 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +13 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/validation.d.ts +25 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +56 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +45 -19
- package/dist/schemas/discriminator.d.ts +0 -20
- package/dist/schemas/discriminator.d.ts.map +0 -1
- package/dist/schemas/discriminator.js +0 -25
- package/dist/schemas/discriminator.js.map +0 -1
- package/dist/schemas/unified.d.ts +0 -674
- package/dist/schemas/unified.d.ts.map +0 -1
- package/dist/schemas/unified.js +0 -453
- package/dist/schemas/unified.js.map +0 -1
- package/dist/tools/unified.d.ts +0 -7
- package/dist/tools/unified.d.ts.map +0 -1
- package/dist/tools/unified.js +0 -827
- package/dist/tools/unified.js.map +0 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type Docker from "dockerode";
|
|
2
|
+
import type { ContainerExecResult, ContainerInfo, ContainerProcessList, ContainerStats, DockerDiskUsage, DockerNetworkInfo, DockerRawContainerInfo, DockerRawContainerInspectInfo, DockerSystemInfo, DockerVolumeInfo, HostConfig, HostStatus, ImageInfo, ListImagesOptions, LogEntry, PruneResult } from "../../types.js";
|
|
3
|
+
import type { ContainerHostMapCache } from "../container-host-map-cache.js";
|
|
4
|
+
import type { IContainerOperations, IDockerClientProvider, IDockerSystemInfo, IImageOperations, IResourceOperations } from "../interfaces.js";
|
|
5
|
+
import type { IDockerClientFactory } from "./utils/client-factory.js";
|
|
6
|
+
/**
|
|
7
|
+
* Docker service facade that delegates operations to specialized services.
|
|
8
|
+
* Composes focused Docker operation interfaces.
|
|
9
|
+
*/
|
|
10
|
+
export declare class DockerService implements IContainerOperations, IImageOperations, IResourceOperations, IDockerSystemInfo, IDockerClientProvider {
|
|
11
|
+
private containerService;
|
|
12
|
+
private imageService;
|
|
13
|
+
private systemService;
|
|
14
|
+
private networkService;
|
|
15
|
+
private volumeService;
|
|
16
|
+
private clientManager;
|
|
17
|
+
constructor(clientFactory?: IDockerClientFactory);
|
|
18
|
+
getDockerClient(config: HostConfig): Promise<Docker>;
|
|
19
|
+
clearClients(): void;
|
|
20
|
+
listContainers(hosts: HostConfig[], options?: {
|
|
21
|
+
state?: "all" | "running" | "stopped" | "paused";
|
|
22
|
+
nameFilter?: string;
|
|
23
|
+
imageFilter?: string;
|
|
24
|
+
labelFilter?: string;
|
|
25
|
+
limit?: number;
|
|
26
|
+
offset?: number;
|
|
27
|
+
}): Promise<ContainerInfo[]>;
|
|
28
|
+
findContainerHost(containerId: string, hosts: HostConfig[], cache?: ContainerHostMapCache): Promise<{
|
|
29
|
+
host: HostConfig;
|
|
30
|
+
container: DockerRawContainerInfo;
|
|
31
|
+
} | null>;
|
|
32
|
+
containerAction(containerId: string, action: "start" | "stop" | "restart" | "pause" | "unpause", host: HostConfig): Promise<void>;
|
|
33
|
+
getContainerLogs(containerId: string, host: HostConfig, options?: {
|
|
34
|
+
lines?: number;
|
|
35
|
+
since?: string;
|
|
36
|
+
until?: string;
|
|
37
|
+
stream?: "all" | "stdout" | "stderr";
|
|
38
|
+
}): Promise<LogEntry[]>;
|
|
39
|
+
getContainerStats(containerId: string, host: HostConfig): Promise<ContainerStats>;
|
|
40
|
+
execContainer(containerId: string, host: HostConfig, options: {
|
|
41
|
+
command: string;
|
|
42
|
+
user?: string;
|
|
43
|
+
workdir?: string;
|
|
44
|
+
timeout?: number;
|
|
45
|
+
}): Promise<ContainerExecResult>;
|
|
46
|
+
getContainerProcesses(containerId: string, host: HostConfig): Promise<ContainerProcessList>;
|
|
47
|
+
inspectContainer(containerId: string, host: HostConfig): Promise<DockerRawContainerInspectInfo>;
|
|
48
|
+
listImages(hosts: HostConfig[], options?: ListImagesOptions): Promise<ImageInfo[]>;
|
|
49
|
+
pullImage(imageName: string, host: HostConfig): Promise<{
|
|
50
|
+
status: string;
|
|
51
|
+
}>;
|
|
52
|
+
removeImage(imageId: string, host: HostConfig, options?: {
|
|
53
|
+
force?: boolean;
|
|
54
|
+
}): Promise<{
|
|
55
|
+
status: string;
|
|
56
|
+
}>;
|
|
57
|
+
buildImage(host: HostConfig, options: {
|
|
58
|
+
context: string;
|
|
59
|
+
tag: string;
|
|
60
|
+
dockerfile?: string;
|
|
61
|
+
noCache?: boolean;
|
|
62
|
+
}): Promise<{
|
|
63
|
+
status: string;
|
|
64
|
+
}>;
|
|
65
|
+
recreateContainer(containerId: string, host: HostConfig, options?: {
|
|
66
|
+
pull?: boolean;
|
|
67
|
+
}): Promise<{
|
|
68
|
+
status: string;
|
|
69
|
+
containerId: string;
|
|
70
|
+
}>;
|
|
71
|
+
getHostStatus(hosts: HostConfig[]): Promise<HostStatus[]>;
|
|
72
|
+
getDockerInfo(host: HostConfig): Promise<DockerSystemInfo>;
|
|
73
|
+
getDockerDiskUsage(host: HostConfig): Promise<DockerDiskUsage>;
|
|
74
|
+
pruneDocker(host: HostConfig, target: "containers" | "images" | "volumes" | "networks" | "buildcache" | "all", options?: {
|
|
75
|
+
force?: boolean;
|
|
76
|
+
}): Promise<PruneResult[]>;
|
|
77
|
+
listNetworks(hosts: HostConfig[]): Promise<DockerNetworkInfo[]>;
|
|
78
|
+
listVolumes(hosts: HostConfig[]): Promise<DockerVolumeInfo[]>;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/docker/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { ContainerService } from "./container-service.js";
|
|
2
|
+
import { ImageService } from "./image-service.js";
|
|
3
|
+
import { NetworkService } from "./network-service.js";
|
|
4
|
+
import { SystemService } from "./system-service.js";
|
|
5
|
+
import { DefaultDockerClientFactory } from "./utils/client-factory.js";
|
|
6
|
+
import { ClientManager } from "./utils/client-manager.js";
|
|
7
|
+
import { VolumeService } from "./volume-service.js";
|
|
8
|
+
/**
|
|
9
|
+
* Docker service facade that delegates operations to specialized services.
|
|
10
|
+
* Composes focused Docker operation interfaces.
|
|
11
|
+
*/
|
|
12
|
+
export class DockerService {
|
|
13
|
+
containerService;
|
|
14
|
+
imageService;
|
|
15
|
+
systemService;
|
|
16
|
+
networkService;
|
|
17
|
+
volumeService;
|
|
18
|
+
clientManager;
|
|
19
|
+
constructor(clientFactory) {
|
|
20
|
+
const factory = clientFactory || new DefaultDockerClientFactory();
|
|
21
|
+
this.clientManager = new ClientManager(factory);
|
|
22
|
+
this.containerService = new ContainerService(this.clientManager);
|
|
23
|
+
this.imageService = new ImageService(this.clientManager);
|
|
24
|
+
this.systemService = new SystemService(this.clientManager);
|
|
25
|
+
this.networkService = new NetworkService(this.clientManager);
|
|
26
|
+
this.volumeService = new VolumeService(this.clientManager);
|
|
27
|
+
}
|
|
28
|
+
// ========== Client Management ==========
|
|
29
|
+
async getDockerClient(config) {
|
|
30
|
+
return this.clientManager.getClient(config);
|
|
31
|
+
}
|
|
32
|
+
clearClients() {
|
|
33
|
+
this.clientManager.clearClients();
|
|
34
|
+
}
|
|
35
|
+
// ========== Container Operations ==========
|
|
36
|
+
async listContainers(hosts, options = {}) {
|
|
37
|
+
return this.containerService.listContainers(hosts, options);
|
|
38
|
+
}
|
|
39
|
+
async findContainerHost(containerId, hosts, cache) {
|
|
40
|
+
// Handle cache at facade level (requires client-provider capability)
|
|
41
|
+
if (cache) {
|
|
42
|
+
return await cache.findContainerHost(containerId, hosts, this);
|
|
43
|
+
}
|
|
44
|
+
// Delegate to service for non-cached lookup
|
|
45
|
+
return this.containerService.findContainerHost(containerId, hosts);
|
|
46
|
+
}
|
|
47
|
+
async containerAction(containerId, action, host) {
|
|
48
|
+
return this.containerService.containerAction(containerId, action, host);
|
|
49
|
+
}
|
|
50
|
+
async getContainerLogs(containerId, host, options = {}) {
|
|
51
|
+
return this.containerService.getContainerLogs(containerId, host, options);
|
|
52
|
+
}
|
|
53
|
+
async getContainerStats(containerId, host) {
|
|
54
|
+
return this.containerService.getContainerStats(containerId, host);
|
|
55
|
+
}
|
|
56
|
+
async execContainer(containerId, host, options) {
|
|
57
|
+
return this.containerService.execContainer(containerId, host, options);
|
|
58
|
+
}
|
|
59
|
+
async getContainerProcesses(containerId, host) {
|
|
60
|
+
return this.containerService.getContainerProcesses(containerId, host);
|
|
61
|
+
}
|
|
62
|
+
async inspectContainer(containerId, host) {
|
|
63
|
+
return this.containerService.inspectContainer(containerId, host);
|
|
64
|
+
}
|
|
65
|
+
// ========== Image Operations ==========
|
|
66
|
+
async listImages(hosts, options = {}) {
|
|
67
|
+
return this.imageService.listImages(hosts, options);
|
|
68
|
+
}
|
|
69
|
+
async pullImage(imageName, host) {
|
|
70
|
+
return this.imageService.pullImage(imageName, host);
|
|
71
|
+
}
|
|
72
|
+
async removeImage(imageId, host, options = {}) {
|
|
73
|
+
return this.imageService.removeImage(imageId, host, options);
|
|
74
|
+
}
|
|
75
|
+
async buildImage(host, options) {
|
|
76
|
+
return this.imageService.buildImage(host, options);
|
|
77
|
+
}
|
|
78
|
+
async recreateContainer(containerId, host, options = {}) {
|
|
79
|
+
return this.imageService.recreateContainer(containerId, host, options);
|
|
80
|
+
}
|
|
81
|
+
// ========== System Operations ==========
|
|
82
|
+
async getHostStatus(hosts) {
|
|
83
|
+
return this.systemService.getHostStatus(hosts);
|
|
84
|
+
}
|
|
85
|
+
async getDockerInfo(host) {
|
|
86
|
+
return this.systemService.getDockerInfo(host);
|
|
87
|
+
}
|
|
88
|
+
async getDockerDiskUsage(host) {
|
|
89
|
+
return this.systemService.getDockerDiskUsage(host);
|
|
90
|
+
}
|
|
91
|
+
async pruneDocker(host, target, options = {}) {
|
|
92
|
+
return this.systemService.pruneDocker(host, target, options);
|
|
93
|
+
}
|
|
94
|
+
// ========== Network Operations ==========
|
|
95
|
+
async listNetworks(hosts) {
|
|
96
|
+
return this.networkService.listNetworks(hosts);
|
|
97
|
+
}
|
|
98
|
+
// ========== Volume Operations ==========
|
|
99
|
+
async listVolumes(hosts) {
|
|
100
|
+
return this.volumeService.listVolumes(hosts);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/docker/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { DockerNetworkInfo, HostConfig } from "../../types.js";
|
|
2
|
+
import type { ClientManager } from "./utils/client-manager.js";
|
|
3
|
+
/**
|
|
4
|
+
* Service for Docker network operations.
|
|
5
|
+
* Handles network listing and management.
|
|
6
|
+
*/
|
|
7
|
+
export declare class NetworkService {
|
|
8
|
+
private clientManager;
|
|
9
|
+
constructor(clientManager: ClientManager);
|
|
10
|
+
/**
|
|
11
|
+
* List Docker networks across multiple hosts in parallel.
|
|
12
|
+
*
|
|
13
|
+
* @param hosts - List of Docker hosts to query
|
|
14
|
+
* @returns Promise resolving to array of network information
|
|
15
|
+
*/
|
|
16
|
+
listNetworks(hosts: HostConfig[]): Promise<DockerNetworkInfo[]>;
|
|
17
|
+
/**
|
|
18
|
+
* List Docker networks from a single host (internal helper).
|
|
19
|
+
*/
|
|
20
|
+
private listNetworksOnHost;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=network-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-service.d.ts","sourceRoot":"","sources":["../../../src/services/docker/network-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;GAGG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAWrE;;OAEG;YACW,kBAAkB;CAgBjC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { narrowToDefaultHost } from "../../utils/host-utils.js";
|
|
2
|
+
/**
|
|
3
|
+
* Service for Docker network operations.
|
|
4
|
+
* Handles network listing and management.
|
|
5
|
+
*/
|
|
6
|
+
export class NetworkService {
|
|
7
|
+
clientManager;
|
|
8
|
+
constructor(clientManager) {
|
|
9
|
+
this.clientManager = clientManager;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* List Docker networks across multiple hosts in parallel.
|
|
13
|
+
*
|
|
14
|
+
* @param hosts - List of Docker hosts to query
|
|
15
|
+
* @returns Promise resolving to array of network information
|
|
16
|
+
*/
|
|
17
|
+
async listNetworks(hosts) {
|
|
18
|
+
const targetHosts = narrowToDefaultHost(hosts);
|
|
19
|
+
const results = await Promise.allSettled(targetHosts.map((host) => this.listNetworksOnHost(host)));
|
|
20
|
+
return results
|
|
21
|
+
.filter((r) => r.status === "fulfilled")
|
|
22
|
+
.flatMap((r) => r.value);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* List Docker networks from a single host (internal helper).
|
|
26
|
+
*/
|
|
27
|
+
async listNetworksOnHost(host) {
|
|
28
|
+
const docker = await this.clientManager.getClient(host);
|
|
29
|
+
const networks = await docker.listNetworks();
|
|
30
|
+
return networks.map((network) => ({
|
|
31
|
+
id: network.Id,
|
|
32
|
+
name: network.Name,
|
|
33
|
+
driver: network.Driver,
|
|
34
|
+
scope: network.Scope,
|
|
35
|
+
created: network.Created,
|
|
36
|
+
internal: network.Internal,
|
|
37
|
+
attachable: network.Attachable,
|
|
38
|
+
ingress: network.Ingress,
|
|
39
|
+
hostName: host.name,
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=network-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-service.js","sourceRoot":"","sources":["../../../src/services/docker/network-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE;;;GAGG;AACH,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEpD;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,KAAmB;QACpC,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CACzD,CAAC;QAEF,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAAoD,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;aACzF,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,IAAgB;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QAE7C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAChC,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,IAAI,CAAC,IAAI;SACpB,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { DockerDiskUsage, DockerSystemInfo, HostConfig, HostStatus, PruneResult } from "../../types.js";
|
|
2
|
+
import type { ClientManager } from "./utils/client-manager.js";
|
|
3
|
+
/**
|
|
4
|
+
* Service for Docker system operations.
|
|
5
|
+
* Handles system info, disk usage, resource pruning, and host status.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SystemService {
|
|
8
|
+
private clientManager;
|
|
9
|
+
constructor(clientManager: ClientManager);
|
|
10
|
+
/**
|
|
11
|
+
* Get status overview for multiple hosts in parallel.
|
|
12
|
+
*
|
|
13
|
+
* @param hosts - List of Docker hosts to query
|
|
14
|
+
* @returns Promise resolving to array of host status information
|
|
15
|
+
*/
|
|
16
|
+
getHostStatus(hosts: HostConfig[]): Promise<HostStatus[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Get status for a single host (internal helper).
|
|
19
|
+
*/
|
|
20
|
+
private getHostStatusSingle;
|
|
21
|
+
/**
|
|
22
|
+
* Get Docker system information for a host.
|
|
23
|
+
*
|
|
24
|
+
* @param host - Host configuration
|
|
25
|
+
* @returns Promise resolving to Docker system information
|
|
26
|
+
*/
|
|
27
|
+
getDockerInfo(host: HostConfig): Promise<DockerSystemInfo>;
|
|
28
|
+
/**
|
|
29
|
+
* Get Docker disk usage statistics (system df).
|
|
30
|
+
*
|
|
31
|
+
* @param host - Host configuration
|
|
32
|
+
* @returns Promise resolving to disk usage statistics
|
|
33
|
+
*/
|
|
34
|
+
getDockerDiskUsage(host: HostConfig): Promise<DockerDiskUsage>;
|
|
35
|
+
/**
|
|
36
|
+
* Prune Docker resources (cleanup unused items).
|
|
37
|
+
* This is a destructive operation — callers must pass `force: true` to confirm.
|
|
38
|
+
*
|
|
39
|
+
* @param host - Host configuration
|
|
40
|
+
* @param target - Resource type to prune or "all" for everything
|
|
41
|
+
* @param options - Options including force confirmation
|
|
42
|
+
* @returns Promise resolving to array of prune results per resource type
|
|
43
|
+
* @throws Error if force is not true
|
|
44
|
+
*/
|
|
45
|
+
pruneDocker(host: HostConfig, target: "containers" | "images" | "volumes" | "networks" | "buildcache" | "all", options?: {
|
|
46
|
+
force?: boolean;
|
|
47
|
+
}): Promise<PruneResult[]>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=system-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-service.d.ts","sourceRoot":"","sources":["../../../src/services/docker/system-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ/D;;;GAGG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD;;;;;OAKG;IACG,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAK/D;;OAEG;YACW,mBAAmB;IA4BjC;;;;;OAKG;IACG,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuBhE;;;;;OAKG;IACG,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC;IA+CpE;;;;;;;;;OASG;IACG,WAAW,CACf,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,KAAK,EAC/E,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAChC,OAAO,CAAC,WAAW,EAAE,CAAC;CAwF1B"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { HostOperationError, logError } from "../../utils/errors.js";
|
|
2
|
+
import { calculateBuildCacheStats, calculateContainerStats, calculateImageStats, calculateVolumeStats, } from "./utils/stats-calculator.js";
|
|
3
|
+
/**
|
|
4
|
+
* Service for Docker system operations.
|
|
5
|
+
* Handles system info, disk usage, resource pruning, and host status.
|
|
6
|
+
*/
|
|
7
|
+
export class SystemService {
|
|
8
|
+
clientManager;
|
|
9
|
+
constructor(clientManager) {
|
|
10
|
+
this.clientManager = clientManager;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get status overview for multiple hosts in parallel.
|
|
14
|
+
*
|
|
15
|
+
* @param hosts - List of Docker hosts to query
|
|
16
|
+
* @returns Promise resolving to array of host status information
|
|
17
|
+
*/
|
|
18
|
+
async getHostStatus(hosts) {
|
|
19
|
+
// Query all hosts in parallel - errors are handled in getHostStatusSingle
|
|
20
|
+
return Promise.all(hosts.map((host) => this.getHostStatusSingle(host)));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get status for a single host (internal helper).
|
|
24
|
+
*/
|
|
25
|
+
async getHostStatusSingle(host) {
|
|
26
|
+
try {
|
|
27
|
+
const docker = await this.clientManager.getClient(host);
|
|
28
|
+
const containers = await docker.listContainers({ all: true });
|
|
29
|
+
const running = containers.filter((c) => c.State === "running").length;
|
|
30
|
+
return {
|
|
31
|
+
name: host.name,
|
|
32
|
+
host: host.host,
|
|
33
|
+
connected: true,
|
|
34
|
+
containerCount: containers.length,
|
|
35
|
+
runningCount: running,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
logError(new HostOperationError("Failed to get host info", host.name, "getHostInfo", error), {
|
|
40
|
+
metadata: { host: host.host },
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
name: host.name,
|
|
44
|
+
host: host.host,
|
|
45
|
+
connected: false,
|
|
46
|
+
containerCount: 0,
|
|
47
|
+
runningCount: 0,
|
|
48
|
+
error: error instanceof Error ? error.message : "Connection failed",
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get Docker system information for a host.
|
|
54
|
+
*
|
|
55
|
+
* @param host - Host configuration
|
|
56
|
+
* @returns Promise resolving to Docker system information
|
|
57
|
+
*/
|
|
58
|
+
async getDockerInfo(host) {
|
|
59
|
+
const docker = await this.clientManager.getClient(host);
|
|
60
|
+
const info = await docker.info();
|
|
61
|
+
const version = await docker.version();
|
|
62
|
+
return {
|
|
63
|
+
dockerVersion: version.Version || "unknown",
|
|
64
|
+
apiVersion: version.ApiVersion || "unknown",
|
|
65
|
+
os: info.OperatingSystem || info.OSType || "unknown",
|
|
66
|
+
arch: info.Architecture || "unknown",
|
|
67
|
+
kernelVersion: info.KernelVersion || "unknown",
|
|
68
|
+
cpus: info.NCPU || 0,
|
|
69
|
+
memoryBytes: info.MemTotal || 0,
|
|
70
|
+
storageDriver: info.Driver || "unknown",
|
|
71
|
+
rootDir: info.DockerRootDir || "/var/lib/docker",
|
|
72
|
+
containersTotal: info.Containers || 0,
|
|
73
|
+
containersRunning: info.ContainersRunning || 0,
|
|
74
|
+
containersPaused: info.ContainersPaused || 0,
|
|
75
|
+
containersStopped: info.ContainersStopped || 0,
|
|
76
|
+
images: info.Images || 0,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get Docker disk usage statistics (system df).
|
|
81
|
+
*
|
|
82
|
+
* @param host - Host configuration
|
|
83
|
+
* @returns Promise resolving to disk usage statistics
|
|
84
|
+
*/
|
|
85
|
+
async getDockerDiskUsage(host) {
|
|
86
|
+
const docker = await this.clientManager.getClient(host);
|
|
87
|
+
const df = await docker.df();
|
|
88
|
+
// Calculate stats using helper functions
|
|
89
|
+
const imageStats = calculateImageStats(df.Images || []);
|
|
90
|
+
const containerStats = calculateContainerStats(df.Containers || []);
|
|
91
|
+
const volumeStats = calculateVolumeStats(df.Volumes || []);
|
|
92
|
+
const buildCacheStats = calculateBuildCacheStats(df.BuildCache || []);
|
|
93
|
+
const totalSize = imageStats.size + containerStats.size + volumeStats.size + buildCacheStats.size;
|
|
94
|
+
const totalReclaimable = imageStats.reclaimable +
|
|
95
|
+
containerStats.size +
|
|
96
|
+
volumeStats.reclaimable +
|
|
97
|
+
buildCacheStats.reclaimable;
|
|
98
|
+
return {
|
|
99
|
+
images: {
|
|
100
|
+
total: imageStats.total,
|
|
101
|
+
active: imageStats.active,
|
|
102
|
+
size: imageStats.size,
|
|
103
|
+
reclaimable: imageStats.reclaimable,
|
|
104
|
+
},
|
|
105
|
+
containers: {
|
|
106
|
+
total: containerStats.total,
|
|
107
|
+
running: containerStats.running,
|
|
108
|
+
size: containerStats.size + containerStats.rootfsSize,
|
|
109
|
+
reclaimable: containerStats.size,
|
|
110
|
+
},
|
|
111
|
+
volumes: {
|
|
112
|
+
total: volumeStats.total,
|
|
113
|
+
active: volumeStats.active,
|
|
114
|
+
size: volumeStats.size,
|
|
115
|
+
reclaimable: volumeStats.reclaimable,
|
|
116
|
+
},
|
|
117
|
+
buildCache: {
|
|
118
|
+
total: buildCacheStats.total,
|
|
119
|
+
size: buildCacheStats.size,
|
|
120
|
+
reclaimable: buildCacheStats.reclaimable,
|
|
121
|
+
},
|
|
122
|
+
totalSize,
|
|
123
|
+
totalReclaimable,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Prune Docker resources (cleanup unused items).
|
|
128
|
+
* This is a destructive operation — callers must pass `force: true` to confirm.
|
|
129
|
+
*
|
|
130
|
+
* @param host - Host configuration
|
|
131
|
+
* @param target - Resource type to prune or "all" for everything
|
|
132
|
+
* @param options - Options including force confirmation
|
|
133
|
+
* @returns Promise resolving to array of prune results per resource type
|
|
134
|
+
* @throws Error if force is not true
|
|
135
|
+
*/
|
|
136
|
+
async pruneDocker(host, target, options = {}) {
|
|
137
|
+
if (!options.force) {
|
|
138
|
+
throw new Error("pruneDocker requires { force: true } to confirm destructive operation");
|
|
139
|
+
}
|
|
140
|
+
const docker = await this.clientManager.getClient(host);
|
|
141
|
+
const results = [];
|
|
142
|
+
const targets = target === "all"
|
|
143
|
+
? ["containers", "images", "volumes", "networks", "buildcache"]
|
|
144
|
+
: [target];
|
|
145
|
+
for (const t of targets) {
|
|
146
|
+
try {
|
|
147
|
+
switch (t) {
|
|
148
|
+
case "containers": {
|
|
149
|
+
const res = await docker.pruneContainers();
|
|
150
|
+
results.push({
|
|
151
|
+
type: "containers",
|
|
152
|
+
spaceReclaimed: res.SpaceReclaimed || 0,
|
|
153
|
+
itemsDeleted: res.ContainersDeleted?.length || 0,
|
|
154
|
+
details: res.ContainersDeleted,
|
|
155
|
+
});
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
case "images": {
|
|
159
|
+
const res = await docker.pruneImages();
|
|
160
|
+
results.push({
|
|
161
|
+
type: "images",
|
|
162
|
+
spaceReclaimed: res.SpaceReclaimed || 0,
|
|
163
|
+
itemsDeleted: res.ImagesDeleted?.length || 0,
|
|
164
|
+
details: res.ImagesDeleted?.map((i) => i.Deleted || i.Untagged || ""),
|
|
165
|
+
});
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
case "volumes": {
|
|
169
|
+
const res = await docker.pruneVolumes();
|
|
170
|
+
results.push({
|
|
171
|
+
type: "volumes",
|
|
172
|
+
spaceReclaimed: res.SpaceReclaimed || 0,
|
|
173
|
+
itemsDeleted: res.VolumesDeleted?.length || 0,
|
|
174
|
+
details: res.VolumesDeleted,
|
|
175
|
+
});
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
case "networks": {
|
|
179
|
+
const res = await docker.pruneNetworks();
|
|
180
|
+
results.push({
|
|
181
|
+
type: "networks",
|
|
182
|
+
spaceReclaimed: 0,
|
|
183
|
+
itemsDeleted: res.NetworksDeleted?.length || 0,
|
|
184
|
+
details: res.NetworksDeleted,
|
|
185
|
+
});
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
case "buildcache": {
|
|
189
|
+
const res = (await docker.pruneBuilder());
|
|
190
|
+
results.push({
|
|
191
|
+
type: "buildcache",
|
|
192
|
+
spaceReclaimed: res.SpaceReclaimed || 0,
|
|
193
|
+
itemsDeleted: res.CachesDeleted?.length || 0,
|
|
194
|
+
details: res.CachesDeleted,
|
|
195
|
+
});
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
logError(new HostOperationError("Docker cleanup failed", host.name, "dockerCleanup", error), {
|
|
202
|
+
metadata: { type: t },
|
|
203
|
+
});
|
|
204
|
+
results.push({
|
|
205
|
+
type: t,
|
|
206
|
+
spaceReclaimed: 0,
|
|
207
|
+
itemsDeleted: 0,
|
|
208
|
+
details: [`Error: ${error instanceof Error ? error.message : "Unknown error"}`],
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return results;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=system-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-service.js","sourceRoot":"","sources":["../../../src/services/docker/system-service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,MAAM,OAAO,aAAa;IACJ;IAApB,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEpD;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,KAAmB;QACrC,0EAA0E;QAC1E,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,IAAgB;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;YAEvE,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,UAAU,CAAC,MAAM;gBACjC,YAAY,EAAE,OAAO;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,kBAAkB,CAAC,yBAAyB,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE;gBAC3F,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aAC9B,CAAC,CAAC;YACH,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,KAAK;gBAChB,cAAc,EAAE,CAAC;gBACjB,YAAY,EAAE,CAAC;gBACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;aACpE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,IAAgB;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvC,OAAO;YACL,aAAa,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;YAC3C,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;YAC3C,EAAE,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;YACpD,IAAI,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS;YACpC,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,SAAS;YAC9C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;YACpB,WAAW,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;YAC/B,aAAa,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;YACvC,OAAO,EAAE,IAAI,CAAC,aAAa,IAAI,iBAAiB;YAChD,eAAe,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;YACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC;YAC9C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,CAAC;YAC5C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC;YAC9C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;SACzB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAAgB;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC;QAE7B,yCAAyC;QACzC,MAAM,UAAU,GAAG,mBAAmB,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,uBAAuB,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,oBAAoB,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,eAAe,GAAG,wBAAwB,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAEtE,MAAM,SAAS,GACb,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;QAClF,MAAM,gBAAgB,GACpB,UAAU,CAAC,WAAW;YACtB,cAAc,CAAC,IAAI;YACnB,WAAW,CAAC,WAAW;YACvB,eAAe,CAAC,WAAW,CAAC;QAE9B,OAAO;YACL,MAAM,EAAE;gBACN,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,WAAW,EAAE,UAAU,CAAC,WAAW;aACpC;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,cAAc,CAAC,KAAK;gBAC3B,OAAO,EAAE,cAAc,CAAC,OAAO;gBAC/B,IAAI,EAAE,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,UAAU;gBACrD,WAAW,EAAE,cAAc,CAAC,IAAI;aACjC;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,WAAW,EAAE,WAAW,CAAC,WAAW;aACrC;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,eAAe,CAAC,KAAK;gBAC5B,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,WAAW,EAAE,eAAe,CAAC,WAAW;aACzC;YACD,SAAS;YACT,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,WAAW,CACf,IAAgB,EAChB,MAA+E,EAC/E,UAA+B,EAAE;QAEjC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,MAAM,OAAO,GACX,MAAM,KAAK,KAAK;YACd,CAAC,CAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAW;YAC1E,CAAC,CAAE,CAAC,MAAM,CAAW,CAAC;QAE1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,QAAQ,CAAC,EAAE,CAAC;oBACV,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;wBAC3C,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,YAAY;4BAClB,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,CAAC;4BACvC,YAAY,EAAE,GAAG,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC;4BAChD,OAAO,EAAE,GAAG,CAAC,iBAAiB;yBAC/B,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;oBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACd,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;wBACvC,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,QAAQ;4BACd,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,CAAC;4BACvC,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;4BAC5C,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;yBACtE,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;oBACD,KAAK,SAAS,CAAC,CAAC,CAAC;wBACf,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;wBACxC,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,SAAS;4BACf,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,CAAC;4BACvC,YAAY,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC;4BAC7C,OAAO,EAAE,GAAG,CAAC,cAAc;yBAC5B,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;oBACD,KAAK,UAAU,CAAC,CAAC,CAAC;wBAChB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;wBACzC,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,UAAU;4BAChB,cAAc,EAAE,CAAC;4BACjB,YAAY,EAAE,GAAG,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;4BAC9C,OAAO,EAAE,GAAG,CAAC,eAAe;yBAC7B,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;oBACD,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,EAAE,CAGvC,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,YAAY;4BAClB,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,CAAC;4BACvC,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;4BAC5C,OAAO,EAAE,GAAG,CAAC,aAAa;yBAC3B,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CACN,IAAI,kBAAkB,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,EAClF;oBACE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;iBACtB,CACF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,CAAC;oBACP,cAAc,EAAE,CAAC;oBACjB,YAAY,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;iBAChF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import Docker from "dockerode";
|
|
2
|
+
import type { HostConfig } from "../../../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Interface for Docker client factory.
|
|
5
|
+
* Allows dependency injection of custom Docker client creation logic.
|
|
6
|
+
*/
|
|
7
|
+
export interface IDockerClientFactory {
|
|
8
|
+
createClient(config: HostConfig): Promise<Docker>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Check if a string looks like a Unix socket path
|
|
12
|
+
*/
|
|
13
|
+
export declare function isSocketPath(value: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Default Docker client factory implementation.
|
|
16
|
+
* Creates Docker clients based on host configuration (socket, SSH, HTTP/HTTPS).
|
|
17
|
+
*
|
|
18
|
+
* Architecture Note: Dual SSH Connection Strategy
|
|
19
|
+
* ------------------------------------------------
|
|
20
|
+
* This system uses TWO separate SSH connection mechanisms:
|
|
21
|
+
*
|
|
22
|
+
* 1. Docker API SSH (via dockerode/ssh2):
|
|
23
|
+
* - Used for Docker API calls (listContainers, stats, etc.)
|
|
24
|
+
* - Managed by dockerode library with native SSH tunnel support
|
|
25
|
+
* - Connections created per Docker client instance
|
|
26
|
+
* - Cached at the client level by ClientManager
|
|
27
|
+
*
|
|
28
|
+
* 2. SSH Command Execution (via node-ssh/SSHConnectionPool):
|
|
29
|
+
* - Used for shell commands (compose, find, scan, exec)
|
|
30
|
+
* - Managed by SSHConnectionPool with health checks and pooling
|
|
31
|
+
* - Connections pooled and reused across operations
|
|
32
|
+
*
|
|
33
|
+
* This separation is intentional and provides:
|
|
34
|
+
* - API operations isolated from command execution failures
|
|
35
|
+
* - Different retry/timeout strategies for different operation types
|
|
36
|
+
* - No dependency between Docker API and shell command availability
|
|
37
|
+
*
|
|
38
|
+
* Future optimization: Consider SSH multiplexing (ControlMaster) at the OS level
|
|
39
|
+
* to share TCP connections between both mechanisms.
|
|
40
|
+
*/
|
|
41
|
+
export declare class DefaultDockerClientFactory implements IDockerClientFactory {
|
|
42
|
+
private keyCache;
|
|
43
|
+
/**
|
|
44
|
+
* Get private key content with caching.
|
|
45
|
+
* Caching eliminates redundant file I/O for repeated client creation.
|
|
46
|
+
* Matches SSHConnectionPool pattern for consistency.
|
|
47
|
+
*/
|
|
48
|
+
private getPrivateKey;
|
|
49
|
+
/**
|
|
50
|
+
* Clear cached SSH private keys.
|
|
51
|
+
* Call during shutdown to release sensitive key material from memory.
|
|
52
|
+
*/
|
|
53
|
+
clearKeyCache(): void;
|
|
54
|
+
createClient(config: HostConfig): Promise<Docker>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=client-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../../../../src/services/docker/utils/client-factory.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAwBpD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;IACrE,OAAO,CAAC,QAAQ,CAA6B;IAE7C;;;;OAIG;IACH,OAAO,CAAC,aAAa;IASrB;;;OAGG;IACH,aAAa,IAAI,IAAI;IAIf,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;CAwExD"}
|