@gitpod/gitpod-protocol 0.1.5-private-repos-after-cancellation.0 → 0.1.5-protected-secrets.0
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/data/gitpod-schema.json +145 -7
- package/lib/accounting-protocol.d.ts +18 -12
- package/lib/accounting-protocol.d.ts.map +1 -1
- package/lib/accounting-protocol.js +43 -42
- package/lib/accounting-protocol.js.map +1 -1
- package/lib/admin-protocol.d.ts +28 -4
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js +2 -13
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +12 -2
- package/lib/analytics.d.ts.map +1 -1
- package/lib/analytics.js.map +1 -1
- package/lib/attribution.d.ts +23 -0
- package/lib/attribution.d.ts.map +1 -0
- package/lib/attribution.js +50 -0
- package/lib/attribution.js.map +1 -0
- package/lib/auth.d.ts.map +1 -1
- package/lib/billing-mode.d.ts +43 -0
- package/lib/billing-mode.d.ts.map +1 -0
- package/lib/billing-mode.js +44 -0
- package/lib/billing-mode.js.map +1 -0
- package/lib/blocked-repositories-protocol.d.ts +13 -0
- package/lib/blocked-repositories-protocol.d.ts.map +1 -0
- package/lib/blocked-repositories-protocol.js +8 -0
- package/lib/blocked-repositories-protocol.js.map +1 -0
- package/lib/context-url.d.ts +18 -5
- package/lib/context-url.d.ts.map +1 -1
- package/lib/context-url.js +63 -10
- package/lib/context-url.js.map +1 -1
- package/lib/context-url.spec.d.ts +2 -0
- package/lib/context-url.spec.d.ts.map +1 -1
- package/lib/context-url.spec.js +81 -48
- package/lib/context-url.spec.js.map +1 -1
- package/lib/encryption/container-module.d.ts.map +1 -1
- package/lib/encryption/container-module.js +4 -4
- package/lib/encryption/container-module.js.map +1 -1
- package/lib/encryption/encryption-engine.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.js +25 -26
- package/lib/encryption/encryption-engine.js.map +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.spec.js +29 -37
- package/lib/encryption/encryption-engine.spec.js.map +1 -1
- package/lib/encryption/encryption-service.d.ts.map +1 -1
- package/lib/encryption/encryption-service.js +30 -44
- package/lib/encryption/encryption-service.js.map +1 -1
- package/lib/encryption/key-provider.d.ts.map +1 -1
- package/lib/encryption/key-provider.js +31 -38
- package/lib/encryption/key-provider.js.map +1 -1
- package/lib/env.d.ts +0 -6
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +7 -27
- package/lib/env.js.map +1 -1
- package/lib/experiments/always-default.d.ts +8 -0
- package/lib/experiments/always-default.d.ts.map +1 -0
- package/lib/experiments/always-default.js +20 -0
- package/lib/experiments/always-default.js.map +1 -0
- package/lib/experiments/configcat-server.d.ts +10 -0
- package/lib/experiments/configcat-server.d.ts.map +1 -0
- package/lib/experiments/configcat-server.js +36 -0
- package/lib/experiments/configcat-server.js.map +1 -0
- package/lib/experiments/configcat.d.ts +21 -0
- package/lib/experiments/configcat.d.ts.map +1 -0
- package/lib/experiments/configcat.js +51 -0
- package/lib/experiments/configcat.js.map +1 -0
- package/lib/experiments/types.d.ts +22 -0
- package/lib/experiments/types.d.ts.map +1 -0
- package/lib/experiments/types.js +10 -0
- package/lib/experiments/types.js.map +1 -0
- package/lib/gitpod-file-parser.d.ts.map +1 -1
- package/lib/gitpod-file-parser.js +26 -42
- package/lib/gitpod-file-parser.js.map +1 -1
- package/lib/gitpod-file-parser.spec.js +145 -142
- package/lib/gitpod-file-parser.spec.js.map +1 -1
- package/lib/gitpod-service.d.ts +127 -52
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +190 -315
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +3 -13
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +3 -8
- package/lib/headless-workspace-log.js.map +1 -1
- package/lib/ide-frontend-service.d.ts +1 -1
- package/lib/ide-protocol.d.ts +113 -0
- package/lib/ide-protocol.d.ts.map +1 -0
- package/lib/{util/without.js → ide-protocol.js} +2 -2
- package/lib/ide-protocol.js.map +1 -0
- package/lib/index.d.ts +16 -12
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/installation-admin-protocol.d.ts +30 -0
- package/lib/installation-admin-protocol.d.ts.map +1 -0
- package/lib/installation-admin-protocol.js +31 -0
- package/lib/installation-admin-protocol.js.map +1 -0
- package/lib/license-protocol.d.ts +7 -0
- package/lib/license-protocol.d.ts.map +1 -1
- package/lib/license-protocol.js.map +1 -1
- package/lib/messaging/browser/connection.d.ts +3 -3
- package/lib/messaging/browser/connection.d.ts.map +1 -1
- package/lib/messaging/browser/connection.js +173 -36
- package/lib/messaging/browser/connection.js.map +1 -1
- package/lib/messaging/browser/window-connection.d.ts +4 -4
- package/lib/messaging/browser/window-connection.d.ts.map +1 -1
- package/lib/messaging/browser/window-connection.js +42 -59
- package/lib/messaging/browser/window-connection.js.map +1 -1
- package/lib/messaging/client-call-metrics.d.ts +19 -0
- package/lib/messaging/client-call-metrics.d.ts.map +1 -0
- package/lib/messaging/client-call-metrics.js +82 -0
- package/lib/messaging/client-call-metrics.js.map +1 -0
- package/lib/messaging/error.d.ts +10 -2
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +20 -4
- package/lib/messaging/error.js.map +1 -1
- package/lib/messaging/handler.d.ts +10 -0
- package/lib/messaging/handler.d.ts.map +1 -1
- package/lib/messaging/handler.js +1 -1
- package/lib/messaging/node/connection.d.ts +1 -17
- package/lib/messaging/node/connection.d.ts.map +1 -1
- package/lib/messaging/node/connection.js +24 -60
- package/lib/messaging/node/connection.js.map +1 -1
- package/lib/messaging/proxy-factory.d.ts +3 -1
- package/lib/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/messaging/proxy-factory.js +75 -162
- package/lib/messaging/proxy-factory.js.map +1 -1
- package/lib/oss-allowlist.d.ts +14 -0
- package/lib/oss-allowlist.d.ts.map +1 -0
- package/lib/oss-allowlist.js +8 -0
- package/lib/oss-allowlist.js.map +1 -0
- package/lib/payment-protocol.d.ts.map +1 -1
- package/lib/payment-protocol.js +1 -1
- package/lib/payment-protocol.js.map +1 -1
- package/lib/permission.d.ts +9 -4
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +39 -31
- package/lib/permission.js.map +1 -1
- package/lib/plans.d.ts +5 -4
- package/lib/plans.d.ts.map +1 -1
- package/lib/plans.js +229 -209
- package/lib/plans.js.map +1 -1
- package/lib/protocol.d.ts +234 -143
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +339 -193
- package/lib/protocol.js.map +1 -1
- package/{src/util/without.ts → lib/protocol.spec.d.ts} +2 -3
- package/lib/protocol.spec.d.ts.map +1 -0
- package/lib/protocol.spec.js +127 -0
- package/lib/protocol.spec.js.map +1 -0
- package/lib/snapshot-url.d.ts +14 -0
- package/lib/snapshot-url.d.ts.map +1 -0
- package/lib/snapshot-url.js +26 -0
- package/lib/snapshot-url.js.map +1 -0
- package/{src/theia-plugins.ts → lib/snapshot-url.spec.d.ts} +2 -6
- package/lib/snapshot-url.spec.d.ts.map +1 -0
- package/lib/snapshot-url.spec.js +41 -0
- package/lib/snapshot-url.spec.js.map +1 -0
- package/lib/team-subscription-protocol.d.ts +22 -4
- package/lib/team-subscription-protocol.d.ts.map +1 -1
- package/lib/team-subscription-protocol.js +33 -18
- package/lib/team-subscription-protocol.js.map +1 -1
- package/lib/teams-projects-protocol.d.ts +130 -0
- package/lib/teams-projects-protocol.d.ts.map +1 -0
- package/lib/teams-projects-protocol.js +30 -0
- package/lib/teams-projects-protocol.js.map +1 -0
- package/lib/typings/globals.d.ts +2 -2
- package/lib/typings/globals.d.ts.map +1 -1
- package/lib/usage.d.ts +61 -0
- package/lib/usage.d.ts.map +1 -0
- package/lib/usage.js +14 -0
- package/lib/usage.js.map +1 -0
- package/lib/util/analytics.d.ts.map +1 -1
- package/lib/util/analytics.js +44 -26
- package/lib/util/analytics.js.map +1 -1
- package/lib/util/async-iterator.d.ts.map +1 -1
- package/lib/util/async-iterator.js +57 -135
- package/lib/util/async-iterator.js.map +1 -1
- package/lib/util/cancelable.js +17 -59
- package/lib/util/cancelable.js.map +1 -1
- package/lib/util/date-time.js +11 -11
- package/lib/util/date-time.js.map +1 -1
- package/lib/util/debug-app.d.ts +25 -0
- package/lib/util/debug-app.d.ts.map +1 -0
- package/lib/util/debug-app.js +100 -0
- package/lib/util/debug-app.js.map +1 -0
- package/lib/util/deferred.js +10 -12
- package/lib/util/deferred.js.map +1 -1
- package/lib/util/disposable.d.ts.map +1 -1
- package/lib/util/disposable.js +27 -40
- package/lib/util/disposable.js.map +1 -1
- package/lib/util/event.d.ts.map +1 -1
- package/lib/util/event.js +63 -77
- package/lib/util/event.js.map +1 -1
- package/lib/util/garbage-collected-cache.d.ts +1 -0
- package/lib/util/garbage-collected-cache.d.ts.map +1 -1
- package/lib/util/garbage-collected-cache.js +32 -47
- package/lib/util/garbage-collected-cache.js.map +1 -1
- package/lib/util/generate-workspace-id.d.ts +6 -1
- package/lib/util/generate-workspace-id.d.ts.map +1 -1
- package/lib/util/generate-workspace-id.js +469 -504
- package/lib/util/generate-workspace-id.js.map +1 -1
- package/lib/util/generate-workspace-id.spec.js +68 -78
- package/lib/util/generate-workspace-id.spec.js.map +1 -1
- package/lib/util/gitpod-cookie.d.ts +20 -0
- package/lib/util/gitpod-cookie.d.ts.map +1 -0
- package/lib/util/gitpod-cookie.js +41 -0
- package/lib/util/gitpod-cookie.js.map +1 -0
- package/lib/util/gitpod-host-url.d.ts +4 -1
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +124 -114
- package/lib/util/gitpod-host-url.js.map +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.spec.js +97 -135
- package/lib/util/gitpod-host-url.spec.js.map +1 -1
- package/lib/util/grpc.d.ts +34 -0
- package/lib/util/grpc.d.ts.map +1 -0
- package/lib/util/grpc.js +90 -0
- package/lib/util/grpc.js.map +1 -0
- package/lib/util/jaeger-client-types.d.ts +68 -0
- package/lib/util/jaeger-client-types.d.ts.map +1 -0
- package/lib/{theia-plugins.js → util/jaeger-client-types.js} +1 -1
- package/lib/util/jaeger-client-types.js.map +1 -0
- package/lib/util/logging.d.ts +49 -33
- package/lib/util/logging.d.ts.map +1 -1
- package/lib/util/logging.js +132 -129
- package/lib/util/logging.js.map +1 -1
- package/lib/util/logging.spec.d.ts +7 -0
- package/lib/util/logging.spec.d.ts.map +1 -0
- package/lib/util/logging.spec.js +52 -0
- package/lib/util/logging.spec.js.map +1 -0
- package/lib/util/make-link.js +5 -5
- package/lib/util/make-link.js.map +1 -1
- package/lib/util/nice-grpc.d.ts +9 -0
- package/lib/util/nice-grpc.d.ts.map +1 -0
- package/lib/util/nice-grpc.js +119 -0
- package/lib/util/nice-grpc.js.map +1 -0
- package/lib/util/parse-workspace-id.d.ts +10 -0
- package/lib/util/parse-workspace-id.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.js +30 -7
- package/lib/util/parse-workspace-id.js.map +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts +4 -0
- package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.spec.js +123 -84
- package/lib/util/parse-workspace-id.spec.js.map +1 -1
- package/lib/util/queue.js +16 -55
- package/lib/util/queue.js.map +1 -1
- package/lib/util/queue.spec.js +147 -288
- package/lib/util/queue.spec.js.map +1 -1
- package/lib/util/repeat.d.ts +15 -0
- package/lib/util/repeat.d.ts.map +1 -0
- package/lib/util/repeat.js +55 -0
- package/lib/util/repeat.js.map +1 -0
- package/lib/util/semaphore.d.ts.map +1 -1
- package/lib/util/semaphore.js +15 -46
- package/lib/util/semaphore.js.map +1 -1
- package/lib/util/skip-if.d.ts.map +1 -1
- package/lib/util/skip-if.js +6 -6
- package/lib/util/skip-if.js.map +1 -1
- package/lib/util/timeutil.d.ts +2 -0
- package/lib/util/timeutil.d.ts.map +1 -1
- package/lib/util/timeutil.js +29 -17
- package/lib/util/timeutil.js.map +1 -1
- package/lib/util/timeutil.spec.d.ts +2 -0
- package/lib/util/timeutil.spec.d.ts.map +1 -1
- package/lib/util/timeutil.spec.js +54 -23
- package/lib/util/timeutil.spec.js.map +1 -1
- package/lib/util/tracing.d.ts +52 -6
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +197 -64
- package/lib/util/tracing.js.map +1 -1
- package/lib/util/tracing.spec.d.ts +7 -0
- package/lib/util/tracing.spec.d.ts.map +1 -0
- package/lib/util/tracing.spec.js +121 -0
- package/lib/util/tracing.spec.js.map +1 -0
- package/lib/util/workspace-port-authentication.d.ts +7 -7
- package/lib/util/workspace-port-authentication.d.ts.map +1 -1
- package/lib/util/workspace-port-authentication.js +9 -12
- package/lib/util/workspace-port-authentication.js.map +1 -1
- package/lib/webhook-event.d.ts +44 -0
- package/lib/webhook-event.d.ts.map +1 -0
- package/lib/webhook-event.js +8 -0
- package/lib/webhook-event.js.map +1 -0
- package/lib/workspace-class.d.ts +14 -0
- package/lib/workspace-class.d.ts.map +1 -0
- package/lib/workspace-class.js +8 -0
- package/lib/workspace-class.js.map +1 -0
- package/lib/workspace-cluster.d.ts +15 -5
- package/lib/workspace-cluster.d.ts.map +1 -1
- package/lib/workspace-cluster.js +19 -4
- package/lib/workspace-cluster.js.map +1 -1
- package/lib/workspace-instance.d.ts +44 -5
- package/lib/workspace-instance.d.ts.map +1 -1
- package/lib/wsready.d.ts +1 -1
- package/lib/wsready.d.ts.map +1 -1
- package/lib/wsready.js +2 -2
- package/package.json +34 -15
- package/pkg-yarn.lock +21 -9
- package/provenance-bundle.jsonl +2 -0
- package/src/accounting-protocol.ts +66 -54
- package/src/admin-protocol.ts +53 -21
- package/src/analytics.ts +28 -16
- package/src/attribution.ts +59 -0
- package/src/auth.ts +2 -2
- package/src/billing-mode.ts +81 -0
- package/src/blocked-repositories-protocol.ts +13 -0
- package/src/context-url.spec.ts +37 -9
- package/src/context-url.ts +94 -36
- package/src/encryption/container-module.ts +2 -3
- package/src/encryption/encryption-engine.spec.ts +9 -8
- package/src/encryption/encryption-engine.ts +20 -16
- package/src/encryption/encryption-service.ts +4 -5
- package/src/encryption/key-provider.ts +16 -19
- package/src/env.ts +0 -22
- package/src/experiments/always-default.ts +24 -0
- package/src/experiments/configcat-server.ts +41 -0
- package/src/experiments/configcat.ts +56 -0
- package/src/experiments/types.ts +34 -0
- package/src/gitpod-file-parser.spec.ts +55 -61
- package/src/gitpod-file-parser.ts +16 -17
- package/src/gitpod-service.ts +286 -143
- package/src/headless-workspace-log.ts +8 -19
- package/src/ide-frontend-service.ts +2 -2
- package/src/ide-protocol.ts +129 -0
- package/src/index.ts +16 -12
- package/src/installation-admin-protocol.ts +45 -0
- package/src/license-protocol.ts +12 -6
- package/src/messaging/browser/connection.ts +185 -21
- package/src/messaging/browser/window-connection.ts +39 -29
- package/src/messaging/client-call-metrics.ts +77 -0
- package/src/messaging/error.ts +29 -7
- package/src/messaging/handler.ts +13 -1
- package/src/messaging/node/connection.ts +23 -70
- package/src/messaging/proxy-factory.ts +35 -34
- package/src/oss-allowlist.ts +15 -0
- package/src/payment-protocol.ts +2 -2
- package/src/permission.ts +40 -33
- package/src/plans.ts +240 -189
- package/src/protocol.spec.ts +97 -0
- package/src/protocol.ts +612 -340
- package/src/snapshot-url.spec.ts +27 -0
- package/src/snapshot-url.ts +27 -0
- package/src/team-subscription-protocol.ts +59 -23
- package/src/teams-projects-protocol.ts +166 -0
- package/src/typings/globals.ts +4 -4
- package/src/usage.ts +71 -0
- package/src/util/analytics.ts +56 -18
- package/src/util/async-iterator.ts +4 -5
- package/src/util/cancelable.ts +3 -3
- package/src/util/date-time.ts +8 -8
- package/src/util/debug-app.ts +81 -0
- package/src/util/deferred.ts +6 -6
- package/src/util/disposable.ts +3 -6
- package/src/util/event.ts +9 -11
- package/src/util/garbage-collected-cache.ts +14 -6
- package/src/util/generate-workspace-id.spec.ts +34 -7
- package/src/util/generate-workspace-id.ts +464 -440
- package/src/util/gitpod-cookie.ts +38 -0
- package/src/util/gitpod-host-url.spec.ts +40 -13
- package/src/util/gitpod-host-url.ts +61 -37
- package/src/util/grpc.ts +104 -0
- package/src/util/jaeger-client-types.ts +102 -0
- package/src/util/logging.spec.ts +23 -0
- package/src/util/logging.ts +156 -74
- package/src/util/make-link.ts +6 -7
- package/src/util/nice-grpc.ts +93 -0
- package/src/util/parse-workspace-id.spec.ts +37 -8
- package/src/util/parse-workspace-id.ts +32 -7
- package/src/util/queue.spec.ts +27 -25
- package/src/util/repeat.ts +45 -0
- package/src/util/semaphore.ts +4 -6
- package/src/util/skip-if.ts +9 -6
- package/src/util/timeutil.spec.ts +40 -14
- package/src/util/timeutil.ts +27 -11
- package/src/util/tracing.spec.ts +88 -0
- package/src/util/tracing.ts +200 -31
- package/src/util/workspace-port-authentication.ts +10 -13
- package/src/webhook-event.ts +55 -0
- package/src/workspace-class.ts +14 -0
- package/src/workspace-cluster.ts +29 -10
- package/src/workspace-instance.ts +89 -24
- package/src/wsready.ts +3 -3
- package/data/builtin-theia-plugins.json +0 -372
- package/lib/email-protocol.d.ts +0 -50
- package/lib/email-protocol.d.ts.map +0 -1
- package/lib/email-protocol.js +0 -28
- package/lib/email-protocol.js.map +0 -1
- package/lib/messaging/connection-error-handler.d.ts +0 -27
- package/lib/messaging/connection-error-handler.d.ts.map +0 -1
- package/lib/messaging/connection-error-handler.js +0 -46
- package/lib/messaging/connection-error-handler.js.map +0 -1
- package/lib/theia-plugins.d.ts +0 -11
- package/lib/theia-plugins.d.ts.map +0 -1
- package/lib/theia-plugins.js.map +0 -1
- package/lib/util/repeater.d.ts +0 -22
- package/lib/util/repeater.d.ts.map +0 -1
- package/lib/util/repeater.js +0 -118
- package/lib/util/repeater.js.map +0 -1
- package/lib/util/safe-promise.d.ts +0 -11
- package/lib/util/safe-promise.d.ts.map +0 -1
- package/lib/util/safe-promise.js +0 -34
- package/lib/util/safe-promise.js.map +0 -1
- package/lib/util/without.d.ts +0 -7
- package/lib/util/without.d.ts.map +0 -1
- package/lib/util/without.js.map +0 -1
- package/src/email-protocol.ts +0 -67
- package/src/messaging/connection-error-handler.ts +0 -62
- package/src/util/jaeger-client.d.ts +0 -105
- package/src/util/repeater.ts +0 -49
- package/src/util/safe-promise.ts +0 -26
package/src/util/tracing.ts
CHANGED
|
@@ -4,48 +4,192 @@
|
|
|
4
4
|
* See License-AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import { initGlobalTracer } from
|
|
11
|
-
import { injectable } from
|
|
7
|
+
import * as opentracing from "opentracing";
|
|
8
|
+
import { TracingConfig, initTracerFromEnv } from "jaeger-client";
|
|
9
|
+
import { Sampler, SamplingDecision } from "./jaeger-client-types";
|
|
10
|
+
import { initGlobalTracer } from "opentracing";
|
|
11
|
+
import { injectable } from "inversify";
|
|
12
|
+
import { ResponseError } from "vscode-jsonrpc";
|
|
13
|
+
import { log, LogContext } from "./logging";
|
|
12
14
|
|
|
13
15
|
export interface TraceContext {
|
|
14
|
-
span?: opentracing.Span
|
|
16
|
+
span?: opentracing.Span;
|
|
15
17
|
}
|
|
18
|
+
export type TraceContextWithSpan = TraceContext & {
|
|
19
|
+
span: opentracing.Span;
|
|
20
|
+
};
|
|
16
21
|
|
|
17
22
|
export namespace TraceContext {
|
|
18
|
-
export function startSpan(operation: string,
|
|
19
|
-
const options: opentracing.SpanOptions = {
|
|
20
|
-
|
|
23
|
+
export function startSpan(operation: string, parentCtx?: TraceContext): opentracing.Span {
|
|
24
|
+
const options: opentracing.SpanOptions = {};
|
|
25
|
+
|
|
26
|
+
// references should contain span id.
|
|
27
|
+
// cf. https://github.com/jaegertracing/jaeger-client-node/issues/432
|
|
28
|
+
if (!!parentCtx?.span) {
|
|
29
|
+
const ctx = parentCtx?.span?.context();
|
|
30
|
+
if (ctx && !!ctx.toTraceId() && !!ctx.toSpanId()) {
|
|
31
|
+
options.references = [opentracing.followsFrom(ctx)];
|
|
32
|
+
}
|
|
21
33
|
}
|
|
34
|
+
|
|
22
35
|
return opentracing.globalTracer().startSpan(operation, options);
|
|
23
36
|
}
|
|
24
37
|
|
|
25
|
-
export function
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
38
|
+
export function childContext(operation: string, parentCtx: TraceContext): TraceContextWithSpan {
|
|
39
|
+
const span = startSpan(operation, parentCtx);
|
|
40
|
+
return { span };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function withSpan(operation: string, callback: (ctx: TraceContext) => void, ctx?: TraceContext): void {
|
|
44
|
+
// if we don't have a parent span, don't create a trace here as those <trace-without-root-spans> are not useful.
|
|
45
|
+
if (!ctx || !ctx.span || !ctx.span.context()) {
|
|
46
|
+
callback({});
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const span = TraceContext.startSpan(operation, ctx);
|
|
51
|
+
try {
|
|
52
|
+
callback({ span });
|
|
53
|
+
} catch (e) {
|
|
54
|
+
TraceContext.setError({ span }, e);
|
|
55
|
+
throw e;
|
|
56
|
+
} finally {
|
|
57
|
+
span.finish();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function setError(ctx: TraceContext, err: Error) {
|
|
62
|
+
if (!ctx.span) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
TraceContext.addNestedTags(ctx, {
|
|
67
|
+
error: {
|
|
68
|
+
message: err.message,
|
|
69
|
+
stacktrace: err.stack,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
ctx.span.setTag("error", true);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function setJsonRPCMetadata(ctx: TraceContext, method?: string) {
|
|
76
|
+
if (!ctx.span) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const tags: { [key: string]: any } = {
|
|
81
|
+
rpc: {
|
|
82
|
+
system: "jsonrpc",
|
|
83
|
+
// version,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
if (method) {
|
|
87
|
+
tags.rpc.method = method;
|
|
88
|
+
}
|
|
89
|
+
addNestedTags(ctx, tags);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function setJsonRPCError(
|
|
93
|
+
ctx: TraceContext,
|
|
94
|
+
method: string,
|
|
95
|
+
err: ResponseError<any>,
|
|
96
|
+
withStatusCode: boolean = false,
|
|
97
|
+
) {
|
|
98
|
+
if (!ctx.span) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// not use setError bc this is (most likely) a working operation
|
|
102
|
+
|
|
103
|
+
setJsonRPCMetadata(ctx, method);
|
|
104
|
+
// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/rpc.md#json-rpc
|
|
105
|
+
addNestedTags(ctx, {
|
|
106
|
+
rpc: {
|
|
107
|
+
jsonrpc: {
|
|
108
|
+
error_code: err.code,
|
|
109
|
+
error_message: err.message,
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// the field "status_code" is used by honeycomb to derive insights like success rate, etc. Defaults to "0".
|
|
115
|
+
if (withStatusCode) {
|
|
116
|
+
ctx.span.setTag("status_code", err.code);
|
|
29
117
|
}
|
|
30
|
-
return opentracing.globalTracer().startSpan(operation, options);
|
|
31
118
|
}
|
|
32
119
|
|
|
33
|
-
export function
|
|
120
|
+
export function addJsonRPCParameters(ctx: TraceContext, params: { [key: string]: any }) {
|
|
34
121
|
if (!ctx.span) {
|
|
35
122
|
return;
|
|
36
123
|
}
|
|
37
124
|
|
|
38
|
-
ctx
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
125
|
+
setJsonRPCMetadata(ctx);
|
|
126
|
+
addNestedTags(ctx, {
|
|
127
|
+
rpc: {
|
|
128
|
+
jsonrpc: {
|
|
129
|
+
parameters: params,
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Does what one would expect from `span.addTags`: Calls `span.addTag` for all keys in map, recursively for objects.
|
|
137
|
+
* Example:
|
|
138
|
+
* ```
|
|
139
|
+
* TraceContext.addNestedTags(ctx, {
|
|
140
|
+
* rpc: {
|
|
141
|
+
* system: "jsonrpc",
|
|
142
|
+
* jsonrpc: {
|
|
143
|
+
* version: "1.0",
|
|
144
|
+
* method: "test",
|
|
145
|
+
* parameters: ["abc", "def"],
|
|
146
|
+
* },
|
|
147
|
+
* },
|
|
148
|
+
* });
|
|
149
|
+
* ```
|
|
150
|
+
* gives
|
|
151
|
+
* rpc.system = "jsonrpc"
|
|
152
|
+
* rpc.jsonrpc.version = "1.0"
|
|
153
|
+
* rpc.jsonrpc.method = "test"
|
|
154
|
+
* rpc.jsonrpc.parameters.0 = "abc"
|
|
155
|
+
* rpc.jsonrpc.parameters.1 = "def"
|
|
156
|
+
* @param ctx
|
|
157
|
+
* @param keyValueMap
|
|
158
|
+
* @returns
|
|
159
|
+
*/
|
|
160
|
+
export function addNestedTags(ctx: TraceContext, keyValueMap: { [key: string]: any }, _namespace?: string) {
|
|
161
|
+
if (!ctx.span) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const namespace = _namespace ? `${_namespace}.` : "";
|
|
165
|
+
|
|
166
|
+
try {
|
|
167
|
+
for (const k of Object.keys(keyValueMap)) {
|
|
168
|
+
const v = keyValueMap[k];
|
|
169
|
+
if (v instanceof Object) {
|
|
170
|
+
addNestedTags(ctx, v, `${namespace}${k}`);
|
|
171
|
+
} else {
|
|
172
|
+
ctx.span.setTag(`${namespace}${k}`, v);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
} catch (err) {
|
|
176
|
+
// general resilience against odd shapes/parameters
|
|
177
|
+
log.error("Tracing.addNestedTags", err, { namespace });
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export function setOWI(ctx: TraceContext, owi: LogContext) {
|
|
182
|
+
if (!ctx.span) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
addNestedTags(ctx, {
|
|
186
|
+
context: owi,
|
|
187
|
+
});
|
|
43
188
|
}
|
|
44
189
|
}
|
|
45
190
|
|
|
46
191
|
@injectable()
|
|
47
192
|
export class TracingManager {
|
|
48
|
-
|
|
49
193
|
public setup(serviceName: string, opts?: CustomTracerOpts) {
|
|
50
194
|
initGlobalTracer(this.getTracerForService(serviceName, opts));
|
|
51
195
|
}
|
|
@@ -54,13 +198,18 @@ export class TracingManager {
|
|
|
54
198
|
const config: TracingConfig = {
|
|
55
199
|
disable: false,
|
|
56
200
|
reporter: {
|
|
57
|
-
logSpans: false
|
|
201
|
+
logSpans: false,
|
|
58
202
|
},
|
|
59
|
-
serviceName
|
|
60
|
-
}
|
|
203
|
+
serviceName,
|
|
204
|
+
};
|
|
61
205
|
const t = initTracerFromEnv(config, {
|
|
62
|
-
logger: console
|
|
206
|
+
logger: console,
|
|
207
|
+
tags: {
|
|
208
|
+
"service.build.commit": process.env.GITPOD_BUILD_GIT_COMMIT,
|
|
209
|
+
"service.build.version": process.env.GITPOD_BUILD_VERSION,
|
|
210
|
+
},
|
|
63
211
|
});
|
|
212
|
+
|
|
64
213
|
if (opts) {
|
|
65
214
|
if (opts.perOpSampling) {
|
|
66
215
|
(t as any)._sampler = new PerOperationSampler((t as any)._sampler, opts.perOpSampling);
|
|
@@ -68,24 +217,22 @@ export class TracingManager {
|
|
|
68
217
|
}
|
|
69
218
|
return t;
|
|
70
219
|
}
|
|
71
|
-
|
|
72
220
|
}
|
|
73
221
|
|
|
74
222
|
export interface CustomTracerOpts {
|
|
75
|
-
perOpSampling?: PerOperationSampling
|
|
223
|
+
perOpSampling?: PerOperationSampling;
|
|
76
224
|
}
|
|
77
225
|
|
|
78
|
-
|
|
79
226
|
// has to conform to https://github.com/jaegertracing/jaeger-client-node/blob/0042b1c0a0796bb655eb93e77ff76ab5e94c2bb6/src/_flow/sampler-thrift.js#L32
|
|
80
227
|
export interface PerOperationSampling {
|
|
81
|
-
[key: string]: boolean
|
|
228
|
+
[key: string]: boolean;
|
|
82
229
|
}
|
|
83
230
|
|
|
84
231
|
export class PerOperationSampler implements Sampler {
|
|
85
232
|
constructor(protected readonly fallback: Sampler, protected readonly strategies: PerOperationSampling) {}
|
|
86
233
|
|
|
87
234
|
name(): string {
|
|
88
|
-
return
|
|
235
|
+
return "PerOperationSampler";
|
|
89
236
|
}
|
|
90
237
|
|
|
91
238
|
toString(): string {
|
|
@@ -125,10 +272,32 @@ export class PerOperationSampler implements Sampler {
|
|
|
125
272
|
return false; // TODO equal should be removed
|
|
126
273
|
}
|
|
127
274
|
|
|
128
|
-
close(callback: ()=>void): void {
|
|
275
|
+
close(callback: () => void): void {
|
|
129
276
|
// all nested samplers are of simple types, so we do not need to Close them
|
|
130
277
|
if (callback) {
|
|
131
278
|
callback();
|
|
132
279
|
}
|
|
133
280
|
}
|
|
134
281
|
}
|
|
282
|
+
|
|
283
|
+
// Augment interfaces with an leading parameter "TraceContext" on every method
|
|
284
|
+
type IsValidArg<T> = T extends object ? (keyof T extends never ? false : true) : true;
|
|
285
|
+
type AddTraceContext<T> = T extends (a: infer A, b: infer B, c: infer C, d: infer D, e: infer E, f: infer F) => infer R
|
|
286
|
+
? IsValidArg<F> extends true
|
|
287
|
+
? (ctx: TraceContextWithSpan, a: A, b: B, c: C, d: D, e: E, f: F) => R
|
|
288
|
+
: IsValidArg<E> extends true
|
|
289
|
+
? (ctx: TraceContextWithSpan, a: A, b: B, c: C, d: D, e: E) => R
|
|
290
|
+
: IsValidArg<D> extends true
|
|
291
|
+
? (ctx: TraceContextWithSpan, a: A, b: B, c: C, d: D) => R
|
|
292
|
+
: IsValidArg<C> extends true
|
|
293
|
+
? (ctx: TraceContextWithSpan, a: A, b: B, c: C) => R
|
|
294
|
+
: IsValidArg<B> extends true
|
|
295
|
+
? (ctx: TraceContextWithSpan, a: A, b: B) => R
|
|
296
|
+
: IsValidArg<A> extends true
|
|
297
|
+
? (ctx: TraceContextWithSpan, a: A) => R
|
|
298
|
+
: (ctx: TraceContextWithSpan) => Promise<R>
|
|
299
|
+
: never;
|
|
300
|
+
|
|
301
|
+
export type InterfaceWithTraceContext<T> = {
|
|
302
|
+
[P in keyof T]: AddTraceContext<T[P]>;
|
|
303
|
+
};
|
|
@@ -5,16 +5,13 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* These cookies are set in the Theia frontend. This pattern is relied upon in:
|
|
9
|
-
* - proxy:
|
|
10
|
-
* - to filter it out on port locations
|
|
11
|
-
* - to forward it to the server for authentication
|
|
12
|
-
* - server:
|
|
13
|
-
* - to authenticate access to port locations
|
|
14
|
-
*/
|
|
15
|
-
export const worspacePortAuthCookieName = function(host: string, workspaceId: string): string {
|
|
16
|
-
return host
|
|
17
|
-
|
|
18
|
-
.replace(/[\W_]+/g, "_")
|
|
19
|
-
+ `_ws_${workspaceId}_port_auth_`;
|
|
20
|
-
};
|
|
8
|
+
* These cookies are set in the Theia frontend. This pattern is relied upon in:
|
|
9
|
+
* - proxy:
|
|
10
|
+
* - to filter it out on port locations
|
|
11
|
+
* - to forward it to the server for authentication
|
|
12
|
+
* - server:
|
|
13
|
+
* - to authenticate access to port locations
|
|
14
|
+
*/
|
|
15
|
+
export const worspacePortAuthCookieName = function (host: string, workspaceId: string): string {
|
|
16
|
+
return host.replace(/https?/, "").replace(/[\W_]+/g, "_") + `_ws_${workspaceId}_port_auth_`;
|
|
17
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
3
|
+
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
+
* See License-AGPL.txt in the project root for license information.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export interface WebhookEvent {
|
|
8
|
+
id: string;
|
|
9
|
+
creationTime: string;
|
|
10
|
+
type: "push" | string;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Typically the webhook installer is referenced here.
|
|
14
|
+
*/
|
|
15
|
+
authorizedUserId?: string;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* webhook event's payload
|
|
19
|
+
*/
|
|
20
|
+
rawEvent: string;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The general status of the received webhook event.
|
|
24
|
+
*/
|
|
25
|
+
status: WebhookEvent.Status;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Optional message to help understand errors with handling events.
|
|
29
|
+
*/
|
|
30
|
+
message?: string;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* If the webhook event is considered to trigger a prebuild, the `prebuildStatus`
|
|
34
|
+
* contains a more specific status.
|
|
35
|
+
*/
|
|
36
|
+
prebuildStatus?: WebhookEvent.PrebuildStatus;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* If `prebuildStatus` is `prebuild_triggered` this points to a prebuild.
|
|
40
|
+
*/
|
|
41
|
+
prebuildId?: string;
|
|
42
|
+
|
|
43
|
+
projectId?: string;
|
|
44
|
+
|
|
45
|
+
cloneUrl?: string;
|
|
46
|
+
|
|
47
|
+
branch?: string;
|
|
48
|
+
|
|
49
|
+
commit?: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export namespace WebhookEvent {
|
|
53
|
+
export type Status = "received" | "dismissed_unauthorized" | "ignored" | "processed";
|
|
54
|
+
export type PrebuildStatus = "ignored_unconfigured" | "prebuild_trigger_failed" | "prebuild_triggered";
|
|
55
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
3
|
+
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
+
* See License-AGPL.txt in the project root for license information.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export interface SupportedWorkspaceClass {
|
|
8
|
+
id: string;
|
|
9
|
+
category: string;
|
|
10
|
+
displayName: string;
|
|
11
|
+
description: string;
|
|
12
|
+
powerups: number;
|
|
13
|
+
isSelected: boolean;
|
|
14
|
+
}
|
package/src/workspace-cluster.ts
CHANGED
|
@@ -4,11 +4,10 @@
|
|
|
4
4
|
* See License-AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import * as fs from
|
|
8
|
-
import { filePathTelepresenceAware } from
|
|
7
|
+
import * as fs from "fs";
|
|
8
|
+
import { filePathTelepresenceAware } from "./env";
|
|
9
9
|
import { DeepPartial } from "./util/deep-partial";
|
|
10
|
-
import {
|
|
11
|
-
import { PermissionName } from './permission';
|
|
10
|
+
import { PermissionName } from "./permission";
|
|
12
11
|
|
|
13
12
|
export interface WorkspaceCluster {
|
|
14
13
|
// Name of the workspace cluster.
|
|
@@ -16,6 +15,10 @@ export interface WorkspaceCluster {
|
|
|
16
15
|
// Must be identical to the installationShortname of the cluster it represents!
|
|
17
16
|
name: string;
|
|
18
17
|
|
|
18
|
+
// The name of the application cluster to which this cluster should be registered.
|
|
19
|
+
// The name can be at most 60 characters.
|
|
20
|
+
applicationCluster: string;
|
|
21
|
+
|
|
19
22
|
// URL of the cluster's ws-manager API
|
|
20
23
|
url: string;
|
|
21
24
|
|
|
@@ -48,15 +51,31 @@ export interface TLSConfig {
|
|
|
48
51
|
crt: string;
|
|
49
52
|
}
|
|
50
53
|
export namespace TLSConfig {
|
|
51
|
-
export const loadFromBase64File = (path: string): string =>
|
|
54
|
+
export const loadFromBase64File = (path: string): string =>
|
|
55
|
+
fs.readFileSync(filePathTelepresenceAware(path)).toString("base64");
|
|
52
56
|
}
|
|
53
|
-
export type WorkspaceClusterWoTLS =
|
|
57
|
+
export type WorkspaceClusterWoTLS = Omit<WorkspaceCluster, "tls">;
|
|
54
58
|
export type WorkspaceManagerConnectionInfo = Pick<WorkspaceCluster, "name" | "url" | "tls">;
|
|
55
59
|
|
|
56
|
-
export type AdmissionConstraint =
|
|
60
|
+
export type AdmissionConstraint =
|
|
61
|
+
| AdmissionConstraintFeaturePreview
|
|
62
|
+
| AdmissionConstraintHasPermission
|
|
63
|
+
| AdmissionConstraintHasClass;
|
|
57
64
|
export type AdmissionConstraintFeaturePreview = { type: "has-feature-preview" };
|
|
58
|
-
export type
|
|
59
|
-
|
|
65
|
+
export type AdmissionConstraintHasPermission = { type: "has-permission"; permission: PermissionName };
|
|
66
|
+
export type AdmissionConstraintHasClass = { type: "has-class"; id: string; displayName: string };
|
|
67
|
+
|
|
68
|
+
export namespace AdmissionConstraint {
|
|
69
|
+
export function is(o: any): o is AdmissionConstraint {
|
|
70
|
+
return !!o && "type" in o;
|
|
71
|
+
}
|
|
72
|
+
export function isHasPermissionConstraint(o: any): o is AdmissionConstraintHasPermission {
|
|
73
|
+
return is(o) && o.type === "has-permission";
|
|
74
|
+
}
|
|
75
|
+
export function hasPermission(ac: AdmissionConstraint, permission: PermissionName): boolean {
|
|
76
|
+
return isHasPermissionConstraint(ac) && ac.permission === permission;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
60
79
|
|
|
61
80
|
export const WorkspaceClusterDB = Symbol("WorkspaceClusterDB");
|
|
62
81
|
export interface WorkspaceClusterDB {
|
|
@@ -87,4 +106,4 @@ export interface WorkspaceClusterDB {
|
|
|
87
106
|
}
|
|
88
107
|
export interface WorkspaceClusterFilter extends Pick<WorkspaceCluster, "state" | "govern" | "url"> {
|
|
89
108
|
minScore: number;
|
|
90
|
-
}
|
|
109
|
+
}
|
|
@@ -23,6 +23,9 @@ export interface WorkspaceInstance {
|
|
|
23
23
|
// The time an instance has switched phase to 'Running'
|
|
24
24
|
startedTime?: string;
|
|
25
25
|
|
|
26
|
+
// The time an instance has switched phase to 'Stopping' */
|
|
27
|
+
stoppingTime?: string;
|
|
28
|
+
|
|
26
29
|
// The time an instance has switched phase to 'Stopped' */
|
|
27
30
|
stoppedTime?: string;
|
|
28
31
|
|
|
@@ -48,10 +51,32 @@ export interface WorkspaceInstance {
|
|
|
48
51
|
|
|
49
52
|
// instance is hard-deleted on the database and about to be collected by db-sync
|
|
50
53
|
readonly deleted?: boolean;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Contains information about the image build, if there was any
|
|
57
|
+
*/
|
|
58
|
+
imageBuildInfo?: ImageBuildInfo;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* workspace class, also known as workspace size, determines the type of
|
|
62
|
+
* resources that are provided to the workspace.
|
|
63
|
+
*/
|
|
64
|
+
workspaceClass?: string;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Identifies the team or user to which this instance's runtime should be attributed to
|
|
68
|
+
* (e.g. for usage analytics or billing purposes).
|
|
69
|
+
*/
|
|
70
|
+
usageAttributionId?: string;
|
|
51
71
|
}
|
|
52
72
|
|
|
53
73
|
// WorkspaceInstanceStatus describes the current state of a workspace instance
|
|
54
74
|
export interface WorkspaceInstanceStatus {
|
|
75
|
+
// version is the current version of the workspace instance status
|
|
76
|
+
// Note: consider this value opague. The only guarantee given is that it imposes
|
|
77
|
+
// a partial order on status updates, i.e. a.version > b.version -> a newer than b.
|
|
78
|
+
version?: number;
|
|
79
|
+
|
|
55
80
|
// phase describes a high-level state of the workspace instance
|
|
56
81
|
phase: WorkspaceInstancePhase;
|
|
57
82
|
|
|
@@ -87,52 +112,54 @@ export interface WorkspaceInstanceStatus {
|
|
|
87
112
|
export type WorkspaceInstancePhase =
|
|
88
113
|
// unknown indicates an issue within the system in that it cannot determine the actual phase of
|
|
89
114
|
// a workspace. This phase is usually accompanied by an error.
|
|
90
|
-
"unknown"
|
|
115
|
+
| "unknown"
|
|
91
116
|
|
|
92
117
|
// Preparing means that we haven't actually started the workspace instance just yet, but rather
|
|
93
|
-
// are still preparing for launch.
|
|
94
|
-
"preparing"
|
|
118
|
+
// are still preparing for launch.
|
|
119
|
+
| "preparing"
|
|
120
|
+
|
|
121
|
+
// Building means that we are building the Docker image for the workspace. A workspace will enter this phase only
|
|
122
|
+
// if an image build is required for that workspace.
|
|
123
|
+
| "building"
|
|
95
124
|
|
|
96
125
|
// Pending means the workspace does not yet consume resources in the cluster, but rather is looking for
|
|
97
126
|
// some space within the cluster. If for example the cluster needs to scale up to accomodate the
|
|
98
127
|
// workspace, the workspace will be in Pending state until that happened.
|
|
99
|
-
"pending"
|
|
128
|
+
| "pending"
|
|
100
129
|
|
|
101
130
|
// Creating means the workspace is currently being created. Thati includes downloading the images required
|
|
102
131
|
// to run the workspace over the network. The time spent in this phase varies widely and depends on the current
|
|
103
132
|
// network speed, image size and cache states.
|
|
104
|
-
"creating"
|
|
133
|
+
| "creating"
|
|
105
134
|
|
|
106
135
|
// Initializing is the phase in which the workspace is executing the appropriate workspace initializer (e.g. Git
|
|
107
136
|
// clone or backup download). After this phase one can expect the workspace to either be Running or Failed.
|
|
108
|
-
"initializing"
|
|
137
|
+
| "initializing"
|
|
109
138
|
|
|
110
139
|
// Running means the workspace is able to actively perform work, either by serving a user through Theia,
|
|
111
140
|
// or as a headless workspace.
|
|
112
|
-
"running"
|
|
141
|
+
| "running"
|
|
113
142
|
|
|
114
143
|
// Interrupted is an exceptional state where the container should be running but is temporarily unavailable.
|
|
115
144
|
// When in this state, we expect it to become running or stopping anytime soon.
|
|
116
|
-
"interrupted"
|
|
145
|
+
| "interrupted"
|
|
117
146
|
|
|
118
147
|
// Stopping means that the workspace is currently shutting down. It could go to stopped every moment.
|
|
119
|
-
"stopping"
|
|
148
|
+
| "stopping"
|
|
120
149
|
|
|
121
150
|
// Stopped means the workspace ended regularly because it was shut down.
|
|
122
|
-
"stopped";
|
|
151
|
+
| "stopped";
|
|
123
152
|
|
|
124
153
|
export interface WorkspaceInstanceConditions {
|
|
125
154
|
// Failed contains the reason the workspace failed to operate. If this field is empty, the workspace has not failed.
|
|
126
|
-
failed
|
|
155
|
+
// failed contains technical details for the failure of the workspace.
|
|
156
|
+
failed?: string;
|
|
127
157
|
|
|
128
158
|
// timeout contains the reason the workspace has timed out. If this field is empty, the workspace has not timed out.
|
|
129
|
-
timeout?: string
|
|
159
|
+
timeout?: string;
|
|
130
160
|
|
|
131
161
|
// PullingImages marks if the workspace is currently pulling its images. This condition can only be set during PhaseCreating
|
|
132
|
-
pullingImages?: boolean
|
|
133
|
-
|
|
134
|
-
// ServiceExists denotes if the workspace theia-/ports- services exist. This condition will be true if either of the two services exist.
|
|
135
|
-
serviceExists?: boolean
|
|
162
|
+
pullingImages?: boolean;
|
|
136
163
|
|
|
137
164
|
// deployed marks that a workspace instance was sent/deployed at a workspace manager
|
|
138
165
|
deployed?: boolean;
|
|
@@ -142,22 +169,28 @@ export interface WorkspaceInstanceConditions {
|
|
|
142
169
|
|
|
143
170
|
// ISO8601 timestamp when the first user activity was registered in the frontend. Only set if the workspace is running.
|
|
144
171
|
firstUserActivity?: string;
|
|
172
|
+
|
|
173
|
+
// headlessTaskFailed indicates that a headless workspace task failed
|
|
174
|
+
// headlessTaskFailed is only set if:
|
|
175
|
+
// * this workspace is headless
|
|
176
|
+
// * the task being run returned a non 0 exit status code
|
|
177
|
+
headlessTaskFailed?: string;
|
|
178
|
+
|
|
179
|
+
// stopped_by_request is true if the workspace was stopped using a StopWorkspace call
|
|
180
|
+
stoppedByRequest?: boolean;
|
|
145
181
|
}
|
|
146
182
|
|
|
147
183
|
// AdmissionLevel describes who can access a workspace instance and its ports.
|
|
148
|
-
export type AdmissionLevel =
|
|
184
|
+
export type AdmissionLevel = "owner_only" | "everyone";
|
|
149
185
|
|
|
150
186
|
// PortVisibility describes how a port can be accessed
|
|
151
|
-
export type PortVisibility =
|
|
187
|
+
export type PortVisibility = "public" | "private";
|
|
152
188
|
|
|
153
189
|
// WorkspaceInstancePort describes a port exposed on a workspace instance
|
|
154
190
|
export interface WorkspaceInstancePort {
|
|
155
191
|
// The outward-facing port number
|
|
156
192
|
port: number;
|
|
157
193
|
|
|
158
|
-
// An optional inward-facing port number. If not present we'll use port.
|
|
159
|
-
targetPort?: number;
|
|
160
|
-
|
|
161
194
|
// The visiblity of this port. Optional for backwards compatibility.
|
|
162
195
|
visibility?: PortVisibility;
|
|
163
196
|
|
|
@@ -177,19 +210,25 @@ export interface WorkspaceInstanceRepoStatus {
|
|
|
177
210
|
uncommitedFiles?: string[];
|
|
178
211
|
|
|
179
212
|
// the total number of uncommited files
|
|
180
|
-
totalUncommitedFiles?: number
|
|
213
|
+
totalUncommitedFiles?: number;
|
|
181
214
|
|
|
182
215
|
// untrackedFiles is the list of untracked files in the workspace, possibly truncated
|
|
183
216
|
untrackedFiles?: string[];
|
|
184
217
|
|
|
185
218
|
// the total number of untracked files
|
|
186
|
-
totalUntrackedFiles?: number
|
|
219
|
+
totalUntrackedFiles?: number;
|
|
187
220
|
|
|
188
221
|
// unpushedCommits is the list of unpushed changes in the workspace, possibly truncated
|
|
189
222
|
unpushedCommits?: string[];
|
|
190
223
|
|
|
191
224
|
// the total number of unpushed changes
|
|
192
|
-
totalUnpushedCommits?: number
|
|
225
|
+
totalUnpushedCommits?: number;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// ConfigurationIdeConfig ide config of WorkspaceInstanceConfiguration
|
|
229
|
+
export interface ConfigurationIdeConfig {
|
|
230
|
+
useLatest?: boolean;
|
|
231
|
+
desktopIdeAlias?: string;
|
|
193
232
|
}
|
|
194
233
|
|
|
195
234
|
// WorkspaceInstanceConfiguration contains all per-instance configuration
|
|
@@ -203,4 +242,30 @@ export interface WorkspaceInstanceConfiguration {
|
|
|
203
242
|
|
|
204
243
|
// ideImage is the ref of the IDE image this instance uses.
|
|
205
244
|
ideImage: string;
|
|
245
|
+
|
|
246
|
+
// desktopIdeImage is the ref of the desktop IDE image this instance uses.
|
|
247
|
+
desktopIdeImage?: string;
|
|
248
|
+
|
|
249
|
+
// desktopIdePluginImage is the ref of the desktop IDE plugin image this instance uses.
|
|
250
|
+
desktopIdePluginImage?: string;
|
|
251
|
+
|
|
252
|
+
// supervisorImage is the ref of the supervisor image this instance uses.
|
|
253
|
+
supervisorImage?: string;
|
|
254
|
+
|
|
255
|
+
ideConfig?: ConfigurationIdeConfig;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Holds information about the image build (if there was one) for this WorkspaceInstance
|
|
260
|
+
*/
|
|
261
|
+
export interface ImageBuildInfo {
|
|
262
|
+
log?: ImageBuildLogInfo;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Holds information about how to access logs for this an image build
|
|
267
|
+
*/
|
|
268
|
+
export interface ImageBuildLogInfo {
|
|
269
|
+
url: string;
|
|
270
|
+
headers: { [key: string]: string };
|
|
206
271
|
}
|