Skip to content

Commit 229bb41

Browse files
author
Andrea Falzetti
committed
feat(jetbrains): show workspace resources
1 parent 6f8ed36 commit 229bb41

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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 = "io.gitpod.jetbrains.remote"
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+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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.rd.platform.codeWithMe.unattendedHost.metrics.Metric
8+
import com.jetbrains.rd.platform.codeWithMe.unattendedHost.metrics.MetricType
9+
import com.jetbrains.rd.platform.codeWithMe.unattendedHost.metrics.MetricsStatus
10+
import com.jetbrains.rd.platform.codeWithMe.unattendedHost.metrics.providers.MetricProvider
11+
12+
class GitpodMetricProvider: MetricProvider {
13+
override val id: String = "io.gitpod.jetbrains.remote"
14+
override fun getMetrics(): Map<String, Metric> {
15+
// TODO: make values dynamic listening from supervisor
16+
return mapOf(
17+
"gitpod_workspace_cpu_used" to Metric(MetricType.PERFORMANCE, MetricsStatus.NORMAL, 61.0),
18+
"gitpod_workspace_cpu_total" to Metric(MetricType.PERFORMANCE, MetricsStatus.NORMAL, 100.0),
19+
"gitpod_workspace_cpu_percentage" to Metric(MetricType.PERFORMANCE, MetricsStatus.NORMAL, 61.0),
20+
"gitpod_workspace_memory_used" to Metric(MetricType.PERFORMANCE, MetricsStatus.NORMAL, 6400.0),
21+
"gitpod_workspace_memory_total" to Metric(MetricType.PERFORMANCE, MetricsStatus.NORMAL, 16000.0),
22+
"gitpod_workspace_memory_percentage" to Metric(MetricType.PERFORMANCE, MetricsStatus.NORMAL, 40.0)
23+
)
24+
}
25+
}

components/ide/jetbrains/backend-plugin/src/main/resources-latest/META-INF/extensions.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,7 @@
77
<extensions defaultExtensionNs="com.intellij">
88
<projectService serviceImplementation="io.gitpod.jetbrains.remote.latest.GitpodTerminalService" client="guest" preload="true"/>
99
<projectService serviceImplementation="io.gitpod.jetbrains.remote.latest.GitpodPortForwardingService" preload="true"/>
10+
<gateway.customization.performance implementation="io.gitpod.jetbrains.remote.latest.GitpodMetricControlProvider"/>
11+
<gateway.customization.metrics implementation="io.gitpod.jetbrains.remote.latest.GitpodMetricProvider" />
1012
</extensions>
1113
</idea-plugin>

0 commit comments

Comments
 (0)