Skip to content

[jb] bump up major platform version of backend plugin #16913

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
# for insight into build numbers and IntelliJ Platform versions.
pluginSinceBuild=223.8836
pluginUntilBuild=223.*
pluginSinceBuild=231.8109
pluginUntilBuild=231.*
# Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl
# See https://jb.gg/intellij-platform-builds-list for available build versions.
pluginVerifierIdeVersions=2022.3
pluginVerifierIdeVersions=2023.1
# Version from "com.jetbrains.intellij.idea" which can be found at https://www.jetbrains.com/intellij-repository/snapshots
platformVersion=223.8836-EAP-CANDIDATE-SNAPSHOT
platformVersion=231.8109-EAP-CANDIDATE-SNAPSHOT
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@
package io.gitpod.jetbrains.remote

import com.jetbrains.ide.model.uiautomation.BeControl
import com.jetbrains.ide.model.uiautomation.DefiniteProgress
import com.jetbrains.rd.platform.codeWithMe.unattendedHost.metrics.Metric
import com.jetbrains.rd.ui.bedsl.dsl.*
import com.jetbrains.rd.util.lifetime.Lifetime
import com.jetbrains.rd.util.reactive.Property
import com.jetbrains.rdserver.diagnostics.BackendDiagnosticsService
import com.jetbrains.rdserver.unattendedHost.customization.controlCenter.performance.MetricControlProvider
import com.jetbrains.rdserver.unattendedHost.customization.controlCenter.performance.createProgressBar
import com.jetbrains.rdserver.unattendedHost.customization.controlCenter.performance.createProgressRow

