diff --git a/components/dashboard/src/admin/WorkspaceDetail.tsx b/components/dashboard/src/admin/WorkspaceDetail.tsx index a7120cc4341230..34b4cf0145cbfc 100644 --- a/components/dashboard/src/admin/WorkspaceDetail.tsx +++ b/components/dashboard/src/admin/WorkspaceDetail.tsx @@ -12,7 +12,6 @@ import { Link } from "react-router-dom"; import { getGitpodService } from "../service/service"; import { getProjectPath } from "../workspaces/WorkspaceEntry"; import { WorkspaceStatusIndicator } from "../workspaces/WorkspaceStatusIndicator"; -import { getAdminLinks } from "./gcp-info"; import Property from "./Property"; export default function WorkspaceDetail(props: { workspace: WorkspaceAndInstance }) { @@ -44,17 +43,6 @@ export default function WorkspaceDetail(props: { workspace: WorkspaceAndInstance } }; - const adminLinks = getAdminLinks(workspace); - const adminLink = (i: number) => ( - - - {adminLinks[i]?.title || ""} - - - ); return ( <>
@@ -154,8 +142,6 @@ export default function WorkspaceDetail(props: { workspace: WorkspaceAndInstance
{workspace.workspaceClass ?? "unknown"}
-
{[0, 1, 2].map(adminLink)}
-
{[3, 4, 5].map(adminLink)}
diff --git a/components/dashboard/src/admin/gcp-info.ts b/components/dashboard/src/admin/gcp-info.ts deleted file mode 100644 index 8f0e22175ce886..00000000000000 --- a/components/dashboard/src/admin/gcp-info.ts +++ /dev/null @@ -1,131 +0,0 @@ -/** - * Copyright (c) 2021 Gitpod GmbH. All rights reserved. - * Licensed under the GNU Affero General Public License (AGPL). - * See License.AGPL.txt in the project root for license information. - */ - -import { WorkspaceAndInstance } from "@gitpod/gitpod-protocol"; -import { log } from "@gitpod/gitpod-protocol/lib/util/logging"; - -export interface Link { - readonly name: string; - readonly title: string; - readonly url: string; -} - -export function getAdminLinks(workspace: WorkspaceAndInstance): Link[] { - let gcpInfo; - try { - gcpInfo = deriveGcpInfo(workspace.ideUrl, workspace.region); - } catch (e) { - log.error(e); - } - if (gcpInfo === undefined) { - return []; - } - const { baseDomain, gcp } = gcpInfo; - - return internalGetAdminLinks(gcp, baseDomain, workspace.status.podName, workspace.status.nodeName); -} - -function internalGetAdminLinks(gcpInfo: GcpInfo, baseDomain: string, podName?: string, nodeName?: string): Link[] { - const { clusterName, namespace, projectName, region } = gcpInfo; - return [ - { - name: "GKE Pod", - title: `${podName}`, - url: `https://console.cloud.google.com/kubernetes/pod/${region}/${clusterName}/${namespace}/${podName}/details?project=${projectName}`, - }, - { - name: `GKE Node`, - title: `${nodeName}`, - url: `https://console.cloud.google.com/kubernetes/node/${region}/${clusterName}/${nodeName}/summary?project=${projectName}`, - }, - { - name: `Workspace Pod Logs`, - title: `See Logs`, - url: `https://console.cloud.google.com/logs/query;query=resource.type%3D%22k8s_container%22%0Aresource.labels.project_id%3D%22${projectName}%22%0Aresource.labels.location%3D%22${region}%22%0Aresource.labels.cluster_name%3D%22${clusterName}%22%0Aresource.labels.namespace_name%3D%22${namespace}%22%0Aresource.labels.pod_name%3D%22${podName}%22?project=${projectName}`, - }, - { - name: `Grafana Workspace`, - title: `Pod Metrics`, - url: `https://monitoring.${baseDomain}/d/admin-workspace/admin-workspace?var-workspace=${podName}`, - }, - { - name: `Grafana Node`, - title: `Node Metrics`, - url: `https://monitoring.${baseDomain}/d/admin-node/admin-node?var-node=${nodeName}`, - }, - ]; -} - -function deriveGcpInfo(ideUrlStr: string, region: string): { gcp: GcpInfo; baseDomain: string } | undefined { - const ideUrl = new URL(ideUrlStr); - const hostnameParts = ideUrl.hostname.split("."); - const baseDomain = hostnameParts.slice(hostnameParts.length - 2).join("."); - const namespace = hostnameParts[hostnameParts.length - 4]; - - const gcp = getGcpInfo(baseDomain, region, namespace); - if (!gcp) { - return undefined; - } - return { - gcp, - baseDomain, - }; -} - -function getGcpInfo(baseDomain: string, regionShort: string, namespace?: string): GcpInfo | undefined { - if (baseDomain === "gitpod.io") { - if (regionShort === "eu03") { - return { - clusterName: "prod--gitpod-io--europe-west1--03", - namespace: "default", - region: "europe-west1", - projectName: "gitpod-191109", - }; - } - if (regionShort === "us03") { - return { - clusterName: "prod--gitpod-io--us-west1--03", - namespace: "default", - region: "us-west1", - projectName: "gitpod-191109", - }; - } - } - if (baseDomain === "gitpod-staging.com") { - if (regionShort === "eu02") { - return { - clusterName: "staging--gitpod-io--eu-west1--02", - namespace: "default", - region: "europe-west1", - projectName: "gitpod-staging", - }; - } - if (regionShort === "us02") { - return { - clusterName: "staging--gitpod-io--us-west1--02", - namespace: "default", - region: "us-west1", - projectName: "gitpod-staging", - }; - } - } - if (baseDomain === "gitpod-dev.com") { - return { - clusterName: "dev", - namespace: "staging-" + namespace, - region: "europe-west1-b", - projectName: "gitpod-core-dev", - }; - } - return undefined; -} - -interface GcpInfo { - readonly clusterName: string; - readonly region: string; - readonly projectName: string; - readonly namespace: string; -}