@codiac.io/codiac-cli 1.2.167 → 1.2.169
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 +3326 -45
- package/bin/dev +16 -16
- package/bin/dev.cmd +2 -2
- package/bin/run +3 -3
- package/bin/run.cmd +3 -3
- package/codiac.json +9 -9
- package/lib/api-command-base.d.ts +0 -0
- package/lib/api-command-base.js +52 -0
- package/lib/api-command-base.js.map +1 -0
- package/lib/apis/codiac-api/common/api-client-base.d.ts +165 -165
- package/lib/apis/codiac-api/common/api-client-base.js +547 -547
- package/lib/apis/codiac-api/common/api-user-creds.d.ts +7 -7
- package/lib/apis/codiac-api/common/api-user-creds.js +18 -18
- package/lib/apis/codiac-api/common/config-loader.d.ts +6 -6
- package/lib/apis/codiac-api/common/config-loader.js +18 -18
- package/lib/apis/codiac-api/common/endpoint-spec.d.ts +17 -17
- package/lib/apis/codiac-api/common/endpoint-spec.js +27 -27
- package/lib/apis/codiac-api/common/security/api-auth-methods-legacy.d.ts +87 -87
- package/lib/apis/codiac-api/common/security/api-auth-methods-legacy.js +367 -367
- package/lib/apis/codiac-api/common/security/auth-constants.d.ts +15 -15
- package/lib/apis/codiac-api/common/security/auth-constants.js +21 -21
- package/lib/apis/codiac-api/common/security/i-auth-client.d.ts +44 -44
- package/lib/apis/codiac-api/common/security/i-auth-client.js +2 -2
- package/lib/apis/codiac-api/common/security/token-holder.d.ts +13 -13
- package/lib/apis/codiac-api/common/security/token-holder.js +17 -17
- package/lib/apis/codiac-api/common/utils.d.ts +23 -23
- package/lib/apis/codiac-api/common/utils.js +82 -82
- package/lib/apis/codiac-api/contracts/index.d.ts +1 -1
- package/lib/apis/codiac-api/contracts/index.js +4 -4
- package/lib/apis/codiac-api/gen/client-config.d.ts +10 -10
- package/lib/apis/codiac-api/gen/client-config.js +28 -28
- package/lib/apis/codiac-api/gen/client.d.ts +1663 -1663
- package/lib/apis/codiac-api/gen/client.js +15629 -15629
- package/lib/apis/codiac-api/gen/contracts.d.ts +2722 -2722
- package/lib/apis/codiac-api/gen/contracts.js +402 -402
- package/lib/apis/codiac-api/index.d.ts +3 -3
- package/lib/apis/codiac-api/index.js +8 -8
- package/lib/apis/codiac-relay/common/api-client-base.d.ts +165 -165
- package/lib/apis/codiac-relay/common/api-client-base.js +547 -547
- package/lib/apis/codiac-relay/common/api-user-creds.d.ts +7 -7
- package/lib/apis/codiac-relay/common/api-user-creds.js +18 -18
- package/lib/apis/codiac-relay/common/config-loader.d.ts +6 -6
- package/lib/apis/codiac-relay/common/config-loader.js +18 -18
- package/lib/apis/codiac-relay/common/endpoint-spec.d.ts +17 -17
- package/lib/apis/codiac-relay/common/endpoint-spec.js +27 -27
- package/lib/apis/codiac-relay/common/security/api-auth-methods-legacy.d.ts +87 -87
- package/lib/apis/codiac-relay/common/security/api-auth-methods-legacy.js +367 -367
- package/lib/apis/codiac-relay/common/security/auth-constants.d.ts +15 -15
- package/lib/apis/codiac-relay/common/security/auth-constants.js +21 -21
- package/lib/apis/codiac-relay/common/security/i-auth-client.d.ts +44 -44
- package/lib/apis/codiac-relay/common/security/i-auth-client.js +2 -2
- package/lib/apis/codiac-relay/common/security/token-holder.d.ts +13 -13
- package/lib/apis/codiac-relay/common/security/token-holder.js +17 -17
- package/lib/apis/codiac-relay/common/utils.d.ts +23 -23
- package/lib/apis/codiac-relay/common/utils.js +82 -82
- package/lib/apis/codiac-relay/contracts/index.d.ts +1 -1
- package/lib/apis/codiac-relay/contracts/index.js +4 -4
- package/lib/apis/codiac-relay/gen/client-config.d.ts +10 -10
- package/lib/apis/codiac-relay/gen/client-config.js +28 -28
- package/lib/apis/codiac-relay/gen/client.d.ts +244 -244
- package/lib/apis/codiac-relay/gen/client.js +1862 -1862
- package/lib/apis/codiac-relay/gen/contracts.d.ts +3111 -3111
- package/lib/apis/codiac-relay/gen/contracts.js +434 -434
- package/lib/apis/codiac-relay/index.d.ts +3 -3
- package/lib/apis/codiac-relay/index.js +8 -8
- package/lib/azure-rest-client.d.ts +6 -0
- package/lib/azure-rest-client.js +36 -0
- package/lib/azure-rest-client.js.map +1 -0
- package/lib/cli-common/ImagesList.js +66 -66
- package/lib/cli-common/argument-manager.d.ts +28 -28
- package/lib/cli-common/argument-manager.js +194 -194
- package/lib/cli-common/built-in-cli-user-input.d.ts +18 -18
- package/lib/cli-common/built-in-cli-user-input.js +309 -309
- package/lib/cli-common/cli-interfaces.js +6 -6
- package/lib/cli-common/command-base.d.ts +72 -72
- package/lib/cli-common/command-base.js +181 -181
- package/lib/cli-common/entities/index.d.ts +1 -1
- package/lib/cli-common/entities/index.js +4 -4
- package/lib/cli-common/entities/prompt-choice.d.ts +7 -7
- package/lib/cli-common/entities/prompt-choice.js +2 -2
- package/lib/cli-common/file-selector.d.ts +48 -48
- package/lib/cli-common/file-selector.js +186 -186
- package/lib/cli-common/i-user-input-provider.js +18 -18
- package/lib/cli-common/index.d.ts +4 -4
- package/lib/cli-common/index.js +10 -10
- package/lib/cli-common/mock-ui.d.ts +27 -27
- package/lib/cli-common/mock-ui.js +82 -82
- package/lib/cli-common/prompt-select-fuzzy.d.ts +19 -19
- package/lib/cli-common/prompt-select-fuzzy.js +118 -118
- package/lib/cli-common/tenant-contextualizer.js +435 -435
- package/lib/cli-common/test/tenant-contextualizer.spec.js +142 -142
- package/lib/cli-entities/output-format-enum.d.ts +7 -7
- package/lib/cli-entities/output-format-enum.js +11 -11
- package/lib/cli-entities/prompt-choice.js +5 -5
- package/lib/codiac-constants.d.ts +35 -35
- package/lib/codiac-constants.js +40 -40
- package/lib/codiac-entities/asset-binding.d.ts +12 -12
- package/lib/codiac-entities/asset-binding.js +17 -17
- package/lib/codiac-entities/azure-container-registry.d.ts +4 -4
- package/lib/codiac-entities/azure-container-registry.js +2 -2
- package/lib/codiac-entities/azure-service-principal.d.ts +23 -23
- package/lib/codiac-entities/azure-service-principal.js +23 -23
- package/lib/codiac-entities/cloud-account-ref.d.ts +28 -28
- package/lib/codiac-entities/cloud-account-ref.js +36 -36
- package/lib/codiac-entities/deployment-temp.js +132 -132
- package/lib/codiac-entities/i-cloud-account-ref.d.ts +5 -5
- package/lib/codiac-entities/i-cloud-account-ref.js +2 -2
- package/lib/command-base-enterprise.d.ts +121 -121
- package/lib/command-base-enterprise.js +523 -523
- package/lib/command-base-tenantless.d.ts +44 -44
- package/lib/command-base-tenantless.js +172 -172
- package/lib/commands/asset/create.d.ts +42 -42
- package/lib/commands/asset/create.js +466 -466
- package/lib/commands/asset/destroy.d.ts +20 -20
- package/lib/commands/asset/destroy.js +128 -128
- package/lib/commands/asset/helm.d.ts +23 -23
- package/lib/commands/asset/helm.js +152 -152
- package/lib/commands/asset/list.d.ts +28 -28
- package/lib/commands/asset/list.js +171 -171
- package/lib/commands/asset/probe/create.d.ts +38 -38
- package/lib/commands/asset/probe/create.js +186 -186
- package/lib/commands/asset/recycle.d.ts +23 -23
- package/lib/commands/asset/recycle.js +174 -174
- package/lib/commands/asset/view.d.ts +188 -188
- package/lib/commands/asset/view.js +1364 -1364
- package/lib/commands/asset/volume/create.d.ts +23 -23
- package/lib/commands/asset/volume/create.js +175 -175
- package/lib/commands/asset/volume/delete.d.ts +19 -19
- package/lib/commands/asset/volume/delete.js +111 -111
- package/lib/commands/asset/volume/list.d.ts +19 -19
- package/lib/commands/asset/volume/list.js +69 -69
- package/lib/commands/branch/current.d.ts +10 -10
- package/lib/commands/branch/current.js +33 -33
- package/lib/commands/branch/list.d.ts +15 -15
- package/lib/commands/branch/list.js +55 -55
- package/lib/commands/branch.d.ts +12 -12
- package/lib/commands/branch.js +41 -41
- package/lib/commands/build.d.ts +37 -37
- package/lib/commands/build.js +118 -118
- package/lib/commands/cabinet/create.d.ts +21 -21
- package/lib/commands/cabinet/create.js +107 -107
- package/lib/commands/cabinet/list.d.ts +23 -23
- package/lib/commands/cabinet/list.js +133 -133
- package/lib/commands/cabinet/obliterate.d.ts +20 -20
- package/lib/commands/cabinet/obliterate.js +82 -82
- package/lib/commands/cli.d.ts +10 -10
- package/lib/commands/cli.js +99 -99
- package/lib/commands/commit.d.ts +11 -11
- package/lib/commands/commit.js +39 -39
- package/lib/commands/config/add.d.ts +78 -78
- package/lib/commands/config/add.js +559 -559
- package/lib/commands/config/delete.d.ts +18 -18
- package/lib/commands/config/delete.js +118 -118
- package/lib/commands/config/deploy.d.ts +22 -22
- package/lib/commands/config/deploy.js +124 -124
- package/lib/commands/config/import.d.ts +27 -27
- package/lib/commands/config/import.js +195 -195
- package/lib/commands/config/view.d.ts +25 -25
- package/lib/commands/config/view.js +120 -120
- package/lib/commands/csp/login.d.ts +18 -18
- package/lib/commands/csp/login.js +108 -108
- package/lib/commands/csp/logout.d.ts +15 -15
- package/lib/commands/csp/logout.js +73 -73
- package/lib/commands/dep/create.d.ts +13 -13
- package/lib/commands/dep/create.js +40 -40
- package/lib/commands/dep/install.d.ts +9 -9
- package/lib/commands/dep/install.js +29 -29
- package/lib/commands/dep/list.d.ts +55 -55
- package/lib/commands/dep/list.js +97 -97
- package/lib/commands/dep/remove.d.ts +12 -12
- package/lib/commands/dep/remove.js +61 -61
- package/lib/commands/dep/source.d.ts +13 -13
- package/lib/commands/dep/source.js +82 -82
- package/lib/commands/dep/syncup.d.ts +11 -11
- package/lib/commands/dep/syncup.js +53 -53
- package/lib/commands/dep/unsource.d.ts +14 -14
- package/lib/commands/dep/unsource.js +67 -67
- package/lib/commands/dep/upgrade.d.ts +44 -44
- package/lib/commands/dep/upgrade.js +243 -243
- package/lib/commands/dep.d.ts +12 -12
- package/lib/commands/dep.js +50 -50
- package/lib/commands/deploy.d.ts +38 -38
- package/lib/commands/deploy.js +382 -382
- package/lib/commands/enterprise/create.d.ts +20 -20
- package/lib/commands/enterprise/create.js +97 -97
- package/lib/commands/enterprise/list.d.ts +14 -14
- package/lib/commands/enterprise/list.js +83 -83
- package/lib/commands/env/add.d.ts +22 -22
- package/lib/commands/env/add.js +199 -199
- package/lib/commands/environment/create.d.ts +19 -19
- package/lib/commands/environment/create.js +88 -88
- package/lib/commands/environment/list.d.ts +25 -25
- package/lib/commands/environment/list.js +157 -157
- package/lib/commands/filestore/capture.d.ts +31 -31
- package/lib/commands/filestore/capture.js +341 -341
- package/lib/commands/host/map.d.ts +33 -33
- package/lib/commands/host/map.js +346 -346
- package/lib/commands/identity/delete.d.ts +15 -15
- package/lib/commands/identity/delete.js +82 -82
- package/lib/commands/identity/list.d.ts +11 -11
- package/lib/commands/identity/list.js +42 -42
- package/lib/commands/identity.d.ts +22 -22
- package/lib/commands/identity.js +76 -76
- package/lib/commands/imageRegistry/capture.d.ts +27 -27
- package/lib/commands/imageRegistry/capture.js +159 -159
- package/lib/commands/imageRegistry/forget.d.ts +23 -23
- package/lib/commands/imageRegistry/forget.js +160 -160
- package/lib/commands/imageRegistry/pullSecret/set.d.ts +27 -27
- package/lib/commands/imageRegistry/pullSecret/set.js +299 -299
- package/lib/commands/imageRegistry/pullSecret/unset.d.ts +24 -24
- package/lib/commands/imageRegistry/pullSecret/unset.js +242 -242
- package/lib/commands/images/add.d.ts +25 -25
- package/lib/commands/images/add.js +75 -75
- package/lib/commands/images/list.d.ts +14 -14
- package/lib/commands/images/list.js +71 -71
- package/lib/commands/images/patch.d.ts +14 -14
- package/lib/commands/images/patch.js +92 -92
- package/lib/commands/images/remove.d.ts +12 -12
- package/lib/commands/images/remove.js +37 -37
- package/lib/commands/images/version.d.ts +16 -16
- package/lib/commands/images/version.js +64 -64
- package/lib/commands/init.d.ts +17 -17
- package/lib/commands/init.js +130 -130
- package/lib/commands/kit/create.d.ts +25 -25
- package/lib/commands/kit/create.js +141 -141
- package/lib/commands/login.d.ts +22 -22
- package/lib/commands/login.js +92 -92
- package/lib/commands/logout.d.ts +8 -8
- package/lib/commands/logout.js +36 -36
- package/lib/commands/merge.d.ts +12 -12
- package/lib/commands/merge.js +42 -42
- package/lib/commands/noc/cluster/create.d.ts +28 -28
- package/lib/commands/noc/cluster/create.js +132 -132
- package/lib/commands/noc/cluster/deinit.d.ts +17 -17
- package/lib/commands/noc/cluster/deinit.js +116 -116
- package/lib/commands/noc/cluster/destroy.d.ts +20 -20
- package/lib/commands/noc/cluster/destroy.js +137 -137
- package/lib/commands/noc/cluster/forget.d.ts +16 -16
- package/lib/commands/noc/cluster/forget.js +136 -136
- package/lib/commands/noc/cluster/grant.d.ts +24 -24
- package/lib/commands/noc/cluster/grant.js +159 -159
- package/lib/commands/noc/cluster/init.d.ts +17 -17
- package/lib/commands/noc/cluster/init.js +116 -116
- package/lib/commands/noc/cluster/list.d.ts +21 -21
- package/lib/commands/noc/cluster/list.js +83 -83
- package/lib/commands/noc/cluster/recreate.d.ts +28 -28
- package/lib/commands/noc/cluster/recreate.js +185 -185
- package/lib/commands/pkg/add.d.ts +15 -15
- package/lib/commands/pkg/add.js +42 -42
- package/lib/commands/pkg/list.d.ts +9 -9
- package/lib/commands/pkg/list.js +32 -32
- package/lib/commands/pkg/patch.d.ts +13 -13
- package/lib/commands/pkg/patch.js +78 -78
- package/lib/commands/pkg/remove.d.ts +12 -12
- package/lib/commands/pkg/remove.js +69 -69
- package/lib/commands/portal.d.ts +11 -11
- package/lib/commands/portal.js +81 -81
- package/lib/commands/publish.d.ts +21 -21
- package/lib/commands/publish.js +51 -51
- package/lib/commands/pull.d.ts +13 -13
- package/lib/commands/pull.js +29 -29
- package/lib/commands/push.d.ts +13 -13
- package/lib/commands/push.js +29 -29
- package/lib/commands/run.d.ts +35 -35
- package/lib/commands/run.js +193 -193
- package/lib/commands/secretStore/capture.d.ts +27 -27
- package/lib/commands/secretStore/capture.js +174 -174
- package/lib/commands/secretStore/forget.d.ts +20 -20
- package/lib/commands/secretStore/forget.js +146 -146
- package/lib/commands/stage.d.ts +13 -13
- package/lib/commands/stage.js +64 -64
- package/lib/commands/stash.d.ts +13 -13
- package/lib/commands/stash.js +30 -30
- package/lib/commands/status.d.ts +12 -12
- package/lib/commands/status.js +48 -48
- package/lib/commands/stop.d.ts +10 -10
- package/lib/commands/stop.js +51 -51
- package/lib/commands/switch.d.ts +11 -11
- package/lib/commands/switch.js +41 -41
- package/lib/commands/sync.d.ts +14 -14
- package/lib/commands/sync.js +20 -20
- package/lib/commands/tenant/create.d.ts +27 -27
- package/lib/commands/tenant/create.js +119 -119
- package/lib/commands/tenant/switch.d.ts +24 -24
- package/lib/commands/tenant/switch.js +108 -108
- package/lib/commands/unstage.d.ts +12 -12
- package/lib/commands/unstage.js +57 -57
- package/lib/commands/view/dashboard.d.ts +17 -0
- package/lib/commands/view/dashboard.js +88 -0
- package/lib/commands/view/dashboard.js.map +1 -0
- package/lib/commands/view/pods.d.ts +14 -0
- package/lib/commands/view/pods.js +88 -0
- package/lib/commands/view/pods.js.map +1 -0
- package/lib/commands/whereami.d.ts +15 -15
- package/lib/commands/whereami.js +122 -122
- package/lib/commands/whoami.d.ts +8 -8
- package/lib/commands/whoami.js +39 -39
- package/lib/deployment.d.ts +2 -0
- package/lib/deployment.js +7 -0
- package/lib/deployment.js.map +1 -0
- package/lib/errors/NoMembershipError.d.ts +8 -8
- package/lib/errors/NoMembershipError.js +14 -14
- package/lib/index.d.ts +1 -1
- package/lib/index.js +16 -16
- package/lib/k8s-command-base.d.ts +60 -0
- package/lib/k8s-command-base.js +204 -0
- package/lib/k8s-command-base.js.map +1 -0
- package/lib/log-update-wrapper.d.ts +24 -24
- package/lib/log-update-wrapper.js +28 -28
- package/lib/log4js-logger.d.ts +26 -26
- package/lib/log4js-logger.js +137 -137
- package/lib/ops/INTERFACES_CLI.d.ts +3 -3
- package/lib/ops/INTERFACES_CLI.js +7 -7
- package/lib/ops/LocalOps.d.ts +444 -444
- package/lib/ops/LocalOps.js +3183 -3183
- package/lib/ops/azure-container-registry-client/azure-container-registry-client.js +147 -147
- package/lib/ops/cli-path-walker.js +54 -54
- package/lib/ops/codiac-entities/dependency.d.ts +5 -5
- package/lib/ops/codiac-entities/dependency.js +10 -10
- package/lib/ops/codiac-entities/index.d.ts +1 -1
- package/lib/ops/codiac-entities/index.js +4 -4
- package/lib/ops/composite-image-registry-client.js +73 -73
- package/lib/ops/data/cli-context-repo.d.ts +61 -61
- package/lib/ops/data/cli-context-repo.js +269 -269
- package/lib/ops/data/index.d.ts +2 -2
- package/lib/ops/data/index.js +5 -5
- package/lib/ops/data/npm-config-repo.d.ts +13 -13
- package/lib/ops/data/npm-config-repo.js +64 -64
- package/lib/ops/docker-config.js +130 -130
- package/lib/ops/docker-constants.js +21 -21
- package/lib/ops/docker-credentials-store.js +237 -237
- package/lib/ops/docker-registry-api-client/docker-registry-api-client.js +288 -288
- package/lib/ops/docker-registry-api-client/entities/blob-sum.d.ts +7 -7
- package/lib/ops/docker-registry-api-client/entities/blob-sum.js +12 -12
- package/lib/ops/docker-registry-api-client/entities/docker-access-actions-enum.d.ts +5 -5
- package/lib/ops/docker-registry-api-client/entities/docker-access-actions-enum.js +9 -9
- package/lib/ops/docker-registry-api-client/entities/docker-auth-token-criteria.d.ts +30 -30
- package/lib/ops/docker-registry-api-client/entities/docker-auth-token-criteria.js +35 -35
- package/lib/ops/docker-registry-api-client/entities/i-docker-error-response.d.ts +55 -55
- package/lib/ops/docker-registry-api-client/entities/i-docker-error-response.js +51 -51
- package/lib/ops/docker-registry-api-client/entities/i-docker-list-response.d.ts +7 -7
- package/lib/ops/docker-registry-api-client/entities/i-docker-list-response.js +2 -2
- package/lib/ops/docker-registry-api-client/entities/image-repository.d.ts +31 -31
- package/lib/ops/docker-registry-api-client/entities/image-repository.js +29 -29
- package/lib/ops/docker-registry-api-client/entities/image-tag-criteria.d.ts +8 -8
- package/lib/ops/docker-registry-api-client/entities/image-tag-criteria.js +13 -13
- package/lib/ops/docker-registry-api-client/entities/image-tag-list.d.ts +7 -7
- package/lib/ops/docker-registry-api-client/entities/image-tag-list.js +12 -12
- package/lib/ops/docker-registry-api-client/entities/manifest-criteria.d.ts +9 -9
- package/lib/ops/docker-registry-api-client/entities/manifest-criteria.js +14 -14
- package/lib/ops/docker-registry-api-client/entities/manifest.d.ts +15 -15
- package/lib/ops/docker-registry-api-client/entities/manifest.js +20 -20
- package/lib/ops/docker-registry-api-client/entities/repository-criteria.d.ts +16 -16
- package/lib/ops/docker-registry-api-client/entities/repository-criteria.js +23 -23
- package/lib/ops/docker-registry-api-client/entities/token-response.d.ts +15 -15
- package/lib/ops/docker-registry-api-client/entities/token-response.js +14 -14
- package/lib/ops/docker-registry-api-client/entities/token.d.ts +17 -17
- package/lib/ops/docker-registry-api-client/entities/token.js +21 -21
- package/lib/ops/docker-registry-api-client/entities/version-check-criteria.d.ts +4 -4
- package/lib/ops/docker-registry-api-client/entities/version-check-criteria.js +9 -9
- package/lib/ops/dx-constants.d.ts +26 -26
- package/lib/ops/dx-constants.js +42 -42
- package/lib/ops/entities/ImageBuildContext.d.ts +12 -12
- package/lib/ops/entities/ImageBuildContext.js +18 -18
- package/lib/ops/entities/PipelineContext.d.ts +21 -21
- package/lib/ops/entities/PipelineContext.js +22 -22
- package/lib/ops/entities/TenantContext.d.ts +10 -10
- package/lib/ops/entities/TenantContext.js +15 -15
- package/lib/ops/entities/ThaulConfig.js +29 -29
- package/lib/ops/entities/azure-service-principal.d.ts +23 -23
- package/lib/ops/entities/azure-service-principal.js +23 -23
- package/lib/ops/entities/better-logger.js +1 -1
- package/lib/ops/entities/branch.d.ts +13 -13
- package/lib/ops/entities/branch.js +15 -15
- package/lib/ops/entities/cli-config.d.ts +48 -48
- package/lib/ops/entities/cli-config.js +60 -60
- package/lib/ops/entities/docker-image.d.ts +60 -60
- package/lib/ops/entities/docker-image.js +2 -2
- package/lib/ops/entities/helm-spec.d.ts +15 -15
- package/lib/ops/entities/helm-spec.js +22 -22
- package/lib/ops/entities/index.d.ts +4 -4
- package/lib/ops/entities/index.js +11 -11
- package/lib/ops/entities/operation-meta.d.ts +8 -8
- package/lib/ops/entities/operation-meta.js +18 -18
- package/lib/ops/entities/scaffolding.d.ts +19 -19
- package/lib/ops/entities/scaffolding.js +20 -20
- package/lib/ops/extensions/azart-identity-adapter.d.ts +19 -19
- package/lib/ops/extensions/azart-identity-adapter.js +96 -96
- package/lib/ops/extensions/npm-identity-adapter-base.d.ts +13 -13
- package/lib/ops/extensions/npm-identity-adapter-base.js +2 -2
- package/lib/ops/extensions/npmjs-identity-adapter.d.ts +13 -13
- package/lib/ops/extensions/npmjs-identity-adapter.js +63 -63
- package/lib/ops/git-ops.d.ts +8 -8
- package/lib/ops/git-ops.js +13 -13
- package/lib/ops/i-client-for-image-registry.js +16 -16
- package/lib/ops/i-identity-handler.d.ts +33 -33
- package/lib/ops/i-identity-handler.js +164 -164
- package/lib/ops/i-output-styler.js +16 -16
- package/lib/ops/index.d.ts +12 -12
- package/lib/ops/index.js +14 -14
- package/lib/ops/json-utils.js +58 -58
- package/lib/ops/no-style-output-styler.js +29 -29
- package/lib/ops/oauth2-client.ts/oauth2-client.d.ts +23 -23
- package/lib/ops/oauth2-client.ts/oauth2-client.js +63 -63
- package/lib/ops/project-initializer.d.ts +36 -36
- package/lib/ops/project-initializer.js +218 -218
- package/lib/ops/scaffolding/base-scaffolding.d.ts +7 -7
- package/lib/ops/scaffolding/base-scaffolding.js +20 -20
- package/lib/ops/scaffolding/codiac-api-scaffolding.d.ts +7 -7
- package/lib/ops/scaffolding/codiac-api-scaffolding.js +63 -63
- package/lib/ops/scaffolding/typescript-scaffolding.d.ts +15 -15
- package/lib/ops/scaffolding/typescript-scaffolding.js +162 -162
- package/lib/ops/test/mock-ui.d.ts +26 -26
- package/lib/ops/test/mock-ui.js +87 -87
- package/lib/ops/test/test-extensions.d.ts +13 -13
- package/lib/ops/test/test-extensions.js +70 -70
- package/lib/ops/test/when-a-recursive-file-search-is-run.spec.d.ts +2 -2
- package/lib/ops/test/when-a-recursive-file-search-is-run.spec.js +54 -54
- package/lib/ops/test/when-git-branchline-is-attempted.spec.d.ts +2 -2
- package/lib/ops/test/when-git-branchline-is-attempted.spec.js +37 -37
- package/lib/ops/test/when-versions-are-parsed.spec.d.ts +2 -2
- package/lib/ops/test/when-versions-are-parsed.spec.js +59 -59
- package/lib/ops/throwing-user-input-provider.js +36 -36
- package/lib/prettify.d.ts +7 -7
- package/lib/prettify.js +23 -23
- package/lib/read-stdin.d.ts +2 -2
- package/lib/read-stdin.js +28 -28
- package/lib/relay/contracts/contracts.d.ts +207 -207
- package/lib/relay/contracts/contracts.js +229 -229
- package/lib/relay/data/aws-k8s-versions.d.ts +6 -0
- package/lib/relay/data/aws-k8s-versions.js +16 -0
- package/lib/relay/data/aws-k8s-versions.js.map +1 -0
- package/lib/relay/data/aws-node-types.d.ts +37 -0
- package/lib/relay/data/aws-node-types.js +4246 -0
- package/lib/relay/data/aws-node-types.js.map +1 -0
- package/lib/relay/data/aws-regions.d.ts +6 -0
- package/lib/relay/data/aws-regions.js +34 -0
- package/lib/relay/data/aws-regions.js.map +1 -0
- package/lib/relay/extended-relay-client.d.ts +27 -27
- package/lib/relay/extended-relay-client.js +27 -27
- package/lib/relay/relay-container.d.ts +41 -41
- package/lib/relay/relay-container.js +297 -297
- package/lib/relay/wsclient/relay-socket-listener.d.ts +68 -68
- package/lib/relay/wsclient/relay-socket-listener.js +164 -164
- package/lib/relay/wsclient/relay-websocket-client.d.ts +33 -33
- package/lib/relay/wsclient/relay-websocket-client.js +178 -178
- package/lib/relay/wsclient/rx-websocket-subject.d.ts +25 -25
- package/lib/relay/wsclient/rx-websocket-subject.js +133 -133
- package/lib/relay/wsclient/socket-contracts.d.ts +22 -22
- package/lib/relay/wsclient/socket-contracts.js +2 -2
- package/lib/standard-probes.d.ts +5 -5
- package/lib/standard-probes.js +21 -21
- package/lib/uilogic/build-configurator.d.ts +21 -21
- package/lib/uilogic/build-configurator.js +110 -110
- package/lib/uilogic/cloud-provider-contextualizer.d.ts +46 -46
- package/lib/uilogic/cloud-provider-contextualizer.js +193 -193
- package/lib/uilogic/cloud-resource-configurator-factory.d.ts +41 -41
- package/lib/uilogic/cloud-resource-configurator-factory.js +157 -157
- package/lib/uilogic/cloud-resource-configurators/aws-k8s-versions.d.ts +11 -0
- package/lib/uilogic/cloud-resource-configurators/aws-k8s-versions.js +16 -0
- package/lib/uilogic/cloud-resource-configurators/aws-k8s-versions.js.map +1 -0
- package/lib/uilogic/cloud-resource-configurators/aws-node-types.d.ts +5 -0
- package/lib/uilogic/cloud-resource-configurators/aws-node-types.js +536 -0
- package/lib/uilogic/cloud-resource-configurators/aws-node-types.js.map +1 -0
- package/lib/uilogic/cloud-resource-configurators/aws-regions.d.ts +10 -0
- package/lib/uilogic/cloud-resource-configurators/aws-regions.js +34 -0
- package/lib/uilogic/cloud-resource-configurators/aws-regions.js.map +1 -0
- package/lib/uilogic/cloud-resource-configurators/aws-resource-configurator.d.ts +38 -38
- package/lib/uilogic/cloud-resource-configurators/aws-resource-configurator.js +347 -347
- package/lib/uilogic/cloud-resource-configurators/az-acr-cli-authenticator.js +77 -77
- package/lib/uilogic/cloud-resource-configurators/az-interactive-login-configurator.d.ts +42 -42
- package/lib/uilogic/cloud-resource-configurators/az-interactive-login-configurator.js +247 -247
- package/lib/uilogic/cloud-resource-configurators/azure-resource-configurator.d.ts +110 -110
- package/lib/uilogic/cloud-resource-configurators/azure-resource-configurator.js +781 -781
- package/lib/uilogic/cloud-resource-configurators/azure-types.js +9 -9
- package/lib/uilogic/cloud-resource-configurators/docker-hub-resource-configurator.d.ts +24 -24
- package/lib/uilogic/cloud-resource-configurators/docker-hub-resource-configurator.js +105 -105
- package/lib/uilogic/cloud-resource-configurators/helm-resource-configurator.d.ts +16 -16
- package/lib/uilogic/cloud-resource-configurators/helm-resource-configurator.js +44 -44
- package/lib/uilogic/cloud-resource-configurators/unsupported-resource-configurator.d.ts +18 -18
- package/lib/uilogic/cloud-resource-configurators/unsupported-resource-configurator.js +61 -61
- package/lib/uilogic/enterprise-contextualizer.d.ts +76 -76
- package/lib/uilogic/enterprise-contextualizer.js +670 -670
- package/lib/uilogic/environment-contextualizer.d.ts +15 -15
- package/lib/uilogic/environment-contextualizer.js +42 -42
- package/lib/uilogic/i-cluster-configurator.d.ts +9 -9
- package/lib/uilogic/i-cluster-configurator.js +2 -2
- package/lib/uilogic/i-login-configurator.d.ts +6 -6
- package/lib/uilogic/i-login-configurator.js +2 -2
- package/lib/uilogic/i-registry-configurator.d.ts +6 -6
- package/lib/uilogic/i-registry-configurator.js +2 -2
- package/lib/uilogic/i-secret-store-configurator.d.ts +7 -7
- package/lib/uilogic/i-secret-store-configurator.js +2 -2
- package/lib/uilogic/image-configurator.d.ts +133 -133
- package/lib/uilogic/image-configurator.js +577 -577
- package/lib/uilogic/image-contextualizer.d.ts +24 -24
- package/lib/uilogic/image-contextualizer.js +89 -89
- package/lib/uilogic/image-registry-contextualizer.d.ts +28 -28
- package/lib/uilogic/image-registry-contextualizer.js +126 -126
- package/lib/uilogic/index.d.ts +9 -9
- package/lib/uilogic/index.js +13 -13
- package/lib/uilogic/prompt-select-fuzzy.js +138 -138
- package/lib/uilogic/render-methods.d.ts +12 -12
- package/lib/uilogic/render-methods.js +64 -64
- package/lib/uilogic/tenant-contextualizer.d.ts +79 -79
- package/lib/uilogic/tenant-contextualizer.js +573 -573
- package/lib/user-context-loader.d.ts +60 -60
- package/lib/user-context-loader.js +183 -183
- package/oclif.manifest.json +45 -1
- package/package.json +150 -150
- package/scaffolding/api/.gitignore-scaffolding +68 -68
- package/scaffolding/api/.vscode/launch.json +16 -16
- package/scaffolding/api/.vscode/settings.json +7 -7
- package/scaffolding/api/.vscode/tasks.json +15 -15
- package/scaffolding/api/src/app-config.json +2 -2
- package/scaffolding/api/src/index.ts-scaffolding +13 -13
- package/scaffolding/api/src/myApiDef.ts-scaffolding +25 -25
- package/scaffolding/default/.gitignore-scaffolding +2 -2
- package/scaffolding/typescript/.gitignore-scaffolding +69 -69
- package/scaffolding/typescript/.vscode/launch.json +16 -16
- package/scaffolding/typescript/.vscode/settings.json +7 -7
- package/scaffolding/typescript/.vscode/tasks.json +15 -15
|
@@ -1,298 +1,298 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RelayContainer = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const node_docker_api_1 = require("node-docker-api");
|
|
6
|
-
const rxjs_1 = require("rxjs");
|
|
7
|
-
const operators_1 = require("rxjs/operators");
|
|
8
|
-
const reqp = require("request-promise");
|
|
9
|
-
// import * as request from 'request';
|
|
10
|
-
// import { Container } from "node-docker-api/lib/container";
|
|
11
|
-
const os = require("os");
|
|
12
|
-
const codiac_error_1 = require("@codiac.io/codiac-common/contracts/codiac-error");
|
|
13
|
-
const IBetterLogger_1 = require("@codiac.io/codiac-common/IBetterLogger");
|
|
14
|
-
const cli_tools_1 = require("@codiac.io/cli-tools");
|
|
15
|
-
const inversify_1 = require("inversify");
|
|
16
|
-
const codiac_ops_common_1 = require("@codiac.io/codiac-ops-common");
|
|
17
|
-
const child_process_1 = require("child_process");
|
|
18
|
-
const DEFAULT_IMAGE_NAME = "codiacimages/codiac-relay";
|
|
19
|
-
const DEFAULT_IMAGE_TAG = "1.2.
|
|
20
|
-
const DEFUALT_CONTIANER_NAME = "codiac-relay";
|
|
21
|
-
const DEFAULT_HEALTH_CHECK_URL = "http://localhost:5799/heartbeat-json"; // /ready-state";
|
|
22
|
-
const DEFAULT_RETRY_TIMOUT_IN_MINUTES = 1;
|
|
23
|
-
let RelayContainer = class RelayContainer {
|
|
24
|
-
constructor(styler, logger, healthCheckUrl = DEFAULT_HEALTH_CHECK_URL, retryTimeOut = DEFAULT_RETRY_TIMOUT_IN_MINUTES, projectRoot) {
|
|
25
|
-
this.styler = styler;
|
|
26
|
-
this.logger = logger;
|
|
27
|
-
this.healthCheckUrl = healthCheckUrl;
|
|
28
|
-
this.retryTimeOut = retryTimeOut;
|
|
29
|
-
this.projectRoot = projectRoot;
|
|
30
|
-
this.imageName = DEFAULT_IMAGE_NAME;
|
|
31
|
-
this.imageTag = DEFAULT_IMAGE_TAG;
|
|
32
|
-
this.containerName = DEFUALT_CONTIANER_NAME;
|
|
33
|
-
this.isWin = process.platform === "win32";
|
|
34
|
-
// https://github.com/apocas/dockerode/issues/290
|
|
35
|
-
this.socketPath = this.isWin
|
|
36
|
-
? "//./pipe/docker_engine"
|
|
37
|
-
: "/var/run/docker.sock";
|
|
38
|
-
this.startSubj = new rxjs_1.Subject();
|
|
39
|
-
this.dockerFailedSubj = new rxjs_1.Subject();
|
|
40
|
-
this.dockerSubj = new rxjs_1.Subject();
|
|
41
|
-
// started is based on the container we're trying to start
|
|
42
|
-
this.startFailedSubj = new rxjs_1.Subject();
|
|
43
|
-
this.readySubj = new rxjs_1.ReplaySubject();
|
|
44
|
-
this.readyFailed$ = new rxjs_1.Subject();
|
|
45
|
-
this.promisifyStream = (stream) => new Promise((resolve, reject) => {
|
|
46
|
-
stream.on('data', (d) => console.log(d.toString()));
|
|
47
|
-
stream.on('end', resolve);
|
|
48
|
-
stream.on('error', reject);
|
|
49
|
-
});
|
|
50
|
-
this._cliExec = new cli_tools_1.CliExec(logger);
|
|
51
|
-
this.getDocker();
|
|
52
|
-
// The api's may already be running. Let's see.
|
|
53
|
-
this.healthCheck();
|
|
54
|
-
// If we find docker is not started, we put ourselves into a loop, asking the user to kick it on
|
|
55
|
-
this.dockerFailed$
|
|
56
|
-
.pipe((0, operators_1.delay)(10000))
|
|
57
|
-
.pipe((0, operators_1.tap)(_ => {
|
|
58
|
-
this.logger.debug("Attempting to get service again");
|
|
59
|
-
this.getDocker();
|
|
60
|
-
}))
|
|
61
|
-
.subscribe();
|
|
62
|
-
// If docker is running but the api's are not, let's try to start the container optimistically
|
|
63
|
-
(0, rxjs_1.combineLatest)([this.docker$, this.readyFailed$])
|
|
64
|
-
.pipe((0, operators_1.tap)(docker => {
|
|
65
|
-
this.execStart();
|
|
66
|
-
}))
|
|
67
|
-
.pipe((0, operators_1.takeUntil)(this.ready$))
|
|
68
|
-
.subscribe();
|
|
69
|
-
// If docker is running but the conainer failed to start. Kick on CONTAINER from image
|
|
70
|
-
(0, rxjs_1.combineLatest)([this.docker$, this.startFailed$])
|
|
71
|
-
.pipe((0, operators_1.tap)(([docker, containerName]) => {
|
|
72
|
-
this.createContainer();
|
|
73
|
-
}))
|
|
74
|
-
.subscribe();
|
|
75
|
-
// Now our pipelines are defined and hot. We fire off the catalyst and notify user.
|
|
76
|
-
this.readyFailed$
|
|
77
|
-
.pipe((0, operators_1.take)(1))
|
|
78
|
-
.pipe((0, operators_1.tap)(() => {
|
|
79
|
-
this.logger.notice(this.styler.hilite(`Starting Services...`));
|
|
80
|
-
}))
|
|
81
|
-
.pipe((0, operators_1.tap)(() => {
|
|
82
|
-
// every three seconds we're going to health check until either ready or timeout
|
|
83
|
-
(0, rxjs_1.interval)(3000)
|
|
84
|
-
.pipe((0, operators_1.take)(100))
|
|
85
|
-
.pipe((0, operators_1.timeout)(this.retryTimeOut * 60000)) //minutes to miliseconds
|
|
86
|
-
.pipe((0, operators_1.takeUntil)(this.ready$))
|
|
87
|
-
.subscribe(() => this.healthCheck());
|
|
88
|
-
}))
|
|
89
|
-
.subscribe();
|
|
90
|
-
}
|
|
91
|
-
get start$() {
|
|
92
|
-
return this.startSubj.asObservable();
|
|
93
|
-
}
|
|
94
|
-
get dockerFailed$() {
|
|
95
|
-
return this.dockerFailedSubj.asObservable();
|
|
96
|
-
}
|
|
97
|
-
get docker$() {
|
|
98
|
-
return this.dockerSubj.asObservable();
|
|
99
|
-
}
|
|
100
|
-
get startFailed$() {
|
|
101
|
-
return this.startFailedSubj.asObservable();
|
|
102
|
-
}
|
|
103
|
-
get ready$() {
|
|
104
|
-
return this.readySubj.asObservable();
|
|
105
|
-
}
|
|
106
|
-
init() { } // REMOVE THIS AFTER WE GET THE RELAY-CONTRACTS STRAIGHT IN THE CLI
|
|
107
|
-
healthCheck() {
|
|
108
|
-
try {
|
|
109
|
-
this.logger.debug(`Checking ${this.containerName} health now...`);
|
|
110
|
-
reqp.get(this.healthCheckUrl)
|
|
111
|
-
.then(response => {
|
|
112
|
-
this.logger.trace(`...${this.containerName} ready.`);
|
|
113
|
-
// this.watchLogs();
|
|
114
|
-
this.readySubj.next(true);
|
|
115
|
-
})
|
|
116
|
-
.catch(error => {
|
|
117
|
-
this.logger.debug(`...${this.containerName} failed to respond`);
|
|
118
|
-
this.readyFailed$.next();
|
|
119
|
-
this.startSubj.next(this.containerName);
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
catch (error) {
|
|
123
|
-
this.logger.debug("Health check failed ", JSON.stringify(error, null, 2));
|
|
124
|
-
this.readyFailed$.next();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
stop() {
|
|
128
|
-
// fire off this command in a separate cli window
|
|
129
|
-
let cmdStop = `docker stop ${this.containerName}`;
|
|
130
|
-
let result$ = new rxjs_1.Subject();
|
|
131
|
-
result$.subscribe();
|
|
132
|
-
let options = {
|
|
133
|
-
cwd: this.projectRoot,
|
|
134
|
-
// stdio: "inherit",
|
|
135
|
-
// stdio: [process.stdin, process.stdout, process.stderr, process.st], // TODO: Capture stderr instead
|
|
136
|
-
shell: true
|
|
137
|
-
};
|
|
138
|
-
const ls = (0, child_process_1.spawn)(cmdStop, options);
|
|
139
|
-
// ls.stdout?.on('data', (data: any) => {
|
|
140
|
-
// result$.next(true);
|
|
141
|
-
// });
|
|
142
|
-
// ls.stdout?.on('error', (data: any) => {
|
|
143
|
-
// result$.next(false);
|
|
144
|
-
// });
|
|
145
|
-
// ls.on('error', (data: any) => {
|
|
146
|
-
// result$.next(false);
|
|
147
|
-
// });
|
|
148
|
-
ls.on('close', (data) => {
|
|
149
|
-
result$.next(false);
|
|
150
|
-
});
|
|
151
|
-
return result$.asObservable();
|
|
152
|
-
}
|
|
153
|
-
remove() {
|
|
154
|
-
// fire off this command in a separate cli window
|
|
155
|
-
let cmdStop = `docker rm ${this.containerName} -f`;
|
|
156
|
-
let result$ = new rxjs_1.Subject();
|
|
157
|
-
result$.subscribe();
|
|
158
|
-
let options = {
|
|
159
|
-
cwd: this.projectRoot,
|
|
160
|
-
// stdio: "inherit",
|
|
161
|
-
// stdio: [process.stdin, process.stdout, process.stderr, process.st], // TODO: Capture stderr instead
|
|
162
|
-
shell: true
|
|
163
|
-
};
|
|
164
|
-
const ls = (0, child_process_1.spawn)(cmdStop, options);
|
|
165
|
-
// ls.stdout?.on('data', (data: any) => {
|
|
166
|
-
// result$.next(true);
|
|
167
|
-
// });
|
|
168
|
-
// ls.stdout?.on('error', (data: any) => {
|
|
169
|
-
// result$.next(false);
|
|
170
|
-
// });
|
|
171
|
-
ls.on('close', (data) => {
|
|
172
|
-
result$.next(false);
|
|
173
|
-
});
|
|
174
|
-
return result$.asObservable();
|
|
175
|
-
}
|
|
176
|
-
destroy() {
|
|
177
|
-
throw new codiac_error_1.CodiacError("Not yet implemented");
|
|
178
|
-
}
|
|
179
|
-
execStart() {
|
|
180
|
-
const containerStarted$ = new rxjs_1.Subject();
|
|
181
|
-
//Slow ya roll playboy. let her get ready
|
|
182
|
-
containerStarted$
|
|
183
|
-
.pipe((0, operators_1.concatMap)(() => this.ready$))
|
|
184
|
-
.subscribe();
|
|
185
|
-
this.docker.container.get(this.containerName).start().then(container => {
|
|
186
|
-
containerStarted$.next(true);
|
|
187
|
-
})
|
|
188
|
-
.catch(error => {
|
|
189
|
-
this.logger.debug(`Failed to start ${this.containerName}`, error);
|
|
190
|
-
this.startFailedSubj.next(this.containerName);
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
watchLogs() {
|
|
194
|
-
const container = this.docker.container.get(this.containerName);
|
|
195
|
-
container.logs({
|
|
196
|
-
follow: true,
|
|
197
|
-
stdout: true,
|
|
198
|
-
stderr: true
|
|
199
|
-
})
|
|
200
|
-
.then(stream => {
|
|
201
|
-
this.promisifyStream(stream);
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
createContainer() {
|
|
205
|
-
this.logger.debug(`Creating ${this.containerName} from image: ${this.imageName}:${this.imageTag}`);
|
|
206
|
-
const output = new rxjs_1.Subject();
|
|
207
|
-
this.docker.container.create({
|
|
208
|
-
Image: `${this.imageName}:${this.imageTag}`,
|
|
209
|
-
name: `${this.containerName}`,
|
|
210
|
-
Hostname: `${this.containerName}`,
|
|
211
|
-
ExposedPorts: {
|
|
212
|
-
"5799/tcp": {},
|
|
213
|
-
"5798/tcp": {},
|
|
214
|
-
},
|
|
215
|
-
HostConfig: {
|
|
216
|
-
Binds: [
|
|
217
|
-
`${os.homedir}/.codiac:/root/.codiac`
|
|
218
|
-
// `${os.homedir}/.kube:/root/.kube`,
|
|
219
|
-
// `${os.homedir}/.azure:/root/.azure`
|
|
220
|
-
],
|
|
221
|
-
PortBindings: {
|
|
222
|
-
"5799/tcp": [
|
|
223
|
-
{
|
|
224
|
-
HostPort: "5799"
|
|
225
|
-
}
|
|
226
|
-
],
|
|
227
|
-
"5798/tcp": [
|
|
228
|
-
{
|
|
229
|
-
HostPort: "5798"
|
|
230
|
-
}
|
|
231
|
-
]
|
|
232
|
-
},
|
|
233
|
-
},
|
|
234
|
-
Volumes: {
|
|
235
|
-
"/root/.codiac": {}
|
|
236
|
-
// "/root/.kube": {},
|
|
237
|
-
// "/root/.azure": {}
|
|
238
|
-
},
|
|
239
|
-
})
|
|
240
|
-
.then(container => {
|
|
241
|
-
output.next(container);
|
|
242
|
-
this.logger.trace(`Created ${this.containerName}`);
|
|
243
|
-
this.execStart();
|
|
244
|
-
})
|
|
245
|
-
.catch(error => {
|
|
246
|
-
if (error.statusCode == 409)
|
|
247
|
-
this.execStart(); //Already in use
|
|
248
|
-
else {
|
|
249
|
-
this.logger.debug(`Failed to create ${this.containerName}`, JSON.stringify(error, null, 2));
|
|
250
|
-
this.pullImage();
|
|
251
|
-
}
|
|
252
|
-
output.next(error);
|
|
253
|
-
});
|
|
254
|
-
output.subscribe();
|
|
255
|
-
return output.asObservable();
|
|
256
|
-
}
|
|
257
|
-
pullImage() {
|
|
258
|
-
const output = new rxjs_1.Subject();
|
|
259
|
-
this.logger.notice("Fetching Codiac Relay image. This may take a few minutes...");
|
|
260
|
-
this._cliExec.execAsyncStdOut(`docker pull ${this.imageName}:${this.imageTag}`, { cwd: this.projectRoot }, IBetterLogger_1.LogLevel.debug, true)
|
|
261
|
-
.then((fullfulled) => {
|
|
262
|
-
this.logger.debug('pull response', fullfulled);
|
|
263
|
-
this.createContainer();
|
|
264
|
-
output.next('pull complete');
|
|
265
|
-
})
|
|
266
|
-
.catch(error => {
|
|
267
|
-
this.logger.debug(`Pull Failed.`);
|
|
268
|
-
});
|
|
269
|
-
output.subscribe();
|
|
270
|
-
return output.asObservable();
|
|
271
|
-
}
|
|
272
|
-
getDocker() {
|
|
273
|
-
const docker = new node_docker_api_1.Docker({ socketPath: this.socketPath });
|
|
274
|
-
(0, rxjs_1.from)(docker.info())
|
|
275
|
-
.pipe((0, operators_1.map)((info) => {
|
|
276
|
-
if (!info)
|
|
277
|
-
throw null;
|
|
278
|
-
this.docker = docker;
|
|
279
|
-
this.dockerSubj.next(docker);
|
|
280
|
-
this.logger.debug("Docker is running");
|
|
281
|
-
return this.docker;
|
|
282
|
-
}))
|
|
283
|
-
.pipe((0, operators_1.catchError)(error => {
|
|
284
|
-
// cli.action.stop();
|
|
285
|
-
this.logger.error('Can you start docker for me?"');
|
|
286
|
-
this.dockerFailedSubj.next();
|
|
287
|
-
return (0, rxjs_1.of)(this.docker);
|
|
288
|
-
}))
|
|
289
|
-
.pipe((0, operators_1.take)(1))
|
|
290
|
-
.subscribe();
|
|
291
|
-
}
|
|
292
|
-
};
|
|
293
|
-
RelayContainer = tslib_1.__decorate([
|
|
294
|
-
tslib_1.__param(0, (0, inversify_1.inject)(codiac_ops_common_1.INTERFACES_OPS.IOutputStyler)),
|
|
295
|
-
tslib_1.__metadata("design:paramtypes", [Object, Object, String, Number, String])
|
|
296
|
-
], RelayContainer);
|
|
297
|
-
exports.RelayContainer = RelayContainer;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RelayContainer = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const node_docker_api_1 = require("node-docker-api");
|
|
6
|
+
const rxjs_1 = require("rxjs");
|
|
7
|
+
const operators_1 = require("rxjs/operators");
|
|
8
|
+
const reqp = require("request-promise");
|
|
9
|
+
// import * as request from 'request';
|
|
10
|
+
// import { Container } from "node-docker-api/lib/container";
|
|
11
|
+
const os = require("os");
|
|
12
|
+
const codiac_error_1 = require("@codiac.io/codiac-common/contracts/codiac-error");
|
|
13
|
+
const IBetterLogger_1 = require("@codiac.io/codiac-common/IBetterLogger");
|
|
14
|
+
const cli_tools_1 = require("@codiac.io/cli-tools");
|
|
15
|
+
const inversify_1 = require("inversify");
|
|
16
|
+
const codiac_ops_common_1 = require("@codiac.io/codiac-ops-common");
|
|
17
|
+
const child_process_1 = require("child_process");
|
|
18
|
+
const DEFAULT_IMAGE_NAME = "codiacimages/codiac-relay";
|
|
19
|
+
const DEFAULT_IMAGE_TAG = "1.2.34";
|
|
20
|
+
const DEFUALT_CONTIANER_NAME = "codiac-relay";
|
|
21
|
+
const DEFAULT_HEALTH_CHECK_URL = "http://localhost:5799/heartbeat-json"; // /ready-state";
|
|
22
|
+
const DEFAULT_RETRY_TIMOUT_IN_MINUTES = 1;
|
|
23
|
+
let RelayContainer = class RelayContainer {
|
|
24
|
+
constructor(styler, logger, healthCheckUrl = DEFAULT_HEALTH_CHECK_URL, retryTimeOut = DEFAULT_RETRY_TIMOUT_IN_MINUTES, projectRoot) {
|
|
25
|
+
this.styler = styler;
|
|
26
|
+
this.logger = logger;
|
|
27
|
+
this.healthCheckUrl = healthCheckUrl;
|
|
28
|
+
this.retryTimeOut = retryTimeOut;
|
|
29
|
+
this.projectRoot = projectRoot;
|
|
30
|
+
this.imageName = DEFAULT_IMAGE_NAME;
|
|
31
|
+
this.imageTag = DEFAULT_IMAGE_TAG;
|
|
32
|
+
this.containerName = DEFUALT_CONTIANER_NAME;
|
|
33
|
+
this.isWin = process.platform === "win32";
|
|
34
|
+
// https://github.com/apocas/dockerode/issues/290
|
|
35
|
+
this.socketPath = this.isWin
|
|
36
|
+
? "//./pipe/docker_engine"
|
|
37
|
+
: "/var/run/docker.sock";
|
|
38
|
+
this.startSubj = new rxjs_1.Subject();
|
|
39
|
+
this.dockerFailedSubj = new rxjs_1.Subject();
|
|
40
|
+
this.dockerSubj = new rxjs_1.Subject();
|
|
41
|
+
// started is based on the container we're trying to start
|
|
42
|
+
this.startFailedSubj = new rxjs_1.Subject();
|
|
43
|
+
this.readySubj = new rxjs_1.ReplaySubject();
|
|
44
|
+
this.readyFailed$ = new rxjs_1.Subject();
|
|
45
|
+
this.promisifyStream = (stream) => new Promise((resolve, reject) => {
|
|
46
|
+
stream.on('data', (d) => console.log(d.toString()));
|
|
47
|
+
stream.on('end', resolve);
|
|
48
|
+
stream.on('error', reject);
|
|
49
|
+
});
|
|
50
|
+
this._cliExec = new cli_tools_1.CliExec(logger);
|
|
51
|
+
this.getDocker();
|
|
52
|
+
// The api's may already be running. Let's see.
|
|
53
|
+
this.healthCheck();
|
|
54
|
+
// If we find docker is not started, we put ourselves into a loop, asking the user to kick it on
|
|
55
|
+
this.dockerFailed$
|
|
56
|
+
.pipe((0, operators_1.delay)(10000))
|
|
57
|
+
.pipe((0, operators_1.tap)(_ => {
|
|
58
|
+
this.logger.debug("Attempting to get service again");
|
|
59
|
+
this.getDocker();
|
|
60
|
+
}))
|
|
61
|
+
.subscribe();
|
|
62
|
+
// If docker is running but the api's are not, let's try to start the container optimistically
|
|
63
|
+
(0, rxjs_1.combineLatest)([this.docker$, this.readyFailed$])
|
|
64
|
+
.pipe((0, operators_1.tap)(docker => {
|
|
65
|
+
this.execStart();
|
|
66
|
+
}))
|
|
67
|
+
.pipe((0, operators_1.takeUntil)(this.ready$))
|
|
68
|
+
.subscribe();
|
|
69
|
+
// If docker is running but the conainer failed to start. Kick on CONTAINER from image
|
|
70
|
+
(0, rxjs_1.combineLatest)([this.docker$, this.startFailed$])
|
|
71
|
+
.pipe((0, operators_1.tap)(([docker, containerName]) => {
|
|
72
|
+
this.createContainer();
|
|
73
|
+
}))
|
|
74
|
+
.subscribe();
|
|
75
|
+
// Now our pipelines are defined and hot. We fire off the catalyst and notify user.
|
|
76
|
+
this.readyFailed$
|
|
77
|
+
.pipe((0, operators_1.take)(1))
|
|
78
|
+
.pipe((0, operators_1.tap)(() => {
|
|
79
|
+
this.logger.notice(this.styler.hilite(`Starting Services...`));
|
|
80
|
+
}))
|
|
81
|
+
.pipe((0, operators_1.tap)(() => {
|
|
82
|
+
// every three seconds we're going to health check until either ready or timeout
|
|
83
|
+
(0, rxjs_1.interval)(3000)
|
|
84
|
+
.pipe((0, operators_1.take)(100))
|
|
85
|
+
.pipe((0, operators_1.timeout)(this.retryTimeOut * 60000)) //minutes to miliseconds
|
|
86
|
+
.pipe((0, operators_1.takeUntil)(this.ready$))
|
|
87
|
+
.subscribe(() => this.healthCheck());
|
|
88
|
+
}))
|
|
89
|
+
.subscribe();
|
|
90
|
+
}
|
|
91
|
+
get start$() {
|
|
92
|
+
return this.startSubj.asObservable();
|
|
93
|
+
}
|
|
94
|
+
get dockerFailed$() {
|
|
95
|
+
return this.dockerFailedSubj.asObservable();
|
|
96
|
+
}
|
|
97
|
+
get docker$() {
|
|
98
|
+
return this.dockerSubj.asObservable();
|
|
99
|
+
}
|
|
100
|
+
get startFailed$() {
|
|
101
|
+
return this.startFailedSubj.asObservable();
|
|
102
|
+
}
|
|
103
|
+
get ready$() {
|
|
104
|
+
return this.readySubj.asObservable();
|
|
105
|
+
}
|
|
106
|
+
init() { } // REMOVE THIS AFTER WE GET THE RELAY-CONTRACTS STRAIGHT IN THE CLI
|
|
107
|
+
healthCheck() {
|
|
108
|
+
try {
|
|
109
|
+
this.logger.debug(`Checking ${this.containerName} health now...`);
|
|
110
|
+
reqp.get(this.healthCheckUrl)
|
|
111
|
+
.then(response => {
|
|
112
|
+
this.logger.trace(`...${this.containerName} ready.`);
|
|
113
|
+
// this.watchLogs();
|
|
114
|
+
this.readySubj.next(true);
|
|
115
|
+
})
|
|
116
|
+
.catch(error => {
|
|
117
|
+
this.logger.debug(`...${this.containerName} failed to respond`);
|
|
118
|
+
this.readyFailed$.next();
|
|
119
|
+
this.startSubj.next(this.containerName);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
this.logger.debug("Health check failed ", JSON.stringify(error, null, 2));
|
|
124
|
+
this.readyFailed$.next();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
stop() {
|
|
128
|
+
// fire off this command in a separate cli window
|
|
129
|
+
let cmdStop = `docker stop ${this.containerName}`;
|
|
130
|
+
let result$ = new rxjs_1.Subject();
|
|
131
|
+
result$.subscribe();
|
|
132
|
+
let options = {
|
|
133
|
+
cwd: this.projectRoot,
|
|
134
|
+
// stdio: "inherit",
|
|
135
|
+
// stdio: [process.stdin, process.stdout, process.stderr, process.st], // TODO: Capture stderr instead
|
|
136
|
+
shell: true
|
|
137
|
+
};
|
|
138
|
+
const ls = (0, child_process_1.spawn)(cmdStop, options);
|
|
139
|
+
// ls.stdout?.on('data', (data: any) => {
|
|
140
|
+
// result$.next(true);
|
|
141
|
+
// });
|
|
142
|
+
// ls.stdout?.on('error', (data: any) => {
|
|
143
|
+
// result$.next(false);
|
|
144
|
+
// });
|
|
145
|
+
// ls.on('error', (data: any) => {
|
|
146
|
+
// result$.next(false);
|
|
147
|
+
// });
|
|
148
|
+
ls.on('close', (data) => {
|
|
149
|
+
result$.next(false);
|
|
150
|
+
});
|
|
151
|
+
return result$.asObservable();
|
|
152
|
+
}
|
|
153
|
+
remove() {
|
|
154
|
+
// fire off this command in a separate cli window
|
|
155
|
+
let cmdStop = `docker rm ${this.containerName} -f`;
|
|
156
|
+
let result$ = new rxjs_1.Subject();
|
|
157
|
+
result$.subscribe();
|
|
158
|
+
let options = {
|
|
159
|
+
cwd: this.projectRoot,
|
|
160
|
+
// stdio: "inherit",
|
|
161
|
+
// stdio: [process.stdin, process.stdout, process.stderr, process.st], // TODO: Capture stderr instead
|
|
162
|
+
shell: true
|
|
163
|
+
};
|
|
164
|
+
const ls = (0, child_process_1.spawn)(cmdStop, options);
|
|
165
|
+
// ls.stdout?.on('data', (data: any) => {
|
|
166
|
+
// result$.next(true);
|
|
167
|
+
// });
|
|
168
|
+
// ls.stdout?.on('error', (data: any) => {
|
|
169
|
+
// result$.next(false);
|
|
170
|
+
// });
|
|
171
|
+
ls.on('close', (data) => {
|
|
172
|
+
result$.next(false);
|
|
173
|
+
});
|
|
174
|
+
return result$.asObservable();
|
|
175
|
+
}
|
|
176
|
+
destroy() {
|
|
177
|
+
throw new codiac_error_1.CodiacError("Not yet implemented");
|
|
178
|
+
}
|
|
179
|
+
execStart() {
|
|
180
|
+
const containerStarted$ = new rxjs_1.Subject();
|
|
181
|
+
//Slow ya roll playboy. let her get ready
|
|
182
|
+
containerStarted$
|
|
183
|
+
.pipe((0, operators_1.concatMap)(() => this.ready$))
|
|
184
|
+
.subscribe();
|
|
185
|
+
this.docker.container.get(this.containerName).start().then(container => {
|
|
186
|
+
containerStarted$.next(true);
|
|
187
|
+
})
|
|
188
|
+
.catch(error => {
|
|
189
|
+
this.logger.debug(`Failed to start ${this.containerName}`, error);
|
|
190
|
+
this.startFailedSubj.next(this.containerName);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
watchLogs() {
|
|
194
|
+
const container = this.docker.container.get(this.containerName);
|
|
195
|
+
container.logs({
|
|
196
|
+
follow: true,
|
|
197
|
+
stdout: true,
|
|
198
|
+
stderr: true
|
|
199
|
+
})
|
|
200
|
+
.then(stream => {
|
|
201
|
+
this.promisifyStream(stream);
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
createContainer() {
|
|
205
|
+
this.logger.debug(`Creating ${this.containerName} from image: ${this.imageName}:${this.imageTag}`);
|
|
206
|
+
const output = new rxjs_1.Subject();
|
|
207
|
+
this.docker.container.create({
|
|
208
|
+
Image: `${this.imageName}:${this.imageTag}`,
|
|
209
|
+
name: `${this.containerName}`,
|
|
210
|
+
Hostname: `${this.containerName}`,
|
|
211
|
+
ExposedPorts: {
|
|
212
|
+
"5799/tcp": {},
|
|
213
|
+
"5798/tcp": {},
|
|
214
|
+
},
|
|
215
|
+
HostConfig: {
|
|
216
|
+
Binds: [
|
|
217
|
+
`${os.homedir}/.codiac:/root/.codiac`
|
|
218
|
+
// `${os.homedir}/.kube:/root/.kube`,
|
|
219
|
+
// `${os.homedir}/.azure:/root/.azure`
|
|
220
|
+
],
|
|
221
|
+
PortBindings: {
|
|
222
|
+
"5799/tcp": [
|
|
223
|
+
{
|
|
224
|
+
HostPort: "5799"
|
|
225
|
+
}
|
|
226
|
+
],
|
|
227
|
+
"5798/tcp": [
|
|
228
|
+
{
|
|
229
|
+
HostPort: "5798"
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
Volumes: {
|
|
235
|
+
"/root/.codiac": {}
|
|
236
|
+
// "/root/.kube": {},
|
|
237
|
+
// "/root/.azure": {}
|
|
238
|
+
},
|
|
239
|
+
})
|
|
240
|
+
.then(container => {
|
|
241
|
+
output.next(container);
|
|
242
|
+
this.logger.trace(`Created ${this.containerName}`);
|
|
243
|
+
this.execStart();
|
|
244
|
+
})
|
|
245
|
+
.catch(error => {
|
|
246
|
+
if (error.statusCode == 409)
|
|
247
|
+
this.execStart(); //Already in use
|
|
248
|
+
else {
|
|
249
|
+
this.logger.debug(`Failed to create ${this.containerName}`, JSON.stringify(error, null, 2));
|
|
250
|
+
this.pullImage();
|
|
251
|
+
}
|
|
252
|
+
output.next(error);
|
|
253
|
+
});
|
|
254
|
+
output.subscribe();
|
|
255
|
+
return output.asObservable();
|
|
256
|
+
}
|
|
257
|
+
pullImage() {
|
|
258
|
+
const output = new rxjs_1.Subject();
|
|
259
|
+
this.logger.notice("Fetching Codiac Relay image. This may take a few minutes...");
|
|
260
|
+
this._cliExec.execAsyncStdOut(`docker pull ${this.imageName}:${this.imageTag}`, { cwd: this.projectRoot }, IBetterLogger_1.LogLevel.debug, true)
|
|
261
|
+
.then((fullfulled) => {
|
|
262
|
+
this.logger.debug('pull response', fullfulled);
|
|
263
|
+
this.createContainer();
|
|
264
|
+
output.next('pull complete');
|
|
265
|
+
})
|
|
266
|
+
.catch(error => {
|
|
267
|
+
this.logger.debug(`Pull Failed.`);
|
|
268
|
+
});
|
|
269
|
+
output.subscribe();
|
|
270
|
+
return output.asObservable();
|
|
271
|
+
}
|
|
272
|
+
getDocker() {
|
|
273
|
+
const docker = new node_docker_api_1.Docker({ socketPath: this.socketPath });
|
|
274
|
+
(0, rxjs_1.from)(docker.info())
|
|
275
|
+
.pipe((0, operators_1.map)((info) => {
|
|
276
|
+
if (!info)
|
|
277
|
+
throw null;
|
|
278
|
+
this.docker = docker;
|
|
279
|
+
this.dockerSubj.next(docker);
|
|
280
|
+
this.logger.debug("Docker is running");
|
|
281
|
+
return this.docker;
|
|
282
|
+
}))
|
|
283
|
+
.pipe((0, operators_1.catchError)(error => {
|
|
284
|
+
// cli.action.stop();
|
|
285
|
+
this.logger.error('Can you start docker for me?"');
|
|
286
|
+
this.dockerFailedSubj.next();
|
|
287
|
+
return (0, rxjs_1.of)(this.docker);
|
|
288
|
+
}))
|
|
289
|
+
.pipe((0, operators_1.take)(1))
|
|
290
|
+
.subscribe();
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
RelayContainer = tslib_1.__decorate([
|
|
294
|
+
tslib_1.__param(0, (0, inversify_1.inject)(codiac_ops_common_1.INTERFACES_OPS.IOutputStyler)),
|
|
295
|
+
tslib_1.__metadata("design:paramtypes", [Object, Object, String, Number, String])
|
|
296
|
+
], RelayContainer);
|
|
297
|
+
exports.RelayContainer = RelayContainer;
|
|
298
298
|
//# sourceMappingURL=relay-container.js.map
|