You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by di...@apache.org on 2025/04/04 21:52:51 UTC
(airavata) 04/10: add kernel restart functionality to agent service and agent
This is an automated email from the ASF dual-hosted git repository.
dimuthuupe pushed a commit to branch cybershuttle-staging
in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 38b64e7c38802c5b1ca9f99cdff6e27a4473e471
Author: yasith <ya...@gatech.edu>
AuthorDate: Thu Apr 3 08:14:55 2025 -0400
add kernel restart functionality to agent service and agent
---
.../service/controllers/AgentController.java | 21 +
.../service/handlers/AgentConnectionHandler.java | 53 ++
.../service/models/AgentKernelRestartAck.java | 4 +
.../service/models/AgentKernelRestartRequest.java | 23 +
.../service/models/AgentKernelRestartResponse.java | 32 ++
modules/agent-framework/airavata-agent/agent.go | 127 +++--
.../protos/agent-communication.pb.go | 626 ++++++++++++++-------
.../proto/agent-communication.proto | 20 +-
8 files changed, 646 insertions(+), 260 deletions(-)
diff --git a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/AgentController.java b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/AgentController.java
index 8cdc790b48..f223264c92 100644
--- a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/AgentController.java
+++ b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/AgentController.java
@@ -13,6 +13,9 @@ import org.apache.airavata.agent.connection.service.models.AgentInfoResponse;
import org.apache.airavata.agent.connection.service.models.AgentJupyterExecutionAck;
import org.apache.airavata.agent.connection.service.models.AgentJupyterExecutionRequest;
import org.apache.airavata.agent.connection.service.models.AgentJupyterExecutionResponse;
+import org.apache.airavata.agent.connection.service.models.AgentKernelRestartAck;
+import org.apache.airavata.agent.connection.service.models.AgentKernelRestartRequest;
+import org.apache.airavata.agent.connection.service.models.AgentKernelRestartResponse;
import org.apache.airavata.agent.connection.service.models.AgentPythonExecutionAck;
import org.apache.airavata.agent.connection.service.models.AgentPythonExecutionRequest;
import org.apache.airavata.agent.connection.service.models.AgentPythonExecutionResponse;
@@ -67,6 +70,24 @@ public class AgentController {
return ResponseEntity.accepted().body(agentConnectionHandler.getEnvSetupResponse(executionId));
}
+ @PostMapping("/setup/restart")
+ public ResponseEntity<AgentKernelRestartAck> runKernelRestartOnAgent(@Valid @RequestBody AgentKernelRestartRequest kernelRestartRequest) {
+ logger.info("Received kernel restart request to run on agent {}", kernelRestartRequest.getAgentId());
+ if (agentConnectionHandler.isAgentUp(kernelRestartRequest.getAgentId()).isAgentUp()) {
+ return ResponseEntity.accepted().body(agentConnectionHandler.runKernelRestartOnAgent(kernelRestartRequest));
+ } else {
+ logger.warn("No agent is available to run on agent {}", kernelRestartRequest.getAgentId());
+ AgentKernelRestartAck ack = new AgentKernelRestartAck();
+ ack.setError("Agent not found");
+ return ResponseEntity.accepted().body(ack);
+ }
+ }
+
+ @GetMapping("/setup/restart/{executionId}")
+ public ResponseEntity<AgentKernelRestartResponse> getKernelRestartResponse(@PathVariable("executionId") String executionId) {
+ return ResponseEntity.accepted().body(agentConnectionHandler.getKernelRestartResponse(executionId));
+ }
+
@PostMapping("/execute/shell")
public ResponseEntity<AgentCommandExecutionAck> runCommandOnAgent(@Valid @RequestBody AgentCommandExecutionRequest commandRequest) {
logger.info("Received command request to run on agent {}", commandRequest.getAgentId());
diff --git a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentConnectionHandler.java b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentConnectionHandler.java
index 9ce52d4fe7..b809cf4db4 100644
--- a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentConnectionHandler.java
+++ b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentConnectionHandler.java
@@ -1,5 +1,6 @@
package org.apache.airavata.agent.connection.service.handlers;
+import java.awt.image.Kernel;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
@@ -12,6 +13,8 @@ import org.apache.airavata.agent.CommandExecutionRequest;
import org.apache.airavata.agent.CommandExecutionResponse;
import org.apache.airavata.agent.EnvSetupResponse;
import org.apache.airavata.agent.JupyterExecutionResponse;
+import org.apache.airavata.agent.KernelRestartRequest;
+import org.apache.airavata.agent.KernelRestartResponse;
import org.apache.airavata.agent.PythonExecutionRequest;
import org.apache.airavata.agent.PythonExecutionResponse;
import org.apache.airavata.agent.ServerMessage;
@@ -26,6 +29,9 @@ import org.apache.airavata.agent.connection.service.models.AgentInfoResponse;
import org.apache.airavata.agent.connection.service.models.AgentJupyterExecutionAck;
import org.apache.airavata.agent.connection.service.models.AgentJupyterExecutionRequest;
import org.apache.airavata.agent.connection.service.models.AgentJupyterExecutionResponse;
+import org.apache.airavata.agent.connection.service.models.AgentKernelRestartAck;
+import org.apache.airavata.agent.connection.service.models.AgentKernelRestartRequest;
+import org.apache.airavata.agent.connection.service.models.AgentKernelRestartResponse;
import org.apache.airavata.agent.connection.service.models.AgentPythonExecutionAck;
import org.apache.airavata.agent.connection.service.models.AgentPythonExecutionRequest;
import org.apache.airavata.agent.connection.service.models.AgentPythonExecutionResponse;
@@ -52,6 +58,7 @@ public class AgentConnectionHandler extends AgentCommunicationServiceGrpc.AgentC
private final Map<String, EnvSetupResponse> ENV_SETUP_RESPONSE_CACHE = new ConcurrentHashMap<>();
private final Map<String, CommandExecutionResponse> COMMAND_EXECUTION_RESPONSE_CACHE = new ConcurrentHashMap<>();
private final Map<String, JupyterExecutionResponse> JUPYTER_EXECUTION_RESPONSE_CACHE = new ConcurrentHashMap<>();
+ private final Map<String, KernelRestartResponse> KERNEL_RESTART_RESPONSE_CACHE = new ConcurrentHashMap<>();
private final Map<String, PythonExecutionResponse> PYTHON_EXECUTION_RESPONSE_CACHE = new ConcurrentHashMap<>();
// response handling
@@ -103,6 +110,19 @@ public class AgentConnectionHandler extends AgentCommunicationServiceGrpc.AgentC
return executionResponse;
}
+ public AgentKernelRestartResponse getKernelRestartResponse(String executionId) {
+ AgentKernelRestartResponse kernelRestartResponse = new AgentKernelRestartResponse();
+ if (KERNEL_RESTART_RESPONSE_CACHE.containsKey(executionId)) {
+ kernelRestartResponse.setStatus(KERNEL_RESTART_RESPONSE_CACHE.get(executionId).getStatus());
+ kernelRestartResponse.setExecutionId(executionId);
+ kernelRestartResponse.setRestarted(true);
+ KERNEL_RESTART_RESPONSE_CACHE.remove(executionId);
+ } else {
+ kernelRestartResponse.setRestarted(false);
+ }
+ return kernelRestartResponse;
+ }
+
public AgentPythonExecutionResponse getPythonExecutionResponse(String executionId) {
AgentPythonExecutionResponse runResponse = new AgentPythonExecutionResponse();
if (PYTHON_EXECUTION_RESPONSE_CACHE.containsKey(executionId)) {
@@ -269,6 +289,31 @@ public class AgentConnectionHandler extends AgentCommunicationServiceGrpc.AgentC
return ack;
}
+ public AgentKernelRestartAck runKernelRestartOnAgent(AgentKernelRestartRequest kernelRestartRequest) {
+ String executionId = UUID.randomUUID().toString();
+ AgentKernelRestartAck ack = new AgentKernelRestartAck();
+ ack.setExecutionId(executionId);
+ Optional<StreamObserver<ServerMessage>> agentStreamObserver = getAgentStreamObserver(kernelRestartRequest.getAgentId());
+ if (agentStreamObserver.isPresent()) {
+ try {
+ logger.info("restarting kernel on env {}...", kernelRestartRequest.getEnvName());
+ agentStreamObserver.get().onNext(ServerMessage.newBuilder().setKernelRestartRequest(
+ KernelRestartRequest.newBuilder()
+ .setExecutionId(executionId)
+ .setEnvName(kernelRestartRequest.getEnvName())
+ .build()
+ ).build());
+ } catch (Exception e) {
+ logger.error("{} Failed to restart kernel on env {}!", executionId, kernelRestartRequest.getEnvName(), e);
+ ack.setError(e.getMessage());
+ }
+ } else {
+ logger.warn("No agent found to run the kernel restart on agent {}", kernelRestartRequest.getAgentId());
+ ack.setError("No agent found to run the kernel restart on agent " + kernelRestartRequest.getAgentId());
+ }
+ return ack;
+ }
+
// internal handlers
private void handleAgentPing(AgentPing agentPing, String streamId) {
logger.info("Received agent ping for agent id {}", agentPing.getAgentId());
@@ -290,6 +335,11 @@ public class AgentConnectionHandler extends AgentCommunicationServiceGrpc.AgentC
JUPYTER_EXECUTION_RESPONSE_CACHE.put(executionResponse.getExecutionId(), executionResponse);
}
+ private void handleKernelRestartResponse(KernelRestartResponse kernelRestartResponse) {
+ logger.info("Received kernel restart response for execution id {}", kernelRestartResponse.getExecutionId());
+ KERNEL_RESTART_RESPONSE_CACHE.put(kernelRestartResponse.getExecutionId(), kernelRestartResponse);
+ }
+
private void handlePythonExecutionResponse(PythonExecutionResponse executionResponse) {
logger.info("Received python execution response for execution id {}", executionResponse.getExecutionId());
PYTHON_EXECUTION_RESPONSE_CACHE.put(executionResponse.getExecutionId(), executionResponse);
@@ -327,6 +377,9 @@ public class AgentConnectionHandler extends AgentCommunicationServiceGrpc.AgentC
case JUPYTEREXECUTIONRESPONSE -> {
handleJupyterExecutionResponse(request.getJupyterExecutionResponse());
}
+ case KERNELRESTARTRESPONSE -> {
+ handleKernelRestartResponse(request.getKernelRestartResponse());
+ }
case PYTHONEXECUTIONRESPONSE -> {
handlePythonExecutionResponse(request.getPythonExecutionResponse());
}
diff --git a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentKernelRestartAck.java b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentKernelRestartAck.java
new file mode 100644
index 0000000000..0854e068b7
--- /dev/null
+++ b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentKernelRestartAck.java
@@ -0,0 +1,4 @@
+package org.apache.airavata.agent.connection.service.models;
+
+public class AgentKernelRestartAck extends AgentCommandExecutionAck {
+}
diff --git a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentKernelRestartRequest.java b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentKernelRestartRequest.java
new file mode 100644
index 0000000000..aff821df7e
--- /dev/null
+++ b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentKernelRestartRequest.java
@@ -0,0 +1,23 @@
+package org.apache.airavata.agent.connection.service.models;
+
+public class AgentKernelRestartRequest {
+
+ private String agentId;
+ private String envName;
+
+ public String getAgentId() {
+ return agentId;
+ }
+
+ public void setAgentId(String agentId) {
+ this.agentId = agentId;
+ }
+
+ public String getEnvName() {
+ return envName;
+ }
+
+ public void setEnvName(String envName) {
+ this.envName = envName;
+ }
+}
diff --git a/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentKernelRestartResponse.java b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentKernelRestartResponse.java
new file mode 100644
index 0000000000..4a2e632076
--- /dev/null
+++ b/modules/agent-framework/agent-service/src/main/java/org/apache/airavata/agent/connection/service/models/AgentKernelRestartResponse.java
@@ -0,0 +1,32 @@
+package org.apache.airavata.agent.connection.service.models;
+
+public class AgentKernelRestartResponse {
+
+ private String executionId;
+ private String status;
+ private boolean restarted;
+
+ public String getExecutionId() {
+ return executionId;
+ }
+
+ public void setExecutionId(String executionId) {
+ this.executionId = executionId;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public boolean getRestarted() {
+ return restarted;
+ }
+
+ public void setRestarted(boolean restarted) {
+ this.restarted = restarted;
+ }
+}
diff --git a/modules/agent-framework/airavata-agent/agent.go b/modules/agent-framework/airavata-agent/agent.go
index 3b8000aea9..1519d92454 100644
--- a/modules/agent-framework/airavata-agent/agent.go
+++ b/modules/agent-framework/airavata-agent/agent.go
@@ -15,6 +15,7 @@ import (
"os"
"os/exec"
"strings"
+ "time"
"golang.org/x/crypto/ssh"
"google.golang.org/grpc"
@@ -23,11 +24,13 @@ import (
type Stream = grpc.BidiStreamingClient[protos.AgentMessage, protos.ServerMessage]
+var pidMap = make(map[string]int)
+
func main() {
// get CLI args
- serverUrl := os.Args[0]
- agentId := os.Args[1]
+ serverUrl := os.Args[1]
+ agentId := os.Args[2]
conn, err := grpc.NewClient(serverUrl, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
@@ -115,6 +118,12 @@ func startInterceptor(stream Stream, grpcStreamChannel chan struct{}) {
code := x.JupyterExecutionRequest.Code
go executeJupyter(stream, executionId, envName, code)
+ case *protos.ServerMessage_KernelRestartRequest:
+ log.Printf("[agent.go] Recived a kernel restart request\n")
+ executionId := x.KernelRestartRequest.ExecutionId
+ envName = x.KernelRestartRequest.EnvName
+ go restartKernel(stream, executionId, envName)
+
case *protos.ServerMessage_TunnelCreationRequest:
log.Printf("[agent.go] Received a tunnel creation request\n")
executionId := x.TunnelCreationRequest.ExecutionId
@@ -133,32 +142,42 @@ func createEnv(stream Stream, executionId string, envName string, envLibs []stri
log.Printf("[agent.go] createEnv() Env name %s\n", envName)
log.Printf("[agent.go] createEnv() Env libs %s\n", envLibs)
log.Printf("[agent.go] createEnv() Env pip %s\n", envPip)
+ // cleanup previous kernel if exists
+ if pid, exists := pidMap[envName]; exists {
+ cmd := exec.Command("kill", fmt.Sprintf("%d", pid))
+ if err := cmd.Run(); err != nil {
+ log.Printf("[agent.go] createEnv() Failed to kill existing process with PID %d: %v\n", pid, err)
+ } else {
+ log.Printf("[agent.go] createEnv() Successfully killed existing process with PID %d\n", pid)
+ }
+ delete(pidMap, envName)
+ }
// create environment
if envName != "base" {
createEnvCmd := exec.Command("micromamba", "create", "-n", envName, "--yes", "--quiet")
- if err := createEnvCmd.Wait(); err != nil {
+ if err := createEnvCmd.Run(); err != nil {
log.Printf("[agent.go] createEnv() Error creating environment: %v\n", err)
return
}
log.Printf("[agent.go] createEnv() Environment created: %s\n", envName)
}
-
- if len(envLibs) > 0 {
- installDepsCmd := exec.Command("micromamba", "install", "-n", envName, "--yes", "--quiet", strings.Join(envLibs, " "))
- if err := installDepsCmd.Wait(); err != nil {
- log.Printf("[agent.go] createEnv() Error waiting for command: %v\n", err)
- return
- }
+ envLibs = append(envLibs, "python<3.12", "pip", "ipykernel", "git", "flask", "jupyter_client")
+ installDepsCmd := exec.Command("micromamba", "install", "-n", envName, "--yes")
+ installDepsCmd.Args = append(installDepsCmd.Args, envLibs...)
+ if err := installDepsCmd.Run(); err != nil {
+ log.Printf("[agent.go] createEnv() Error waiting for command: %v\n", err)
+ return
}
if len(envPip) > 0 {
- installPipCmd := exec.Command("micromamba", "run", "-n", envName, "pip", "install", strings.Join(envLibs, " "))
- if err := installPipCmd.Wait(); err != nil {
+ installPipCmd := exec.Command("micromamba", "run", "-n", envName, "pip", "install")
+ installPipCmd.Args = append(installPipCmd.Args, envPip...)
+ if err := installPipCmd.Run(); err != nil {
log.Printf("[agent.go] createEnv() Error waiting for command: %v\n", err)
return
}
}
- // start python server
- go startPythonServer(envName)
+ // start kernel in new environment
+ pidMap[envName] = startJupyterKernel(envName)
msg := &protos.AgentMessage{
Message: &protos.AgentMessage_EnvSetupResponse{
EnvSetupResponse: &protos.EnvSetupResponse{
@@ -174,42 +193,44 @@ func createEnv(stream Stream, executionId string, envName string, envLibs []stri
}
}
-func startPythonServer(envName string) {
- log.Printf("[agent.go] startPythonServer() Starting python server in env: %s...\n", envName)
+func startJupyterKernel(envName string) int {
+ log.Printf("[agent.go] startJupyterKernel() Starting python server in env: %s...\n", envName)
// Run command
cmd := exec.Command("micromamba", "run", "-n", envName, "python", "/opt/jupyter/kernel.py")
stdout, err := cmd.StdoutPipe()
if err != nil {
- log.Printf("[agent.go] startPythonServer() Error creating StdoutPipe for cmd: %v\n", err)
- return
+ log.Printf("[agent.go] startJupyterKernel() Error creating StdoutPipe for cmd: %v\n", err)
+ return 0
}
stderr, err := cmd.StderrPipe()
if err != nil {
- log.Printf("[agent.go] startPythonServer() Error creating StderrPipe for cmd: %v\n", err)
- return
+ log.Printf("[agent.go] startJupyterKernel() Error creating StderrPipe for cmd: %v\n", err)
+ return 0
}
if err := cmd.Start(); err != nil {
- log.Printf("[agent.go] startPythonServer() Error during start: %v\n", err)
- return
+ log.Printf("[agent.go] startJupyterKernel() Error during start: %v\n", err)
+ return 0
}
- log.Printf("[agent.go] startPythonServer() Started python server.\n")
+ log.Printf("[agent.go] startJupyterKernel() Started python server.\n")
go func() {
stdoutScanner := bufio.NewScanner(stdout)
for stdoutScanner.Scan() {
- log.Printf("[agent.go] startPythonServer() stdout: %s\n", stdoutScanner.Text())
+ log.Printf("[agent.go] startJupyterKernel() stdout: %s\n", stdoutScanner.Text())
}
}()
go func() {
stderrScanner := bufio.NewScanner(stderr)
for stderrScanner.Scan() {
- log.Printf("[agent.go] startPythonServer() stderr: %s\n", stderrScanner.Text())
+ log.Printf("[agent.go] startJupyterKernel() stderr: %s\n", stderrScanner.Text())
}
}()
- if err := cmd.Wait(); err != nil {
- log.Printf("[agent.go] startPythonServer() Error waiting for command: %v\n", err)
- return
- }
- log.Printf("[agent.go] startPythonServer() Command finished.\n")
+ go func() {
+ if err := cmd.Wait(); err != nil {
+ log.Printf("[agent.go] startJupyterKernel() Error waiting for command: %v\n", err)
+ }
+ }()
+ log.Printf("[agent.go] startJupyterKernel() Command finished.\n")
+ return cmd.Process.Pid
}
func executePython(stream Stream, executionId string, envName string, workingDir string, code string) {
@@ -218,16 +239,13 @@ func executePython(stream Stream, executionId string, envName string, workingDir
log.Printf("[agent.go] executePython() Working Dir %s\n", workingDir)
log.Printf("[agent.go] executePython() Code %s\n", code)
// Run command
- cmd := exec.Command("micromamba", "run", "-n", envName, "python", "-c")
+ cmd := exec.Command("micromamba", "run", "-n", envName, "python", "-c", code)
cmd.Dir = workingDir
- cmd.Stdin = strings.NewReader(code)
output, err := cmd.CombinedOutput()
- var responseString string
+ responseString := string(output)
if err != nil {
- responseString = fmt.Sprintf("Error: %v", err)
log.Printf("[agent.go] executePython() error: %v\n", err)
} else {
- responseString = string(output)
log.Printf("[agent.go] executePython() completed: %s\n", responseString)
}
msg := &protos.AgentMessage{
@@ -250,15 +268,13 @@ func executeShell(stream Stream, executionId string, envName string, workingDir
log.Printf("[agent.go] executeShell() Env name %s\n", envName)
log.Printf("[agent.go] executeShell() Exec args %s\n", execArgs)
// Run command
- cmd := exec.Command("micromamba", "run", "-n", envName, strings.Join(execArgs, " "))
+ cmd := exec.Command("micromamba", "run", "-n", envName, "bash", "-c", strings.Join(execArgs, " "))
cmd.Dir = workingDir
output, err := cmd.CombinedOutput()
- var responseString string
+ responseString := string(output)
if err != nil {
- responseString = fmt.Sprintf("Error: %v", err)
log.Printf("[agent.go] executeShell() %s failed: %v\n", executionId, err)
} else {
- responseString = string(output)
log.Printf("[agent.go] executeShell() %s done: %s\n", executionId, responseString)
}
msg := &protos.AgentMessage{
@@ -277,6 +293,11 @@ func executeShell(stream Stream, executionId string, envName string, workingDir
}
func executeJupyter(stream Stream, executionId string, envName string, code string) {
+ if _, exists := pidMap[envName]; !exists {
+ log.Printf("[agent.go] executeJupyter() Starting python server in env: %s...\n", envName)
+ pidMap[envName] = startJupyterKernel(envName)
+ time.Sleep(5 * time.Second)
+ }
log.Printf("[agent.go] executeJupyter() Execution ID: %s, Env: %s, Code: %s\n", executionId, envName, code)
unixSock := os.Getenv("KERNEL_SOCK")
client := &http.Client{
@@ -351,6 +372,34 @@ func executeJupyter(stream Stream, executionId string, envName string, code stri
sendResponse(jupyterResponse, nil)
}
+func restartKernel(stream Stream, executionId string, envName string) {
+ log.Printf("[agent.go] restartKernel() Execution id %s\n", executionId)
+ log.Printf("[agent.go] restartKernel() Env name %s\n", envName)
+ if pid, exists := pidMap[envName]; exists {
+ cmd := exec.Command("kill", fmt.Sprintf("%d", pid))
+ if err := cmd.Run(); err != nil {
+ log.Printf("[agent.go] restartKernel() Failed to kill existing process with PID %d: %v\n", pid, err)
+ } else {
+ log.Printf("[agent.go] restartKernel() Successfully killed existing process with PID %d\n", pid)
+ }
+ delete(pidMap, envName)
+ }
+ pidMap[envName] = startJupyterKernel(envName)
+ msg := &protos.AgentMessage{
+ Message: &protos.AgentMessage_KernelRestartResponse{
+ KernelRestartResponse: &protos.KernelRestartResponse{
+ ExecutionId: executionId,
+ Status: "OK",
+ },
+ },
+ }
+ if err := stream.Send(msg); err != nil {
+ log.Printf("[agent.go] restartKernel() failed to send result to server: %v\n", err)
+ } else {
+ log.Printf("[agent.go] restartKernel() sent result to server\n")
+ }
+}
+
func openRemoteTunnel(stream Stream, executionId string, destHost string, destPort string, localPort string, sshUser string, sshKeyFile string) {
log.Printf("[agent.go] openRemoteTunnel() rhost: %s, rport: %s, lport: %s, user: %s, keyfile: %s\n", destHost, destPort, localPort, sshUser, sshKeyFile)
key, err := os.ReadFile(sshKeyFile)
diff --git a/modules/agent-framework/airavata-agent/protos/agent-communication.pb.go b/modules/agent-framework/airavata-agent/protos/agent-communication.pb.go
index f602f05030..0e3aa9f7cc 100644
--- a/modules/agent-framework/airavata-agent/protos/agent-communication.pb.go
+++ b/modules/agent-framework/airavata-agent/protos/agent-communication.pb.go
@@ -878,6 +878,117 @@ func (x *JupyterExecutionResponse) GetResponseString() string {
return ""
}
+// server requesting the agent to restart a jupyter kernel
+type KernelRestartRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ExecutionId string `protobuf:"bytes,1,opt,name=executionId,proto3" json:"executionId,omitempty"`
+ EnvName string `protobuf:"bytes,2,opt,name=envName,proto3" json:"envName,omitempty"`
+}
+
+func (x *KernelRestartRequest) Reset() {
+ *x = KernelRestartRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_agent_communication_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KernelRestartRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KernelRestartRequest) ProtoMessage() {}
+
+func (x *KernelRestartRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_agent_communication_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KernelRestartRequest.ProtoReflect.Descriptor instead.
+func (*KernelRestartRequest) Descriptor() ([]byte, []int) {
+ return file_agent_communication_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *KernelRestartRequest) GetExecutionId() string {
+ if x != nil {
+ return x.ExecutionId
+ }
+ return ""
+}
+
+func (x *KernelRestartRequest) GetEnvName() string {
+ if x != nil {
+ return x.EnvName
+ }
+ return ""
+}
+
+type KernelRestartResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ExecutionId string `protobuf:"bytes,1,opt,name=executionId,proto3" json:"executionId,omitempty"`
+ Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
+}
+
+func (x *KernelRestartResponse) Reset() {
+ *x = KernelRestartResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_agent_communication_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *KernelRestartResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KernelRestartResponse) ProtoMessage() {}
+
+func (x *KernelRestartResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_agent_communication_proto_msgTypes[15]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KernelRestartResponse.ProtoReflect.Descriptor instead.
+func (*KernelRestartResponse) Descriptor() ([]byte, []int) {
+ return file_agent_communication_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *KernelRestartResponse) GetExecutionId() string {
+ if x != nil {
+ return x.ExecutionId
+ }
+ return ""
+}
+
+func (x *KernelRestartResponse) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
// server requesting the agent to create a ssh tunnel
type TunnelCreationRequest struct {
state protoimpl.MessageState
@@ -896,7 +1007,7 @@ type TunnelCreationRequest struct {
func (x *TunnelCreationRequest) Reset() {
*x = TunnelCreationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_agent_communication_proto_msgTypes[14]
+ mi := &file_agent_communication_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -909,7 +1020,7 @@ func (x *TunnelCreationRequest) String() string {
func (*TunnelCreationRequest) ProtoMessage() {}
func (x *TunnelCreationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_agent_communication_proto_msgTypes[14]
+ mi := &file_agent_communication_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -922,7 +1033,7 @@ func (x *TunnelCreationRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TunnelCreationRequest.ProtoReflect.Descriptor instead.
func (*TunnelCreationRequest) Descriptor() ([]byte, []int) {
- return file_agent_communication_proto_rawDescGZIP(), []int{14}
+ return file_agent_communication_proto_rawDescGZIP(), []int{16}
}
func (x *TunnelCreationRequest) GetExecutionId() string {
@@ -986,7 +1097,7 @@ type TunnelCreationResponse struct {
func (x *TunnelCreationResponse) Reset() {
*x = TunnelCreationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_agent_communication_proto_msgTypes[15]
+ mi := &file_agent_communication_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -999,7 +1110,7 @@ func (x *TunnelCreationResponse) String() string {
func (*TunnelCreationResponse) ProtoMessage() {}
func (x *TunnelCreationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_agent_communication_proto_msgTypes[15]
+ mi := &file_agent_communication_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1012,7 +1123,7 @@ func (x *TunnelCreationResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use TunnelCreationResponse.ProtoReflect.Descriptor instead.
func (*TunnelCreationResponse) Descriptor() ([]byte, []int) {
- return file_agent_communication_proto_rawDescGZIP(), []int{15}
+ return file_agent_communication_proto_rawDescGZIP(), []int{17}
}
func (x *TunnelCreationResponse) GetExecutionId() string {
@@ -1043,7 +1154,7 @@ type TunnelTerminationRequest struct {
func (x *TunnelTerminationRequest) Reset() {
*x = TunnelTerminationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_agent_communication_proto_msgTypes[16]
+ mi := &file_agent_communication_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1056,7 +1167,7 @@ func (x *TunnelTerminationRequest) String() string {
func (*TunnelTerminationRequest) ProtoMessage() {}
func (x *TunnelTerminationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_agent_communication_proto_msgTypes[16]
+ mi := &file_agent_communication_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1069,7 +1180,7 @@ func (x *TunnelTerminationRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use TunnelTerminationRequest.ProtoReflect.Descriptor instead.
func (*TunnelTerminationRequest) Descriptor() ([]byte, []int) {
- return file_agent_communication_proto_rawDescGZIP(), []int{16}
+ return file_agent_communication_proto_rawDescGZIP(), []int{18}
}
func (x *TunnelTerminationRequest) GetDestinationHost() string {
@@ -1105,7 +1216,7 @@ type TunnelTerminationResponse struct {
func (x *TunnelTerminationResponse) Reset() {
*x = TunnelTerminationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_agent_communication_proto_msgTypes[17]
+ mi := &file_agent_communication_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1118,7 +1229,7 @@ func (x *TunnelTerminationResponse) String() string {
func (*TunnelTerminationResponse) ProtoMessage() {}
func (x *TunnelTerminationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_agent_communication_proto_msgTypes[17]
+ mi := &file_agent_communication_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1131,7 +1242,7 @@ func (x *TunnelTerminationResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use TunnelTerminationResponse.ProtoReflect.Descriptor instead.
func (*TunnelTerminationResponse) Descriptor() ([]byte, []int) {
- return file_agent_communication_proto_rawDescGZIP(), []int{17}
+ return file_agent_communication_proto_rawDescGZIP(), []int{19}
}
func (x *TunnelTerminationResponse) GetExecutionId() string {
@@ -1162,6 +1273,7 @@ type AgentMessage struct {
// *AgentMessage_CommandExecutionResponse
// *AgentMessage_PythonExecutionResponse
// *AgentMessage_JupyterExecutionResponse
+ // *AgentMessage_KernelRestartResponse
// *AgentMessage_TunnelCreationResponse
// *AgentMessage_TunnelTerminationResponse
Message isAgentMessage_Message `protobuf_oneof:"message"`
@@ -1170,7 +1282,7 @@ type AgentMessage struct {
func (x *AgentMessage) Reset() {
*x = AgentMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_agent_communication_proto_msgTypes[18]
+ mi := &file_agent_communication_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1183,7 +1295,7 @@ func (x *AgentMessage) String() string {
func (*AgentMessage) ProtoMessage() {}
func (x *AgentMessage) ProtoReflect() protoreflect.Message {
- mi := &file_agent_communication_proto_msgTypes[18]
+ mi := &file_agent_communication_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1196,7 +1308,7 @@ func (x *AgentMessage) ProtoReflect() protoreflect.Message {
// Deprecated: Use AgentMessage.ProtoReflect.Descriptor instead.
func (*AgentMessage) Descriptor() ([]byte, []int) {
- return file_agent_communication_proto_rawDescGZIP(), []int{18}
+ return file_agent_communication_proto_rawDescGZIP(), []int{20}
}
func (m *AgentMessage) GetMessage() isAgentMessage_Message {
@@ -1255,6 +1367,13 @@ func (x *AgentMessage) GetJupyterExecutionResponse() *JupyterExecutionResponse {
return nil
}
+func (x *AgentMessage) GetKernelRestartResponse() *KernelRestartResponse {
+ if x, ok := x.GetMessage().(*AgentMessage_KernelRestartResponse); ok {
+ return x.KernelRestartResponse
+ }
+ return nil
+}
+
func (x *AgentMessage) GetTunnelCreationResponse() *TunnelCreationResponse {
if x, ok := x.GetMessage().(*AgentMessage_TunnelCreationResponse); ok {
return x.TunnelCreationResponse
@@ -1301,12 +1420,16 @@ type AgentMessage_JupyterExecutionResponse struct {
JupyterExecutionResponse *JupyterExecutionResponse `protobuf:"bytes,7,opt,name=jupyterExecutionResponse,proto3,oneof"`
}
+type AgentMessage_KernelRestartResponse struct {
+ KernelRestartResponse *KernelRestartResponse `protobuf:"bytes,8,opt,name=kernelRestartResponse,proto3,oneof"`
+}
+
type AgentMessage_TunnelCreationResponse struct {
- TunnelCreationResponse *TunnelCreationResponse `protobuf:"bytes,8,opt,name=tunnelCreationResponse,proto3,oneof"`
+ TunnelCreationResponse *TunnelCreationResponse `protobuf:"bytes,9,opt,name=tunnelCreationResponse,proto3,oneof"`
}
type AgentMessage_TunnelTerminationResponse struct {
- TunnelTerminationResponse *TunnelTerminationResponse `protobuf:"bytes,9,opt,name=tunnelTerminationResponse,proto3,oneof"`
+ TunnelTerminationResponse *TunnelTerminationResponse `protobuf:"bytes,10,opt,name=tunnelTerminationResponse,proto3,oneof"`
}
func (*AgentMessage_AgentPing) isAgentMessage_Message() {}
@@ -1323,6 +1446,8 @@ func (*AgentMessage_PythonExecutionResponse) isAgentMessage_Message() {}
func (*AgentMessage_JupyterExecutionResponse) isAgentMessage_Message() {}
+func (*AgentMessage_KernelRestartResponse) isAgentMessage_Message() {}
+
func (*AgentMessage_TunnelCreationResponse) isAgentMessage_Message() {}
func (*AgentMessage_TunnelTerminationResponse) isAgentMessage_Message() {}
@@ -1341,6 +1466,7 @@ type ServerMessage struct {
// *ServerMessage_CommandExecutionRequest
// *ServerMessage_PythonExecutionRequest
// *ServerMessage_JupyterExecutionRequest
+ // *ServerMessage_KernelRestartRequest
// *ServerMessage_TunnelCreationRequest
// *ServerMessage_TunnelTerminationRequest
Message isServerMessage_Message `protobuf_oneof:"message"`
@@ -1349,7 +1475,7 @@ type ServerMessage struct {
func (x *ServerMessage) Reset() {
*x = ServerMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_agent_communication_proto_msgTypes[19]
+ mi := &file_agent_communication_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1362,7 +1488,7 @@ func (x *ServerMessage) String() string {
func (*ServerMessage) ProtoMessage() {}
func (x *ServerMessage) ProtoReflect() protoreflect.Message {
- mi := &file_agent_communication_proto_msgTypes[19]
+ mi := &file_agent_communication_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1375,7 +1501,7 @@ func (x *ServerMessage) ProtoReflect() protoreflect.Message {
// Deprecated: Use ServerMessage.ProtoReflect.Descriptor instead.
func (*ServerMessage) Descriptor() ([]byte, []int) {
- return file_agent_communication_proto_rawDescGZIP(), []int{19}
+ return file_agent_communication_proto_rawDescGZIP(), []int{21}
}
func (m *ServerMessage) GetMessage() isServerMessage_Message {
@@ -1434,6 +1560,13 @@ func (x *ServerMessage) GetJupyterExecutionRequest() *JupyterExecutionRequest {
return nil
}
+func (x *ServerMessage) GetKernelRestartRequest() *KernelRestartRequest {
+ if x, ok := x.GetMessage().(*ServerMessage_KernelRestartRequest); ok {
+ return x.KernelRestartRequest
+ }
+ return nil
+}
+
func (x *ServerMessage) GetTunnelCreationRequest() *TunnelCreationRequest {
if x, ok := x.GetMessage().(*ServerMessage_TunnelCreationRequest); ok {
return x.TunnelCreationRequest
@@ -1480,12 +1613,16 @@ type ServerMessage_JupyterExecutionRequest struct {
JupyterExecutionRequest *JupyterExecutionRequest `protobuf:"bytes,7,opt,name=jupyterExecutionRequest,proto3,oneof"`
}
+type ServerMessage_KernelRestartRequest struct {
+ KernelRestartRequest *KernelRestartRequest `protobuf:"bytes,8,opt,name=kernelRestartRequest,proto3,oneof"`
+}
+
type ServerMessage_TunnelCreationRequest struct {
- TunnelCreationRequest *TunnelCreationRequest `protobuf:"bytes,8,opt,name=tunnelCreationRequest,proto3,oneof"`
+ TunnelCreationRequest *TunnelCreationRequest `protobuf:"bytes,9,opt,name=tunnelCreationRequest,proto3,oneof"`
}
type ServerMessage_TunnelTerminationRequest struct {
- TunnelTerminationRequest *TunnelTerminationRequest `protobuf:"bytes,9,opt,name=tunnelTerminationRequest,proto3,oneof"`
+ TunnelTerminationRequest *TunnelTerminationRequest `protobuf:"bytes,10,opt,name=tunnelTerminationRequest,proto3,oneof"`
}
func (*ServerMessage_ShutdownRequest) isServerMessage_Message() {}
@@ -1502,6 +1639,8 @@ func (*ServerMessage_PythonExecutionRequest) isServerMessage_Message() {}
func (*ServerMessage_JupyterExecutionRequest) isServerMessage_Message() {}
+func (*ServerMessage_KernelRestartRequest) isServerMessage_Message() {}
+
func (*ServerMessage_TunnelCreationRequest) isServerMessage_Message() {}
func (*ServerMessage_TunnelTerminationRequest) isServerMessage_Message() {}
@@ -1604,177 +1743,200 @@ var file_agent_communication_proto_rawDesc = []byte{
0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22,
- 0x8b, 0x02, 0x0a, 0x15, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x78, 0x65,
- 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
- 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x64,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
- 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12,
- 0x20, 0x0a, 0x0b, 0x73, 0x73, 0x68, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, 0x68, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72,
- 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74,
- 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x52, 0x0a,
- 0x16, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75,
+ 0x52, 0x0a, 0x14, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75,
0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78,
- 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x18, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28,
- 0x0a, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x6f, 0x73,
- 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x73, 0x74,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
- 0x72, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f,
- 0x72, 0x74, 0x22, 0x55, 0x0a, 0x19, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x20, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49,
- 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc4, 0x07, 0x0a, 0x0c, 0x41, 0x67,
- 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x09, 0x61, 0x67,
- 0x65, 0x6e, 0x74, 0x50, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,
- 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76,
- 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50,
- 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x69, 0x6e, 0x67,
- 0x12, 0x62, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
- 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76,
- 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52,
- 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x16, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74,
- 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68,
+ 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x76,
+ 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x76, 0x4e,
+ 0x61, 0x6d, 0x65, 0x22, 0x51, 0x0a, 0x15, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73,
+ 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b,
+ 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16,
+ 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x8b, 0x02, 0x0a, 0x15, 0x54, 0x75, 0x6e, 0x6e, 0x65,
+ 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e,
+ 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73,
+ 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f,
+ 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x73, 0x68, 0x55, 0x73, 0x65,
+ 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x73, 0x68,
+ 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x73, 0x68, 0x4b,
+ 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x73,
+ 0x68, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73,
+ 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73,
+ 0x77, 0x6f, 0x72, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20,
+ 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64,
+ 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x18, 0x54, 0x75, 0x6e,
+ 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
+ 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x12,
+ 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+ 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x55, 0x0a, 0x19, 0x54, 0x75, 0x6e,
+ 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74,
+ 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x65,
+ 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x22, 0xae, 0x08, 0x0a, 0x0c, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+ 0x65, 0x12, 0x44, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x69, 0x6e, 0x67, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68,
0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74,
- 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x16, 0x74, 0x65, 0x72, 0x6d, 0x69,
- 0x6e, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x59, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x72,
+ 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x09, 0x61, 0x67,
+ 0x65, 0x6e, 0x74, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x62, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68,
+ 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74,
+ 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67,
+ 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x16, 0x74,
+ 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x72,
0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74,
- 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x76, 0x53, 0x65, 0x74, 0x75, 0x70,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x53,
- 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x18,
- 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33,
- 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61,
- 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
- 0x6e, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x78,
- 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x6e, 0x0a, 0x17, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x32, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69,
- 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x79, 0x74,
- 0x68, 0x6f, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x17, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x45, 0x78,
- 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x71, 0x0a, 0x18, 0x6a, 0x75, 0x70, 0x79, 0x74, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61,
- 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x75,
- 0x70, 0x79, 0x74, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x18, 0x6a, 0x75, 0x70, 0x79, 0x74, 0x65,
+ 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74,
+ 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00,
+ 0x52, 0x16, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x53,
+ 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e,
+ 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x45,
+ 0x6e, 0x76, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48,
+ 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x78,
+ 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63,
+ 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e,
+ 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x18, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x17, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e,
+ 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70,
+ 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67,
+ 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x17, 0x70,
+ 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x18, 0x6a, 0x75, 0x70, 0x79, 0x74, 0x65,
0x72, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x16, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e,
- 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54,
- 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x16, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x74, 0x0a, 0x19, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e,
- 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54,
- 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x19, 0x74, 0x75, 0x6e, 0x6e,
- 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 0x22, 0xbf, 0x07, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x12, 0x56, 0x0a, 0x0f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x72,
- 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74,
- 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x68, 0x75, 0x74, 0x64,
- 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5f, 0x0a, 0x12, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61,
- 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65,
- 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41,
- 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x15, 0x74,
- 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x72, 0x67,
- 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61,
- 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65,
- 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x15,
+ 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61,
+ 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61,
+ 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x75, 0x70, 0x79, 0x74, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63,
+ 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52,
+ 0x18, 0x6a, 0x75, 0x70, 0x79, 0x74, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x15, 0x6b, 0x65, 0x72,
+ 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61,
+ 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61,
+ 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x61,
+ 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x15, 0x6b, 0x65,
+ 0x72, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x16, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x09, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65,
+ 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e,
+ 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x16, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x74, 0x0a, 0x19, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x0a, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65,
+ 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e,
+ 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x19, 0x74, 0x75, 0x6e,
+ 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+ 0x65, 0x22, 0xa6, 0x08, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x12, 0x56, 0x0a, 0x0f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f,
+ 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61,
+ 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77,
+ 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x68, 0x75, 0x74,
+ 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5f, 0x0a, 0x12, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70,
+ 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67,
+ 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x15,
0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x0f, 0x65, 0x6e, 0x76, 0x53, 0x65, 0x74, 0x75,
- 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a,
- 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61,
- 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x76, 0x53, 0x65,
- 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x6e,
- 0x76, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6e, 0x0a,
- 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x72,
+ 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74,
+ 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74,
+ 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52,
+ 0x15, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x0f, 0x65, 0x6e, 0x76, 0x53, 0x65, 0x74,
+ 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x2a, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72,
+ 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x76, 0x53,
+ 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x65,
+ 0x6e, 0x76, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6e,
+ 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x32, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72,
+ 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
+ 0x61, 0x6e, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x78,
+ 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6b,
+ 0x0a, 0x16, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31,
0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61,
- 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
- 0x6e, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x48, 0x00, 0x52, 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x78, 0x65,
- 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6b, 0x0a,
- 0x16, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e,
- 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76,
- 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e,
+ 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f,
+ 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x48, 0x00, 0x52, 0x16, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6e, 0x0a, 0x17, 0x6a,
+ 0x75, 0x70, 0x79, 0x74, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f,
+ 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61,
+ 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x75, 0x70, 0x79, 0x74, 0x65, 0x72,
0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x48, 0x00, 0x52, 0x16, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6e, 0x0a, 0x17, 0x6a, 0x75,
- 0x70, 0x79, 0x74, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f, 0x72,
- 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74,
- 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x75, 0x70, 0x79, 0x74, 0x65, 0x72, 0x45,
- 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48,
- 0x00, 0x52, 0x17, 0x6a, 0x75, 0x70, 0x79, 0x74, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x15, 0x74, 0x75,
- 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
+ 0x48, 0x00, 0x52, 0x17, 0x6a, 0x75, 0x70, 0x79, 0x74, 0x65, 0x72, 0x45, 0x78, 0x65, 0x63, 0x75,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x65, 0x0a, 0x14, 0x6b,
+ 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e,
- 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x15, 0x74,
- 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x71, 0x0a, 0x18, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65,
- 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61,
- 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65,
- 0x6e, 0x74, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x18, 0x74,
- 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x32, 0x86, 0x01, 0x0a, 0x19, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d,
- 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x12, 0x69, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x42, 0x75, 0x73, 0x12, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68,
- 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74,
- 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x28, 0x2e,
- 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76,
- 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x3f, 0x0a, 0x19, 0x6f,
+ 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x14, 0x6b, 0x65,
+ 0x72, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x68, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61,
+ 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x75,
+ 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x71, 0x0a, 0x18,
+ 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33,
+ 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61,
+ 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65,
+ 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x18, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72,
+ 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42,
+ 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x86, 0x01, 0x0a, 0x19, 0x41,
+ 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x69, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x75, 0x73, 0x12, 0x27, 0x2e, 0x6f,
0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61,
- 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x17, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43,
- 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74,
- 0x6f, 0x50, 0x01, 0x5a, 0x07, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x62, 0x06, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x33,
+ 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x28, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63,
+ 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e,
+ 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x28,
+ 0x01, 0x30, 0x01, 0x42, 0x3f, 0x0a, 0x19, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68,
+ 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74,
+ 0x42, 0x17, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x07, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x73, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -1789,7 +1951,7 @@ func file_agent_communication_proto_rawDescGZIP() []byte {
return file_agent_communication_proto_rawDescData
}
-var file_agent_communication_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
+var file_agent_communication_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
var file_agent_communication_proto_goTypes = []any{
(*AgentPing)(nil), // 0: org.apache.airavata.agent.AgentPing
(*ShutdownRequest)(nil), // 1: org.apache.airavata.agent.ShutdownRequest
@@ -1805,12 +1967,14 @@ var file_agent_communication_proto_goTypes = []any{
(*PythonExecutionResponse)(nil), // 11: org.apache.airavata.agent.PythonExecutionResponse
(*JupyterExecutionRequest)(nil), // 12: org.apache.airavata.agent.JupyterExecutionRequest
(*JupyterExecutionResponse)(nil), // 13: org.apache.airavata.agent.JupyterExecutionResponse
- (*TunnelCreationRequest)(nil), // 14: org.apache.airavata.agent.TunnelCreationRequest
- (*TunnelCreationResponse)(nil), // 15: org.apache.airavata.agent.TunnelCreationResponse
- (*TunnelTerminationRequest)(nil), // 16: org.apache.airavata.agent.TunnelTerminationRequest
- (*TunnelTerminationResponse)(nil), // 17: org.apache.airavata.agent.TunnelTerminationResponse
- (*AgentMessage)(nil), // 18: org.apache.airavata.agent.AgentMessage
- (*ServerMessage)(nil), // 19: org.apache.airavata.agent.ServerMessage
+ (*KernelRestartRequest)(nil), // 14: org.apache.airavata.agent.KernelRestartRequest
+ (*KernelRestartResponse)(nil), // 15: org.apache.airavata.agent.KernelRestartResponse
+ (*TunnelCreationRequest)(nil), // 16: org.apache.airavata.agent.TunnelCreationRequest
+ (*TunnelCreationResponse)(nil), // 17: org.apache.airavata.agent.TunnelCreationResponse
+ (*TunnelTerminationRequest)(nil), // 18: org.apache.airavata.agent.TunnelTerminationRequest
+ (*TunnelTerminationResponse)(nil), // 19: org.apache.airavata.agent.TunnelTerminationResponse
+ (*AgentMessage)(nil), // 20: org.apache.airavata.agent.AgentMessage
+ (*ServerMessage)(nil), // 21: org.apache.airavata.agent.ServerMessage
}
var file_agent_communication_proto_depIdxs = []int32{
0, // 0: org.apache.airavata.agent.AgentMessage.agentPing:type_name -> org.apache.airavata.agent.AgentPing
@@ -1820,24 +1984,26 @@ var file_agent_communication_proto_depIdxs = []int32{
9, // 4: org.apache.airavata.agent.AgentMessage.commandExecutionResponse:type_name -> org.apache.airavata.agent.CommandExecutionResponse
11, // 5: org.apache.airavata.agent.AgentMessage.pythonExecutionResponse:type_name -> org.apache.airavata.agent.PythonExecutionResponse
13, // 6: org.apache.airavata.agent.AgentMessage.jupyterExecutionResponse:type_name -> org.apache.airavata.agent.JupyterExecutionResponse
- 15, // 7: org.apache.airavata.agent.AgentMessage.tunnelCreationResponse:type_name -> org.apache.airavata.agent.TunnelCreationResponse
- 17, // 8: org.apache.airavata.agent.AgentMessage.tunnelTerminationResponse:type_name -> org.apache.airavata.agent.TunnelTerminationResponse
- 1, // 9: org.apache.airavata.agent.ServerMessage.shutdownRequest:type_name -> org.apache.airavata.agent.ShutdownRequest
- 2, // 10: org.apache.airavata.agent.ServerMessage.createAgentRequest:type_name -> org.apache.airavata.agent.CreateAgentRequest
- 4, // 11: org.apache.airavata.agent.ServerMessage.terminateAgentRequest:type_name -> org.apache.airavata.agent.TerminateAgentRequest
- 6, // 12: org.apache.airavata.agent.ServerMessage.envSetupRequest:type_name -> org.apache.airavata.agent.EnvSetupRequest
- 8, // 13: org.apache.airavata.agent.ServerMessage.commandExecutionRequest:type_name -> org.apache.airavata.agent.CommandExecutionRequest
- 10, // 14: org.apache.airavata.agent.ServerMessage.pythonExecutionRequest:type_name -> org.apache.airavata.agent.PythonExecutionRequest
- 12, // 15: org.apache.airavata.agent.ServerMessage.jupyterExecutionRequest:type_name -> org.apache.airavata.agent.JupyterExecutionRequest
- 14, // 16: org.apache.airavata.agent.ServerMessage.tunnelCreationRequest:type_name -> org.apache.airavata.agent.TunnelCreationRequest
- 16, // 17: org.apache.airavata.agent.ServerMessage.tunnelTerminationRequest:type_name -> org.apache.airavata.agent.TunnelTerminationRequest
- 18, // 18: org.apache.airavata.agent.AgentCommunicationService.createMessageBus:input_type -> org.apache.airavata.agent.AgentMessage
- 19, // 19: org.apache.airavata.agent.AgentCommunicationService.createMessageBus:output_type -> org.apache.airavata.agent.ServerMessage
- 19, // [19:20] is the sub-list for method output_type
- 18, // [18:19] is the sub-list for method input_type
- 18, // [18:18] is the sub-list for extension type_name
- 18, // [18:18] is the sub-list for extension extendee
- 0, // [0:18] is the sub-list for field type_name
+ 15, // 7: org.apache.airavata.agent.AgentMessage.kernelRestartResponse:type_name -> org.apache.airavata.agent.KernelRestartResponse
+ 17, // 8: org.apache.airavata.agent.AgentMessage.tunnelCreationResponse:type_name -> org.apache.airavata.agent.TunnelCreationResponse
+ 19, // 9: org.apache.airavata.agent.AgentMessage.tunnelTerminationResponse:type_name -> org.apache.airavata.agent.TunnelTerminationResponse
+ 1, // 10: org.apache.airavata.agent.ServerMessage.shutdownRequest:type_name -> org.apache.airavata.agent.ShutdownRequest
+ 2, // 11: org.apache.airavata.agent.ServerMessage.createAgentRequest:type_name -> org.apache.airavata.agent.CreateAgentRequest
+ 4, // 12: org.apache.airavata.agent.ServerMessage.terminateAgentRequest:type_name -> org.apache.airavata.agent.TerminateAgentRequest
+ 6, // 13: org.apache.airavata.agent.ServerMessage.envSetupRequest:type_name -> org.apache.airavata.agent.EnvSetupRequest
+ 8, // 14: org.apache.airavata.agent.ServerMessage.commandExecutionRequest:type_name -> org.apache.airavata.agent.CommandExecutionRequest
+ 10, // 15: org.apache.airavata.agent.ServerMessage.pythonExecutionRequest:type_name -> org.apache.airavata.agent.PythonExecutionRequest
+ 12, // 16: org.apache.airavata.agent.ServerMessage.jupyterExecutionRequest:type_name -> org.apache.airavata.agent.JupyterExecutionRequest
+ 14, // 17: org.apache.airavata.agent.ServerMessage.kernelRestartRequest:type_name -> org.apache.airavata.agent.KernelRestartRequest
+ 16, // 18: org.apache.airavata.agent.ServerMessage.tunnelCreationRequest:type_name -> org.apache.airavata.agent.TunnelCreationRequest
+ 18, // 19: org.apache.airavata.agent.ServerMessage.tunnelTerminationRequest:type_name -> org.apache.airavata.agent.TunnelTerminationRequest
+ 20, // 20: org.apache.airavata.agent.AgentCommunicationService.createMessageBus:input_type -> org.apache.airavata.agent.AgentMessage
+ 21, // 21: org.apache.airavata.agent.AgentCommunicationService.createMessageBus:output_type -> org.apache.airavata.agent.ServerMessage
+ 21, // [21:22] is the sub-list for method output_type
+ 20, // [20:21] is the sub-list for method input_type
+ 20, // [20:20] is the sub-list for extension type_name
+ 20, // [20:20] is the sub-list for extension extendee
+ 0, // [0:20] is the sub-list for field type_name
}
func init() { file_agent_communication_proto_init() }
@@ -2015,7 +2181,7 @@ func file_agent_communication_proto_init() {
}
}
file_agent_communication_proto_msgTypes[14].Exporter = func(v any, i int) any {
- switch v := v.(*TunnelCreationRequest); i {
+ switch v := v.(*KernelRestartRequest); i {
case 0:
return &v.state
case 1:
@@ -2027,7 +2193,7 @@ func file_agent_communication_proto_init() {
}
}
file_agent_communication_proto_msgTypes[15].Exporter = func(v any, i int) any {
- switch v := v.(*TunnelCreationResponse); i {
+ switch v := v.(*KernelRestartResponse); i {
case 0:
return &v.state
case 1:
@@ -2039,7 +2205,7 @@ func file_agent_communication_proto_init() {
}
}
file_agent_communication_proto_msgTypes[16].Exporter = func(v any, i int) any {
- switch v := v.(*TunnelTerminationRequest); i {
+ switch v := v.(*TunnelCreationRequest); i {
case 0:
return &v.state
case 1:
@@ -2051,7 +2217,7 @@ func file_agent_communication_proto_init() {
}
}
file_agent_communication_proto_msgTypes[17].Exporter = func(v any, i int) any {
- switch v := v.(*TunnelTerminationResponse); i {
+ switch v := v.(*TunnelCreationResponse); i {
case 0:
return &v.state
case 1:
@@ -2063,7 +2229,7 @@ func file_agent_communication_proto_init() {
}
}
file_agent_communication_proto_msgTypes[18].Exporter = func(v any, i int) any {
- switch v := v.(*AgentMessage); i {
+ switch v := v.(*TunnelTerminationRequest); i {
case 0:
return &v.state
case 1:
@@ -2075,6 +2241,30 @@ func file_agent_communication_proto_init() {
}
}
file_agent_communication_proto_msgTypes[19].Exporter = func(v any, i int) any {
+ switch v := v.(*TunnelTerminationResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_agent_communication_proto_msgTypes[20].Exporter = func(v any, i int) any {
+ switch v := v.(*AgentMessage); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_agent_communication_proto_msgTypes[21].Exporter = func(v any, i int) any {
switch v := v.(*ServerMessage); i {
case 0:
return &v.state
@@ -2087,7 +2277,7 @@ func file_agent_communication_proto_init() {
}
}
}
- file_agent_communication_proto_msgTypes[18].OneofWrappers = []any{
+ file_agent_communication_proto_msgTypes[20].OneofWrappers = []any{
(*AgentMessage_AgentPing)(nil),
(*AgentMessage_CreateAgentResponse)(nil),
(*AgentMessage_TerminateAgentResponse)(nil),
@@ -2095,10 +2285,11 @@ func file_agent_communication_proto_init() {
(*AgentMessage_CommandExecutionResponse)(nil),
(*AgentMessage_PythonExecutionResponse)(nil),
(*AgentMessage_JupyterExecutionResponse)(nil),
+ (*AgentMessage_KernelRestartResponse)(nil),
(*AgentMessage_TunnelCreationResponse)(nil),
(*AgentMessage_TunnelTerminationResponse)(nil),
}
- file_agent_communication_proto_msgTypes[19].OneofWrappers = []any{
+ file_agent_communication_proto_msgTypes[21].OneofWrappers = []any{
(*ServerMessage_ShutdownRequest)(nil),
(*ServerMessage_CreateAgentRequest)(nil),
(*ServerMessage_TerminateAgentRequest)(nil),
@@ -2106,6 +2297,7 @@ func file_agent_communication_proto_init() {
(*ServerMessage_CommandExecutionRequest)(nil),
(*ServerMessage_PythonExecutionRequest)(nil),
(*ServerMessage_JupyterExecutionRequest)(nil),
+ (*ServerMessage_KernelRestartRequest)(nil),
(*ServerMessage_TunnelCreationRequest)(nil),
(*ServerMessage_TunnelTerminationRequest)(nil),
}
@@ -2115,7 +2307,7 @@ func file_agent_communication_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_agent_communication_proto_rawDesc,
NumEnums: 0,
- NumMessages: 20,
+ NumMessages: 22,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/modules/agent-framework/proto/agent-communication.proto b/modules/agent-framework/proto/agent-communication.proto
index 9bf6d3d7f3..a1f2e46f5b 100644
--- a/modules/agent-framework/proto/agent-communication.proto
+++ b/modules/agent-framework/proto/agent-communication.proto
@@ -93,6 +93,16 @@ message JupyterExecutionResponse {
string responseString = 2;
}
+// server requesting the agent to restart a jupyter kernel
+message KernelRestartRequest {
+ string executionId = 1;
+ string envName = 2;
+}
+message KernelRestartResponse {
+ string executionId = 1;
+ string status = 2;
+}
+
// server requesting the agent to create a ssh tunnel
message TunnelCreationRequest {
string executionId = 1;
@@ -128,8 +138,9 @@ message AgentMessage {
CommandExecutionResponse commandExecutionResponse = 5;
PythonExecutionResponse pythonExecutionResponse = 6;
JupyterExecutionResponse jupyterExecutionResponse = 7;
- TunnelCreationResponse tunnelCreationResponse = 8;
- TunnelTerminationResponse tunnelTerminationResponse = 9;
+ KernelRestartResponse kernelRestartResponse = 8;
+ TunnelCreationResponse tunnelCreationResponse = 9;
+ TunnelTerminationResponse tunnelTerminationResponse = 10;
}
}
@@ -142,7 +153,8 @@ message ServerMessage {
CommandExecutionRequest commandExecutionRequest = 5;
PythonExecutionRequest pythonExecutionRequest = 6;
JupyterExecutionRequest jupyterExecutionRequest = 7;
- TunnelCreationRequest tunnelCreationRequest = 8;
- TunnelTerminationRequest tunnelTerminationRequest = 9;
+ KernelRestartRequest kernelRestartRequest = 8;
+ TunnelCreationRequest tunnelCreationRequest = 9;
+ TunnelTerminationRequest tunnelTerminationRequest = 10;
}
}
\ No newline at end of file