From d87764e1905fd264b441b760c9212fff6c490d05 Mon Sep 17 00:00:00 2001 From: Johannes Faltermeier Date: Tue, 29 Oct 2024 11:08:04 +0100 Subject: [PATCH] Document naming conventions & Naming alignment Contributed on behalf of STMicroelectronics --- README.md | 12 +++---- .../demo-theia-monitor-vscode/Dockerfile | 4 +-- ...x => theia-cloud-monitor-0.12.0-next.vsix} | Bin 391490 -> 391490 bytes documentation/Architecture.md | 2 +- documentation/Install.md | 16 ++++----- documentation/Naming.md | 32 ++++++++++++++++++ documentation/operator.graphml | 12 +++---- .../{theiacloud.png => theia-cloud.png} | Bin java/operator/README.md | 2 +- .../EagerStartAppDefinitionAddedHandler.java | 2 +- .../src/main/resources/templateConfigmap.yaml | 2 +- .../resources/templateConfigmapEmails.yaml | 2 +- .../main/resources/templateDeployment.yaml | 24 ++++++------- .../templateDeploymentWithoutOAuthProxy.yaml | 24 ++++++------- .../templatePersistentVolumeClaim.yaml | 2 +- ...templatePersistentVolumeClaimMinikube.yaml | 2 +- .../org.eclipse.theia.cloud.service/README.md | 2 -- .../eclipse/theia/cloud/service/K8sUtil.java | 2 +- .../monitor-theia/src/common/env-variables.ts | 4 +-- .../src/common/monitor-protocol.ts | 6 ++-- node/monitor-theia/src/common/util.ts | 4 +-- .../monitor-theia/src/node/monitor-service.ts | 6 ++-- node/monitor/.vscode/launch.json | 4 +-- node/monitor/README.md | 12 +++---- node/monitor/package-lock.json | 4 +-- node/monitor/package.json | 2 +- node/monitor/src/env-variables.ts | 6 ++-- node/monitor/src/util/util.ts | 4 +-- node/testing-page/README.md | 4 +-- .../minikube_getting_started.tf | 2 +- terraform/modules/helm/main.tf | 6 ++-- .../0_minikube-setup/minikube_test_cluster.tf | 2 +- .../1_theia-cloud-base/theia_cloud_base.tf | 4 +-- .../2-01_try-now/theia_cloud.tf | 6 ++-- .../2-02_monitor/theia_cloud.tf | 2 +- .../2-03_try-now_paths/theia_cloud.tf | 6 ++-- terraform/test-configurations/test.md | 2 +- 37 files changed, 129 insertions(+), 99 deletions(-) rename demo/dockerfiles/demo-theia-monitor-vscode/{theiacloud-monitor-0.12.0-next.vsix => theia-cloud-monitor-0.12.0-next.vsix} (93%) create mode 100644 documentation/Naming.md rename documentation/{theiacloud.png => theia-cloud.png} (100%) diff --git a/README.md b/README.md index 5c452ec8..e34682c1 100644 --- a/README.md +++ b/README.md @@ -100,9 +100,9 @@ helm repo update ```bash helm install theia-cloud-base theia-cloud-remote/theia-cloud-base --set issuer.email=your-mail@example.com -helm install theia-cloud-crds theia-cloud-remote/theia-cloud-crds --namespace theiacloud --create-namespace +helm install theia-cloud-crds theia-cloud-remote/theia-cloud-crds --namespace theia-cloud --create-namespace -helm install theia-cloud theia-cloud-remote/theia-cloud --namespace theiacloud +helm install theia-cloud theia-cloud-remote/theia-cloud --namespace theia-cloud ``` ### Install the current next version @@ -112,21 +112,21 @@ Simply add the `--devel` flag: ```bash helm install theia-cloud-base theia-cloud-remote/theia-cloud-base --set issuer.email=your-mail@example.com --devel -helm install theia-cloud-crds theia-cloud-remote/theia-cloud-crds --namespace theiacloud --create-namespace --devel +helm install theia-cloud-crds theia-cloud-remote/theia-cloud-crds --namespace theia-cloud --create-namespace --devel -helm install theia-cloud theia-cloud-remote/theia-cloud --namespace theiacloud --devel +helm install theia-cloud theia-cloud-remote/theia-cloud --namespace theia-cloud --devel ``` ### Optional: switch to the newly created namespace ```bash -kubectl config set-context --current --namespace=theiacloud +kubectl config set-context --current --namespace=theia-cloud ``` ### Uninstall ```bash -helm uninstall theia-cloud -n theiacloud +helm uninstall theia-cloud -n theia-cloud ``` ### Getting started with diff --git a/demo/dockerfiles/demo-theia-monitor-vscode/Dockerfile b/demo/dockerfiles/demo-theia-monitor-vscode/Dockerfile index e30ca90a..2b4fd889 100644 --- a/demo/dockerfiles/demo-theia-monitor-vscode/Dockerfile +++ b/demo/dockerfiles/demo-theia-monitor-vscode/Dockerfile @@ -2,8 +2,8 @@ FROM node:18-bullseye-slim as build-stage # Copy and unzip the vsix file RUN apt-get update && apt-get install -y unzip && rm -rf /var/lib/apt/lists/* -COPY theiacloud-monitor-0.12.0-next.vsix /tmp/theiacloud-monitor.vsix -RUN mkdir /tmp/extracted && unzip /tmp/theiacloud-monitor.vsix -d /tmp/extracted +COPY theia-cloud-monitor-0.12.0-next.vsix /tmp/theia-cloud-monitor.vsix +RUN mkdir /tmp/extracted && unzip /tmp/theia-cloud-monitor.vsix -d /tmp/extracted FROM theiacloud/theia-cloud-demo:0.12.0-next as production-stage diff --git a/demo/dockerfiles/demo-theia-monitor-vscode/theiacloud-monitor-0.12.0-next.vsix b/demo/dockerfiles/demo-theia-monitor-vscode/theia-cloud-monitor-0.12.0-next.vsix similarity index 93% rename from demo/dockerfiles/demo-theia-monitor-vscode/theiacloud-monitor-0.12.0-next.vsix rename to demo/dockerfiles/demo-theia-monitor-vscode/theia-cloud-monitor-0.12.0-next.vsix index 579df495fda380b75b3688197a624c2073e87fef..03af94b1b2755a8c6dd6f06cfa440fb6fa12e8eb 100644 GIT binary patch delta 24163 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 delta 24164 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 X0ig6p01D{g?Ni48jNaWXK;^#xU2E8O diff --git a/documentation/Architecture.md b/documentation/Architecture.md index 12eb5926..04ea6298 100644 --- a/documentation/Architecture.md +++ b/documentation/Architecture.md @@ -2,7 +2,7 @@ The Theia Cloud Operator listens for changes to custom resources inside the cluster. With those custom resources clients may trigger the creation/deletion/handling of workspaces and sessions. The Operator is responsible for handling all things that are related to the Kubernetes-Resources for workspaces and sessions. All access is authenticated via an Authenticator. -![Theia Cloud Diagram](theiacloud.png "Theia Cloud") +![Theia Cloud Diagram](theia-cloud.png "Theia Cloud") ## Operator Java Overview diff --git a/documentation/Install.md b/documentation/Install.md index 82047ea0..0bf9a8ab 100644 --- a/documentation/Install.md +++ b/documentation/Install.md @@ -76,9 +76,9 @@ helm repo update ```bash helm install theia-cloud-base theia-cloud-remote/theia-cloud-base --set issuer.email=your-mail@example.com -helm install theia-cloud-crds theia-cloud-remote/theia-cloud-crds --namespace theiacloud --create-namespace +helm install theia-cloud-crds theia-cloud-remote/theia-cloud-crds --namespace theia-cloud --create-namespace -helm install theia-cloud theia-cloud-remote/theia-cloud --namespace theiacloud +helm install theia-cloud theia-cloud-remote/theia-cloud --namespace theia-cloud ``` ### Install the current next version @@ -88,31 +88,31 @@ Simply add the `--devel` flag: ```bash helm install theia-cloud-base theia-cloud-remote/theia-cloud-base --set issuer.email=your-mail@example.com --devel -helm install theia-cloud-crds theia-cloud-remote/theia-cloud-crds --namespace theiacloud --create-namespace --devel +helm install theia-cloud-crds theia-cloud-remote/theia-cloud-crds --namespace theia-cloud --create-namespace --devel -helm install theia-cloud theia-cloud-remote/theia-cloud --namespace theiacloud --devel +helm install theia-cloud theia-cloud-remote/theia-cloud --namespace theia-cloud --devel ``` ### Optional: switch to the newly created namespace ```bash -kubectl config set-context --current --namespace=theiacloud +kubectl config set-context --current --namespace=theia-cloud ``` ### Trouble shooting Recreate tls secret for sessions: -`kubectl delete secret ws-cert-secret -n theiacloud` +`kubectl delete secret ws-cert-secret -n theia-cloud` ## Check ```bash -helm get manifest theia-cloud -n theiacloud +helm get manifest theia-cloud -n theia-cloud ``` ## Uninstall ```bash -helm uninstall theia-cloud -n theiacloud +helm uninstall theia-cloud -n theia-cloud ``` diff --git a/documentation/Naming.md b/documentation/Naming.md new file mode 100644 index 00000000..e56c25ae --- /dev/null +++ b/documentation/Naming.md @@ -0,0 +1,32 @@ +# Naming Conventions + +The project is called "Theia Cloud" (with a space) and is a subproject of Eclipse Theia. + +As different languages and use cases use other conventions for naming, we try to follow these conventions as close as possible. + +Please see below guidelines for know usages of specific style conventions. + +## theia.cloud + +In general, use `theia.cloud` in hierachies and for identifiers, e.g. + +- Java package/jar names, e.g. `org.eclipse.theia.cloud` +- Java (system) properties , e.g. `-Dtheia.cloud.app.id=asdfghjkl` +- Group Names / Metadata Names in Kubernetes Custom Resource Definitions, e.g. `theia.cloud`, `theia.cloud/v1beta9`, `sessions.theia.cloud` +- Theia Command identifiers, e.g. `theia.cloud.monitor.activity.report` + +## TheiaCloud / theiaCloud + +Use Pascal Case / Camel Case in Java/Typescript class/method/property names, e.g. `DefaultTheiaCloudOperatorLauncher` or `window.theiaCloudConfig`. + +Other uses are places where you usually may use any cases, but want to avoid spaces (for technical reasons), e.g. the KeyCloak Realm `TheiaCloud`. + +## theia-cloud + +## THEIA_CLOUD + +## Theia Cloud + +## theia-cloud.io + +To follow conventions for labels in Kubernetes, we use our regular domain as a prefix for custom labels, e.g. `theia-cloud.io/workspace.name` diff --git a/documentation/operator.graphml b/documentation/operator.graphml index 51eb645d..c3c656e5 100644 --- a/documentation/operator.graphml +++ b/documentation/operator.graphml @@ -21,7 +21,7 @@ - TheiaCloud + Theia Cloud @@ -67,7 +67,7 @@ AppDefinitionAddedHandler - <<interface>> + <<interface>> SessionAddedHandler @@ -98,7 +98,7 @@ SessionAddedHandler - LazyStartSessionAddedHandler + LazyStartSessionAddedHandler @@ -113,7 +113,7 @@ SessionAddedHandler - EagerStartSessionAddedHandler + EagerStartSessionAddedHandler @@ -143,7 +143,7 @@ SessionAddedHandler - We may have different kinds of implementations of the handlers. + We may have different kinds of implementations of the handlers. E.g. we might have handlers that start up unassigned pods already and assign the running pods to a user on session added (EagerStart) Or we could do it Che-like and spin up the pod when a new session is added @@ -174,7 +174,7 @@ IngressCreationService - Listens for app definition/sessions changes + Listens for app definition/sessions changes and delegates to handlers diff --git a/documentation/theiacloud.png b/documentation/theia-cloud.png similarity index 100% rename from documentation/theiacloud.png rename to documentation/theia-cloud.png diff --git a/java/operator/README.md b/java/operator/README.md index 720999b8..f9849178 100644 --- a/java/operator/README.md +++ b/java/operator/README.md @@ -36,7 +36,7 @@ To debug the Default Theia Cloud Operator, follow these steps: minikube ip ``` -_Note_: Ensure your local `kubectl` is set to the correct namespace (e.g., `theiacloud`), as the debuggable operator will interact with your local Kubernetes cluster. +_Note_: Ensure your local `kubectl` is set to the correct namespace (e.g., `theia-cloud`), as the debuggable operator will interact with your local Kubernetes cluster. ### Theia Cloud Operator Library diff --git a/java/operator/org.eclipse.theia.cloud.operator/src/main/java/org/eclipse/theia/cloud/operator/handler/appdef/EagerStartAppDefinitionAddedHandler.java b/java/operator/org.eclipse.theia.cloud.operator/src/main/java/org/eclipse/theia/cloud/operator/handler/appdef/EagerStartAppDefinitionAddedHandler.java index c0e7efef..fed9a707 100644 --- a/java/operator/org.eclipse.theia.cloud.operator/src/main/java/org/eclipse/theia/cloud/operator/handler/appdef/EagerStartAppDefinitionAddedHandler.java +++ b/java/operator/org.eclipse.theia.cloud.operator/src/main/java/org/eclipse/theia/cloud/operator/handler/appdef/EagerStartAppDefinitionAddedHandler.java @@ -57,7 +57,7 @@ public class EagerStartAppDefinitionAddedHandler implements AppDefinitionHandler private static final Logger LOGGER = LogManager.getLogger(EagerStartAppDefinitionAddedHandler.class); - public static final String LABEL_KEY = "theiacloud"; + public static final String LABEL_KEY = "theia-cloud.io/template-purpose"; public static final String LABEL_VALUE_PROXY = "proxy"; public static final String LABEL_VALUE_EMAILS = "emails"; diff --git a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateConfigmap.yaml b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateConfigmap.yaml index 8070abba..4936c928 100644 --- a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateConfigmap.yaml +++ b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateConfigmap.yaml @@ -3,7 +3,7 @@ kind: ConfigMap metadata: name: placeholder-configname labels: - theiacloud: proxy + theia-cloud.io/template-purpose: proxy namespace: placeholder-namespace ownerReferences: - apiVersion: theia.cloud/v1beta9 diff --git a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateConfigmapEmails.yaml b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateConfigmapEmails.yaml index 595dfd76..2d2e27de 100644 --- a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateConfigmapEmails.yaml +++ b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateConfigmapEmails.yaml @@ -3,7 +3,7 @@ kind: ConfigMap metadata: name: placeholder-emailsconfigname labels: - theiacloud: emails + theia-cloud.io/template-purpose: emails namespace: placeholder-namespace ownerReferences: - apiVersion: theia.cloud/v1beta9 diff --git a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateDeployment.yaml b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateDeployment.yaml index 10f139af..6e403ad9 100644 --- a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateDeployment.yaml +++ b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateDeployment.yaml @@ -55,29 +55,29 @@ spec: cpu: placeholder-cpu-requests memory: placeholder-memory-requests env: - - name: THEIACLOUD_APP_ID + - name: THEIA_CLOUD_APP_ID value: placeholder-env-app-id - - name: THEIACLOUD_SERVICE_URL + - name: THEIA_CLOUD_SERVICE_URL value: placeholder-env-service-url - - name: THEIACLOUD_SESSION_UID + - name: THEIA_CLOUD_SESSION_UID value: placeholder-env-session-uid - - name: THEIACLOUD_SESSION_NAME + - name: THEIA_CLOUD_SESSION_NAME value: placeholder-env-session-name - - name: THEIACLOUD_SESSION_USER + - name: THEIA_CLOUD_SESSION_USER value: placeholder-env-session-user - - name: THEIACLOUD_SESSION_URL + - name: THEIA_CLOUD_SESSION_URL value: placeholder-env-session-url - - name: THEIACLOUD_SESSION_SECRET + - name: THEIA_CLOUD_SESSION_SECRET value: placeholder-env-session-secret - - name: THEIACLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER + - name: THEIA_CLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER value: placeholder-enable-activity-tracker - - name: THEIACLOUD_MONITOR_PORT + - name: THEIA_CLOUD_MONITOR_PORT value: placeholder-monitor-env-port - - name: THEIACLOUD_KEYCLOAK_URL + - name: THEIA_CLOUD_KEYCLOAK_URL value: placeholder-keycloak-env-url - - name: THEIACLOUD_KEYCLOAK_REALM + - name: THEIA_CLOUD_KEYCLOAK_REALM value: placeholder-keycloak-env-realm - - name: THEIACLOUD_KEYCLOAK_CLIENT_ID + - name: THEIA_CLOUD_KEYCLOAK_CLIENT_ID value: placeholder-keycloak-env-clientid securityContext: runAsUser: placeholder-uid diff --git a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateDeploymentWithoutOAuthProxy.yaml b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateDeploymentWithoutOAuthProxy.yaml index 0d17697a..6af75529 100644 --- a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateDeploymentWithoutOAuthProxy.yaml +++ b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templateDeploymentWithoutOAuthProxy.yaml @@ -42,29 +42,29 @@ spec: cpu: placeholder-cpu-requests memory: placeholder-memory-requests env: - - name: THEIACLOUD_APP_ID + - name: THEIA_CLOUD_APP_ID value: placeholder-env-app-id - - name: THEIACLOUD_SERVICE_URL + - name: THEIA_CLOUD_SERVICE_URL value: placeholder-env-service-url - - name: THEIACLOUD_SESSION_UID + - name: THEIA_CLOUD_SESSION_UID value: placeholder-env-session-uid - - name: THEIACLOUD_SESSION_NAME + - name: THEIA_CLOUD_SESSION_NAME value: placeholder-env-session-name - - name: THEIACLOUD_SESSION_USER + - name: THEIA_CLOUD_SESSION_USER value: placeholder-env-session-user - - name: THEIACLOUD_SESSION_URL + - name: THEIA_CLOUD_SESSION_URL value: placeholder-env-session-url - - name: THEIACLOUD_SESSION_SECRET + - name: THEIA_CLOUD_SESSION_SECRET value: placeholder-env-session-secret - - name: THEIACLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER + - name: THEIA_CLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER value: placeholder-enable-activity-tracker - - name: THEIACLOUD_MONITOR_PORT + - name: THEIA_CLOUD_MONITOR_PORT value: placeholder-monitor-env-port - - name: THEIACLOUD_KEYCLOAK_URL + - name: THEIA_CLOUD_KEYCLOAK_URL value: placeholder-keycloak-env-url - - name: THEIACLOUD_KEYCLOAK_REALM + - name: THEIA_CLOUD_KEYCLOAK_REALM value: placeholder-keycloak-env-realm - - name: THEIACLOUD_KEYCLOAK_CLIENT_ID + - name: THEIA_CLOUD_KEYCLOAK_CLIENT_ID value: placeholder-keycloak-env-clientid securityContext: runAsUser: placeholder-uid diff --git a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templatePersistentVolumeClaim.yaml b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templatePersistentVolumeClaim.yaml index 94813cb0..1ee81739 100644 --- a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templatePersistentVolumeClaim.yaml +++ b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templatePersistentVolumeClaim.yaml @@ -4,7 +4,7 @@ metadata: name: placeholder-pv namespace: placeholder-namespace labels: - theia.cloud.workspace.name: placeholder-label-workspace-name + theia-cloud.io/workspace.name: placeholder-label-workspace-name spec: accessModes: - ReadWriteOnce diff --git a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templatePersistentVolumeClaimMinikube.yaml b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templatePersistentVolumeClaimMinikube.yaml index 16afbf95..00127761 100644 --- a/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templatePersistentVolumeClaimMinikube.yaml +++ b/java/operator/org.eclipse.theia.cloud.operator/src/main/resources/templatePersistentVolumeClaimMinikube.yaml @@ -4,7 +4,7 @@ metadata: name: placeholder-pv namespace: placeholder-namespace labels: - theia.cloud.workspace.name: placeholder-label-workspace-name + theia-cloud.io/workspace.name: placeholder-label-workspace-name spec: accessModes: - ReadWriteOnce diff --git a/java/service/org.eclipse.theia.cloud.service/README.md b/java/service/org.eclipse.theia.cloud.service/README.md index 3eaf710b..985ac1a6 100644 --- a/java/service/org.eclipse.theia.cloud.service/README.md +++ b/java/service/org.eclipse.theia.cloud.service/README.md @@ -74,8 +74,6 @@ Easily start your RESTful Web Services Unit tests use the Quarkus test infrastructure. -All tests can be run in Eclipse via launch config [TheiaCloud Service Tests](./TheiaCloud Service Tests.launch). - When running tests from an IDE, the following VM argument might need to be set to enable logging during tests (this is pre-configured in the launch config): ```bash diff --git a/java/service/org.eclipse.theia.cloud.service/src/main/java/org/eclipse/theia/cloud/service/K8sUtil.java b/java/service/org.eclipse.theia.cloud.service/src/main/java/org/eclipse/theia/cloud/service/K8sUtil.java index 99736966..8f99f973 100644 --- a/java/service/org.eclipse.theia.cloud.service/src/main/java/org/eclipse/theia/cloud/service/K8sUtil.java +++ b/java/service/org.eclipse.theia.cloud.service/src/main/java/org/eclipse/theia/cloud/service/K8sUtil.java @@ -187,7 +187,7 @@ private boolean isPodFromSession(Pod pod, Session session) { } Container container = optionalContainer.get(); Optional optionalEnv = container.getEnv().stream() - .filter(env -> env.getName().equals("THEIACLOUD_SESSION_NAME")).findFirst(); + .filter(env -> env.getName().equals("THEIA_CLOUD_SESSION_NAME")).findFirst(); if (optionalEnv.isEmpty()) { return false; } diff --git a/node/monitor-theia/src/common/env-variables.ts b/node/monitor-theia/src/common/env-variables.ts index e6692564..40abb5cd 100644 --- a/node/monitor-theia/src/common/env-variables.ts +++ b/node/monitor-theia/src/common/env-variables.ts @@ -1,6 +1,6 @@ /** * List of environment variables that the extension uses */ -export const MONITOR_ENABLE_ACTIVITY_TRACKER = 'THEIACLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER'; +export const MONITOR_ENABLE_ACTIVITY_TRACKER = 'THEIA_CLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER'; -export const THEIACLOUD_SESSION_SECRET = 'THEIACLOUD_SESSION_SECRET'; +export const THEIA_CLOUD_SESSION_SECRET = 'THEIA_CLOUD_SESSION_SECRET'; diff --git a/node/monitor-theia/src/common/monitor-protocol.ts b/node/monitor-theia/src/common/monitor-protocol.ts index ca57ffb5..1fd47fe2 100644 --- a/node/monitor-theia/src/common/monitor-protocol.ts +++ b/node/monitor-theia/src/common/monitor-protocol.ts @@ -1,8 +1,8 @@ import { MonitorBackendModule } from './monitor-backend-module'; -export const MONITOR_BACKEND_SERVICE_PATH = '/services/theiacloud-monitor'; -export const MESSAGING_SERVICE_PATH = '/services/theiacloud-monitor/messaging'; -export const ACTIVITY_TRACKER_SERVICE_PATH = '/services/theiacloud-monitor/activity-tracker'; +export const MONITOR_BACKEND_SERVICE_PATH = '/services/theia-cloud-monitor'; +export const MESSAGING_SERVICE_PATH = '/services/theia-cloud-monitor/messaging'; +export const ACTIVITY_TRACKER_SERVICE_PATH = '/services/theia-cloud-monitor/activity-tracker'; export const COMMAND_ACTIVITY_REPORT_TITLE = 'theia.cloud.monitor.activity.report'; diff --git a/node/monitor-theia/src/common/util.ts b/node/monitor-theia/src/common/util.ts index c06074f7..a73af7e6 100644 --- a/node/monitor-theia/src/common/util.ts +++ b/node/monitor-theia/src/common/util.ts @@ -1,4 +1,4 @@ -import { THEIACLOUD_SESSION_SECRET } from './env-variables'; +import { THEIA_CLOUD_SESSION_SECRET } from './env-variables'; export function isAuthorized(req: any): boolean { const bearerHeader = req.headers['authorization']; @@ -6,7 +6,7 @@ export function isAuthorized(req: any): boolean { const splitBearer = bearerHeader.split(' '); if (splitBearer.length === 2) { const bearerToken = splitBearer[1]; - if (bearerToken === process.env[THEIACLOUD_SESSION_SECRET]) { + if (bearerToken === process.env[THEIA_CLOUD_SESSION_SECRET]) { return true; } } diff --git a/node/monitor-theia/src/node/monitor-service.ts b/node/monitor-theia/src/node/monitor-service.ts index e4d3f5be..cfa1e273 100644 --- a/node/monitor-theia/src/node/monitor-service.ts +++ b/node/monitor-theia/src/node/monitor-service.ts @@ -12,9 +12,9 @@ export class DefaultTheiaCloudBackendMonitorService implements TheiaCloudBackend * Returns true if ran in theia cloud context */ isRunningOnTheiaCloud(): boolean { - const appId = process.env.THEIACLOUD_APP_ID; - const serviceUrl = process.env.THEIACLOUD_SERVICE_URL; - const sessionName = process.env.THEIACLOUD_SESSION_NAME; + const appId = process.env.THEIA_CLOUD_APP_ID; + const serviceUrl = process.env.THEIA_CLOUD_SERVICE_URL; + const sessionName = process.env.THEIA_CLOUD_SESSION_NAME; return appId && serviceUrl && sessionName ? true : false; } diff --git a/node/monitor/.vscode/launch.json b/node/monitor/.vscode/launch.json index cd276b80..4a3ed57a 100644 --- a/node/monitor/.vscode/launch.json +++ b/node/monitor/.vscode/launch.json @@ -13,8 +13,8 @@ "outFiles": ["${workspaceFolder}/dist/**/*.js"], "preLaunchTask": "${defaultBuildTask}", "env": { - "THEIACLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER": "true", - "THEIACLOUD_SESSION_SECRET": "TestSecret" + "THEIA_CLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER": "true", + "THEIA_CLOUD_SESSION_SECRET": "TestSecret" } }, { diff --git a/node/monitor/README.md b/node/monitor/README.md index 9c946c21..3e5394c0 100644 --- a/node/monitor/README.md +++ b/node/monitor/README.md @@ -10,16 +10,16 @@ For this, the extension reads environment variables to check the activation of e For an example on setting these environment variables, take a look at the `Run extension` launch config in the `.vscode/launch.json` file. ```json -"THEIACLOUD_MONITOR_PORT": "8081", -"THEIACLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER": "true" +"THEIA_CLOUD_MONITOR_PORT": "8081", +"THEIA_CLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER": "true" ``` ## List of modules -| Name | description | ENV to enable | -| --------------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | -| MessagingModule | Allows the backend to send messages to be displayed to the user | (always enabled) | -| ActivityTrackerModule | Allows the backend to ask about the users last activity and show a warning if the pod is about to be timed out | THEIACLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER | +| Name | description | ENV to enable | +| --------------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | +| MessagingModule | Allows the backend to send messages to be displayed to the user | (always enabled) | +| ActivityTrackerModule | Allows the backend to ask about the users last activity and show a warning if the pod is about to be timed out | THEIA_CLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER | ## Debugging the extension diff --git a/node/monitor/package-lock.json b/node/monitor/package-lock.json index 6bf3948e..3329c276 100644 --- a/node/monitor/package-lock.json +++ b/node/monitor/package-lock.json @@ -1,11 +1,11 @@ { - "name": "theiacloud-monitor", + "name": "theia-cloud-monitor", "version": "0.12.0-next", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "theiacloud-monitor", + "name": "theia-cloud-monitor", "version": "0.12.0-next", "license": "EPL-2.0", "dependencies": { diff --git a/node/monitor/package.json b/node/monitor/package.json index 528f1a55..b21bec7d 100644 --- a/node/monitor/package.json +++ b/node/monitor/package.json @@ -1,5 +1,5 @@ { - "name": "theiacloud-monitor", + "name": "theia-cloud-monitor", "displayName": "Theia Cloud Monitor extension", "description": "Monitor for Theia Cloud hosted tools", "version": "0.12.0-next", diff --git a/node/monitor/src/env-variables.ts b/node/monitor/src/env-variables.ts index a61603d1..47bc8c07 100644 --- a/node/monitor/src/env-variables.ts +++ b/node/monitor/src/env-variables.ts @@ -1,9 +1,9 @@ /** * List of environment variables that the extension uses */ -export const MONITOR_PORT = 'THEIACLOUD_MONITOR_PORT'; -export const MONITOR_ENABLE_ACTIVITY_TRACKER = 'THEIACLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER'; -export const THEIACLOUD_SESSION_SECRET = 'THEIACLOUD_SESSION_SECRET'; +export const MONITOR_PORT = 'THEIA_CLOUD_MONITOR_PORT'; +export const MONITOR_ENABLE_ACTIVITY_TRACKER = 'THEIA_CLOUD_MONITOR_ENABLE_ACTIVITY_TRACKER'; +export const THEIA_CLOUD_SESSION_SECRET = 'THEIA_CLOUD_SESSION_SECRET'; /** * Utility function to check the value of an environment variable diff --git a/node/monitor/src/util/util.ts b/node/monitor/src/util/util.ts index 7a4b67fa..9969d8df 100644 --- a/node/monitor/src/util/util.ts +++ b/node/monitor/src/util/util.ts @@ -1,4 +1,4 @@ -import { getFromEnv, THEIACLOUD_SESSION_SECRET } from '../env-variables'; +import { getFromEnv, THEIA_CLOUD_SESSION_SECRET } from '../env-variables'; export function isAuthorized(req: any): boolean { const bearerHeader = req.headers['authorization']; @@ -6,7 +6,7 @@ export function isAuthorized(req: any): boolean { const splitBearer = bearerHeader.split(' '); if (splitBearer.length === 2) { const bearerToken = splitBearer[1]; - const sessionSecret = getFromEnv(THEIACLOUD_SESSION_SECRET); + const sessionSecret = getFromEnv(THEIA_CLOUD_SESSION_SECRET); if (bearerToken === sessionSecret) { return true; } diff --git a/node/testing-page/README.md b/node/testing-page/README.md index c9e32477..b1faf22c 100644 --- a/node/testing-page/README.md +++ b/node/testing-page/README.md @@ -1,6 +1,6 @@ -# TheiaCloud Testing App +# Theia Cloud Testing App -This folder contains a simple test app that allows to login via Keycloak and trigger various TheiaCloud endpoints (e.g. session start or stop). +This folder contains a simple test app that allows to login via Keycloak and trigger various Theia Cloud endpoints (e.g. session start or stop). ## Usage diff --git a/terraform/configurations/minikube_getting_started/minikube_getting_started.tf b/terraform/configurations/minikube_getting_started/minikube_getting_started.tf index 85be224d..003213c5 100644 --- a/terraform/configurations/minikube_getting_started/minikube_getting_started.tf +++ b/terraform/configurations/minikube_getting_started/minikube_getting_started.tf @@ -58,7 +58,7 @@ resource "kubernetes_persistent_volume" "minikube" { access_modes = ["ReadWriteOnce"] persistent_volume_source { host_path { - path = "/data/theiacloud" + path = "/data/theia-cloud" } } } diff --git a/terraform/modules/helm/main.tf b/terraform/modules/helm/main.tf index 7f461d86..3e512836 100644 --- a/terraform/modules/helm/main.tf +++ b/terraform/modules/helm/main.tf @@ -131,7 +131,7 @@ resource "helm_release" "theia-cloud-base" { repository = "https://eclipse-theia.github.io/theia-cloud-helm" chart = "theia-cloud-base" version = "0.11.1" - namespace = "theiacloud" + namespace = "theia-cloud" create_namespace = true set { @@ -147,7 +147,7 @@ resource "helm_release" "theia-cloud-crds" { repository = "https://eclipse-theia.github.io/theia-cloud-helm" chart = "theia-cloud-crds" version = "0.11.1" - namespace = "theiacloud" + namespace = "theia-cloud" create_namespace = true } @@ -231,7 +231,7 @@ resource "helm_release" "theia-cloud" { repository = "https://eclipse-theia.github.io/theia-cloud-helm" chart = "theia-cloud" version = "0.11.1" - namespace = "theiacloud" + namespace = "theia-cloud" create_namespace = true values = [ diff --git a/terraform/test-configurations/0_minikube-setup/minikube_test_cluster.tf b/terraform/test-configurations/0_minikube-setup/minikube_test_cluster.tf index 841debe7..8d5dd329 100644 --- a/terraform/test-configurations/0_minikube-setup/minikube_test_cluster.tf +++ b/terraform/test-configurations/0_minikube-setup/minikube_test_cluster.tf @@ -51,7 +51,7 @@ resource "kubernetes_persistent_volume" "minikube" { access_modes = ["ReadWriteOnce"] persistent_volume_source { host_path { - path = "/data/theiacloud" + path = "/data/theia-cloud" } } } diff --git a/terraform/test-configurations/1_theia-cloud-base/theia_cloud_base.tf b/terraform/test-configurations/1_theia-cloud-base/theia_cloud_base.tf index a6092b28..ab2de0ec 100644 --- a/terraform/test-configurations/1_theia-cloud-base/theia_cloud_base.tf +++ b/terraform/test-configurations/1_theia-cloud-base/theia_cloud_base.tf @@ -23,14 +23,14 @@ provider "helm" { resource "helm_release" "theia-cloud-crds" { name = "theia-cloud-crds" chart = "../../../../theia-cloud-helm/charts/theia-cloud-crds" - namespace = "theiacloud" + namespace = "theia-cloud" create_namespace = true } resource "helm_release" "theia-cloud-base" { name = "theia-cloud-base" chart = "../../../../theia-cloud-helm/charts/theia-cloud-base" - namespace = "theiacloud" + namespace = "theia-cloud" create_namespace = true set { diff --git a/terraform/test-configurations/2-01_try-now/theia_cloud.tf b/terraform/test-configurations/2-01_try-now/theia_cloud.tf index c0f40dd4..08d92883 100644 --- a/terraform/test-configurations/2-01_try-now/theia_cloud.tf +++ b/terraform/test-configurations/2-01_try-now/theia_cloud.tf @@ -26,7 +26,7 @@ provider "kubectl" { resource "helm_release" "theia-cloud" { name = "theia-cloud" chart = "../../../../theia-cloud-helm/charts/theia-cloud" - namespace = "theiacloud" + namespace = "theia-cloud" create_namespace = true values = [ @@ -87,7 +87,7 @@ resource "kubectl_manifest" "cdt-cloud-demo" { kind: AppDefinition metadata: name: cdt-cloud-demo - namespace: theiacloud + namespace: theia-cloud spec: downlinkLimit: 30000 image: theiacloud/cdt-cloud:v1.34.4 @@ -116,7 +116,7 @@ resource "kubectl_manifest" "coffee-editor" { kind: AppDefinition metadata: name: coffee-editor - namespace: theiacloud + namespace: theia-cloud spec: downlinkLimit: 30000 image: eu.gcr.io/kubernetes-238012/coffee-editor:v0.7.17 diff --git a/terraform/test-configurations/2-02_monitor/theia_cloud.tf b/terraform/test-configurations/2-02_monitor/theia_cloud.tf index 0070c19a..00c2ded5 100644 --- a/terraform/test-configurations/2-02_monitor/theia_cloud.tf +++ b/terraform/test-configurations/2-02_monitor/theia_cloud.tf @@ -28,7 +28,7 @@ provider "helm" { resource "helm_release" "theia-cloud" { name = "theia-cloud" chart = "../../../../theia-cloud-helm/charts/theia-cloud" - namespace = "theiacloud" + namespace = "theia-cloud" create_namespace = true values = [ diff --git a/terraform/test-configurations/2-03_try-now_paths/theia_cloud.tf b/terraform/test-configurations/2-03_try-now_paths/theia_cloud.tf index dcddac19..2fa637a9 100644 --- a/terraform/test-configurations/2-03_try-now_paths/theia_cloud.tf +++ b/terraform/test-configurations/2-03_try-now_paths/theia_cloud.tf @@ -26,7 +26,7 @@ provider "kubectl" { resource "helm_release" "theia-cloud" { name = "theia-cloud" chart = "../../../../theia-cloud-helm/charts/theia-cloud" - namespace = "theiacloud" + namespace = "theia-cloud" create_namespace = true values = [ @@ -100,7 +100,7 @@ resource "kubectl_manifest" "cdt-cloud-demo" { kind: AppDefinition metadata: name: cdt-cloud-demo - namespace: theiacloud + namespace: theia-cloud spec: downlinkLimit: 30000 image: theiacloud/cdt-cloud:v1.34.4 @@ -129,7 +129,7 @@ resource "kubectl_manifest" "coffee-editor" { kind: AppDefinition metadata: name: coffee-editor - namespace: theiacloud + namespace: theia-cloud spec: downlinkLimit: 30000 image: eu.gcr.io/kubernetes-238012/coffee-editor:v0.7.17 diff --git a/terraform/test-configurations/test.md b/terraform/test-configurations/test.md index 2df3dbd4..035956d7 100644 --- a/terraform/test-configurations/test.md +++ b/terraform/test-configurations/test.md @@ -8,7 +8,7 @@ Moreover the directory contains terraform configurations to install common Theia Run `terraform init` and `terraform apply` in both directories below: -- `0_minikube-setup` installs a minikube cluster with all required dependencies, including a Keycloak with a TheiaCloud realm, but without TheiaCloud. +- `0_minikube-setup` installs a minikube cluster with all required dependencies, including a Keycloak with a TheiaCloud realm, but without Theia Cloud. - `1_theia-cloud-base` installs theia cloud base ```bash