class GitpodMetricControlProvider : MetricControlProvider {
abstract class AbstractGitpodMetricControlProvider : MetricControlProvider {
override val id: String = "gitpodMetricsControl"
override fun getControl(lifetime: Lifetime): BeControl {
val backendDiagnosticsService = BackendDiagnosticsService.Companion.getInstance()
Expand Down Expand Up @@ -92,7 +93,7 @@ class GitpodMetricControlProvider : MetricControlProvider {
cpuTotal.valueProperty.change.advise(lifetime) {
updateLabel()
}
createProgressRow(ctx, lifetime, label, cpuPercentage.statusProperty, labelProperty, cpuPercentageProperty, progressBar)
createProgressControl(ctx, lifetime, label, cpuPercentage, labelProperty, cpuPercentageProperty, progressBar)
}

private fun createMemoryControl(ctx: VerticalGridBuilder, backendDiagnosticsService: BackendDiagnosticsService, lifetime: Lifetime) {
Expand All @@ -115,6 +116,8 @@ class GitpodMetricControlProvider : MetricControlProvider {
updateLabel()
}

createProgressRow(ctx, lifetime, label, memoryPercentage.statusProperty, labelProperty, memoryPercentageProperty, progressBar)
createProgressControl(ctx, lifetime, label, memoryPercentage, labelProperty, memoryPercentageProperty, progressBar)
}

protected abstract fun createProgressControl(ctx: VerticalGridBuilder, lifetime: Lifetime, label: String, cpuPercentage: Metric, labelProperty: Property<String>, cpuPercentageProperty: Property<String>, progressBar: DefiniteProgress)
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import com.intellij.util.application
import com.jediterm.terminal.ui.TerminalWidget
import com.jediterm.terminal.ui.TerminalWidgetListener
import com.jetbrains.rd.framework.util.launch
import com.jetbrains.rdserver.terminal.BackendTerminalManager
import io.gitpod.supervisor.api.Status
import io.gitpod.supervisor.api.StatusServiceGrpc
import io.gitpod.supervisor.api.TerminalOuterClass
Expand All @@ -25,16 +24,12 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.future.await
import kotlinx.coroutines.guava.await
import org.jetbrains.plugins.terminal.ShellTerminalWidget
import org.jetbrains.plugins.terminal.TerminalView
import java.util.*
import java.util.concurrent.CompletableFuture
import java.util.concurrent.ExecutionException

@Suppress("UnstableApiUsage")
class GitpodTerminalService(project: Project): Disposable {
abstract class AbstractGitpodTerminalService(project: Project) : Disposable {
private val lifetime = defineNestedLifetime()
private val terminalView = TerminalView.getInstance(project)
private val backendTerminalManager = BackendTerminalManager.getInstance(project)
private val terminalServiceFutureStub = TerminalServiceGrpc.newFutureStub(GitpodManager.supervisorChannel)
private val terminalServiceStub = TerminalServiceGrpc.newStub(GitpodManager.supervisorChannel)
private val statusServiceStub = StatusServiceGrpc.newStub(GitpodManager.supervisorChannel)
Expand All @@ -44,8 +39,7 @@ class GitpodTerminalService(project: Project): Disposable {
}

override fun dispose() = Unit

private fun start() {
protected fun start() {
if (application.isHeadlessEnvironment) return

lifetime.launch {
Expand All @@ -58,25 +52,7 @@ class GitpodTerminalService(project: Project): Disposable {
}
}

private fun createSharedTerminalAndExecuteCommand(title: String, command: String): ShellTerminalWidget? {
val registeredTerminals = terminalView.widgets.toMutableList()

backendTerminalManager.createNewSharedTerminal(UUID.randomUUID().toString(), title)

for (widget in terminalView.widgets) {
if (registeredTerminals.contains(widget)) continue

widget.terminalTitle.change { applicationTitle = title }

val shellTerminalWidget = widget as ShellTerminalWidget

shellTerminalWidget.executeCommand(command)

return shellTerminalWidget
}

return null
}
protected abstract fun createSharedTerminal(title: String): ShellTerminalWidget

private fun createTerminalsAttachedToTasks(
terminals: List<TerminalOuterClass.Terminal>,
Expand Down Expand Up @@ -181,15 +157,10 @@ class GitpodTerminalService(project: Project): Disposable {
}

private fun createAttachedSharedTerminal(supervisorTerminal: TerminalOuterClass.Terminal) {
val shellTerminalWidget = createSharedTerminalAndExecuteCommand(
supervisorTerminal.title,
"gp tasks attach ${supervisorTerminal.alias}"
) ?: return

val shellTerminalWidget = createSharedTerminal(supervisorTerminal.title)
shellTerminalWidget.executeCommand("gp tasks attach ${supervisorTerminal.alias}")
closeTerminalWidgetWhenClientGetsClosed(shellTerminalWidget)

exitTaskWhenTerminalWidgetGetsClosed(supervisorTerminal, shellTerminalWidget)

listenForTaskTerminationAndTitleChanges(supervisorTerminal, shellTerminalWidget)
}

Expand All @@ -207,10 +178,7 @@ class GitpodTerminalService(project: Project): Disposable {
.build()

val listenTerminalResponseObserver =
object : ClientResponseObserver<
TerminalOuterClass.ListenTerminalRequest,
TerminalOuterClass.ListenTerminalResponse
> {
object : ClientResponseObserver<TerminalOuterClass.ListenTerminalRequest, TerminalOuterClass.ListenTerminalResponse> {
override fun beforeStart(
request: ClientCallStreamObserver<TerminalOuterClass.ListenTerminalRequest>
) {
Expand Down Expand Up @@ -286,7 +254,7 @@ class GitpodTerminalService(project: Project): Disposable {
)
} catch (throwable: Throwable) {
thisLogger().error("gitpod: Got an error while shutting down " +
"'${supervisorTerminal.title}' terminal.", throwable)
"'${supervisorTerminal.title}' terminal.", throwable)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// Copyright (c) 2022 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.

package io.gitpod.jetbrains.remote.latest

import io.gitpod.jetbrains.remote.GitpodIgnoredPortsForNotificationService
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import org.jetbrains.ide.BuiltInServerManager

@Suppress("OPT_IN_USAGE")
class LatestGitpodIgnoredPortsForNotificationServiceImpl : GitpodIgnoredPortsForNotificationService {
private val ignoredPortsForNotification = mutableSetOf(5990)

init {
GlobalScope.launch {
BuiltInServerManager.getInstance().waitForStart().port.let { ignorePort(it) }
}
}

override fun ignorePort(portNumber: Int) {
ignoredPortsForNotification.add(portNumber)
}

override fun getIgnoredPorts(): Set<Int> {
return ignoredPortsForNotification.toSet()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Copyright (c) 2022 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.

package io.gitpod.jetbrains.remote.latest

import com.jetbrains.ide.model.uiautomation.DefiniteProgress
import com.jetbrains.rd.platform.codeWithMe.unattendedHost.metrics.Metric
import com.jetbrains.rd.ui.bedsl.dsl.*
import com.jetbrains.rd.util.lifetime.Lifetime
import com.jetbrains.rd.util.reactive.Property
import com.jetbrains.rdserver.unattendedHost.customization.controlCenter.performance.createProgressRow
import io.gitpod.jetbrains.remote.AbstractGitpodMetricControlProvider

class LatestGitpodMetricControlProvider: AbstractGitpodMetricControlProvider() {

override fun createProgressControl(ctx: VerticalGridBuilder, lifetime: Lifetime, label: String, cpuPercentage: Metric, labelProperty: Property<String>, cpuPercentageProperty: Property<String>, progressBar: DefiniteProgress) {
createProgressRow(ctx, id, lifetime, label, cpuPercentage.statusProperty, labelProperty, cpuPercentageProperty, progressBar)
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright (c) 2022 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.

package io.gitpod.jetbrains.remote.latest

import com.intellij.openapi.project.Project
import com.jetbrains.rdserver.terminal.BackendTerminalManager
import io.gitpod.jetbrains.remote.AbstractGitpodTerminalService
import org.jetbrains.plugins.terminal.ShellTerminalWidget
import org.jetbrains.plugins.terminal.TerminalToolWindowManager
import java.util.*

@Suppress("UnstableApiUsage")
class LatestGitpodTerminalService(project: Project): AbstractGitpodTerminalService(project) {

private val terminalToolWindowManager = TerminalToolWindowManager.getInstance(project)
private val backendTerminalManager = BackendTerminalManager.getInstance(project)

override fun createSharedTerminal(title: String): ShellTerminalWidget {
val shellTerminalWidget = terminalToolWindowManager.createLocalShellWidget(null, title, true, false)
backendTerminalManager.shareTerminal(shellTerminalWidget.asNewWidget(), UUID.randomUUID().toString())
return shellTerminalWidget
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Licensed under the GNU Affero General Public License (AGPL).
// See License.AGPL.txt in the project root for license information.

package io.gitpod.jetbrains.remote.internal
package io.gitpod.jetbrains.remote.stable

import com.intellij.idea.getServerFutureAsync
import io.gitpod.jetbrains.remote.GitpodIgnoredPortsForNotificationService
Expand All @@ -11,7 +11,7 @@ import kotlinx.coroutines.launch
import org.jetbrains.ide.BuiltInServerManager

@Suppress("OPT_IN_USAGE")
class GitpodIgnoredPortsForNotificationServiceImpl : GitpodIgnoredPortsForNotificationService {
class StableGitpodIgnoredPortsForNotificationServiceImpl : GitpodIgnoredPortsForNotificationService {
private val ignoredPortsForNotification = mutableSetOf(5990)

init {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (c) 2022 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.

package io.gitpod.jetbrains.remote.stable

import com.jetbrains.ide.model.uiautomation.DefiniteProgress
import com.jetbrains.rd.platform.codeWithMe.unattendedHost.metrics.Metric
import com.jetbrains.rd.ui.bedsl.dsl.*
import com.jetbrains.rd.util.lifetime.Lifetime
import com.jetbrains.rd.util.reactive.Property
import com.jetbrains.rdserver.unattendedHost.customization.controlCenter.performance.createProgressRow
import io.gitpod.jetbrains.remote.AbstractGitpodMetricControlProvider

class StableGitpodMetricControlProvider: AbstractGitpodMetricControlProvider() {

override fun createProgressControl(ctx: VerticalGridBuilder, lifetime: Lifetime, label: String, cpuPercentage: Metric, labelProperty: Property<String>, cpuPercentageProperty: Property<String>, progressBar: DefiniteProgress) {
createProgressRow(ctx, lifetime, label, cpuPercentage.statusProperty, labelProperty, cpuPercentageProperty, progressBar)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright (c) 2022 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.

package io.gitpod.jetbrains.remote.stable

import com.intellij.openapi.project.Project
import com.jetbrains.rdserver.terminal.BackendTerminalManager
import io.gitpod.jetbrains.remote.AbstractGitpodTerminalService
import org.jetbrains.plugins.terminal.ShellTerminalWidget
import org.jetbrains.plugins.terminal.TerminalView
import java.util.*

@Suppress("UnstableApiUsage")
class StableGitpodTerminalService(project: Project): AbstractGitpodTerminalService(project) {

private val terminalView = TerminalView.getInstance(project)
private val backendTerminalManager = BackendTerminalManager.getInstance(project)

override fun createSharedTerminal(title: String): ShellTerminalWidget {
val shellTerminalWidget = terminalView.createLocalShellWidget(null, title, true, false)
backendTerminalManager.shareTerminal(shellTerminalWidget, UUID.randomUUID().toString())
return shellTerminalWidget
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,14 @@
<!--suppress PluginXmlValidity -->
<idea-plugin>
<extensions defaultExtensionNs="com.intellij">
<gateway.customization.performance id="gitpodMetricsControl" order="before cpuControl"
implementation="io.gitpod.jetbrains.remote.latest.LatestGitpodMetricControlProvider"/>

<projectService serviceImplementation="io.gitpod.jetbrains.remote.latest.LatestGitpodTerminalService" client="controller"
preload="true"/>

<applicationService serviceInterface="io.gitpod.jetbrains.remote.GitpodIgnoredPortsForNotificationService"
serviceImplementation="io.gitpod.jetbrains.remote.latest.LatestGitpodIgnoredPortsForNotificationServiceImpl"
preload="true"/>
</extensions>
</idea-plugin>
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,14 @@
<!--suppress PluginXmlValidity -->
<idea-plugin>
<extensions defaultExtensionNs="com.intellij">
<gateway.customization.performance id="gitpodMetricsControl" order="before cpuControl"
implementation="io.gitpod.jetbrains.remote.stable.StableGitpodMetricControlProvider"/>

<projectService serviceImplementation="io.gitpod.jetbrains.remote.stable.StableGitpodTerminalService" client="controller"
preload="true"/>

<applicationService serviceInterface="io.gitpod.jetbrains.remote.GitpodIgnoredPortsForNotificationService"
serviceImplementation="io.gitpod.jetbrains.remote.stable.StableGitpodIgnoredPortsForNotificationServiceImpl"
preload="true"/>
</extensions>
</idea-plugin>
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@
<applicationService serviceImplementation="io.gitpod.jetbrains.remote.services.HeartbeatService"
preload="true"/>
<applicationService serviceImplementation="io.gitpod.jetbrains.remote.GitpodManager" preload="true"/>
<applicationService serviceInterface="io.gitpod.jetbrains.remote.GitpodIgnoredPortsForNotificationService"
serviceImplementation="io.gitpod.jetbrains.remote.internal.GitpodIgnoredPortsForNotificationServiceImpl"
preload="true"/>
<applicationService serviceInterface="io.gitpod.jetbrains.remote.GitpodPortForwardingService"
serviceImplementation="io.gitpod.jetbrains.remote.internal.GitpodPortForwardingServiceImpl"
client="controller" preload="true"/>
Expand All @@ -39,13 +36,9 @@

<projectService serviceImplementation="io.gitpod.jetbrains.remote.GitpodClientProjectSessionTracker"
client="controller" preload="true"/>
<projectService serviceImplementation="io.gitpod.jetbrains.remote.GitpodTerminalService" client="controller"
preload="true"/>

<gateway.customization.name
implementation="io.gitpod.jetbrains.remote.GitpodGatewayClientCustomizationProvider"/>
<gateway.customization.performance id="gitpodMetricsControl" order="before cpuControl"
implementation="io.gitpod.jetbrains.remote.GitpodMetricControlProvider"/>
<gateway.customization.metrics id="gitpodMetricsProvider"
implementation="io.gitpod.jetbrains.remote.GitpodMetricProvider"/>

Expand Down
16 changes: 7 additions & 9 deletions components/supervisor-api/java/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,13 @@ repositories {
group 'io.gitpod.api'

dependencies {
implementation 'com.google.protobuf:protobuf-java:3.19.1'
implementation 'com.google.protobuf:protobuf-java-util:3.19.1'
implementation 'com.google.api.grpc:proto-google-common-protos:2.2.2'
implementation 'io.grpc:grpc-core:1.49.0'
implementation 'io.grpc:grpc-protobuf:1.49.0'
implementation 'io.grpc:grpc-stub:1.49.0'
implementation 'javax.annotation:javax.annotation-api:1.3.2'

runtimeOnly 'io.grpc:grpc-netty-shaded:1.41.0'
compileOnly 'com.google.protobuf:protobuf-java:3.19.1'
compileOnly 'com.google.protobuf:protobuf-java-util:3.19.1'
compileOnly 'com.google.api.grpc:proto-google-common-protos:2.2.2'
compileOnly 'io.grpc:grpc-core:1.49.0'
compileOnly 'io.grpc:grpc-protobuf:1.49.0'
compileOnly 'io.grpc:grpc-stub:1.49.0'
compileOnly 'javax.annotation:javax.annotation-api:1.3.2'
}

application {
Expand Down