|
| 1 | +// Copyright (c) 2022 Gitpod GmbH. All rights reserved. |
| 2 | +// Licensed under the GNU Affero General Public License (AGPL). |
| 3 | +// See License-AGPL.txt in the project root for license information. |
| 4 | + |
| 5 | +package io.gitpod.jetbrains.remote.latest |
| 6 | + |
| 7 | +import com.jetbrains.ide.model.uiautomation.BeControl |
| 8 | +import com.jetbrains.ide.model.uiautomation.DefiniteProgress |
| 9 | +import com.jetbrains.rd.platform.codeWithMe.unattendedHost.metrics.providers.IdeMetricsProvider |
| 10 | +import com.jetbrains.rd.ui.bedsl.dsl.VerticalGridBuilder |
| 11 | +import com.jetbrains.rd.ui.bedsl.dsl.verticalGrid |
| 12 | +import com.jetbrains.rd.util.lifetime.Lifetime |
| 13 | +import com.jetbrains.rd.util.reactive.Property |
| 14 | +import com.jetbrains.rdserver.diagnostics.BackendDiagnosticsService |
| 15 | +import com.jetbrains.rdserver.unattendedHost.customization.controlCenter.performance.MetricControlProvider |
| 16 | +import com.jetbrains.rdserver.unattendedHost.customization.controlCenter.performance.createMetricProgressWithLabels |
| 17 | +import com.jetbrains.rdserver.unattendedHost.customization.controlCenter.performance.createProgressBar |
| 18 | +import com.jetbrains.rdserver.unattendedHost.customization.controlCenter.performance.createProgressRow |
| 19 | + |
| 20 | +class GitpodMetricControlProvider : MetricControlProvider { |
| 21 | + override val id: String = "gitpodControl" |
| 22 | + override fun getControl(lifetime: Lifetime): BeControl { |
| 23 | + return verticalGrid { |
| 24 | + val backendDiagnosticsService = BackendDiagnosticsService.Companion.getInstance() |
| 25 | + createCpuControl(this, backendDiagnosticsService, lifetime) |
| 26 | + createMemoryControl(this, backendDiagnosticsService, lifetime) |
| 27 | + } |
| 28 | + } |
| 29 | + |
| 30 | + private fun createCpuControl(ctx: VerticalGridBuilder, backendDiagnosticsService: BackendDiagnosticsService, lifetime: Lifetime) { |
| 31 | + val data = createMetricProgressWithLabels(backendDiagnosticsService, lifetime, "gitpod_workspace_cpu_total", "gitpod_workspace_cpu_used", "gitpod_workspace_cpu_percentage") |
| 32 | + |
| 33 | + val label = "Workspace CPU" |
| 34 | + // TODO: make status dynamic based on a threshold |
| 35 | + val status = Property(com.jetbrains.rd.platform.codeWithMe.unattendedHost.metrics.MetricsStatus.DANGER) |
| 36 | + |
| 37 | + createProgressRow(ctx, lifetime, label, status, data.first, data.second, data.third) |
| 38 | + } |
| 39 | + |
| 40 | + private fun createMemoryControl(ctx: VerticalGridBuilder, backendDiagnosticsService: BackendDiagnosticsService, lifetime: Lifetime) { |
| 41 | + val data = createMetricProgressWithLabels(backendDiagnosticsService, lifetime, "gitpod_workspace_memory_total", "gitpod_workspace_memory_used", "gitpod_workspace_memory_percentage") |
| 42 | + |
| 43 | + val label = "Workspace Memory" |
| 44 | + // TODO: make status dynamic based on a threshold |
| 45 | + val status = Property(com.jetbrains.rd.platform.codeWithMe.unattendedHost.metrics.MetricsStatus.DANGER) |
| 46 | + |
| 47 | + createProgressRow(ctx, lifetime, label, status, data.first, data.second, data.third) |
| 48 | + } |
| 49 | +} |
0 commit comments