From f96375104baac3cbe287257f254309e9fc32e6d1 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 1 Sep 2022 10:44:38 +0200 Subject: [PATCH 01/43] [core] Refactor serverutil in preparation for eventstream --- core/server.go | 14 +++++----- core/serverutil.go | 35 ------------------------ core/streamutil.go | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 42 deletions(-) create mode 100644 core/streamutil.go diff --git a/core/server.go b/core/server.go index fbc2e617a..edd337460 100644 --- a/core/server.go +++ b/core/server.go @@ -66,8 +66,8 @@ func NewServer(state *globalState) *grpc.Server { s := grpc.NewServer() grpc_health_v1.RegisterHealthServer(s, health.NewServer()) pb.RegisterControlServer(s, &RpcServer{ - state: state, - streams: newSafeStreamsMap(), + state: state, + envStreams: newSafeStreamsMap(), }) // Register reflection service on gRPC server. reflection.Register(s) @@ -112,8 +112,8 @@ func (m *RpcServer) logMethodHandled() { // Implements interface pb.ControlServer type RpcServer struct { - state *globalState - streams SafeStreamsMap + state *globalState + envStreams SafeStreamsMap } func (m *RpcServer) GetIntegratedServices(ctx context.Context, empty *pb.Empty) (*pb.ListIntegratedServicesReply, error) { @@ -1064,14 +1064,14 @@ func (m *RpcServer) Subscribe(req *pb.SubscribeRequest, srv pb.Control_Subscribe defer m.logMethodHandled() for { - ch, ok := m.streams.GetChannel(req.GetId()) + ch, ok := m.envStreams.GetChannel(req.GetId()) if !ok { continue } select { case event, ok := <-ch: if !ok { - m.streams.delete(req.GetId()) + m.envStreams.delete(req.GetId()) return nil } err := srv.Send(event) @@ -1090,7 +1090,7 @@ func (m *RpcServer) NewAutoEnvironment(cxt context.Context, request *pb.NewAutoE defer m.logMethodHandled() ch := make(chan *pb.Event) - m.streams.add(request.GetId(), ch) + m.envStreams.add(request.GetId(), ch) sub := environment.SubscribeToStream(ch) go m.state.environments.CreateAutoEnvironment(request.GetWorkflowTemplate(), request.GetVars(), sub) r := &pb.NewAutoEnvironmentReply{} diff --git a/core/serverutil.go b/core/serverutil.go index e1647400f..1606056ee 100644 --- a/core/serverutil.go +++ b/core/serverutil.go @@ -26,7 +26,6 @@ package core import ( "fmt" - "sync" "unicode/utf8" "github.com/AliceO2Group/Control/core/repos" @@ -190,40 +189,6 @@ func workflowToRoleTree(root workflow.Role) (ri *pb.RoleInfo) { return } -// SafeStreamsMap is a safe map where the key is usually a -// subscriptionID received from the grpc call and as a value -// a channel where get events from the environment -// and we stream them to the grpc client. -type SafeStreamsMap struct { - mu sync.RWMutex - streams map[string]chan *pb.Event -} - -func (s *SafeStreamsMap) add(id string, ch chan *pb.Event) { - s.mu.Lock() - s.streams[id] = ch - s.mu.Unlock() -} - -func (s *SafeStreamsMap) delete(id string) { - s.mu.Lock() - delete(s.streams, id) - s.mu.Unlock() -} - -func (s *SafeStreamsMap) GetChannel(id string) (ch chan *pb.Event, ok bool) { - s.mu.RLock() - defer s.mu.RUnlock() - ch, ok = s.streams[id] - return -} - -func newSafeStreamsMap() SafeStreamsMap { - return SafeStreamsMap{ - streams: make(map[string]chan *pb.Event), - } -} - func VarSpecMapToPbVarSpecMap(varSpecMap map[string]repos.VarSpec) map[string]*pb.VarSpecMessage { ret := make(map[string]*pb.VarSpecMessage) var vsm *pb.VarSpecMessage diff --git a/core/streamutil.go b/core/streamutil.go new file mode 100644 index 000000000..02cff8c86 --- /dev/null +++ b/core/streamutil.go @@ -0,0 +1,66 @@ +/* + * === This file is part of ALICE O² === + * + * Copyright 2020-2022 CERN and copyright holders of ALICE O². + * Author: Miltiadis Alexis + * Teo Mrnjavac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * In applying this license CERN does not waive the privileges and + * immunities granted to it by virtue of its status as an + * Intergovernmental Organization or submit itself to any jurisdiction. + */ + +package core + +import ( + "sync" + + pb "github.com/AliceO2Group/Control/core/protos" +) + +// SafeStreamsMap is a safe map where the key is usually a +// subscriptionID received from the grpc call and as a value +// a channel where get events from the environment +// and we stream them to the grpc client. +type SafeStreamsMap struct { + mu sync.RWMutex + streams map[string]chan *pb.Event +} + +func (s *SafeStreamsMap) add(id string, ch chan *pb.Event) { + s.mu.Lock() + s.streams[id] = ch + s.mu.Unlock() +} + +func (s *SafeStreamsMap) delete(id string) { + s.mu.Lock() + delete(s.streams, id) + s.mu.Unlock() +} + +func (s *SafeStreamsMap) GetChannel(id string) (ch chan *pb.Event, ok bool) { + s.mu.RLock() + defer s.mu.RUnlock() + ch, ok = s.streams[id] + return +} + +func newSafeStreamsMap() SafeStreamsMap { + return SafeStreamsMap{ + streams: make(map[string]chan *pb.Event), + } +} From 25fdadd012b20b1a5346eb412104b343a7ca3ee2 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 15 Feb 2024 12:01:39 +0100 Subject: [PATCH 02/43] [core] Events protofile --- common/protos/events.proto | 67 +++++++++++++++++++++++++++++++++++++ core/protos/o2control.proto | 13 ++++--- 2 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 common/protos/events.proto diff --git a/common/protos/events.proto b/common/protos/events.proto new file mode 100644 index 000000000..04ce4fbe9 --- /dev/null +++ b/common/protos/events.proto @@ -0,0 +1,67 @@ +/* + * === This file is part of ALICE O² === + * + * Copyright 2024 CERN and copyright holders of ALICE O². + * Author: Teo Mrnjavac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * In applying this license CERN does not waive the privileges and + * immunities granted to it by virtue of its status as an + * Intergovernmental Organization or submit itself to any jurisdiction. + */ + +syntax = "proto3"; + +package events; +option java_package = "ch.cern.alice.o2.control.events"; +option go_package = "github.com/AliceO2Group/Control/common/protos;pb"; + +//////////////// Common event messages /////////////// + +message Event_MesosHeartbeat { +} + +message Ev_EnvironmentEvent { + string environmentId = 1; + string state = 2; + uint32 currentRunNumber = 3; + string error = 4; + string message = 5; +} + +message Ev_TaskEvent { + string name = 1; + string taskid = 2; + string state = 3; + string status = 4; + string hostname = 5; + string className = 6; +} + +message Ev_RoleEvent { + string name = 1; + string status = 2; + string state = 3; + string rolePath = 4; +} + +message Event { + string timestamp = 1; + oneof Payload { + Ev_EnvironmentEvent environmentEvent = 2; + Ev_TaskEvent taskEvent = 3; + Ev_RoleEvent roleEvent = 4; + } +} diff --git a/core/protos/o2control.proto b/core/protos/o2control.proto index 03c280f8e..52a730b01 100644 --- a/core/protos/o2control.proto +++ b/core/protos/o2control.proto @@ -60,17 +60,13 @@ message Ev_RoleEvent { ////////////////////////////////////////////////////// service Control { - rpc TrackStatus (StatusRequest) returns (stream StatusReply) {} - rpc GetFrameworkInfo (GetFrameworkInfoRequest) returns (GetFrameworkInfoReply) {} - rpc Teardown (TeardownRequest) returns (TeardownReply) {} rpc GetEnvironments (GetEnvironmentsRequest) returns (GetEnvironmentsReply) {} rpc NewAutoEnvironment (NewAutoEnvironmentRequest) returns (NewAutoEnvironmentReply) {} rpc NewEnvironment (NewEnvironmentRequest) returns (NewEnvironmentReply) {} rpc GetEnvironment (GetEnvironmentRequest) returns (GetEnvironmentReply) {} rpc ControlEnvironment (ControlEnvironmentRequest) returns (ControlEnvironmentReply) {} - rpc ModifyEnvironment (ModifyEnvironmentRequest) returns (ModifyEnvironmentReply) {} rpc DestroyEnvironment (DestroyEnvironmentRequest) returns (DestroyEnvironmentReply) {} rpc GetActiveDetectors (Empty) returns (GetActiveDetectorsReply) {} rpc GetAvailableDetectors (Empty) returns (GetAvailableDetectorsReply) {} @@ -93,9 +89,14 @@ service Control { rpc SetDefaultRepo(SetDefaultRepoRequest) returns (Empty) {} rpc SetGlobalDefaultRevision(SetGlobalDefaultRevisionRequest) returns (Empty) {} rpc SetRepoDefaultRevision(SetRepoDefaultRevisionRequest) returns (SetRepoDefaultRevisionReply) {} - rpc Subscribe(SubscribeRequest) returns (stream Event); + rpc Subscribe(SubscribeRequest) returns (stream Event) {} rpc GetIntegratedServices(Empty) returns (ListIntegratedServicesReply) {} + + // Reserved and not implemented: + rpc TrackStatus (StatusRequest) returns (stream StatusReply) {} + rpc Teardown (TeardownRequest) returns (TeardownReply) {} + rpc ModifyEnvironment (ModifyEnvironmentRequest) returns (ModifyEnvironmentReply) {} } //////////////////////////////////////// @@ -132,6 +133,8 @@ message Event { message SubscribeRequest{ string id = 1; } + + //////////////////////////////////////// // Framework //////////////////////////////////////// From ca1c75905b0fadce4524f7f1779258337dec0681 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 15 Feb 2024 15:45:33 +0100 Subject: [PATCH 03/43] [core] Additional events --- Makefile | 3 +- coconut/cmd/environment.go | 2 +- coconut/cmd/repo.go | 2 - coconut/protos/o2control.pb.go | 380 +++++++------- common/doc.go | 2 + common/protos/events.pb.go | 710 ++++++++++++++++++++++++++ common/protos/events.proto | 14 +- {core => common}/protos/protoutils.go | 0 core/protos/o2control.pb.go | 380 +++++++------- core/protos/o2control_grpc.pb.go | 278 +++++----- core/server.go | 2 +- 11 files changed, 1245 insertions(+), 528 deletions(-) create mode 100644 common/protos/events.pb.go rename {core => common}/protos/protoutils.go (100%) diff --git a/Makefile b/Makefile index 1575f65c1..bb0b6c677 100644 --- a/Makefile +++ b/Makefile @@ -68,8 +68,7 @@ WHAT_o2-apricot_BUILD_FLAGS=$(BUILD_ENV_FLAGS) INSTALL_WHAT:=$(patsubst %, install_%, $(WHAT)) - -GENERATE_DIRS := ./apricot ./coconut/cmd ./common/runtype ./common/system ./core ./core/integration/ccdb ./core/integration/dcs ./core/integration/ddsched ./core/integration/kafka ./core/integration/odc ./executor ./walnut ./core/integration/trg ./core/integration/bookkeeping +GENERATE_DIRS := ./apricot ./coconut/cmd ./common ./common/runtype ./common/system ./core ./core/integration/ccdb ./core/integration/dcs ./core/integration/ddsched ./core/integration/kafka ./core/integration/odc ./executor ./walnut ./core/integration/trg ./core/integration/bookkeeping SRC_DIRS := ./apricot ./cmd/* ./core ./coconut ./executor ./common ./configuration ./occ/peanut ./walnut TEST_DIRS := ./configuration/cfgbackend ./configuration/componentcfg GO_TEST_DIRS := ./core/repos ./core/integration/dcs diff --git a/coconut/cmd/environment.go b/coconut/cmd/environment.go index f3c3be882..62f9dd3d9 100644 --- a/coconut/cmd/environment.go +++ b/coconut/cmd/environment.go @@ -22,7 +22,7 @@ * Intergovernmental Organization or submit itself to any jurisdiction. */ -//go:generate protoc -I ../../core --go_out=.. --go-grpc_out=.. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative protos/o2control.proto +//go:generate protoc -I=../../core -I=../../common --go_out=.. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative --go-grpc_out=require_unimplemented_servers=false:. protos/o2control.proto package cmd diff --git a/coconut/cmd/repo.go b/coconut/cmd/repo.go index 318ee027d..fc79990ca 100644 --- a/coconut/cmd/repo.go +++ b/coconut/cmd/repo.go @@ -22,8 +22,6 @@ * Intergovernmental Organization or submit itself to any jurisdiction. */ -//go:generate protoc -I ../../core --go_out=.. --go-grpc_out=.. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative protos/o2control.proto - package cmd import ( diff --git a/coconut/protos/o2control.pb.go b/coconut/protos/o2control.pb.go index d091ff4d4..c13fe8fe6 100644 --- a/coconut/protos/o2control.pb.go +++ b/coconut/protos/o2control.pb.go @@ -5421,147 +5421,147 @@ var file_protos_o2control_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xd6, 0x10, 0x0a, - 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x43, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x63, - 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5a, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, - 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x54, 0x65, 0x61, - 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, - 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, - 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x12, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, - 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, - 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x54, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, - 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x11, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, - 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x65, - 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x1a, 0x25, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, - 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, - 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4e, - 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1e, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, - 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, - 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, - 0x0a, 0x08, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x12, 0x66, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xd8, 0x10, 0x0a, + 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x5a, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, + 0x12, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x54, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, + 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x12, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, + 0x12, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x4c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x52, 0x0a, + 0x15, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x25, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, + 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, + 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, + 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, + 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x09, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, - 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x19, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x12, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0c, - 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x1e, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x12, 0x46, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, - 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x00, 0x12, 0x45, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, + 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x41, 0x64, 0x64, + 0x52, 0x65, 0x70, 0x6f, 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x52, + 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x47, - 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, + 0x12, 0x5a, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x16, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, - 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, - 0x12, 0x53, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x26, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x54, 0x0a, 0x22, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, - 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x72, 0x70, 0x63, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5a, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x72, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x1a, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x09, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x43, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, + 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x00, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x08, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, + 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, 0x61, + 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, + 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x11, 0x4d, 0x6f, 0x64, 0x69, + 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, + 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, + 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x54, 0x0a, 0x22, 0x63, 0x68, 0x2e, 0x63, 0x65, + 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x72, 0x70, 0x63, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5a, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, + 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, + 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5721,58 +5721,58 @@ var file_protos_o2control_proto_depIdxs = []int32{ 89, // 47: o2control.ListIntegratedServicesReply.services:type_name -> o2control.ListIntegratedServicesReply.ServicesEntry 57, // 48: o2control.WorkflowTemplateInfo.VarSpecMapEntry.value:type_name -> o2control.VarSpecMessage 74, // 49: o2control.ListIntegratedServicesReply.ServicesEntry.value:type_name -> o2control.IntegratedServiceInfo - 9, // 50: o2control.Control.TrackStatus:input_type -> o2control.StatusRequest - 14, // 51: o2control.Control.GetFrameworkInfo:input_type -> o2control.GetFrameworkInfoRequest - 17, // 52: o2control.Control.Teardown:input_type -> o2control.TeardownRequest - 19, // 53: o2control.Control.GetEnvironments:input_type -> o2control.GetEnvironmentsRequest - 24, // 54: o2control.Control.NewAutoEnvironment:input_type -> o2control.NewAutoEnvironmentRequest - 22, // 55: o2control.Control.NewEnvironment:input_type -> o2control.NewEnvironmentRequest - 26, // 56: o2control.Control.GetEnvironment:input_type -> o2control.GetEnvironmentRequest - 28, // 57: o2control.Control.ControlEnvironment:input_type -> o2control.ControlEnvironmentRequest - 30, // 58: o2control.Control.ModifyEnvironment:input_type -> o2control.ModifyEnvironmentRequest - 33, // 59: o2control.Control.DestroyEnvironment:input_type -> o2control.DestroyEnvironmentRequest - 72, // 60: o2control.Control.GetActiveDetectors:input_type -> o2control.Empty - 72, // 61: o2control.Control.GetAvailableDetectors:input_type -> o2control.Empty - 43, // 62: o2control.Control.GetTasks:input_type -> o2control.GetTasksRequest - 45, // 63: o2control.Control.GetTask:input_type -> o2control.GetTaskRequest - 51, // 64: o2control.Control.CleanupTasks:input_type -> o2control.CleanupTasksRequest - 53, // 65: o2control.Control.GetRoles:input_type -> o2control.GetRolesRequest - 56, // 66: o2control.Control.GetWorkflowTemplates:input_type -> o2control.GetWorkflowTemplatesRequest - 60, // 67: o2control.Control.ListRepos:input_type -> o2control.ListReposRequest - 63, // 68: o2control.Control.AddRepo:input_type -> o2control.AddRepoRequest - 65, // 69: o2control.Control.RemoveRepo:input_type -> o2control.RemoveRepoRequest - 67, // 70: o2control.Control.RefreshRepos:input_type -> o2control.RefreshReposRequest - 68, // 71: o2control.Control.SetDefaultRepo:input_type -> o2control.SetDefaultRepoRequest - 69, // 72: o2control.Control.SetGlobalDefaultRevision:input_type -> o2control.SetGlobalDefaultRevisionRequest - 70, // 73: o2control.Control.SetRepoDefaultRevision:input_type -> o2control.SetRepoDefaultRevisionRequest - 13, // 74: o2control.Control.Subscribe:input_type -> o2control.SubscribeRequest - 72, // 75: o2control.Control.GetIntegratedServices:input_type -> o2control.Empty - 10, // 76: o2control.Control.TrackStatus:output_type -> o2control.StatusReply - 16, // 77: o2control.Control.GetFrameworkInfo:output_type -> o2control.GetFrameworkInfoReply - 18, // 78: o2control.Control.Teardown:output_type -> o2control.TeardownReply - 20, // 79: o2control.Control.GetEnvironments:output_type -> o2control.GetEnvironmentsReply - 25, // 80: o2control.Control.NewAutoEnvironment:output_type -> o2control.NewAutoEnvironmentReply - 23, // 81: o2control.Control.NewEnvironment:output_type -> o2control.NewEnvironmentReply - 27, // 82: o2control.Control.GetEnvironment:output_type -> o2control.GetEnvironmentReply - 29, // 83: o2control.Control.ControlEnvironment:output_type -> o2control.ControlEnvironmentReply - 32, // 84: o2control.Control.ModifyEnvironment:output_type -> o2control.ModifyEnvironmentReply - 34, // 85: o2control.Control.DestroyEnvironment:output_type -> o2control.DestroyEnvironmentReply - 35, // 86: o2control.Control.GetActiveDetectors:output_type -> o2control.GetActiveDetectorsReply - 36, // 87: o2control.Control.GetAvailableDetectors:output_type -> o2control.GetAvailableDetectorsReply - 44, // 88: o2control.Control.GetTasks:output_type -> o2control.GetTasksReply - 46, // 89: o2control.Control.GetTask:output_type -> o2control.GetTaskReply - 52, // 90: o2control.Control.CleanupTasks:output_type -> o2control.CleanupTasksReply - 55, // 91: o2control.Control.GetRoles:output_type -> o2control.GetRolesReply - 59, // 92: o2control.Control.GetWorkflowTemplates:output_type -> o2control.GetWorkflowTemplatesReply - 62, // 93: o2control.Control.ListRepos:output_type -> o2control.ListReposReply - 64, // 94: o2control.Control.AddRepo:output_type -> o2control.AddRepoReply - 66, // 95: o2control.Control.RemoveRepo:output_type -> o2control.RemoveRepoReply - 72, // 96: o2control.Control.RefreshRepos:output_type -> o2control.Empty - 72, // 97: o2control.Control.SetDefaultRepo:output_type -> o2control.Empty - 72, // 98: o2control.Control.SetGlobalDefaultRevision:output_type -> o2control.Empty - 71, // 99: o2control.Control.SetRepoDefaultRevision:output_type -> o2control.SetRepoDefaultRevisionReply - 12, // 100: o2control.Control.Subscribe:output_type -> o2control.Event - 73, // 101: o2control.Control.GetIntegratedServices:output_type -> o2control.ListIntegratedServicesReply + 14, // 50: o2control.Control.GetFrameworkInfo:input_type -> o2control.GetFrameworkInfoRequest + 19, // 51: o2control.Control.GetEnvironments:input_type -> o2control.GetEnvironmentsRequest + 24, // 52: o2control.Control.NewAutoEnvironment:input_type -> o2control.NewAutoEnvironmentRequest + 22, // 53: o2control.Control.NewEnvironment:input_type -> o2control.NewEnvironmentRequest + 26, // 54: o2control.Control.GetEnvironment:input_type -> o2control.GetEnvironmentRequest + 28, // 55: o2control.Control.ControlEnvironment:input_type -> o2control.ControlEnvironmentRequest + 33, // 56: o2control.Control.DestroyEnvironment:input_type -> o2control.DestroyEnvironmentRequest + 72, // 57: o2control.Control.GetActiveDetectors:input_type -> o2control.Empty + 72, // 58: o2control.Control.GetAvailableDetectors:input_type -> o2control.Empty + 43, // 59: o2control.Control.GetTasks:input_type -> o2control.GetTasksRequest + 45, // 60: o2control.Control.GetTask:input_type -> o2control.GetTaskRequest + 51, // 61: o2control.Control.CleanupTasks:input_type -> o2control.CleanupTasksRequest + 53, // 62: o2control.Control.GetRoles:input_type -> o2control.GetRolesRequest + 56, // 63: o2control.Control.GetWorkflowTemplates:input_type -> o2control.GetWorkflowTemplatesRequest + 60, // 64: o2control.Control.ListRepos:input_type -> o2control.ListReposRequest + 63, // 65: o2control.Control.AddRepo:input_type -> o2control.AddRepoRequest + 65, // 66: o2control.Control.RemoveRepo:input_type -> o2control.RemoveRepoRequest + 67, // 67: o2control.Control.RefreshRepos:input_type -> o2control.RefreshReposRequest + 68, // 68: o2control.Control.SetDefaultRepo:input_type -> o2control.SetDefaultRepoRequest + 69, // 69: o2control.Control.SetGlobalDefaultRevision:input_type -> o2control.SetGlobalDefaultRevisionRequest + 70, // 70: o2control.Control.SetRepoDefaultRevision:input_type -> o2control.SetRepoDefaultRevisionRequest + 13, // 71: o2control.Control.Subscribe:input_type -> o2control.SubscribeRequest + 72, // 72: o2control.Control.GetIntegratedServices:input_type -> o2control.Empty + 9, // 73: o2control.Control.TrackStatus:input_type -> o2control.StatusRequest + 17, // 74: o2control.Control.Teardown:input_type -> o2control.TeardownRequest + 30, // 75: o2control.Control.ModifyEnvironment:input_type -> o2control.ModifyEnvironmentRequest + 16, // 76: o2control.Control.GetFrameworkInfo:output_type -> o2control.GetFrameworkInfoReply + 20, // 77: o2control.Control.GetEnvironments:output_type -> o2control.GetEnvironmentsReply + 25, // 78: o2control.Control.NewAutoEnvironment:output_type -> o2control.NewAutoEnvironmentReply + 23, // 79: o2control.Control.NewEnvironment:output_type -> o2control.NewEnvironmentReply + 27, // 80: o2control.Control.GetEnvironment:output_type -> o2control.GetEnvironmentReply + 29, // 81: o2control.Control.ControlEnvironment:output_type -> o2control.ControlEnvironmentReply + 34, // 82: o2control.Control.DestroyEnvironment:output_type -> o2control.DestroyEnvironmentReply + 35, // 83: o2control.Control.GetActiveDetectors:output_type -> o2control.GetActiveDetectorsReply + 36, // 84: o2control.Control.GetAvailableDetectors:output_type -> o2control.GetAvailableDetectorsReply + 44, // 85: o2control.Control.GetTasks:output_type -> o2control.GetTasksReply + 46, // 86: o2control.Control.GetTask:output_type -> o2control.GetTaskReply + 52, // 87: o2control.Control.CleanupTasks:output_type -> o2control.CleanupTasksReply + 55, // 88: o2control.Control.GetRoles:output_type -> o2control.GetRolesReply + 59, // 89: o2control.Control.GetWorkflowTemplates:output_type -> o2control.GetWorkflowTemplatesReply + 62, // 90: o2control.Control.ListRepos:output_type -> o2control.ListReposReply + 64, // 91: o2control.Control.AddRepo:output_type -> o2control.AddRepoReply + 66, // 92: o2control.Control.RemoveRepo:output_type -> o2control.RemoveRepoReply + 72, // 93: o2control.Control.RefreshRepos:output_type -> o2control.Empty + 72, // 94: o2control.Control.SetDefaultRepo:output_type -> o2control.Empty + 72, // 95: o2control.Control.SetGlobalDefaultRevision:output_type -> o2control.Empty + 71, // 96: o2control.Control.SetRepoDefaultRevision:output_type -> o2control.SetRepoDefaultRevisionReply + 12, // 97: o2control.Control.Subscribe:output_type -> o2control.Event + 73, // 98: o2control.Control.GetIntegratedServices:output_type -> o2control.ListIntegratedServicesReply + 10, // 99: o2control.Control.TrackStatus:output_type -> o2control.StatusReply + 18, // 100: o2control.Control.Teardown:output_type -> o2control.TeardownReply + 32, // 101: o2control.Control.ModifyEnvironment:output_type -> o2control.ModifyEnvironmentReply 76, // [76:102] is the sub-list for method output_type 50, // [50:76] is the sub-list for method input_type 50, // [50:50] is the sub-list for extension type_name diff --git a/common/doc.go b/common/doc.go index ca4c77169..d1d6f80be 100644 --- a/common/doc.go +++ b/common/doc.go @@ -25,3 +25,5 @@ // Package common serves as a catch-all package for sharing types // between O² Control components. package common + +//go:generate protoc -I=./ --go_out=. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative --go-grpc_out=require_unimplemented_servers=false:. protos/events.proto diff --git a/common/protos/events.pb.go b/common/protos/events.pb.go new file mode 100644 index 000000000..4fbe78de0 --- /dev/null +++ b/common/protos/events.pb.go @@ -0,0 +1,710 @@ +// +// === This file is part of ALICE O² === +// +// Copyright 2024 CERN and copyright holders of ALICE O². +// Author: Teo Mrnjavac +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// In applying this license CERN does not waive the privileges and +// immunities granted to it by virtue of its status as an +// Intergovernmental Organization or submit itself to any jurisdiction. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v4.25.1 +// source: protos/events.proto + +package pb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Ev_MetaEvent_MesosHeartbeat struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Ev_MetaEvent_MesosHeartbeat) Reset() { + *x = Ev_MetaEvent_MesosHeartbeat{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_events_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Ev_MetaEvent_MesosHeartbeat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Ev_MetaEvent_MesosHeartbeat) ProtoMessage() {} + +func (x *Ev_MetaEvent_MesosHeartbeat) ProtoReflect() protoreflect.Message { + mi := &file_protos_events_proto_msgTypes[0] + 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 Ev_MetaEvent_MesosHeartbeat.ProtoReflect.Descriptor instead. +func (*Ev_MetaEvent_MesosHeartbeat) Descriptor() ([]byte, []int) { + return file_protos_events_proto_rawDescGZIP(), []int{0} +} + +type Ev_MetaEvent_FrameworkFailure struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *Ev_MetaEvent_FrameworkFailure) Reset() { + *x = Ev_MetaEvent_FrameworkFailure{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_events_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Ev_MetaEvent_FrameworkFailure) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Ev_MetaEvent_FrameworkFailure) ProtoMessage() {} + +func (x *Ev_MetaEvent_FrameworkFailure) ProtoReflect() protoreflect.Message { + mi := &file_protos_events_proto_msgTypes[1] + 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 Ev_MetaEvent_FrameworkFailure.ProtoReflect.Descriptor instead. +func (*Ev_MetaEvent_FrameworkFailure) Descriptor() ([]byte, []int) { + return file_protos_events_proto_rawDescGZIP(), []int{1} +} + +func (x *Ev_MetaEvent_FrameworkFailure) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type Ev_EnvironmentEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EnvironmentId string `protobuf:"bytes,1,opt,name=environmentId,proto3" json:"environmentId,omitempty"` + State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` + CurrentRunNumber uint32 `protobuf:"varint,3,opt,name=currentRunNumber,proto3" json:"currentRunNumber,omitempty"` + Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` + Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *Ev_EnvironmentEvent) Reset() { + *x = Ev_EnvironmentEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_events_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Ev_EnvironmentEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Ev_EnvironmentEvent) ProtoMessage() {} + +func (x *Ev_EnvironmentEvent) ProtoReflect() protoreflect.Message { + mi := &file_protos_events_proto_msgTypes[2] + 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 Ev_EnvironmentEvent.ProtoReflect.Descriptor instead. +func (*Ev_EnvironmentEvent) Descriptor() ([]byte, []int) { + return file_protos_events_proto_rawDescGZIP(), []int{2} +} + +func (x *Ev_EnvironmentEvent) GetEnvironmentId() string { + if x != nil { + return x.EnvironmentId + } + return "" +} + +func (x *Ev_EnvironmentEvent) GetState() string { + if x != nil { + return x.State + } + return "" +} + +func (x *Ev_EnvironmentEvent) GetCurrentRunNumber() uint32 { + if x != nil { + return x.CurrentRunNumber + } + return 0 +} + +func (x *Ev_EnvironmentEvent) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +func (x *Ev_EnvironmentEvent) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type Ev_TaskEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Taskid string `protobuf:"bytes,2,opt,name=taskid,proto3" json:"taskid,omitempty"` + State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` + Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` + Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` + ClassName string `protobuf:"bytes,6,opt,name=className,proto3" json:"className,omitempty"` +} + +func (x *Ev_TaskEvent) Reset() { + *x = Ev_TaskEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_events_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Ev_TaskEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Ev_TaskEvent) ProtoMessage() {} + +func (x *Ev_TaskEvent) ProtoReflect() protoreflect.Message { + mi := &file_protos_events_proto_msgTypes[3] + 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 Ev_TaskEvent.ProtoReflect.Descriptor instead. +func (*Ev_TaskEvent) Descriptor() ([]byte, []int) { + return file_protos_events_proto_rawDescGZIP(), []int{3} +} + +func (x *Ev_TaskEvent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Ev_TaskEvent) GetTaskid() string { + if x != nil { + return x.Taskid + } + return "" +} + +func (x *Ev_TaskEvent) GetState() string { + if x != nil { + return x.State + } + return "" +} + +func (x *Ev_TaskEvent) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *Ev_TaskEvent) GetHostname() string { + if x != nil { + return x.Hostname + } + return "" +} + +func (x *Ev_TaskEvent) GetClassName() string { + if x != nil { + return x.ClassName + } + return "" +} + +type Ev_RoleEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` + RolePath string `protobuf:"bytes,4,opt,name=rolePath,proto3" json:"rolePath,omitempty"` +} + +func (x *Ev_RoleEvent) Reset() { + *x = Ev_RoleEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_events_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Ev_RoleEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Ev_RoleEvent) ProtoMessage() {} + +func (x *Ev_RoleEvent) ProtoReflect() protoreflect.Message { + mi := &file_protos_events_proto_msgTypes[4] + 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 Ev_RoleEvent.ProtoReflect.Descriptor instead. +func (*Ev_RoleEvent) Descriptor() ([]byte, []int) { + return file_protos_events_proto_rawDescGZIP(), []int{4} +} + +func (x *Ev_RoleEvent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Ev_RoleEvent) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *Ev_RoleEvent) GetState() string { + if x != nil { + return x.State + } + return "" +} + +func (x *Ev_RoleEvent) GetRolePath() string { + if x != nil { + return x.RolePath + } + return "" +} + +type Event struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Timestamp string `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Types that are assignable to Payload: + // + // *Event_EnvironmentEvent + // *Event_TaskEvent + // *Event_RoleEvent + // *Event_FrameworkFailureEvent + // *Event_MesosHeartbeatEvent + Payload isEvent_Payload `protobuf_oneof:"Payload"` +} + +func (x *Event) Reset() { + *x = Event{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_events_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Event) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Event) ProtoMessage() {} + +func (x *Event) ProtoReflect() protoreflect.Message { + mi := &file_protos_events_proto_msgTypes[5] + 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 Event.ProtoReflect.Descriptor instead. +func (*Event) Descriptor() ([]byte, []int) { + return file_protos_events_proto_rawDescGZIP(), []int{5} +} + +func (x *Event) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +func (m *Event) GetPayload() isEvent_Payload { + if m != nil { + return m.Payload + } + return nil +} + +func (x *Event) GetEnvironmentEvent() *Ev_EnvironmentEvent { + if x, ok := x.GetPayload().(*Event_EnvironmentEvent); ok { + return x.EnvironmentEvent + } + return nil +} + +func (x *Event) GetTaskEvent() *Ev_TaskEvent { + if x, ok := x.GetPayload().(*Event_TaskEvent); ok { + return x.TaskEvent + } + return nil +} + +func (x *Event) GetRoleEvent() *Ev_RoleEvent { + if x, ok := x.GetPayload().(*Event_RoleEvent); ok { + return x.RoleEvent + } + return nil +} + +func (x *Event) GetFrameworkFailureEvent() *Ev_MetaEvent_FrameworkFailure { + if x, ok := x.GetPayload().(*Event_FrameworkFailureEvent); ok { + return x.FrameworkFailureEvent + } + return nil +} + +func (x *Event) GetMesosHeartbeatEvent() *Ev_MetaEvent_MesosHeartbeat { + if x, ok := x.GetPayload().(*Event_MesosHeartbeatEvent); ok { + return x.MesosHeartbeatEvent + } + return nil +} + +type isEvent_Payload interface { + isEvent_Payload() +} + +type Event_EnvironmentEvent struct { + EnvironmentEvent *Ev_EnvironmentEvent `protobuf:"bytes,2,opt,name=environmentEvent,proto3,oneof"` +} + +type Event_TaskEvent struct { + TaskEvent *Ev_TaskEvent `protobuf:"bytes,3,opt,name=taskEvent,proto3,oneof"` +} + +type Event_RoleEvent struct { + RoleEvent *Ev_RoleEvent `protobuf:"bytes,4,opt,name=roleEvent,proto3,oneof"` +} + +type Event_FrameworkFailureEvent struct { + FrameworkFailureEvent *Ev_MetaEvent_FrameworkFailure `protobuf:"bytes,5,opt,name=frameworkFailureEvent,proto3,oneof"` +} + +type Event_MesosHeartbeatEvent struct { + MesosHeartbeatEvent *Ev_MetaEvent_MesosHeartbeat `protobuf:"bytes,6,opt,name=mesosHeartbeatEvent,proto3,oneof"` +} + +func (*Event_EnvironmentEvent) isEvent_Payload() {} + +func (*Event_TaskEvent) isEvent_Payload() {} + +func (*Event_RoleEvent) isEvent_Payload() {} + +func (*Event_FrameworkFailureEvent) isEvent_Payload() {} + +func (*Event_MesosHeartbeatEvent) isEvent_Payload() {} + +var File_protos_events_proto protoreflect.FileDescriptor + +var file_protos_events_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x1d, 0x0a, + 0x1b, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, + 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x22, 0x39, 0x0a, 0x1d, + 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x13, 0x45, 0x76, 0x5f, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, + 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, + 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, + 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6c, 0x0a, 0x0c, + 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0x9f, 0x03, 0x0a, 0x05, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, + 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, + 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, + 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, + 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5d, 0x0a, 0x15, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, + 0x00, 0x52, 0x15, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x6f, + 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, + 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, + 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x65, + 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x53, 0x0a, 0x1f, + 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, + 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, + 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_protos_events_proto_rawDescOnce sync.Once + file_protos_events_proto_rawDescData = file_protos_events_proto_rawDesc +) + +func file_protos_events_proto_rawDescGZIP() []byte { + file_protos_events_proto_rawDescOnce.Do(func() { + file_protos_events_proto_rawDescData = protoimpl.X.CompressGZIP(file_protos_events_proto_rawDescData) + }) + return file_protos_events_proto_rawDescData +} + +var file_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_protos_events_proto_goTypes = []interface{}{ + (*Ev_MetaEvent_MesosHeartbeat)(nil), // 0: events.Ev_MetaEvent_MesosHeartbeat + (*Ev_MetaEvent_FrameworkFailure)(nil), // 1: events.Ev_MetaEvent_FrameworkFailure + (*Ev_EnvironmentEvent)(nil), // 2: events.Ev_EnvironmentEvent + (*Ev_TaskEvent)(nil), // 3: events.Ev_TaskEvent + (*Ev_RoleEvent)(nil), // 4: events.Ev_RoleEvent + (*Event)(nil), // 5: events.Event +} +var file_protos_events_proto_depIdxs = []int32{ + 2, // 0: events.Event.environmentEvent:type_name -> events.Ev_EnvironmentEvent + 3, // 1: events.Event.taskEvent:type_name -> events.Ev_TaskEvent + 4, // 2: events.Event.roleEvent:type_name -> events.Ev_RoleEvent + 1, // 3: events.Event.frameworkFailureEvent:type_name -> events.Ev_MetaEvent_FrameworkFailure + 0, // 4: events.Event.mesosHeartbeatEvent:type_name -> events.Ev_MetaEvent_MesosHeartbeat + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_protos_events_proto_init() } +func file_protos_events_proto_init() { + if File_protos_events_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protos_events_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Ev_MetaEvent_MesosHeartbeat); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_events_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Ev_MetaEvent_FrameworkFailure); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_events_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Ev_EnvironmentEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_events_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Ev_TaskEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_events_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Ev_RoleEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_events_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Event); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_protos_events_proto_msgTypes[5].OneofWrappers = []interface{}{ + (*Event_EnvironmentEvent)(nil), + (*Event_TaskEvent)(nil), + (*Event_RoleEvent)(nil), + (*Event_FrameworkFailureEvent)(nil), + (*Event_MesosHeartbeatEvent)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protos_events_proto_rawDesc, + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protos_events_proto_goTypes, + DependencyIndexes: file_protos_events_proto_depIdxs, + MessageInfos: file_protos_events_proto_msgTypes, + }.Build() + File_protos_events_proto = out.File + file_protos_events_proto_rawDesc = nil + file_protos_events_proto_goTypes = nil + file_protos_events_proto_depIdxs = nil +} diff --git a/common/protos/events.proto b/common/protos/events.proto index 04ce4fbe9..2c3358088 100644 --- a/common/protos/events.proto +++ b/common/protos/events.proto @@ -30,7 +30,11 @@ option go_package = "github.com/AliceO2Group/Control/common/protos;pb"; //////////////// Common event messages /////////////// -message Event_MesosHeartbeat { +message Ev_MetaEvent_MesosHeartbeat { +} + +message Ev_MetaEvent_FrameworkFailure { + string message = 1; } message Ev_EnvironmentEvent { @@ -60,8 +64,10 @@ message Ev_RoleEvent { message Event { string timestamp = 1; oneof Payload { - Ev_EnvironmentEvent environmentEvent = 2; - Ev_TaskEvent taskEvent = 3; - Ev_RoleEvent roleEvent = 4; + Ev_EnvironmentEvent environmentEvent = 2; + Ev_TaskEvent taskEvent = 3; + Ev_RoleEvent roleEvent = 4; + Ev_MetaEvent_FrameworkFailure frameworkFailureEvent = 5; + Ev_MetaEvent_MesosHeartbeat mesosHeartbeatEvent = 6; } } diff --git a/core/protos/protoutils.go b/common/protos/protoutils.go similarity index 100% rename from core/protos/protoutils.go rename to common/protos/protoutils.go diff --git a/core/protos/o2control.pb.go b/core/protos/o2control.pb.go index d091ff4d4..c13fe8fe6 100644 --- a/core/protos/o2control.pb.go +++ b/core/protos/o2control.pb.go @@ -5421,147 +5421,147 @@ var file_protos_o2control_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xd6, 0x10, 0x0a, - 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x43, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x63, - 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5a, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, - 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x54, 0x65, 0x61, - 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, - 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, - 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x12, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, - 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, - 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x54, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, - 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x11, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, - 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x65, - 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x1a, 0x25, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, - 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, - 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4e, - 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1e, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, - 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, - 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, - 0x0a, 0x08, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x12, 0x66, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xd8, 0x10, 0x0a, + 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x5a, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, + 0x12, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x54, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, + 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x12, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, + 0x12, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x4c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x52, 0x0a, + 0x15, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x25, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, + 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, + 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, + 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, + 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x09, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, - 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x19, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x12, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0c, - 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x1e, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x12, 0x46, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, - 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x00, 0x12, 0x45, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, + 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x41, 0x64, 0x64, + 0x52, 0x65, 0x70, 0x6f, 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x52, + 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x47, - 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, + 0x12, 0x5a, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x16, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, - 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, - 0x12, 0x53, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x26, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x54, 0x0a, 0x22, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, - 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x72, 0x70, 0x63, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5a, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x72, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x1a, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x09, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x43, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, + 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x00, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x08, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, + 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, 0x61, + 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, + 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x11, 0x4d, 0x6f, 0x64, 0x69, + 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, + 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, + 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x54, 0x0a, 0x22, 0x63, 0x68, 0x2e, 0x63, 0x65, + 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x72, 0x70, 0x63, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5a, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, + 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, + 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5721,58 +5721,58 @@ var file_protos_o2control_proto_depIdxs = []int32{ 89, // 47: o2control.ListIntegratedServicesReply.services:type_name -> o2control.ListIntegratedServicesReply.ServicesEntry 57, // 48: o2control.WorkflowTemplateInfo.VarSpecMapEntry.value:type_name -> o2control.VarSpecMessage 74, // 49: o2control.ListIntegratedServicesReply.ServicesEntry.value:type_name -> o2control.IntegratedServiceInfo - 9, // 50: o2control.Control.TrackStatus:input_type -> o2control.StatusRequest - 14, // 51: o2control.Control.GetFrameworkInfo:input_type -> o2control.GetFrameworkInfoRequest - 17, // 52: o2control.Control.Teardown:input_type -> o2control.TeardownRequest - 19, // 53: o2control.Control.GetEnvironments:input_type -> o2control.GetEnvironmentsRequest - 24, // 54: o2control.Control.NewAutoEnvironment:input_type -> o2control.NewAutoEnvironmentRequest - 22, // 55: o2control.Control.NewEnvironment:input_type -> o2control.NewEnvironmentRequest - 26, // 56: o2control.Control.GetEnvironment:input_type -> o2control.GetEnvironmentRequest - 28, // 57: o2control.Control.ControlEnvironment:input_type -> o2control.ControlEnvironmentRequest - 30, // 58: o2control.Control.ModifyEnvironment:input_type -> o2control.ModifyEnvironmentRequest - 33, // 59: o2control.Control.DestroyEnvironment:input_type -> o2control.DestroyEnvironmentRequest - 72, // 60: o2control.Control.GetActiveDetectors:input_type -> o2control.Empty - 72, // 61: o2control.Control.GetAvailableDetectors:input_type -> o2control.Empty - 43, // 62: o2control.Control.GetTasks:input_type -> o2control.GetTasksRequest - 45, // 63: o2control.Control.GetTask:input_type -> o2control.GetTaskRequest - 51, // 64: o2control.Control.CleanupTasks:input_type -> o2control.CleanupTasksRequest - 53, // 65: o2control.Control.GetRoles:input_type -> o2control.GetRolesRequest - 56, // 66: o2control.Control.GetWorkflowTemplates:input_type -> o2control.GetWorkflowTemplatesRequest - 60, // 67: o2control.Control.ListRepos:input_type -> o2control.ListReposRequest - 63, // 68: o2control.Control.AddRepo:input_type -> o2control.AddRepoRequest - 65, // 69: o2control.Control.RemoveRepo:input_type -> o2control.RemoveRepoRequest - 67, // 70: o2control.Control.RefreshRepos:input_type -> o2control.RefreshReposRequest - 68, // 71: o2control.Control.SetDefaultRepo:input_type -> o2control.SetDefaultRepoRequest - 69, // 72: o2control.Control.SetGlobalDefaultRevision:input_type -> o2control.SetGlobalDefaultRevisionRequest - 70, // 73: o2control.Control.SetRepoDefaultRevision:input_type -> o2control.SetRepoDefaultRevisionRequest - 13, // 74: o2control.Control.Subscribe:input_type -> o2control.SubscribeRequest - 72, // 75: o2control.Control.GetIntegratedServices:input_type -> o2control.Empty - 10, // 76: o2control.Control.TrackStatus:output_type -> o2control.StatusReply - 16, // 77: o2control.Control.GetFrameworkInfo:output_type -> o2control.GetFrameworkInfoReply - 18, // 78: o2control.Control.Teardown:output_type -> o2control.TeardownReply - 20, // 79: o2control.Control.GetEnvironments:output_type -> o2control.GetEnvironmentsReply - 25, // 80: o2control.Control.NewAutoEnvironment:output_type -> o2control.NewAutoEnvironmentReply - 23, // 81: o2control.Control.NewEnvironment:output_type -> o2control.NewEnvironmentReply - 27, // 82: o2control.Control.GetEnvironment:output_type -> o2control.GetEnvironmentReply - 29, // 83: o2control.Control.ControlEnvironment:output_type -> o2control.ControlEnvironmentReply - 32, // 84: o2control.Control.ModifyEnvironment:output_type -> o2control.ModifyEnvironmentReply - 34, // 85: o2control.Control.DestroyEnvironment:output_type -> o2control.DestroyEnvironmentReply - 35, // 86: o2control.Control.GetActiveDetectors:output_type -> o2control.GetActiveDetectorsReply - 36, // 87: o2control.Control.GetAvailableDetectors:output_type -> o2control.GetAvailableDetectorsReply - 44, // 88: o2control.Control.GetTasks:output_type -> o2control.GetTasksReply - 46, // 89: o2control.Control.GetTask:output_type -> o2control.GetTaskReply - 52, // 90: o2control.Control.CleanupTasks:output_type -> o2control.CleanupTasksReply - 55, // 91: o2control.Control.GetRoles:output_type -> o2control.GetRolesReply - 59, // 92: o2control.Control.GetWorkflowTemplates:output_type -> o2control.GetWorkflowTemplatesReply - 62, // 93: o2control.Control.ListRepos:output_type -> o2control.ListReposReply - 64, // 94: o2control.Control.AddRepo:output_type -> o2control.AddRepoReply - 66, // 95: o2control.Control.RemoveRepo:output_type -> o2control.RemoveRepoReply - 72, // 96: o2control.Control.RefreshRepos:output_type -> o2control.Empty - 72, // 97: o2control.Control.SetDefaultRepo:output_type -> o2control.Empty - 72, // 98: o2control.Control.SetGlobalDefaultRevision:output_type -> o2control.Empty - 71, // 99: o2control.Control.SetRepoDefaultRevision:output_type -> o2control.SetRepoDefaultRevisionReply - 12, // 100: o2control.Control.Subscribe:output_type -> o2control.Event - 73, // 101: o2control.Control.GetIntegratedServices:output_type -> o2control.ListIntegratedServicesReply + 14, // 50: o2control.Control.GetFrameworkInfo:input_type -> o2control.GetFrameworkInfoRequest + 19, // 51: o2control.Control.GetEnvironments:input_type -> o2control.GetEnvironmentsRequest + 24, // 52: o2control.Control.NewAutoEnvironment:input_type -> o2control.NewAutoEnvironmentRequest + 22, // 53: o2control.Control.NewEnvironment:input_type -> o2control.NewEnvironmentRequest + 26, // 54: o2control.Control.GetEnvironment:input_type -> o2control.GetEnvironmentRequest + 28, // 55: o2control.Control.ControlEnvironment:input_type -> o2control.ControlEnvironmentRequest + 33, // 56: o2control.Control.DestroyEnvironment:input_type -> o2control.DestroyEnvironmentRequest + 72, // 57: o2control.Control.GetActiveDetectors:input_type -> o2control.Empty + 72, // 58: o2control.Control.GetAvailableDetectors:input_type -> o2control.Empty + 43, // 59: o2control.Control.GetTasks:input_type -> o2control.GetTasksRequest + 45, // 60: o2control.Control.GetTask:input_type -> o2control.GetTaskRequest + 51, // 61: o2control.Control.CleanupTasks:input_type -> o2control.CleanupTasksRequest + 53, // 62: o2control.Control.GetRoles:input_type -> o2control.GetRolesRequest + 56, // 63: o2control.Control.GetWorkflowTemplates:input_type -> o2control.GetWorkflowTemplatesRequest + 60, // 64: o2control.Control.ListRepos:input_type -> o2control.ListReposRequest + 63, // 65: o2control.Control.AddRepo:input_type -> o2control.AddRepoRequest + 65, // 66: o2control.Control.RemoveRepo:input_type -> o2control.RemoveRepoRequest + 67, // 67: o2control.Control.RefreshRepos:input_type -> o2control.RefreshReposRequest + 68, // 68: o2control.Control.SetDefaultRepo:input_type -> o2control.SetDefaultRepoRequest + 69, // 69: o2control.Control.SetGlobalDefaultRevision:input_type -> o2control.SetGlobalDefaultRevisionRequest + 70, // 70: o2control.Control.SetRepoDefaultRevision:input_type -> o2control.SetRepoDefaultRevisionRequest + 13, // 71: o2control.Control.Subscribe:input_type -> o2control.SubscribeRequest + 72, // 72: o2control.Control.GetIntegratedServices:input_type -> o2control.Empty + 9, // 73: o2control.Control.TrackStatus:input_type -> o2control.StatusRequest + 17, // 74: o2control.Control.Teardown:input_type -> o2control.TeardownRequest + 30, // 75: o2control.Control.ModifyEnvironment:input_type -> o2control.ModifyEnvironmentRequest + 16, // 76: o2control.Control.GetFrameworkInfo:output_type -> o2control.GetFrameworkInfoReply + 20, // 77: o2control.Control.GetEnvironments:output_type -> o2control.GetEnvironmentsReply + 25, // 78: o2control.Control.NewAutoEnvironment:output_type -> o2control.NewAutoEnvironmentReply + 23, // 79: o2control.Control.NewEnvironment:output_type -> o2control.NewEnvironmentReply + 27, // 80: o2control.Control.GetEnvironment:output_type -> o2control.GetEnvironmentReply + 29, // 81: o2control.Control.ControlEnvironment:output_type -> o2control.ControlEnvironmentReply + 34, // 82: o2control.Control.DestroyEnvironment:output_type -> o2control.DestroyEnvironmentReply + 35, // 83: o2control.Control.GetActiveDetectors:output_type -> o2control.GetActiveDetectorsReply + 36, // 84: o2control.Control.GetAvailableDetectors:output_type -> o2control.GetAvailableDetectorsReply + 44, // 85: o2control.Control.GetTasks:output_type -> o2control.GetTasksReply + 46, // 86: o2control.Control.GetTask:output_type -> o2control.GetTaskReply + 52, // 87: o2control.Control.CleanupTasks:output_type -> o2control.CleanupTasksReply + 55, // 88: o2control.Control.GetRoles:output_type -> o2control.GetRolesReply + 59, // 89: o2control.Control.GetWorkflowTemplates:output_type -> o2control.GetWorkflowTemplatesReply + 62, // 90: o2control.Control.ListRepos:output_type -> o2control.ListReposReply + 64, // 91: o2control.Control.AddRepo:output_type -> o2control.AddRepoReply + 66, // 92: o2control.Control.RemoveRepo:output_type -> o2control.RemoveRepoReply + 72, // 93: o2control.Control.RefreshRepos:output_type -> o2control.Empty + 72, // 94: o2control.Control.SetDefaultRepo:output_type -> o2control.Empty + 72, // 95: o2control.Control.SetGlobalDefaultRevision:output_type -> o2control.Empty + 71, // 96: o2control.Control.SetRepoDefaultRevision:output_type -> o2control.SetRepoDefaultRevisionReply + 12, // 97: o2control.Control.Subscribe:output_type -> o2control.Event + 73, // 98: o2control.Control.GetIntegratedServices:output_type -> o2control.ListIntegratedServicesReply + 10, // 99: o2control.Control.TrackStatus:output_type -> o2control.StatusReply + 18, // 100: o2control.Control.Teardown:output_type -> o2control.TeardownReply + 32, // 101: o2control.Control.ModifyEnvironment:output_type -> o2control.ModifyEnvironmentReply 76, // [76:102] is the sub-list for method output_type 50, // [50:76] is the sub-list for method input_type 50, // [50:50] is the sub-list for extension type_name diff --git a/core/protos/o2control_grpc.pb.go b/core/protos/o2control_grpc.pb.go index faa355ec7..12ce81f1a 100644 --- a/core/protos/o2control_grpc.pb.go +++ b/core/protos/o2control_grpc.pb.go @@ -42,15 +42,12 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Control_TrackStatus_FullMethodName = "/o2control.Control/TrackStatus" Control_GetFrameworkInfo_FullMethodName = "/o2control.Control/GetFrameworkInfo" - Control_Teardown_FullMethodName = "/o2control.Control/Teardown" Control_GetEnvironments_FullMethodName = "/o2control.Control/GetEnvironments" Control_NewAutoEnvironment_FullMethodName = "/o2control.Control/NewAutoEnvironment" Control_NewEnvironment_FullMethodName = "/o2control.Control/NewEnvironment" Control_GetEnvironment_FullMethodName = "/o2control.Control/GetEnvironment" Control_ControlEnvironment_FullMethodName = "/o2control.Control/ControlEnvironment" - Control_ModifyEnvironment_FullMethodName = "/o2control.Control/ModifyEnvironment" Control_DestroyEnvironment_FullMethodName = "/o2control.Control/DestroyEnvironment" Control_GetActiveDetectors_FullMethodName = "/o2control.Control/GetActiveDetectors" Control_GetAvailableDetectors_FullMethodName = "/o2control.Control/GetAvailableDetectors" @@ -68,21 +65,21 @@ const ( Control_SetRepoDefaultRevision_FullMethodName = "/o2control.Control/SetRepoDefaultRevision" Control_Subscribe_FullMethodName = "/o2control.Control/Subscribe" Control_GetIntegratedServices_FullMethodName = "/o2control.Control/GetIntegratedServices" + Control_TrackStatus_FullMethodName = "/o2control.Control/TrackStatus" + Control_Teardown_FullMethodName = "/o2control.Control/Teardown" + Control_ModifyEnvironment_FullMethodName = "/o2control.Control/ModifyEnvironment" ) // ControlClient is the client API for Control service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ControlClient interface { - TrackStatus(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (Control_TrackStatusClient, error) GetFrameworkInfo(ctx context.Context, in *GetFrameworkInfoRequest, opts ...grpc.CallOption) (*GetFrameworkInfoReply, error) - Teardown(ctx context.Context, in *TeardownRequest, opts ...grpc.CallOption) (*TeardownReply, error) GetEnvironments(ctx context.Context, in *GetEnvironmentsRequest, opts ...grpc.CallOption) (*GetEnvironmentsReply, error) NewAutoEnvironment(ctx context.Context, in *NewAutoEnvironmentRequest, opts ...grpc.CallOption) (*NewAutoEnvironmentReply, error) NewEnvironment(ctx context.Context, in *NewEnvironmentRequest, opts ...grpc.CallOption) (*NewEnvironmentReply, error) GetEnvironment(ctx context.Context, in *GetEnvironmentRequest, opts ...grpc.CallOption) (*GetEnvironmentReply, error) ControlEnvironment(ctx context.Context, in *ControlEnvironmentRequest, opts ...grpc.CallOption) (*ControlEnvironmentReply, error) - ModifyEnvironment(ctx context.Context, in *ModifyEnvironmentRequest, opts ...grpc.CallOption) (*ModifyEnvironmentReply, error) DestroyEnvironment(ctx context.Context, in *DestroyEnvironmentRequest, opts ...grpc.CallOption) (*DestroyEnvironmentReply, error) GetActiveDetectors(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetActiveDetectorsReply, error) GetAvailableDetectors(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetAvailableDetectorsReply, error) @@ -100,6 +97,10 @@ type ControlClient interface { SetRepoDefaultRevision(ctx context.Context, in *SetRepoDefaultRevisionRequest, opts ...grpc.CallOption) (*SetRepoDefaultRevisionReply, error) Subscribe(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (Control_SubscribeClient, error) GetIntegratedServices(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ListIntegratedServicesReply, error) + // Reserved and not implemented: + TrackStatus(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (Control_TrackStatusClient, error) + Teardown(ctx context.Context, in *TeardownRequest, opts ...grpc.CallOption) (*TeardownReply, error) + ModifyEnvironment(ctx context.Context, in *ModifyEnvironmentRequest, opts ...grpc.CallOption) (*ModifyEnvironmentReply, error) } type controlClient struct { @@ -110,38 +111,6 @@ func NewControlClient(cc grpc.ClientConnInterface) ControlClient { return &controlClient{cc} } -func (c *controlClient) TrackStatus(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (Control_TrackStatusClient, error) { - stream, err := c.cc.NewStream(ctx, &Control_ServiceDesc.Streams[0], Control_TrackStatus_FullMethodName, opts...) - if err != nil { - return nil, err - } - x := &controlTrackStatusClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Control_TrackStatusClient interface { - Recv() (*StatusReply, error) - grpc.ClientStream -} - -type controlTrackStatusClient struct { - grpc.ClientStream -} - -func (x *controlTrackStatusClient) Recv() (*StatusReply, error) { - m := new(StatusReply) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - func (c *controlClient) GetFrameworkInfo(ctx context.Context, in *GetFrameworkInfoRequest, opts ...grpc.CallOption) (*GetFrameworkInfoReply, error) { out := new(GetFrameworkInfoReply) err := c.cc.Invoke(ctx, Control_GetFrameworkInfo_FullMethodName, in, out, opts...) @@ -151,15 +120,6 @@ func (c *controlClient) GetFrameworkInfo(ctx context.Context, in *GetFrameworkIn return out, nil } -func (c *controlClient) Teardown(ctx context.Context, in *TeardownRequest, opts ...grpc.CallOption) (*TeardownReply, error) { - out := new(TeardownReply) - err := c.cc.Invoke(ctx, Control_Teardown_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *controlClient) GetEnvironments(ctx context.Context, in *GetEnvironmentsRequest, opts ...grpc.CallOption) (*GetEnvironmentsReply, error) { out := new(GetEnvironmentsReply) err := c.cc.Invoke(ctx, Control_GetEnvironments_FullMethodName, in, out, opts...) @@ -205,15 +165,6 @@ func (c *controlClient) ControlEnvironment(ctx context.Context, in *ControlEnvir return out, nil } -func (c *controlClient) ModifyEnvironment(ctx context.Context, in *ModifyEnvironmentRequest, opts ...grpc.CallOption) (*ModifyEnvironmentReply, error) { - out := new(ModifyEnvironmentReply) - err := c.cc.Invoke(ctx, Control_ModifyEnvironment_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *controlClient) DestroyEnvironment(ctx context.Context, in *DestroyEnvironmentRequest, opts ...grpc.CallOption) (*DestroyEnvironmentReply, error) { out := new(DestroyEnvironmentReply) err := c.cc.Invoke(ctx, Control_DestroyEnvironment_FullMethodName, in, out, opts...) @@ -350,7 +301,7 @@ func (c *controlClient) SetRepoDefaultRevision(ctx context.Context, in *SetRepoD } func (c *controlClient) Subscribe(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (Control_SubscribeClient, error) { - stream, err := c.cc.NewStream(ctx, &Control_ServiceDesc.Streams[1], Control_Subscribe_FullMethodName, opts...) + stream, err := c.cc.NewStream(ctx, &Control_ServiceDesc.Streams[0], Control_Subscribe_FullMethodName, opts...) if err != nil { return nil, err } @@ -390,19 +341,66 @@ func (c *controlClient) GetIntegratedServices(ctx context.Context, in *Empty, op return out, nil } +func (c *controlClient) TrackStatus(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (Control_TrackStatusClient, error) { + stream, err := c.cc.NewStream(ctx, &Control_ServiceDesc.Streams[1], Control_TrackStatus_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &controlTrackStatusClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type Control_TrackStatusClient interface { + Recv() (*StatusReply, error) + grpc.ClientStream +} + +type controlTrackStatusClient struct { + grpc.ClientStream +} + +func (x *controlTrackStatusClient) Recv() (*StatusReply, error) { + m := new(StatusReply) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *controlClient) Teardown(ctx context.Context, in *TeardownRequest, opts ...grpc.CallOption) (*TeardownReply, error) { + out := new(TeardownReply) + err := c.cc.Invoke(ctx, Control_Teardown_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *controlClient) ModifyEnvironment(ctx context.Context, in *ModifyEnvironmentRequest, opts ...grpc.CallOption) (*ModifyEnvironmentReply, error) { + out := new(ModifyEnvironmentReply) + err := c.cc.Invoke(ctx, Control_ModifyEnvironment_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ControlServer is the server API for Control service. // All implementations should embed UnimplementedControlServer // for forward compatibility type ControlServer interface { - TrackStatus(*StatusRequest, Control_TrackStatusServer) error GetFrameworkInfo(context.Context, *GetFrameworkInfoRequest) (*GetFrameworkInfoReply, error) - Teardown(context.Context, *TeardownRequest) (*TeardownReply, error) GetEnvironments(context.Context, *GetEnvironmentsRequest) (*GetEnvironmentsReply, error) NewAutoEnvironment(context.Context, *NewAutoEnvironmentRequest) (*NewAutoEnvironmentReply, error) NewEnvironment(context.Context, *NewEnvironmentRequest) (*NewEnvironmentReply, error) GetEnvironment(context.Context, *GetEnvironmentRequest) (*GetEnvironmentReply, error) ControlEnvironment(context.Context, *ControlEnvironmentRequest) (*ControlEnvironmentReply, error) - ModifyEnvironment(context.Context, *ModifyEnvironmentRequest) (*ModifyEnvironmentReply, error) DestroyEnvironment(context.Context, *DestroyEnvironmentRequest) (*DestroyEnvironmentReply, error) GetActiveDetectors(context.Context, *Empty) (*GetActiveDetectorsReply, error) GetAvailableDetectors(context.Context, *Empty) (*GetAvailableDetectorsReply, error) @@ -420,21 +418,19 @@ type ControlServer interface { SetRepoDefaultRevision(context.Context, *SetRepoDefaultRevisionRequest) (*SetRepoDefaultRevisionReply, error) Subscribe(*SubscribeRequest, Control_SubscribeServer) error GetIntegratedServices(context.Context, *Empty) (*ListIntegratedServicesReply, error) + // Reserved and not implemented: + TrackStatus(*StatusRequest, Control_TrackStatusServer) error + Teardown(context.Context, *TeardownRequest) (*TeardownReply, error) + ModifyEnvironment(context.Context, *ModifyEnvironmentRequest) (*ModifyEnvironmentReply, error) } // UnimplementedControlServer should be embedded to have forward compatible implementations. type UnimplementedControlServer struct { } -func (UnimplementedControlServer) TrackStatus(*StatusRequest, Control_TrackStatusServer) error { - return status.Errorf(codes.Unimplemented, "method TrackStatus not implemented") -} func (UnimplementedControlServer) GetFrameworkInfo(context.Context, *GetFrameworkInfoRequest) (*GetFrameworkInfoReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetFrameworkInfo not implemented") } -func (UnimplementedControlServer) Teardown(context.Context, *TeardownRequest) (*TeardownReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method Teardown not implemented") -} func (UnimplementedControlServer) GetEnvironments(context.Context, *GetEnvironmentsRequest) (*GetEnvironmentsReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetEnvironments not implemented") } @@ -450,9 +446,6 @@ func (UnimplementedControlServer) GetEnvironment(context.Context, *GetEnvironmen func (UnimplementedControlServer) ControlEnvironment(context.Context, *ControlEnvironmentRequest) (*ControlEnvironmentReply, error) { return nil, status.Errorf(codes.Unimplemented, "method ControlEnvironment not implemented") } -func (UnimplementedControlServer) ModifyEnvironment(context.Context, *ModifyEnvironmentRequest) (*ModifyEnvironmentReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method ModifyEnvironment not implemented") -} func (UnimplementedControlServer) DestroyEnvironment(context.Context, *DestroyEnvironmentRequest) (*DestroyEnvironmentReply, error) { return nil, status.Errorf(codes.Unimplemented, "method DestroyEnvironment not implemented") } @@ -504,6 +497,15 @@ func (UnimplementedControlServer) Subscribe(*SubscribeRequest, Control_Subscribe func (UnimplementedControlServer) GetIntegratedServices(context.Context, *Empty) (*ListIntegratedServicesReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetIntegratedServices not implemented") } +func (UnimplementedControlServer) TrackStatus(*StatusRequest, Control_TrackStatusServer) error { + return status.Errorf(codes.Unimplemented, "method TrackStatus not implemented") +} +func (UnimplementedControlServer) Teardown(context.Context, *TeardownRequest) (*TeardownReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Teardown not implemented") +} +func (UnimplementedControlServer) ModifyEnvironment(context.Context, *ModifyEnvironmentRequest) (*ModifyEnvironmentReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method ModifyEnvironment not implemented") +} // UnsafeControlServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ControlServer will @@ -516,27 +518,6 @@ func RegisterControlServer(s grpc.ServiceRegistrar, srv ControlServer) { s.RegisterService(&Control_ServiceDesc, srv) } -func _Control_TrackStatus_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StatusRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(ControlServer).TrackStatus(m, &controlTrackStatusServer{stream}) -} - -type Control_TrackStatusServer interface { - Send(*StatusReply) error - grpc.ServerStream -} - -type controlTrackStatusServer struct { - grpc.ServerStream -} - -func (x *controlTrackStatusServer) Send(m *StatusReply) error { - return x.ServerStream.SendMsg(m) -} - func _Control_GetFrameworkInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetFrameworkInfoRequest) if err := dec(in); err != nil { @@ -555,24 +536,6 @@ func _Control_GetFrameworkInfo_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } -func _Control_Teardown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TeardownRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ControlServer).Teardown(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Control_Teardown_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ControlServer).Teardown(ctx, req.(*TeardownRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Control_GetEnvironments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetEnvironmentsRequest) if err := dec(in); err != nil { @@ -663,24 +626,6 @@ func _Control_ControlEnvironment_Handler(srv interface{}, ctx context.Context, d return interceptor(ctx, in, info, handler) } -func _Control_ModifyEnvironment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ModifyEnvironmentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ControlServer).ModifyEnvironment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Control_ModifyEnvironment_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ControlServer).ModifyEnvironment(ctx, req.(*ModifyEnvironmentRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Control_DestroyEnvironment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DestroyEnvironmentRequest) if err := dec(in); err != nil { @@ -990,6 +935,63 @@ func _Control_GetIntegratedServices_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _Control_TrackStatus_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(StatusRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ControlServer).TrackStatus(m, &controlTrackStatusServer{stream}) +} + +type Control_TrackStatusServer interface { + Send(*StatusReply) error + grpc.ServerStream +} + +type controlTrackStatusServer struct { + grpc.ServerStream +} + +func (x *controlTrackStatusServer) Send(m *StatusReply) error { + return x.ServerStream.SendMsg(m) +} + +func _Control_Teardown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TeardownRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).Teardown(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Control_Teardown_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).Teardown(ctx, req.(*TeardownRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Control_ModifyEnvironment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ModifyEnvironmentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).ModifyEnvironment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Control_ModifyEnvironment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).ModifyEnvironment(ctx, req.(*ModifyEnvironmentRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Control_ServiceDesc is the grpc.ServiceDesc for Control service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1001,10 +1003,6 @@ var Control_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetFrameworkInfo", Handler: _Control_GetFrameworkInfo_Handler, }, - { - MethodName: "Teardown", - Handler: _Control_Teardown_Handler, - }, { MethodName: "GetEnvironments", Handler: _Control_GetEnvironments_Handler, @@ -1025,10 +1023,6 @@ var Control_ServiceDesc = grpc.ServiceDesc{ MethodName: "ControlEnvironment", Handler: _Control_ControlEnvironment_Handler, }, - { - MethodName: "ModifyEnvironment", - Handler: _Control_ModifyEnvironment_Handler, - }, { MethodName: "DestroyEnvironment", Handler: _Control_DestroyEnvironment_Handler, @@ -1093,16 +1087,24 @@ var Control_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetIntegratedServices", Handler: _Control_GetIntegratedServices_Handler, }, + { + MethodName: "Teardown", + Handler: _Control_Teardown_Handler, + }, + { + MethodName: "ModifyEnvironment", + Handler: _Control_ModifyEnvironment_Handler, + }, }, Streams: []grpc.StreamDesc{ { - StreamName: "TrackStatus", - Handler: _Control_TrackStatus_Handler, + StreamName: "Subscribe", + Handler: _Control_Subscribe_Handler, ServerStreams: true, }, { - StreamName: "Subscribe", - Handler: _Control_Subscribe_Handler, + StreamName: "TrackStatus", + Handler: _Control_TrackStatus_Handler, ServerStreams: true, }, }, diff --git a/core/server.go b/core/server.go index edd337460..376f4eb95 100644 --- a/core/server.go +++ b/core/server.go @@ -22,7 +22,7 @@ * Intergovernmental Organization or submit itself to any jurisdiction. */ -//go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative --go-grpc_out=require_unimplemented_servers=false:. protos/o2control.proto +//go:generate protoc -I=./ -I=../common/ --go_out=. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative --go-grpc_out=require_unimplemented_servers=false:. protos/o2control.proto package core From 0f92acbdab2d9267b071968641bea297d94bbd18 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 16 Feb 2023 14:40:08 +0100 Subject: [PATCH 04/43] [core] Update events.proto+o2control.proto with NewEnvironmentAsync --- common/protos/events.proto | 4 +++- core/protos/o2control.proto | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/common/protos/events.proto b/common/protos/events.proto index 2c3358088..cc9fc3fb2 100644 --- a/common/protos/events.proto +++ b/common/protos/events.proto @@ -43,6 +43,8 @@ message Ev_EnvironmentEvent { uint32 currentRunNumber = 3; string error = 4; string message = 5; + string transition = 6; + string transitionStep = 7; } message Ev_TaskEvent { @@ -62,7 +64,7 @@ message Ev_RoleEvent { } message Event { - string timestamp = 1; + int64 timestamp = 1; oneof Payload { Ev_EnvironmentEvent environmentEvent = 2; Ev_TaskEvent taskEvent = 3; diff --git a/core/protos/o2control.proto b/core/protos/o2control.proto index 52a730b01..6b17a3ac7 100644 --- a/core/protos/o2control.proto +++ b/core/protos/o2control.proto @@ -71,6 +71,8 @@ service Control { rpc GetActiveDetectors (Empty) returns (GetActiveDetectorsReply) {} rpc GetAvailableDetectors (Empty) returns (GetAvailableDetectorsReply) {} + rpc NewEnvironmentAsync (NewEnvironmentRequest) returns (NewEnvironmentReply) {} + // rpc SetEnvironmentProperties (SetEnvironmentPropertiesRequest) returns (SetEnvironmentPropertiesReply) {} // rpc GetEnvironmentProperties (GetEnvironmentPropertiesRequest) returns (GetEnvironmentPropertiesReply) {} From cf40d757aea73b2ede6568c334577dd4ecc45b9d Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Tue, 20 Feb 2024 14:38:21 +0100 Subject: [PATCH 05/43] [common] Use events.proto in o2control.proto --- coconut/protos/o2control.pb.go | 3311 ++++++++++++------------------ common/protos/events.pb.go | 129 +- common/protos/protoutils.go | 3 +- core/environment/eventStream.go | 2 +- core/protos/o2control.pb.go | 3311 ++++++++++++------------------ core/protos/o2control.proto | 65 +- core/protos/o2control_grpc.pb.go | 112 +- 7 files changed, 2666 insertions(+), 4267 deletions(-) diff --git a/coconut/protos/o2control.pb.go b/coconut/protos/o2control.pb.go index c13fe8fe6..5b01e7a4e 100644 --- a/coconut/protos/o2control.pb.go +++ b/coconut/protos/o2control.pb.go @@ -30,6 +30,7 @@ package pb import ( + protos "github.com/AliceO2Group/Control/common/protos" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -43,57 +44,19 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -type StatusUpdate_Level int32 +// Symbols defined in public import of protos/events.proto. -const ( - StatusUpdate_DEBUG StatusUpdate_Level = 0 - StatusUpdate_INFO StatusUpdate_Level = 1 - StatusUpdate_WARNING StatusUpdate_Level = 2 - StatusUpdate_ERROR StatusUpdate_Level = 3 -) - -// Enum value maps for StatusUpdate_Level. -var ( - StatusUpdate_Level_name = map[int32]string{ - 0: "DEBUG", - 1: "INFO", - 2: "WARNING", - 3: "ERROR", - } - StatusUpdate_Level_value = map[string]int32{ - "DEBUG": 0, - "INFO": 1, - "WARNING": 2, - "ERROR": 3, - } -) - -func (x StatusUpdate_Level) Enum() *StatusUpdate_Level { - p := new(StatusUpdate_Level) - *p = x - return p -} - -func (x StatusUpdate_Level) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StatusUpdate_Level) Descriptor() protoreflect.EnumDescriptor { - return file_protos_o2control_proto_enumTypes[0].Descriptor() -} - -func (StatusUpdate_Level) Type() protoreflect.EnumType { - return &file_protos_o2control_proto_enumTypes[0] -} - -func (x StatusUpdate_Level) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use StatusUpdate_Level.Descriptor instead. -func (StatusUpdate_Level) EnumDescriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{6, 0} -} +type Ev_MetaEvent_MesosHeartbeat = protos.Ev_MetaEvent_MesosHeartbeat +type Ev_MetaEvent_FrameworkFailure = protos.Ev_MetaEvent_FrameworkFailure +type Ev_EnvironmentEvent = protos.Ev_EnvironmentEvent +type Ev_TaskEvent = protos.Ev_TaskEvent +type Ev_RoleEvent = protos.Ev_RoleEvent +type Event = protos.Event +type Event_EnvironmentEvent = protos.Event_EnvironmentEvent +type Event_TaskEvent = protos.Event_TaskEvent +type Event_RoleEvent = protos.Event_RoleEvent +type Event_FrameworkFailureEvent = protos.Event_FrameworkFailureEvent +type Event_MesosHeartbeatEvent = protos.Event_MesosHeartbeatEvent type ControlEnvironmentRequest_Optype int32 @@ -140,11 +103,11 @@ func (x ControlEnvironmentRequest_Optype) String() string { } func (ControlEnvironmentRequest_Optype) Descriptor() protoreflect.EnumDescriptor { - return file_protos_o2control_proto_enumTypes[1].Descriptor() + return file_protos_o2control_proto_enumTypes[0].Descriptor() } func (ControlEnvironmentRequest_Optype) Type() protoreflect.EnumType { - return &file_protos_o2control_proto_enumTypes[1] + return &file_protos_o2control_proto_enumTypes[0] } func (x ControlEnvironmentRequest_Optype) Number() protoreflect.EnumNumber { @@ -153,7 +116,7 @@ func (x ControlEnvironmentRequest_Optype) Number() protoreflect.EnumNumber { // Deprecated: Use ControlEnvironmentRequest_Optype.Descriptor instead. func (ControlEnvironmentRequest_Optype) EnumDescriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{23, 0} + return file_protos_o2control_proto_rawDescGZIP(), []int{15, 0} } type EnvironmentOperation_Optype int32 @@ -173,702 +136,153 @@ var ( } EnvironmentOperation_Optype_value = map[string]int32{ "NOOP": 0, - "REMOVE_ROLE": 3, - "ADD_ROLE": 4, - } -) - -func (x EnvironmentOperation_Optype) Enum() *EnvironmentOperation_Optype { - p := new(EnvironmentOperation_Optype) - *p = x - return p -} - -func (x EnvironmentOperation_Optype) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (EnvironmentOperation_Optype) Descriptor() protoreflect.EnumDescriptor { - return file_protos_o2control_proto_enumTypes[2].Descriptor() -} - -func (EnvironmentOperation_Optype) Type() protoreflect.EnumType { - return &file_protos_o2control_proto_enumTypes[2] -} - -func (x EnvironmentOperation_Optype) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use EnvironmentOperation_Optype.Descriptor instead. -func (EnvironmentOperation_Optype) EnumDescriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{26, 0} -} - -type VarSpecMessage_UiWidget int32 - -const ( - VarSpecMessage_editBox VarSpecMessage_UiWidget = 0 // plain string input line, can accept types number (like a spinBox) and string - VarSpecMessage_slider VarSpecMessage_UiWidget = 1 // input widget exclusively for numbers, range allowedValues[0]-[1] - VarSpecMessage_listBox VarSpecMessage_UiWidget = 2 // displays a list of items, can accept types number, string or list; if number/string ==> single selection, otherwise multiple selection allowed - VarSpecMessage_dropDownBox VarSpecMessage_UiWidget = 3 - VarSpecMessage_comboBox VarSpecMessage_UiWidget = 4 - VarSpecMessage_radioButtonBox VarSpecMessage_UiWidget = 5 - VarSpecMessage_checkBox VarSpecMessage_UiWidget = 6 -) - -// Enum value maps for VarSpecMessage_UiWidget. -var ( - VarSpecMessage_UiWidget_name = map[int32]string{ - 0: "editBox", - 1: "slider", - 2: "listBox", - 3: "dropDownBox", - 4: "comboBox", - 5: "radioButtonBox", - 6: "checkBox", - } - VarSpecMessage_UiWidget_value = map[string]int32{ - "editBox": 0, - "slider": 1, - "listBox": 2, - "dropDownBox": 3, - "comboBox": 4, - "radioButtonBox": 5, - "checkBox": 6, - } -) - -func (x VarSpecMessage_UiWidget) Enum() *VarSpecMessage_UiWidget { - p := new(VarSpecMessage_UiWidget) - *p = x - return p -} - -func (x VarSpecMessage_UiWidget) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VarSpecMessage_UiWidget) Descriptor() protoreflect.EnumDescriptor { - return file_protos_o2control_proto_enumTypes[3].Descriptor() -} - -func (VarSpecMessage_UiWidget) Type() protoreflect.EnumType { - return &file_protos_o2control_proto_enumTypes[3] -} - -func (x VarSpecMessage_UiWidget) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use VarSpecMessage_UiWidget.Descriptor instead. -func (VarSpecMessage_UiWidget) EnumDescriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{52, 0} -} - -type VarSpecMessage_Type int32 - -const ( - VarSpecMessage_string VarSpecMessage_Type = 0 - VarSpecMessage_number VarSpecMessage_Type = 1 - VarSpecMessage_bool VarSpecMessage_Type = 2 - VarSpecMessage_list VarSpecMessage_Type = 3 - VarSpecMessage_map VarSpecMessage_Type = 4 -) - -// Enum value maps for VarSpecMessage_Type. -var ( - VarSpecMessage_Type_name = map[int32]string{ - 0: "string", - 1: "number", - 2: "bool", - 3: "list", - 4: "map", - } - VarSpecMessage_Type_value = map[string]int32{ - "string": 0, - "number": 1, - "bool": 2, - "list": 3, - "map": 4, - } -) - -func (x VarSpecMessage_Type) Enum() *VarSpecMessage_Type { - p := new(VarSpecMessage_Type) - *p = x - return p -} - -func (x VarSpecMessage_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VarSpecMessage_Type) Descriptor() protoreflect.EnumDescriptor { - return file_protos_o2control_proto_enumTypes[4].Descriptor() -} - -func (VarSpecMessage_Type) Type() protoreflect.EnumType { - return &file_protos_o2control_proto_enumTypes[4] -} - -func (x VarSpecMessage_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use VarSpecMessage_Type.Descriptor instead. -func (VarSpecMessage_Type) EnumDescriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{52, 1} -} - -type Event_MesosHeartbeat struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Event_MesosHeartbeat) Reset() { - *x = Event_MesosHeartbeat{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Event_MesosHeartbeat) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Event_MesosHeartbeat) ProtoMessage() {} - -func (x *Event_MesosHeartbeat) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[0] - 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 Event_MesosHeartbeat.ProtoReflect.Descriptor instead. -func (*Event_MesosHeartbeat) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{0} -} - -type Ev_EnvironmentEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EnvironmentId string `protobuf:"bytes,1,opt,name=environmentId,proto3" json:"environmentId,omitempty"` - State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` - CurrentRunNumber uint32 `protobuf:"varint,3,opt,name=currentRunNumber,proto3" json:"currentRunNumber,omitempty"` - Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` - Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` -} - -func (x *Ev_EnvironmentEvent) Reset() { - *x = Ev_EnvironmentEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Ev_EnvironmentEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Ev_EnvironmentEvent) ProtoMessage() {} - -func (x *Ev_EnvironmentEvent) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[1] - 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 Ev_EnvironmentEvent.ProtoReflect.Descriptor instead. -func (*Ev_EnvironmentEvent) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{1} -} - -func (x *Ev_EnvironmentEvent) GetEnvironmentId() string { - if x != nil { - return x.EnvironmentId - } - return "" -} - -func (x *Ev_EnvironmentEvent) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *Ev_EnvironmentEvent) GetCurrentRunNumber() uint32 { - if x != nil { - return x.CurrentRunNumber - } - return 0 -} - -func (x *Ev_EnvironmentEvent) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -func (x *Ev_EnvironmentEvent) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type Ev_TaskEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Taskid string `protobuf:"bytes,2,opt,name=taskid,proto3" json:"taskid,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` - Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` - ClassName string `protobuf:"bytes,6,opt,name=className,proto3" json:"className,omitempty"` -} - -func (x *Ev_TaskEvent) Reset() { - *x = Ev_TaskEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Ev_TaskEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Ev_TaskEvent) ProtoMessage() {} - -func (x *Ev_TaskEvent) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[2] - 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 Ev_TaskEvent.ProtoReflect.Descriptor instead. -func (*Ev_TaskEvent) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{2} -} - -func (x *Ev_TaskEvent) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Ev_TaskEvent) GetTaskid() string { - if x != nil { - return x.Taskid - } - return "" -} - -func (x *Ev_TaskEvent) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *Ev_TaskEvent) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *Ev_TaskEvent) GetHostname() string { - if x != nil { - return x.Hostname - } - return "" -} - -func (x *Ev_TaskEvent) GetClassName() string { - if x != nil { - return x.ClassName - } - return "" -} - -type Ev_RoleEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - RolePath string `protobuf:"bytes,4,opt,name=rolePath,proto3" json:"rolePath,omitempty"` -} - -func (x *Ev_RoleEvent) Reset() { - *x = Ev_RoleEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Ev_RoleEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Ev_RoleEvent) ProtoMessage() {} - -func (x *Ev_RoleEvent) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[3] - 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 Ev_RoleEvent.ProtoReflect.Descriptor instead. -func (*Ev_RoleEvent) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{3} -} - -func (x *Ev_RoleEvent) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Ev_RoleEvent) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *Ev_RoleEvent) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *Ev_RoleEvent) GetRolePath() string { - if x != nil { - return x.RolePath - } - return "" -} - -// ////////////////////////////////////// -// Global status -// ////////////////////////////////////// -type StatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *StatusRequest) Reset() { - *x = StatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatusRequest) ProtoMessage() {} - -func (x *StatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[4] - 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 StatusRequest.ProtoReflect.Descriptor instead. -func (*StatusRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{4} -} - -type StatusReply struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` - StatusUpdates []*StatusUpdate `protobuf:"bytes,2,rep,name=statusUpdates,proto3" json:"statusUpdates,omitempty"` -} - -func (x *StatusReply) Reset() { - *x = StatusReply{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StatusReply) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatusReply) ProtoMessage() {} - -func (x *StatusReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[5] - 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 StatusReply.ProtoReflect.Descriptor instead. -func (*StatusReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{5} -} - -func (x *StatusReply) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *StatusReply) GetStatusUpdates() []*StatusUpdate { - if x != nil { - return x.StatusUpdates - } - return nil -} - -type StatusUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Level StatusUpdate_Level `protobuf:"varint,1,opt,name=level,proto3,enum=o2control.StatusUpdate_Level" json:"level,omitempty"` - // Types that are assignable to Event: - // - // *StatusUpdate_MesosHeartbeat - Event isStatusUpdate_Event `protobuf_oneof:"Event"` -} - -func (x *StatusUpdate) Reset() { - *x = StatusUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + "REMOVE_ROLE": 3, + "ADD_ROLE": 4, } -} - -func (x *StatusUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatusUpdate) ProtoMessage() {} +) -func (x *StatusUpdate) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[6] - 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) +func (x EnvironmentOperation_Optype) Enum() *EnvironmentOperation_Optype { + p := new(EnvironmentOperation_Optype) + *p = x + return p } -// Deprecated: Use StatusUpdate.ProtoReflect.Descriptor instead. -func (*StatusUpdate) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{6} +func (x EnvironmentOperation_Optype) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *StatusUpdate) GetLevel() StatusUpdate_Level { - if x != nil { - return x.Level - } - return StatusUpdate_DEBUG +func (EnvironmentOperation_Optype) Descriptor() protoreflect.EnumDescriptor { + return file_protos_o2control_proto_enumTypes[1].Descriptor() } -func (m *StatusUpdate) GetEvent() isStatusUpdate_Event { - if m != nil { - return m.Event - } - return nil +func (EnvironmentOperation_Optype) Type() protoreflect.EnumType { + return &file_protos_o2control_proto_enumTypes[1] } -func (x *StatusUpdate) GetMesosHeartbeat() *Event_MesosHeartbeat { - if x, ok := x.GetEvent().(*StatusUpdate_MesosHeartbeat); ok { - return x.MesosHeartbeat - } - return nil +func (x EnvironmentOperation_Optype) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -type isStatusUpdate_Event interface { - isStatusUpdate_Event() +// Deprecated: Use EnvironmentOperation_Optype.Descriptor instead. +func (EnvironmentOperation_Optype) EnumDescriptor() ([]byte, []int) { + return file_protos_o2control_proto_rawDescGZIP(), []int{18, 0} } -type StatusUpdate_MesosHeartbeat struct { - MesosHeartbeat *Event_MesosHeartbeat `protobuf:"bytes,2,opt,name=mesosHeartbeat,proto3,oneof"` //TODO add other events here and in events.proto -} +type VarSpecMessage_UiWidget int32 -func (*StatusUpdate_MesosHeartbeat) isStatusUpdate_Event() {} +const ( + VarSpecMessage_editBox VarSpecMessage_UiWidget = 0 // plain string input line, can accept types number (like a spinBox) and string + VarSpecMessage_slider VarSpecMessage_UiWidget = 1 // input widget exclusively for numbers, range allowedValues[0]-[1] + VarSpecMessage_listBox VarSpecMessage_UiWidget = 2 // displays a list of items, can accept types number, string or list; if number/string ==> single selection, otherwise multiple selection allowed + VarSpecMessage_dropDownBox VarSpecMessage_UiWidget = 3 + VarSpecMessage_comboBox VarSpecMessage_UiWidget = 4 + VarSpecMessage_radioButtonBox VarSpecMessage_UiWidget = 5 + VarSpecMessage_checkBox VarSpecMessage_UiWidget = 6 +) -type Event struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Enum value maps for VarSpecMessage_UiWidget. +var ( + VarSpecMessage_UiWidget_name = map[int32]string{ + 0: "editBox", + 1: "slider", + 2: "listBox", + 3: "dropDownBox", + 4: "comboBox", + 5: "radioButtonBox", + 6: "checkBox", + } + VarSpecMessage_UiWidget_value = map[string]int32{ + "editBox": 0, + "slider": 1, + "listBox": 2, + "dropDownBox": 3, + "comboBox": 4, + "radioButtonBox": 5, + "checkBox": 6, + } +) - Timestamp string `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Types that are assignable to Payload: - // - // *Event_EnvironmentEvent - // *Event_TaskEvent - // *Event_RoleEvent - Payload isEvent_Payload `protobuf_oneof:"Payload"` +func (x VarSpecMessage_UiWidget) Enum() *VarSpecMessage_UiWidget { + p := new(VarSpecMessage_UiWidget) + *p = x + return p } -func (x *Event) Reset() { - *x = Event{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x VarSpecMessage_UiWidget) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *Event) String() string { - return protoimpl.X.MessageStringOf(x) +func (VarSpecMessage_UiWidget) Descriptor() protoreflect.EnumDescriptor { + return file_protos_o2control_proto_enumTypes[2].Descriptor() } -func (*Event) ProtoMessage() {} - -func (x *Event) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[7] - 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) +func (VarSpecMessage_UiWidget) Type() protoreflect.EnumType { + return &file_protos_o2control_proto_enumTypes[2] } -// Deprecated: Use Event.ProtoReflect.Descriptor instead. -func (*Event) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{7} +func (x VarSpecMessage_UiWidget) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Event) GetTimestamp() string { - if x != nil { - return x.Timestamp - } - return "" +// Deprecated: Use VarSpecMessage_UiWidget.Descriptor instead. +func (VarSpecMessage_UiWidget) EnumDescriptor() ([]byte, []int) { + return file_protos_o2control_proto_rawDescGZIP(), []int{44, 0} } -func (m *Event) GetPayload() isEvent_Payload { - if m != nil { - return m.Payload - } - return nil -} +type VarSpecMessage_Type int32 -func (x *Event) GetEnvironmentEvent() *Ev_EnvironmentEvent { - if x, ok := x.GetPayload().(*Event_EnvironmentEvent); ok { - return x.EnvironmentEvent - } - return nil -} +const ( + VarSpecMessage_string VarSpecMessage_Type = 0 + VarSpecMessage_number VarSpecMessage_Type = 1 + VarSpecMessage_bool VarSpecMessage_Type = 2 + VarSpecMessage_list VarSpecMessage_Type = 3 + VarSpecMessage_map VarSpecMessage_Type = 4 +) -func (x *Event) GetTaskEvent() *Ev_TaskEvent { - if x, ok := x.GetPayload().(*Event_TaskEvent); ok { - return x.TaskEvent +// Enum value maps for VarSpecMessage_Type. +var ( + VarSpecMessage_Type_name = map[int32]string{ + 0: "string", + 1: "number", + 2: "bool", + 3: "list", + 4: "map", } - return nil -} - -func (x *Event) GetRoleEvent() *Ev_RoleEvent { - if x, ok := x.GetPayload().(*Event_RoleEvent); ok { - return x.RoleEvent + VarSpecMessage_Type_value = map[string]int32{ + "string": 0, + "number": 1, + "bool": 2, + "list": 3, + "map": 4, } - return nil -} +) -type isEvent_Payload interface { - isEvent_Payload() +func (x VarSpecMessage_Type) Enum() *VarSpecMessage_Type { + p := new(VarSpecMessage_Type) + *p = x + return p } -type Event_EnvironmentEvent struct { - EnvironmentEvent *Ev_EnvironmentEvent `protobuf:"bytes,2,opt,name=environmentEvent,proto3,oneof"` +func (x VarSpecMessage_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -type Event_TaskEvent struct { - TaskEvent *Ev_TaskEvent `protobuf:"bytes,3,opt,name=taskEvent,proto3,oneof"` +func (VarSpecMessage_Type) Descriptor() protoreflect.EnumDescriptor { + return file_protos_o2control_proto_enumTypes[3].Descriptor() } -type Event_RoleEvent struct { - RoleEvent *Ev_RoleEvent `protobuf:"bytes,4,opt,name=roleEvent,proto3,oneof"` +func (VarSpecMessage_Type) Type() protoreflect.EnumType { + return &file_protos_o2control_proto_enumTypes[3] } -func (*Event_EnvironmentEvent) isEvent_Payload() {} - -func (*Event_TaskEvent) isEvent_Payload() {} +func (x VarSpecMessage_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} -func (*Event_RoleEvent) isEvent_Payload() {} +// Deprecated: Use VarSpecMessage_Type.Descriptor instead. +func (VarSpecMessage_Type) EnumDescriptor() ([]byte, []int) { + return file_protos_o2control_proto_rawDescGZIP(), []int{44, 1} +} type SubscribeRequest struct { state protoimpl.MessageState @@ -881,7 +295,7 @@ type SubscribeRequest struct { func (x *SubscribeRequest) Reset() { *x = SubscribeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[8] + mi := &file_protos_o2control_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -894,7 +308,7 @@ func (x *SubscribeRequest) String() string { func (*SubscribeRequest) ProtoMessage() {} func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[8] + mi := &file_protos_o2control_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -907,7 +321,7 @@ func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeRequest.ProtoReflect.Descriptor instead. func (*SubscribeRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{8} + return file_protos_o2control_proto_rawDescGZIP(), []int{0} } func (x *SubscribeRequest) GetId() string { @@ -929,7 +343,7 @@ type GetFrameworkInfoRequest struct { func (x *GetFrameworkInfoRequest) Reset() { *x = GetFrameworkInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[9] + mi := &file_protos_o2control_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -942,7 +356,7 @@ func (x *GetFrameworkInfoRequest) String() string { func (*GetFrameworkInfoRequest) ProtoMessage() {} func (x *GetFrameworkInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[9] + mi := &file_protos_o2control_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -955,7 +369,7 @@ func (x *GetFrameworkInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFrameworkInfoRequest.ProtoReflect.Descriptor instead. func (*GetFrameworkInfoRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{9} + return file_protos_o2control_proto_rawDescGZIP(), []int{1} } type Version struct { @@ -974,7 +388,7 @@ type Version struct { func (x *Version) Reset() { *x = Version{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[10] + mi := &file_protos_o2control_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -987,7 +401,7 @@ func (x *Version) String() string { func (*Version) ProtoMessage() {} func (x *Version) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[10] + mi := &file_protos_o2control_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1000,7 +414,7 @@ func (x *Version) ProtoReflect() protoreflect.Message { // Deprecated: Use Version.ProtoReflect.Descriptor instead. func (*Version) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{10} + return file_protos_o2control_proto_rawDescGZIP(), []int{2} } func (x *Version) GetMajor() int32 { @@ -1066,7 +480,7 @@ type GetFrameworkInfoReply struct { func (x *GetFrameworkInfoReply) Reset() { *x = GetFrameworkInfoReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[11] + mi := &file_protos_o2control_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1079,7 +493,7 @@ func (x *GetFrameworkInfoReply) String() string { func (*GetFrameworkInfoReply) ProtoMessage() {} func (x *GetFrameworkInfoReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[11] + mi := &file_protos_o2control_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1092,7 +506,7 @@ func (x *GetFrameworkInfoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFrameworkInfoReply.ProtoReflect.Descriptor instead. func (*GetFrameworkInfoReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{11} + return file_protos_o2control_proto_rawDescGZIP(), []int{3} } func (x *GetFrameworkInfoReply) GetFrameworkId() string { @@ -1184,7 +598,7 @@ type TeardownRequest struct { func (x *TeardownRequest) Reset() { *x = TeardownRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[12] + mi := &file_protos_o2control_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1197,7 +611,7 @@ func (x *TeardownRequest) String() string { func (*TeardownRequest) ProtoMessage() {} func (x *TeardownRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[12] + mi := &file_protos_o2control_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1210,7 +624,7 @@ func (x *TeardownRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TeardownRequest.ProtoReflect.Descriptor instead. func (*TeardownRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{12} + return file_protos_o2control_proto_rawDescGZIP(), []int{4} } func (x *TeardownRequest) GetReason() string { @@ -1229,7 +643,7 @@ type TeardownReply struct { func (x *TeardownReply) Reset() { *x = TeardownReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[13] + mi := &file_protos_o2control_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1242,7 +656,7 @@ func (x *TeardownReply) String() string { func (*TeardownReply) ProtoMessage() {} func (x *TeardownReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[13] + mi := &file_protos_o2control_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1255,7 +669,7 @@ func (x *TeardownReply) ProtoReflect() protoreflect.Message { // Deprecated: Use TeardownReply.ProtoReflect.Descriptor instead. func (*TeardownReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{13} + return file_protos_o2control_proto_rawDescGZIP(), []int{5} } // ////////////////////////////////////// @@ -1273,7 +687,7 @@ type GetEnvironmentsRequest struct { func (x *GetEnvironmentsRequest) Reset() { *x = GetEnvironmentsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[14] + mi := &file_protos_o2control_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1286,7 +700,7 @@ func (x *GetEnvironmentsRequest) String() string { func (*GetEnvironmentsRequest) ProtoMessage() {} func (x *GetEnvironmentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[14] + mi := &file_protos_o2control_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1299,7 +713,7 @@ func (x *GetEnvironmentsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentsRequest.ProtoReflect.Descriptor instead. func (*GetEnvironmentsRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{14} + return file_protos_o2control_proto_rawDescGZIP(), []int{6} } func (x *GetEnvironmentsRequest) GetShowAll() bool { @@ -1328,7 +742,7 @@ type GetEnvironmentsReply struct { func (x *GetEnvironmentsReply) Reset() { *x = GetEnvironmentsReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[15] + mi := &file_protos_o2control_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1341,7 +755,7 @@ func (x *GetEnvironmentsReply) String() string { func (*GetEnvironmentsReply) ProtoMessage() {} func (x *GetEnvironmentsReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[15] + mi := &file_protos_o2control_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1354,7 +768,7 @@ func (x *GetEnvironmentsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentsReply.ProtoReflect.Descriptor instead. func (*GetEnvironmentsReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{15} + return file_protos_o2control_proto_rawDescGZIP(), []int{7} } func (x *GetEnvironmentsReply) GetFrameworkId() string { @@ -1399,7 +813,7 @@ type EnvironmentInfo struct { func (x *EnvironmentInfo) Reset() { *x = EnvironmentInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[16] + mi := &file_protos_o2control_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1412,7 +826,7 @@ func (x *EnvironmentInfo) String() string { func (*EnvironmentInfo) ProtoMessage() {} func (x *EnvironmentInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[16] + mi := &file_protos_o2control_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1425,7 +839,7 @@ func (x *EnvironmentInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentInfo.ProtoReflect.Descriptor instead. func (*EnvironmentInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{16} + return file_protos_o2control_proto_rawDescGZIP(), []int{8} } func (x *EnvironmentInfo) GetId() string { @@ -1567,7 +981,7 @@ type NewEnvironmentRequest struct { func (x *NewEnvironmentRequest) Reset() { *x = NewEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[17] + mi := &file_protos_o2control_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1580,7 +994,7 @@ func (x *NewEnvironmentRequest) String() string { func (*NewEnvironmentRequest) ProtoMessage() {} func (x *NewEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[17] + mi := &file_protos_o2control_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1593,7 +1007,7 @@ func (x *NewEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NewEnvironmentRequest.ProtoReflect.Descriptor instead. func (*NewEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{17} + return file_protos_o2control_proto_rawDescGZIP(), []int{9} } func (x *NewEnvironmentRequest) GetWorkflowTemplate() string { @@ -1629,7 +1043,7 @@ type NewEnvironmentReply struct { func (x *NewEnvironmentReply) Reset() { *x = NewEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[18] + mi := &file_protos_o2control_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1642,7 +1056,7 @@ func (x *NewEnvironmentReply) String() string { func (*NewEnvironmentReply) ProtoMessage() {} func (x *NewEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[18] + mi := &file_protos_o2control_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1655,7 +1069,7 @@ func (x *NewEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use NewEnvironmentReply.ProtoReflect.Descriptor instead. func (*NewEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{18} + return file_protos_o2control_proto_rawDescGZIP(), []int{10} } func (x *NewEnvironmentReply) GetEnvironment() *EnvironmentInfo { @@ -1685,7 +1099,7 @@ type NewAutoEnvironmentRequest struct { func (x *NewAutoEnvironmentRequest) Reset() { *x = NewAutoEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[19] + mi := &file_protos_o2control_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1112,7 @@ func (x *NewAutoEnvironmentRequest) String() string { func (*NewAutoEnvironmentRequest) ProtoMessage() {} func (x *NewAutoEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[19] + mi := &file_protos_o2control_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1125,7 @@ func (x *NewAutoEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NewAutoEnvironmentRequest.ProtoReflect.Descriptor instead. func (*NewAutoEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{19} + return file_protos_o2control_proto_rawDescGZIP(), []int{11} } func (x *NewAutoEnvironmentRequest) GetWorkflowTemplate() string { @@ -1744,7 +1158,7 @@ type NewAutoEnvironmentReply struct { func (x *NewAutoEnvironmentReply) Reset() { *x = NewAutoEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[20] + mi := &file_protos_o2control_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1757,7 +1171,7 @@ func (x *NewAutoEnvironmentReply) String() string { func (*NewAutoEnvironmentReply) ProtoMessage() {} func (x *NewAutoEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[20] + mi := &file_protos_o2control_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1770,7 +1184,7 @@ func (x *NewAutoEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use NewAutoEnvironmentReply.ProtoReflect.Descriptor instead. func (*NewAutoEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{20} + return file_protos_o2control_proto_rawDescGZIP(), []int{12} } type GetEnvironmentRequest struct { @@ -1785,7 +1199,7 @@ type GetEnvironmentRequest struct { func (x *GetEnvironmentRequest) Reset() { *x = GetEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[21] + mi := &file_protos_o2control_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1798,7 +1212,7 @@ func (x *GetEnvironmentRequest) String() string { func (*GetEnvironmentRequest) ProtoMessage() {} func (x *GetEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[21] + mi := &file_protos_o2control_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1811,7 +1225,7 @@ func (x *GetEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentRequest.ProtoReflect.Descriptor instead. func (*GetEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{21} + return file_protos_o2control_proto_rawDescGZIP(), []int{13} } func (x *GetEnvironmentRequest) GetId() string { @@ -1841,7 +1255,7 @@ type GetEnvironmentReply struct { func (x *GetEnvironmentReply) Reset() { *x = GetEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[22] + mi := &file_protos_o2control_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1854,7 +1268,7 @@ func (x *GetEnvironmentReply) String() string { func (*GetEnvironmentReply) ProtoMessage() {} func (x *GetEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[22] + mi := &file_protos_o2control_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1867,7 +1281,7 @@ func (x *GetEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentReply.ProtoReflect.Descriptor instead. func (*GetEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{22} + return file_protos_o2control_proto_rawDescGZIP(), []int{14} } func (x *GetEnvironmentReply) GetEnvironment() *EnvironmentInfo { @@ -1903,7 +1317,7 @@ type ControlEnvironmentRequest struct { func (x *ControlEnvironmentRequest) Reset() { *x = ControlEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[23] + mi := &file_protos_o2control_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1916,7 +1330,7 @@ func (x *ControlEnvironmentRequest) String() string { func (*ControlEnvironmentRequest) ProtoMessage() {} func (x *ControlEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[23] + mi := &file_protos_o2control_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1929,7 +1343,7 @@ func (x *ControlEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlEnvironmentRequest.ProtoReflect.Descriptor instead. func (*ControlEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{23} + return file_protos_o2control_proto_rawDescGZIP(), []int{15} } func (x *ControlEnvironmentRequest) GetId() string { @@ -1963,7 +1377,7 @@ type ControlEnvironmentReply struct { func (x *ControlEnvironmentReply) Reset() { *x = ControlEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[24] + mi := &file_protos_o2control_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1976,7 +1390,7 @@ func (x *ControlEnvironmentReply) String() string { func (*ControlEnvironmentReply) ProtoMessage() {} func (x *ControlEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[24] + mi := &file_protos_o2control_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1989,7 +1403,7 @@ func (x *ControlEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlEnvironmentReply.ProtoReflect.Descriptor instead. func (*ControlEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{24} + return file_protos_o2control_proto_rawDescGZIP(), []int{16} } func (x *ControlEnvironmentReply) GetId() string { @@ -2047,7 +1461,7 @@ type ModifyEnvironmentRequest struct { func (x *ModifyEnvironmentRequest) Reset() { *x = ModifyEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[25] + mi := &file_protos_o2control_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2060,7 +1474,7 @@ func (x *ModifyEnvironmentRequest) String() string { func (*ModifyEnvironmentRequest) ProtoMessage() {} func (x *ModifyEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[25] + mi := &file_protos_o2control_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2073,7 +1487,7 @@ func (x *ModifyEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ModifyEnvironmentRequest.ProtoReflect.Descriptor instead. func (*ModifyEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{25} + return file_protos_o2control_proto_rawDescGZIP(), []int{17} } func (x *ModifyEnvironmentRequest) GetId() string { @@ -2109,7 +1523,7 @@ type EnvironmentOperation struct { func (x *EnvironmentOperation) Reset() { *x = EnvironmentOperation{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[26] + mi := &file_protos_o2control_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2122,7 +1536,7 @@ func (x *EnvironmentOperation) String() string { func (*EnvironmentOperation) ProtoMessage() {} func (x *EnvironmentOperation) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[26] + mi := &file_protos_o2control_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2135,7 +1549,7 @@ func (x *EnvironmentOperation) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentOperation.ProtoReflect.Descriptor instead. func (*EnvironmentOperation) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{26} + return file_protos_o2control_proto_rawDescGZIP(), []int{18} } func (x *EnvironmentOperation) GetType() EnvironmentOperation_Optype { @@ -2165,7 +1579,7 @@ type ModifyEnvironmentReply struct { func (x *ModifyEnvironmentReply) Reset() { *x = ModifyEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[27] + mi := &file_protos_o2control_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2178,7 +1592,7 @@ func (x *ModifyEnvironmentReply) String() string { func (*ModifyEnvironmentReply) ProtoMessage() {} func (x *ModifyEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[27] + mi := &file_protos_o2control_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2191,7 +1605,7 @@ func (x *ModifyEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ModifyEnvironmentReply.ProtoReflect.Descriptor instead. func (*ModifyEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{27} + return file_protos_o2control_proto_rawDescGZIP(), []int{19} } func (x *ModifyEnvironmentReply) GetFailedOperations() []*EnvironmentOperation { @@ -2229,7 +1643,7 @@ type DestroyEnvironmentRequest struct { func (x *DestroyEnvironmentRequest) Reset() { *x = DestroyEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[28] + mi := &file_protos_o2control_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2242,7 +1656,7 @@ func (x *DestroyEnvironmentRequest) String() string { func (*DestroyEnvironmentRequest) ProtoMessage() {} func (x *DestroyEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[28] + mi := &file_protos_o2control_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2255,7 +1669,7 @@ func (x *DestroyEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DestroyEnvironmentRequest.ProtoReflect.Descriptor instead. func (*DestroyEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{28} + return file_protos_o2control_proto_rawDescGZIP(), []int{20} } func (x *DestroyEnvironmentRequest) GetId() string { @@ -2297,7 +1711,7 @@ type DestroyEnvironmentReply struct { func (x *DestroyEnvironmentReply) Reset() { *x = DestroyEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[29] + mi := &file_protos_o2control_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2310,7 +1724,7 @@ func (x *DestroyEnvironmentReply) String() string { func (*DestroyEnvironmentReply) ProtoMessage() {} func (x *DestroyEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[29] + mi := &file_protos_o2control_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2323,7 +1737,7 @@ func (x *DestroyEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use DestroyEnvironmentReply.ProtoReflect.Descriptor instead. func (*DestroyEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{29} + return file_protos_o2control_proto_rawDescGZIP(), []int{21} } func (x *DestroyEnvironmentReply) GetCleanupTasksReply() *CleanupTasksReply { @@ -2344,7 +1758,7 @@ type GetActiveDetectorsReply struct { func (x *GetActiveDetectorsReply) Reset() { *x = GetActiveDetectorsReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[30] + mi := &file_protos_o2control_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2357,7 +1771,7 @@ func (x *GetActiveDetectorsReply) String() string { func (*GetActiveDetectorsReply) ProtoMessage() {} func (x *GetActiveDetectorsReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[30] + mi := &file_protos_o2control_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2370,7 +1784,7 @@ func (x *GetActiveDetectorsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetActiveDetectorsReply.ProtoReflect.Descriptor instead. func (*GetActiveDetectorsReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{30} + return file_protos_o2control_proto_rawDescGZIP(), []int{22} } func (x *GetActiveDetectorsReply) GetDetectors() []string { @@ -2391,7 +1805,7 @@ type GetAvailableDetectorsReply struct { func (x *GetAvailableDetectorsReply) Reset() { *x = GetAvailableDetectorsReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[31] + mi := &file_protos_o2control_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2404,7 +1818,7 @@ func (x *GetAvailableDetectorsReply) String() string { func (*GetAvailableDetectorsReply) ProtoMessage() {} func (x *GetAvailableDetectorsReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[31] + mi := &file_protos_o2control_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2417,7 +1831,7 @@ func (x *GetAvailableDetectorsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAvailableDetectorsReply.ProtoReflect.Descriptor instead. func (*GetAvailableDetectorsReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{31} + return file_protos_o2control_proto_rawDescGZIP(), []int{23} } func (x *GetAvailableDetectorsReply) GetDetectors() []string { @@ -2444,7 +1858,7 @@ type SetEnvironmentPropertiesRequest struct { func (x *SetEnvironmentPropertiesRequest) Reset() { *x = SetEnvironmentPropertiesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[32] + mi := &file_protos_o2control_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2457,7 +1871,7 @@ func (x *SetEnvironmentPropertiesRequest) String() string { func (*SetEnvironmentPropertiesRequest) ProtoMessage() {} func (x *SetEnvironmentPropertiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[32] + mi := &file_protos_o2control_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2470,7 +1884,7 @@ func (x *SetEnvironmentPropertiesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetEnvironmentPropertiesRequest.ProtoReflect.Descriptor instead. func (*SetEnvironmentPropertiesRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{32} + return file_protos_o2control_proto_rawDescGZIP(), []int{24} } func (x *SetEnvironmentPropertiesRequest) GetId() string { @@ -2496,7 +1910,7 @@ type SetEnvironmentPropertiesReply struct { func (x *SetEnvironmentPropertiesReply) Reset() { *x = SetEnvironmentPropertiesReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[33] + mi := &file_protos_o2control_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2509,7 +1923,7 @@ func (x *SetEnvironmentPropertiesReply) String() string { func (*SetEnvironmentPropertiesReply) ProtoMessage() {} func (x *SetEnvironmentPropertiesReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[33] + mi := &file_protos_o2control_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2522,7 +1936,7 @@ func (x *SetEnvironmentPropertiesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SetEnvironmentPropertiesReply.ProtoReflect.Descriptor instead. func (*SetEnvironmentPropertiesReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{33} + return file_protos_o2control_proto_rawDescGZIP(), []int{25} } type GetEnvironmentPropertiesRequest struct { @@ -2541,7 +1955,7 @@ type GetEnvironmentPropertiesRequest struct { func (x *GetEnvironmentPropertiesRequest) Reset() { *x = GetEnvironmentPropertiesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[34] + mi := &file_protos_o2control_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2554,7 +1968,7 @@ func (x *GetEnvironmentPropertiesRequest) String() string { func (*GetEnvironmentPropertiesRequest) ProtoMessage() {} func (x *GetEnvironmentPropertiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[34] + mi := &file_protos_o2control_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2567,7 +1981,7 @@ func (x *GetEnvironmentPropertiesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentPropertiesRequest.ProtoReflect.Descriptor instead. func (*GetEnvironmentPropertiesRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{34} + return file_protos_o2control_proto_rawDescGZIP(), []int{26} } func (x *GetEnvironmentPropertiesRequest) GetId() string { @@ -2602,7 +2016,7 @@ type GetEnvironmentPropertiesReply struct { func (x *GetEnvironmentPropertiesReply) Reset() { *x = GetEnvironmentPropertiesReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[35] + mi := &file_protos_o2control_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2615,7 +2029,7 @@ func (x *GetEnvironmentPropertiesReply) String() string { func (*GetEnvironmentPropertiesReply) ProtoMessage() {} func (x *GetEnvironmentPropertiesReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[35] + mi := &file_protos_o2control_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2628,7 +2042,7 @@ func (x *GetEnvironmentPropertiesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentPropertiesReply.ProtoReflect.Descriptor instead. func (*GetEnvironmentPropertiesReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{35} + return file_protos_o2control_proto_rawDescGZIP(), []int{27} } func (x *GetEnvironmentPropertiesReply) GetProperties() map[string]string { @@ -2661,7 +2075,7 @@ type ShortTaskInfo struct { func (x *ShortTaskInfo) Reset() { *x = ShortTaskInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[36] + mi := &file_protos_o2control_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2674,7 +2088,7 @@ func (x *ShortTaskInfo) String() string { func (*ShortTaskInfo) ProtoMessage() {} func (x *ShortTaskInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[36] + mi := &file_protos_o2control_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2687,7 +2101,7 @@ func (x *ShortTaskInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ShortTaskInfo.ProtoReflect.Descriptor instead. func (*ShortTaskInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{36} + return file_protos_o2control_proto_rawDescGZIP(), []int{28} } func (x *ShortTaskInfo) GetName() string { @@ -2774,7 +2188,7 @@ type TaskDeploymentInfo struct { func (x *TaskDeploymentInfo) Reset() { *x = TaskDeploymentInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[37] + mi := &file_protos_o2control_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2787,7 +2201,7 @@ func (x *TaskDeploymentInfo) String() string { func (*TaskDeploymentInfo) ProtoMessage() {} func (x *TaskDeploymentInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[37] + mi := &file_protos_o2control_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2800,7 +2214,7 @@ func (x *TaskDeploymentInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskDeploymentInfo.ProtoReflect.Descriptor instead. func (*TaskDeploymentInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{37} + return file_protos_o2control_proto_rawDescGZIP(), []int{29} } func (x *TaskDeploymentInfo) GetHostname() string { @@ -2840,7 +2254,7 @@ type GetTasksRequest struct { func (x *GetTasksRequest) Reset() { *x = GetTasksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[38] + mi := &file_protos_o2control_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2853,7 +2267,7 @@ func (x *GetTasksRequest) String() string { func (*GetTasksRequest) ProtoMessage() {} func (x *GetTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[38] + mi := &file_protos_o2control_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2866,7 +2280,7 @@ func (x *GetTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTasksRequest.ProtoReflect.Descriptor instead. func (*GetTasksRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{38} + return file_protos_o2control_proto_rawDescGZIP(), []int{30} } type GetTasksReply struct { @@ -2880,7 +2294,7 @@ type GetTasksReply struct { func (x *GetTasksReply) Reset() { *x = GetTasksReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[39] + mi := &file_protos_o2control_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2893,7 +2307,7 @@ func (x *GetTasksReply) String() string { func (*GetTasksReply) ProtoMessage() {} func (x *GetTasksReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[39] + mi := &file_protos_o2control_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2906,7 +2320,7 @@ func (x *GetTasksReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTasksReply.ProtoReflect.Descriptor instead. func (*GetTasksReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{39} + return file_protos_o2control_proto_rawDescGZIP(), []int{31} } func (x *GetTasksReply) GetTasks() []*ShortTaskInfo { @@ -2927,7 +2341,7 @@ type GetTaskRequest struct { func (x *GetTaskRequest) Reset() { *x = GetTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[40] + mi := &file_protos_o2control_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2940,7 +2354,7 @@ func (x *GetTaskRequest) String() string { func (*GetTaskRequest) ProtoMessage() {} func (x *GetTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[40] + mi := &file_protos_o2control_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2953,7 +2367,7 @@ func (x *GetTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskRequest.ProtoReflect.Descriptor instead. func (*GetTaskRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{40} + return file_protos_o2control_proto_rawDescGZIP(), []int{32} } func (x *GetTaskRequest) GetTaskId() string { @@ -2974,7 +2388,7 @@ type GetTaskReply struct { func (x *GetTaskReply) Reset() { *x = GetTaskReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[41] + mi := &file_protos_o2control_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2987,7 +2401,7 @@ func (x *GetTaskReply) String() string { func (*GetTaskReply) ProtoMessage() {} func (x *GetTaskReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[41] + mi := &file_protos_o2control_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3000,7 +2414,7 @@ func (x *GetTaskReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskReply.ProtoReflect.Descriptor instead. func (*GetTaskReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{41} + return file_protos_o2control_proto_rawDescGZIP(), []int{33} } func (x *GetTaskReply) GetTask() *TaskInfo { @@ -3022,7 +2436,7 @@ type TaskClassInfo struct { func (x *TaskClassInfo) Reset() { *x = TaskClassInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[42] + mi := &file_protos_o2control_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3035,7 +2449,7 @@ func (x *TaskClassInfo) String() string { func (*TaskClassInfo) ProtoMessage() {} func (x *TaskClassInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[42] + mi := &file_protos_o2control_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3048,7 +2462,7 @@ func (x *TaskClassInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskClassInfo.ProtoReflect.Descriptor instead. func (*TaskClassInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{42} + return file_protos_o2control_proto_rawDescGZIP(), []int{34} } func (x *TaskClassInfo) GetName() string { @@ -3080,7 +2494,7 @@ type CommandInfo struct { func (x *CommandInfo) Reset() { *x = CommandInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[43] + mi := &file_protos_o2control_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3093,7 +2507,7 @@ func (x *CommandInfo) String() string { func (*CommandInfo) ProtoMessage() {} func (x *CommandInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[43] + mi := &file_protos_o2control_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3106,7 +2520,7 @@ func (x *CommandInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CommandInfo.ProtoReflect.Descriptor instead. func (*CommandInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{43} + return file_protos_o2control_proto_rawDescGZIP(), []int{35} } func (x *CommandInfo) GetEnv() []string { @@ -3157,7 +2571,7 @@ type ChannelInfo struct { func (x *ChannelInfo) Reset() { *x = ChannelInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[44] + mi := &file_protos_o2control_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3170,7 +2584,7 @@ func (x *ChannelInfo) String() string { func (*ChannelInfo) ProtoMessage() {} func (x *ChannelInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[44] + mi := &file_protos_o2control_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3183,7 +2597,7 @@ func (x *ChannelInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ChannelInfo.ProtoReflect.Descriptor instead. func (*ChannelInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{44} + return file_protos_o2control_proto_rawDescGZIP(), []int{36} } func (x *ChannelInfo) GetName() string { @@ -3225,7 +2639,7 @@ type TaskInfo struct { func (x *TaskInfo) Reset() { *x = TaskInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[45] + mi := &file_protos_o2control_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3238,7 +2652,7 @@ func (x *TaskInfo) String() string { func (*TaskInfo) ProtoMessage() {} func (x *TaskInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[45] + mi := &file_protos_o2control_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3251,7 +2665,7 @@ func (x *TaskInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskInfo.ProtoReflect.Descriptor instead. func (*TaskInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{45} + return file_protos_o2control_proto_rawDescGZIP(), []int{37} } func (x *TaskInfo) GetShortInfo() *ShortTaskInfo { @@ -3321,7 +2735,7 @@ type CleanupTasksRequest struct { func (x *CleanupTasksRequest) Reset() { *x = CleanupTasksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[46] + mi := &file_protos_o2control_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3334,7 +2748,7 @@ func (x *CleanupTasksRequest) String() string { func (*CleanupTasksRequest) ProtoMessage() {} func (x *CleanupTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[46] + mi := &file_protos_o2control_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3347,7 +2761,7 @@ func (x *CleanupTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CleanupTasksRequest.ProtoReflect.Descriptor instead. func (*CleanupTasksRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{46} + return file_protos_o2control_proto_rawDescGZIP(), []int{38} } func (x *CleanupTasksRequest) GetTaskIds() []string { @@ -3369,7 +2783,7 @@ type CleanupTasksReply struct { func (x *CleanupTasksReply) Reset() { *x = CleanupTasksReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[47] + mi := &file_protos_o2control_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3382,7 +2796,7 @@ func (x *CleanupTasksReply) String() string { func (*CleanupTasksReply) ProtoMessage() {} func (x *CleanupTasksReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[47] + mi := &file_protos_o2control_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3395,7 +2809,7 @@ func (x *CleanupTasksReply) ProtoReflect() protoreflect.Message { // Deprecated: Use CleanupTasksReply.ProtoReflect.Descriptor instead. func (*CleanupTasksReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{47} + return file_protos_o2control_proto_rawDescGZIP(), []int{39} } func (x *CleanupTasksReply) GetKilledTasks() []*ShortTaskInfo { @@ -3427,7 +2841,7 @@ type GetRolesRequest struct { func (x *GetRolesRequest) Reset() { *x = GetRolesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[48] + mi := &file_protos_o2control_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3440,7 +2854,7 @@ func (x *GetRolesRequest) String() string { func (*GetRolesRequest) ProtoMessage() {} func (x *GetRolesRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[48] + mi := &file_protos_o2control_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3453,7 +2867,7 @@ func (x *GetRolesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRolesRequest.ProtoReflect.Descriptor instead. func (*GetRolesRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{48} + return file_protos_o2control_proto_rawDescGZIP(), []int{40} } func (x *GetRolesRequest) GetEnvId() string { @@ -3491,7 +2905,7 @@ type RoleInfo struct { func (x *RoleInfo) Reset() { *x = RoleInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[49] + mi := &file_protos_o2control_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3504,7 +2918,7 @@ func (x *RoleInfo) String() string { func (*RoleInfo) ProtoMessage() {} func (x *RoleInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[49] + mi := &file_protos_o2control_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3517,7 +2931,7 @@ func (x *RoleInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RoleInfo.ProtoReflect.Descriptor instead. func (*RoleInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{49} + return file_protos_o2control_proto_rawDescGZIP(), []int{41} } func (x *RoleInfo) GetName() string { @@ -3608,7 +3022,7 @@ type GetRolesReply struct { func (x *GetRolesReply) Reset() { *x = GetRolesReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[50] + mi := &file_protos_o2control_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3621,7 +3035,7 @@ func (x *GetRolesReply) String() string { func (*GetRolesReply) ProtoMessage() {} func (x *GetRolesReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[50] + mi := &file_protos_o2control_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3634,7 +3048,7 @@ func (x *GetRolesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRolesReply.ProtoReflect.Descriptor instead. func (*GetRolesReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{50} + return file_protos_o2control_proto_rawDescGZIP(), []int{42} } func (x *GetRolesReply) GetRoles() []*RoleInfo { @@ -3659,7 +3073,7 @@ type GetWorkflowTemplatesRequest struct { func (x *GetWorkflowTemplatesRequest) Reset() { *x = GetWorkflowTemplatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[51] + mi := &file_protos_o2control_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3672,7 +3086,7 @@ func (x *GetWorkflowTemplatesRequest) String() string { func (*GetWorkflowTemplatesRequest) ProtoMessage() {} func (x *GetWorkflowTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[51] + mi := &file_protos_o2control_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3685,7 +3099,7 @@ func (x *GetWorkflowTemplatesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkflowTemplatesRequest.ProtoReflect.Descriptor instead. func (*GetWorkflowTemplatesRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{51} + return file_protos_o2control_proto_rawDescGZIP(), []int{43} } func (x *GetWorkflowTemplatesRequest) GetRepoPattern() string { @@ -3743,7 +3157,7 @@ type VarSpecMessage struct { func (x *VarSpecMessage) Reset() { *x = VarSpecMessage{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[52] + mi := &file_protos_o2control_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3756,7 +3170,7 @@ func (x *VarSpecMessage) String() string { func (*VarSpecMessage) ProtoMessage() {} func (x *VarSpecMessage) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[52] + mi := &file_protos_o2control_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3769,7 +3183,7 @@ func (x *VarSpecMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use VarSpecMessage.ProtoReflect.Descriptor instead. func (*VarSpecMessage) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{52} + return file_protos_o2control_proto_rawDescGZIP(), []int{44} } func (x *VarSpecMessage) GetDefaultValue() string { @@ -3857,7 +3271,7 @@ type WorkflowTemplateInfo struct { func (x *WorkflowTemplateInfo) Reset() { *x = WorkflowTemplateInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[53] + mi := &file_protos_o2control_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3870,7 +3284,7 @@ func (x *WorkflowTemplateInfo) String() string { func (*WorkflowTemplateInfo) ProtoMessage() {} func (x *WorkflowTemplateInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[53] + mi := &file_protos_o2control_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3883,7 +3297,7 @@ func (x *WorkflowTemplateInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkflowTemplateInfo.ProtoReflect.Descriptor instead. func (*WorkflowTemplateInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{53} + return file_protos_o2control_proto_rawDescGZIP(), []int{45} } func (x *WorkflowTemplateInfo) GetRepo() string { @@ -3932,7 +3346,7 @@ type GetWorkflowTemplatesReply struct { func (x *GetWorkflowTemplatesReply) Reset() { *x = GetWorkflowTemplatesReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[54] + mi := &file_protos_o2control_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3945,7 +3359,7 @@ func (x *GetWorkflowTemplatesReply) String() string { func (*GetWorkflowTemplatesReply) ProtoMessage() {} func (x *GetWorkflowTemplatesReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[54] + mi := &file_protos_o2control_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3958,7 +3372,7 @@ func (x *GetWorkflowTemplatesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkflowTemplatesReply.ProtoReflect.Descriptor instead. func (*GetWorkflowTemplatesReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{54} + return file_protos_o2control_proto_rawDescGZIP(), []int{46} } func (x *GetWorkflowTemplatesReply) GetWorkflowTemplates() []*WorkflowTemplateInfo { @@ -3979,7 +3393,7 @@ type ListReposRequest struct { func (x *ListReposRequest) Reset() { *x = ListReposRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[55] + mi := &file_protos_o2control_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3992,7 +3406,7 @@ func (x *ListReposRequest) String() string { func (*ListReposRequest) ProtoMessage() {} func (x *ListReposRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[55] + mi := &file_protos_o2control_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4005,7 +3419,7 @@ func (x *ListReposRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReposRequest.ProtoReflect.Descriptor instead. func (*ListReposRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{55} + return file_protos_o2control_proto_rawDescGZIP(), []int{47} } func (x *ListReposRequest) GetGetRevisions() bool { @@ -4029,7 +3443,7 @@ type RepoInfo struct { func (x *RepoInfo) Reset() { *x = RepoInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[56] + mi := &file_protos_o2control_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4042,7 +3456,7 @@ func (x *RepoInfo) String() string { func (*RepoInfo) ProtoMessage() {} func (x *RepoInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[56] + mi := &file_protos_o2control_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4055,7 +3469,7 @@ func (x *RepoInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RepoInfo.ProtoReflect.Descriptor instead. func (*RepoInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{56} + return file_protos_o2control_proto_rawDescGZIP(), []int{48} } func (x *RepoInfo) GetName() string { @@ -4098,7 +3512,7 @@ type ListReposReply struct { func (x *ListReposReply) Reset() { *x = ListReposReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[57] + mi := &file_protos_o2control_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4111,7 +3525,7 @@ func (x *ListReposReply) String() string { func (*ListReposReply) ProtoMessage() {} func (x *ListReposReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[57] + mi := &file_protos_o2control_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4124,7 +3538,7 @@ func (x *ListReposReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReposReply.ProtoReflect.Descriptor instead. func (*ListReposReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{57} + return file_protos_o2control_proto_rawDescGZIP(), []int{49} } func (x *ListReposReply) GetRepos() []*RepoInfo { @@ -4153,7 +3567,7 @@ type AddRepoRequest struct { func (x *AddRepoRequest) Reset() { *x = AddRepoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[58] + mi := &file_protos_o2control_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4166,7 +3580,7 @@ func (x *AddRepoRequest) String() string { func (*AddRepoRequest) ProtoMessage() {} func (x *AddRepoRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[58] + mi := &file_protos_o2control_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4179,7 +3593,7 @@ func (x *AddRepoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddRepoRequest.ProtoReflect.Descriptor instead. func (*AddRepoRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{58} + return file_protos_o2control_proto_rawDescGZIP(), []int{50} } func (x *AddRepoRequest) GetName() string { @@ -4208,7 +3622,7 @@ type AddRepoReply struct { func (x *AddRepoReply) Reset() { *x = AddRepoReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[59] + mi := &file_protos_o2control_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4221,7 +3635,7 @@ func (x *AddRepoReply) String() string { func (*AddRepoReply) ProtoMessage() {} func (x *AddRepoReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[59] + mi := &file_protos_o2control_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4234,7 +3648,7 @@ func (x *AddRepoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddRepoReply.ProtoReflect.Descriptor instead. func (*AddRepoReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{59} + return file_protos_o2control_proto_rawDescGZIP(), []int{51} } func (x *AddRepoReply) GetNewDefaultRevision() string { @@ -4262,7 +3676,7 @@ type RemoveRepoRequest struct { func (x *RemoveRepoRequest) Reset() { *x = RemoveRepoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[60] + mi := &file_protos_o2control_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4275,7 +3689,7 @@ func (x *RemoveRepoRequest) String() string { func (*RemoveRepoRequest) ProtoMessage() {} func (x *RemoveRepoRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[60] + mi := &file_protos_o2control_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4288,7 +3702,7 @@ func (x *RemoveRepoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveRepoRequest.ProtoReflect.Descriptor instead. func (*RemoveRepoRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{60} + return file_protos_o2control_proto_rawDescGZIP(), []int{52} } func (x *RemoveRepoRequest) GetIndex() int32 { @@ -4309,7 +3723,7 @@ type RemoveRepoReply struct { func (x *RemoveRepoReply) Reset() { *x = RemoveRepoReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[61] + mi := &file_protos_o2control_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4322,7 +3736,7 @@ func (x *RemoveRepoReply) String() string { func (*RemoveRepoReply) ProtoMessage() {} func (x *RemoveRepoReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[61] + mi := &file_protos_o2control_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4335,7 +3749,7 @@ func (x *RemoveRepoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveRepoReply.ProtoReflect.Descriptor instead. func (*RemoveRepoReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{61} + return file_protos_o2control_proto_rawDescGZIP(), []int{53} } func (x *RemoveRepoReply) GetNewDefaultRepo() string { @@ -4356,7 +3770,7 @@ type RefreshReposRequest struct { func (x *RefreshReposRequest) Reset() { *x = RefreshReposRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[62] + mi := &file_protos_o2control_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4369,7 +3783,7 @@ func (x *RefreshReposRequest) String() string { func (*RefreshReposRequest) ProtoMessage() {} func (x *RefreshReposRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[62] + mi := &file_protos_o2control_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4382,7 +3796,7 @@ func (x *RefreshReposRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshReposRequest.ProtoReflect.Descriptor instead. func (*RefreshReposRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{62} + return file_protos_o2control_proto_rawDescGZIP(), []int{54} } func (x *RefreshReposRequest) GetIndex() int32 { @@ -4403,7 +3817,7 @@ type SetDefaultRepoRequest struct { func (x *SetDefaultRepoRequest) Reset() { *x = SetDefaultRepoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[63] + mi := &file_protos_o2control_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4416,7 +3830,7 @@ func (x *SetDefaultRepoRequest) String() string { func (*SetDefaultRepoRequest) ProtoMessage() {} func (x *SetDefaultRepoRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[63] + mi := &file_protos_o2control_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4429,7 +3843,7 @@ func (x *SetDefaultRepoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetDefaultRepoRequest.ProtoReflect.Descriptor instead. func (*SetDefaultRepoRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{63} + return file_protos_o2control_proto_rawDescGZIP(), []int{55} } func (x *SetDefaultRepoRequest) GetIndex() int32 { @@ -4450,7 +3864,7 @@ type SetGlobalDefaultRevisionRequest struct { func (x *SetGlobalDefaultRevisionRequest) Reset() { *x = SetGlobalDefaultRevisionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[64] + mi := &file_protos_o2control_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4463,7 +3877,7 @@ func (x *SetGlobalDefaultRevisionRequest) String() string { func (*SetGlobalDefaultRevisionRequest) ProtoMessage() {} func (x *SetGlobalDefaultRevisionRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[64] + mi := &file_protos_o2control_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4476,7 +3890,7 @@ func (x *SetGlobalDefaultRevisionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetGlobalDefaultRevisionRequest.ProtoReflect.Descriptor instead. func (*SetGlobalDefaultRevisionRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{64} + return file_protos_o2control_proto_rawDescGZIP(), []int{56} } func (x *SetGlobalDefaultRevisionRequest) GetRevision() string { @@ -4498,7 +3912,7 @@ type SetRepoDefaultRevisionRequest struct { func (x *SetRepoDefaultRevisionRequest) Reset() { *x = SetRepoDefaultRevisionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[65] + mi := &file_protos_o2control_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4511,7 +3925,7 @@ func (x *SetRepoDefaultRevisionRequest) String() string { func (*SetRepoDefaultRevisionRequest) ProtoMessage() {} func (x *SetRepoDefaultRevisionRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[65] + mi := &file_protos_o2control_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4524,7 +3938,7 @@ func (x *SetRepoDefaultRevisionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetRepoDefaultRevisionRequest.ProtoReflect.Descriptor instead. func (*SetRepoDefaultRevisionRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{65} + return file_protos_o2control_proto_rawDescGZIP(), []int{57} } func (x *SetRepoDefaultRevisionRequest) GetIndex() int32 { @@ -4552,7 +3966,7 @@ type SetRepoDefaultRevisionReply struct { func (x *SetRepoDefaultRevisionReply) Reset() { *x = SetRepoDefaultRevisionReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[66] + mi := &file_protos_o2control_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4565,7 +3979,7 @@ func (x *SetRepoDefaultRevisionReply) String() string { func (*SetRepoDefaultRevisionReply) ProtoMessage() {} func (x *SetRepoDefaultRevisionReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[66] + mi := &file_protos_o2control_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4578,7 +3992,7 @@ func (x *SetRepoDefaultRevisionReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SetRepoDefaultRevisionReply.ProtoReflect.Descriptor instead. func (*SetRepoDefaultRevisionReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{66} + return file_protos_o2control_proto_rawDescGZIP(), []int{58} } func (x *SetRepoDefaultRevisionReply) GetInfo() string { @@ -4597,7 +4011,7 @@ type Empty struct { func (x *Empty) Reset() { *x = Empty{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[67] + mi := &file_protos_o2control_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4610,7 +4024,7 @@ func (x *Empty) String() string { func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[67] + mi := &file_protos_o2control_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4623,7 +4037,7 @@ func (x *Empty) ProtoReflect() protoreflect.Message { // Deprecated: Use Empty.ProtoReflect.Descriptor instead. func (*Empty) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{67} + return file_protos_o2control_proto_rawDescGZIP(), []int{59} } type ListIntegratedServicesReply struct { @@ -4637,7 +4051,7 @@ type ListIntegratedServicesReply struct { func (x *ListIntegratedServicesReply) Reset() { *x = ListIntegratedServicesReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[68] + mi := &file_protos_o2control_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4650,7 +4064,7 @@ func (x *ListIntegratedServicesReply) String() string { func (*ListIntegratedServicesReply) ProtoMessage() {} func (x *ListIntegratedServicesReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[68] + mi := &file_protos_o2control_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4663,7 +4077,7 @@ func (x *ListIntegratedServicesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ListIntegratedServicesReply.ProtoReflect.Descriptor instead. func (*ListIntegratedServicesReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{68} + return file_protos_o2control_proto_rawDescGZIP(), []int{60} } func (x *ListIntegratedServicesReply) GetServices() map[string]*IntegratedServiceInfo { @@ -4688,7 +4102,7 @@ type IntegratedServiceInfo struct { func (x *IntegratedServiceInfo) Reset() { *x = IntegratedServiceInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[69] + mi := &file_protos_o2control_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4701,7 +4115,7 @@ func (x *IntegratedServiceInfo) String() string { func (*IntegratedServiceInfo) ProtoMessage() {} func (x *IntegratedServiceInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[69] + mi := &file_protos_o2control_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4714,7 +4128,7 @@ func (x *IntegratedServiceInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use IntegratedServiceInfo.ProtoReflect.Descriptor instead. func (*IntegratedServiceInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{69} + return file_protos_o2control_proto_rawDescGZIP(), []int{61} } func (x *IntegratedServiceInfo) GetName() string { @@ -4757,811 +4171,748 @@ var File_protos_o2control_proto protoreflect.FileDescriptor var file_protos_o2control_proto_rawDesc = []byte{ 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x22, 0x16, 0x0a, 0x14, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, - 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x22, 0xad, 0x01, 0x0a, 0x13, - 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x0c, - 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x6c, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0x0f, - 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x62, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x49, 0x0a, 0x0e, 0x6d, 0x65, 0x73, - 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, - 0x61, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, - 0x62, 0x65, 0x61, 0x74, 0x22, 0x34, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x09, 0x0a, - 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, - 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x42, 0x07, 0x0a, 0x05, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x22, 0xf0, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4c, 0x0a, 0x10, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, - 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x22, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x14, 0x0a, - 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x22, 0xd1, 0x03, 0x0a, 0x15, + 0x72, 0x6f, 0x6c, 0x1a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x22, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, - 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x11, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x68, - 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x2c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, - 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x49, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x13, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x49, 0x6e, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, - 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, - 0x2e, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, - 0x29, 0x0a, 0x0f, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x0f, 0x0a, 0x0d, 0x54, 0x65, - 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x58, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, 0x6c, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x12, - 0x24, 0x0a, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x61, 0x73, 0x6b, - 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x78, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x20, 0x0a, - 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, - 0x3e, 0x0a, 0x0c, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0c, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, - 0xdb, 0x08, 0x0a, 0x0f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x57, 0x68, - 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x57, 0x68, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x74, - 0x61, 0x73, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, - 0x6f, 0x6f, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, - 0x6f, 0x6f, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x04, 0x76, 0x61, 0x72, - 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, + 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x22, 0xd1, 0x03, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x73, + 0x6b, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x34, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x49, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x49, 0x6e, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, + 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x22, 0x29, 0x0a, 0x0f, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x0f, 0x0a, 0x0d, + 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x58, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, + 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, 0x6c, + 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, + 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x61, + 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x78, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x45, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, + 0x64, 0x12, 0x3e, 0x0a, 0x0c, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, - 0x61, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x18, - 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x22, 0xdb, 0x08, 0x0a, 0x0f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x57, 0x68, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x57, 0x68, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, + 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, + 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x04, 0x76, + 0x61, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x76, 0x61, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, + 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x6c, 0x70, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x6c, 0x70, 0x73, 0x12, + 0x2c, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x48, 0x6f, 0x73, 0x74, 0x73, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, + 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x6c, 0x70, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x6c, 0x70, 0x73, 0x12, 0x2c, 0x0a, - 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, - 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x48, 0x6f, - 0x73, 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x54, - 0x61, 0x73, 0x6b, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x4f, 0x66, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x13, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x4f, 0x66, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x4f, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x4f, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x1a, - 0x3b, 0x0a, 0x0d, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, - 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x49, 0x0a, 0x1b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd4, 0x01, - 0x0a, 0x15, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, - 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, - 0x61, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x1a, 0x37, 0x0a, 0x09, 0x56, + 0x6f, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, + 0x66, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x13, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x4f, 0x66, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x4f, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, + 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x13, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x0b, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x65, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x22, 0xd4, 0x01, 0x0a, 0x19, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2a, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x76, - 0x61, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, 0x61, 0x72, 0x73, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a, - 0x37, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x19, 0x0a, 0x17, 0x4e, 0x65, 0x77, 0x41, - 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x53, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, - 0x73, 0x68, 0x6f, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x65, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x77, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x65, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x3c, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, - 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, - 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0xdb, 0x01, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x6d, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, - 0x41, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x10, 0x01, 0x12, 0x11, - 0x0a, 0x0d, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x10, - 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x10, 0x03, - 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x47, - 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x50, - 0x4c, 0x4f, 0x59, 0x10, 0x06, 0x22, 0xf3, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x4f, - 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x01, 0x0a, 0x18, - 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x6c, - 0x6c, 0x22, 0xa1, 0x01, 0x0a, 0x14, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x74, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, - 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, - 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x44, 0x44, 0x5f, 0x52, - 0x4f, 0x4c, 0x45, 0x10, 0x04, 0x22, 0x8b, 0x01, 0x0a, 0x16, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x4b, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x66, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x49, 0x0a, 0x1b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xd4, 0x01, 0x0a, 0x15, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x76, 0x61, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x1a, 0x37, 0x0a, + 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x13, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, + 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x22, 0xd4, 0x01, 0x0a, 0x19, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, - 0x30, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, - 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x65, 0x0a, 0x17, 0x44, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, - 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x11, 0x63, 0x6c, 0x65, - 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x37, - 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x74, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, - 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5a, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x73, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, - 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, - 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x58, 0x0a, 0x0a, 0x70, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xbc, 0x02, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, - 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, - 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, - 0x70, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x24, - 0x0a, 0x0d, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x53, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x53, 0x74, - 0x64, 0x6f, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, - 0x6c, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3f, 0x0a, 0x0d, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2e, 0x0a, - 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, - 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x28, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x74, 0x61, 0x73, 0x6b, - 0x22, 0x45, 0x0a, 0x0d, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x7d, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x65, 0x6c, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x4d, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xf0, 0x03, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x40, 0x0a, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x6e, 0x76, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x13, 0x43, 0x6c, 0x65, 0x61, - 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x11, 0x43, 0x6c, - 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x3a, 0x0a, 0x0b, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, - 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x72, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, - 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x43, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x65, 0x6e, 0x76, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, 0x53, 0x70, 0x65, 0x63, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x74, 0x68, 0x53, 0x70, 0x65, 0x63, 0x22, 0xd3, - 0x05, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x73, - 0x6b, 0x49, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, - 0x49, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, + 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, 0x61, 0x72, + 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x19, 0x0a, 0x17, 0x4e, 0x65, + 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x53, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a, + 0x0a, 0x10, 0x73, 0x68, 0x6f, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, + 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x77, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x65, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x13, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x2f, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, - 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x3d, - 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x31, 0x0a, - 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, 0x61, 0x72, 0x73, - 0x12, 0x3d, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, - 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x12, - 0x58, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, - 0x74, 0x61, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x63, - 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3b, 0x0a, 0x0d, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, - 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0xdb, 0x01, 0x0a, 0x19, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x6d, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x10, 0x01, + 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, + 0x59, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, + 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x0c, 0x0a, + 0x08, 0x47, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x44, + 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x10, 0x06, 0x22, 0xf3, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x65, 0x6e, + 0x64, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, + 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x01, + 0x0a, 0x18, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, + 0x41, 0x6c, 0x6c, 0x22, 0xa1, 0x01, 0x0a, 0x14, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x74, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x12, 0x08, + 0x0a, 0x04, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x4d, 0x4f, + 0x56, 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x44, 0x44, + 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x04, 0x22, 0x8b, 0x01, 0x0a, 0x16, 0x4d, 0x6f, 0x64, 0x69, + 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x4b, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, + 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x54, 0x61, 0x73, 0x6b, + 0x73, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x52, 0x75, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x65, 0x0a, 0x17, 0x44, 0x65, 0x73, + 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, + 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, + 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x11, 0x63, + 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x37, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, + 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3a, 0x0a, 0x1a, 0x47, 0x65, 0x74, + 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x74, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x74, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5a, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x73, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x47, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x1d, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x58, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x38, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, + 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbc, 0x02, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, + 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, + 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x6f, 0x63, + 0x6b, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, + 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, + 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x53, 0x74, 0x64, 0x6f, 0x75, + 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, + 0x53, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x61, 0x62, 0x6c, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3f, + 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x2e, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, + 0x28, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x74, 0x61, 0x73, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x74, 0x61, + 0x73, 0x6b, 0x22, 0x45, 0x0a, 0x0d, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x7d, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, + 0x65, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x68, 0x65, 0x6c, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x4d, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xf0, 0x03, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x09, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x40, 0x0a, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x74, 0x68, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x13, 0x43, 0x6c, + 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x11, + 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x12, 0x3a, 0x0a, 0x0b, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0b, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3c, 0x0a, + 0x0c, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, + 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x43, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x6e, 0x76, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, 0x53, 0x70, 0x65, 0x63, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x74, 0x68, 0x53, 0x70, 0x65, 0x63, + 0x22, 0xd3, 0x05, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x74, + 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, + 0x73, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, - 0x22, 0xc9, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x20, 0x0a, 0x0b, - 0x61, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x61, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x61, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, - 0x61, 0x6c, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x22, 0x9a, 0x04, 0x0a, - 0x0e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x61, - 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x3a, 0x0a, 0x06, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x72, 0x53, - 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x55, 0x69, 0x57, 0x69, 0x64, - 0x67, 0x65, 0x74, 0x52, 0x06, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, - 0x61, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x6e, 0x65, - 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, - 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, - 0x09, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x49, 0x66, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x49, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x66, 0x22, 0x71, 0x0a, 0x08, 0x55, 0x69, 0x57, - 0x69, 0x64, 0x67, 0x65, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x42, 0x6f, 0x78, - 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x10, 0x01, 0x12, 0x0b, - 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x78, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x64, - 0x72, 0x6f, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x42, 0x6f, 0x78, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, - 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x42, 0x6f, 0x78, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x72, 0x61, - 0x64, 0x69, 0x6f, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x42, 0x6f, 0x78, 0x10, 0x05, 0x12, 0x0c, - 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x6f, 0x78, 0x10, 0x06, 0x22, 0x3b, 0x0a, 0x04, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x10, 0x00, - 0x12, 0x0a, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, - 0x62, 0x6f, 0x6f, 0x6c, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x10, 0x03, - 0x12, 0x07, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x10, 0x04, 0x22, 0xaf, 0x02, 0x0a, 0x14, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4f, - 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x58, 0x0a, 0x0f, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, 0x45, + 0x12, 0x3d, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, + 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, + 0x31, 0x0a, 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, 0x61, + 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, + 0x73, 0x12, 0x58, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, + 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3b, 0x0a, + 0x0d, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x56, 0x61, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, 0x19, 0x47, - 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x44, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x53, 0x74, 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x72, 0x6f, 0x6c, + 0x65, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x20, + 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x61, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, + 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x22, 0x9a, + 0x04, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x3a, 0x0a, 0x06, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x61, + 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x55, 0x69, 0x57, + 0x69, 0x64, 0x67, 0x65, 0x74, 0x52, 0x06, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x70, 0x61, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, + 0x6e, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x1c, 0x0a, 0x09, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x49, 0x66, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x49, 0x66, 0x12, 0x1c, 0x0a, + 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x66, 0x22, 0x71, 0x0a, 0x08, 0x55, + 0x69, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x42, + 0x6f, 0x78, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x10, 0x01, + 0x12, 0x0b, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x78, 0x10, 0x02, 0x12, 0x0f, 0x0a, + 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x42, 0x6f, 0x78, 0x10, 0x03, 0x12, 0x0c, + 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x42, 0x6f, 0x78, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, + 0x72, 0x61, 0x64, 0x69, 0x6f, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x42, 0x6f, 0x78, 0x10, 0x05, + 0x12, 0x0c, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x6f, 0x78, 0x10, 0x06, 0x22, 0x3b, + 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x01, 0x12, 0x08, + 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x10, 0x04, 0x22, 0xaf, 0x02, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x36, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x67, - 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x80, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x70, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x71, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x12, - 0x34, 0x0a, 0x15, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, - 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x52, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x12, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x29, 0x0a, 0x11, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x22, 0x39, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x22, - 0x2b, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x2d, 0x0a, 0x15, - 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x3d, 0x0a, 0x1f, 0x53, - 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x1d, 0x53, 0x65, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, - 0x1b, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, - 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x1b, 0x4c, 0x69, - 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x50, 0x0a, 0x08, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x1a, 0x5d, 0x0a, 0x0d, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x15, 0x49, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x28, - 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xd8, 0x10, 0x0a, - 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x5a, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, - 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, - 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, - 0x12, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, - 0x54, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, - 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x4f, 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, + 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x58, 0x0a, 0x0f, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x36, 0x0a, 0x10, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x67, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x80, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x70, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x28, 0x0a, 0x0f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x71, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x12, 0x34, 0x0a, 0x15, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x15, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x52, 0x65, + 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, + 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x52, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x52, 0x65, + 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x12, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x29, 0x0a, 0x11, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x39, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x77, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x22, 0x2b, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x2d, + 0x0a, 0x15, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x3d, 0x0a, + 0x1f, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x1d, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x31, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x12, + 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, + 0x66, 0x6f, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x1b, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x50, 0x0a, 0x08, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x1a, 0x5d, 0x0a, + 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, + 0x15, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xeb, + 0x10, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x5a, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, + 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, + 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x60, 0x0a, 0x12, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x12, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, - 0x12, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, - 0x4c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x52, 0x0a, - 0x15, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x25, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, - 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x2e, + 0x60, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x00, 0x12, 0x4c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, + 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, + 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x52, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, + 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x25, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x13, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, + 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, - 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, - 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, - 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x12, 0x45, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, - 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, + 0x73, 0x6b, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, + 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x45, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x41, 0x64, 0x64, - 0x52, 0x65, 0x70, 0x6f, 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x52, - 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x12, 0x5a, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x16, - 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, + 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, + 0x6f, 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, + 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x00, 0x12, 0x42, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5a, 0x0a, + 0x18, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x09, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, - 0x43, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x08, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, - 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, 0x61, - 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, - 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x11, 0x4d, 0x6f, 0x64, 0x69, - 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, + 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x0d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x22, 0x00, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x10, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, + 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x54, 0x65, 0x61, + 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, + 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, + 0x11, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x54, 0x0a, 0x22, 0x63, 0x68, 0x2e, 0x63, 0x65, - 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x72, 0x70, 0x63, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5a, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, - 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, - 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x54, 0x0a, 0x22, + 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x72, 0x70, 0x63, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, + 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, + 0x70, 0x62, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5576,208 +4927,194 @@ func file_protos_o2control_proto_rawDescGZIP() []byte { return file_protos_o2control_proto_rawDescData } -var file_protos_o2control_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_protos_o2control_proto_msgTypes = make([]protoimpl.MessageInfo, 85) +var file_protos_o2control_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_protos_o2control_proto_msgTypes = make([]protoimpl.MessageInfo, 77) var file_protos_o2control_proto_goTypes = []interface{}{ - (StatusUpdate_Level)(0), // 0: o2control.StatusUpdate.Level - (ControlEnvironmentRequest_Optype)(0), // 1: o2control.ControlEnvironmentRequest.Optype - (EnvironmentOperation_Optype)(0), // 2: o2control.EnvironmentOperation.Optype - (VarSpecMessage_UiWidget)(0), // 3: o2control.VarSpecMessage.UiWidget - (VarSpecMessage_Type)(0), // 4: o2control.VarSpecMessage.Type - (*Event_MesosHeartbeat)(nil), // 5: o2control.Event_MesosHeartbeat - (*Ev_EnvironmentEvent)(nil), // 6: o2control.Ev_EnvironmentEvent - (*Ev_TaskEvent)(nil), // 7: o2control.Ev_TaskEvent - (*Ev_RoleEvent)(nil), // 8: o2control.Ev_RoleEvent - (*StatusRequest)(nil), // 9: o2control.StatusRequest - (*StatusReply)(nil), // 10: o2control.StatusReply - (*StatusUpdate)(nil), // 11: o2control.StatusUpdate - (*Event)(nil), // 12: o2control.Event - (*SubscribeRequest)(nil), // 13: o2control.SubscribeRequest - (*GetFrameworkInfoRequest)(nil), // 14: o2control.GetFrameworkInfoRequest - (*Version)(nil), // 15: o2control.Version - (*GetFrameworkInfoReply)(nil), // 16: o2control.GetFrameworkInfoReply - (*TeardownRequest)(nil), // 17: o2control.TeardownRequest - (*TeardownReply)(nil), // 18: o2control.TeardownReply - (*GetEnvironmentsRequest)(nil), // 19: o2control.GetEnvironmentsRequest - (*GetEnvironmentsReply)(nil), // 20: o2control.GetEnvironmentsReply - (*EnvironmentInfo)(nil), // 21: o2control.EnvironmentInfo - (*NewEnvironmentRequest)(nil), // 22: o2control.NewEnvironmentRequest - (*NewEnvironmentReply)(nil), // 23: o2control.NewEnvironmentReply - (*NewAutoEnvironmentRequest)(nil), // 24: o2control.NewAutoEnvironmentRequest - (*NewAutoEnvironmentReply)(nil), // 25: o2control.NewAutoEnvironmentReply - (*GetEnvironmentRequest)(nil), // 26: o2control.GetEnvironmentRequest - (*GetEnvironmentReply)(nil), // 27: o2control.GetEnvironmentReply - (*ControlEnvironmentRequest)(nil), // 28: o2control.ControlEnvironmentRequest - (*ControlEnvironmentReply)(nil), // 29: o2control.ControlEnvironmentReply - (*ModifyEnvironmentRequest)(nil), // 30: o2control.ModifyEnvironmentRequest - (*EnvironmentOperation)(nil), // 31: o2control.EnvironmentOperation - (*ModifyEnvironmentReply)(nil), // 32: o2control.ModifyEnvironmentReply - (*DestroyEnvironmentRequest)(nil), // 33: o2control.DestroyEnvironmentRequest - (*DestroyEnvironmentReply)(nil), // 34: o2control.DestroyEnvironmentReply - (*GetActiveDetectorsReply)(nil), // 35: o2control.GetActiveDetectorsReply - (*GetAvailableDetectorsReply)(nil), // 36: o2control.GetAvailableDetectorsReply - (*SetEnvironmentPropertiesRequest)(nil), // 37: o2control.SetEnvironmentPropertiesRequest - (*SetEnvironmentPropertiesReply)(nil), // 38: o2control.SetEnvironmentPropertiesReply - (*GetEnvironmentPropertiesRequest)(nil), // 39: o2control.GetEnvironmentPropertiesRequest - (*GetEnvironmentPropertiesReply)(nil), // 40: o2control.GetEnvironmentPropertiesReply - (*ShortTaskInfo)(nil), // 41: o2control.ShortTaskInfo - (*TaskDeploymentInfo)(nil), // 42: o2control.TaskDeploymentInfo - (*GetTasksRequest)(nil), // 43: o2control.GetTasksRequest - (*GetTasksReply)(nil), // 44: o2control.GetTasksReply - (*GetTaskRequest)(nil), // 45: o2control.GetTaskRequest - (*GetTaskReply)(nil), // 46: o2control.GetTaskReply - (*TaskClassInfo)(nil), // 47: o2control.TaskClassInfo - (*CommandInfo)(nil), // 48: o2control.CommandInfo - (*ChannelInfo)(nil), // 49: o2control.ChannelInfo - (*TaskInfo)(nil), // 50: o2control.TaskInfo - (*CleanupTasksRequest)(nil), // 51: o2control.CleanupTasksRequest - (*CleanupTasksReply)(nil), // 52: o2control.CleanupTasksReply - (*GetRolesRequest)(nil), // 53: o2control.GetRolesRequest - (*RoleInfo)(nil), // 54: o2control.RoleInfo - (*GetRolesReply)(nil), // 55: o2control.GetRolesReply - (*GetWorkflowTemplatesRequest)(nil), // 56: o2control.GetWorkflowTemplatesRequest - (*VarSpecMessage)(nil), // 57: o2control.VarSpecMessage - (*WorkflowTemplateInfo)(nil), // 58: o2control.WorkflowTemplateInfo - (*GetWorkflowTemplatesReply)(nil), // 59: o2control.GetWorkflowTemplatesReply - (*ListReposRequest)(nil), // 60: o2control.ListReposRequest - (*RepoInfo)(nil), // 61: o2control.RepoInfo - (*ListReposReply)(nil), // 62: o2control.ListReposReply - (*AddRepoRequest)(nil), // 63: o2control.AddRepoRequest - (*AddRepoReply)(nil), // 64: o2control.AddRepoReply - (*RemoveRepoRequest)(nil), // 65: o2control.RemoveRepoRequest - (*RemoveRepoReply)(nil), // 66: o2control.RemoveRepoReply - (*RefreshReposRequest)(nil), // 67: o2control.RefreshReposRequest - (*SetDefaultRepoRequest)(nil), // 68: o2control.SetDefaultRepoRequest - (*SetGlobalDefaultRevisionRequest)(nil), // 69: o2control.SetGlobalDefaultRevisionRequest - (*SetRepoDefaultRevisionRequest)(nil), // 70: o2control.SetRepoDefaultRevisionRequest - (*SetRepoDefaultRevisionReply)(nil), // 71: o2control.SetRepoDefaultRevisionReply - (*Empty)(nil), // 72: o2control.Empty - (*ListIntegratedServicesReply)(nil), // 73: o2control.ListIntegratedServicesReply - (*IntegratedServiceInfo)(nil), // 74: o2control.IntegratedServiceInfo - nil, // 75: o2control.EnvironmentInfo.DefaultsEntry - nil, // 76: o2control.EnvironmentInfo.VarsEntry - nil, // 77: o2control.EnvironmentInfo.UserVarsEntry - nil, // 78: o2control.EnvironmentInfo.IntegratedServicesDataEntry - nil, // 79: o2control.NewEnvironmentRequest.VarsEntry - nil, // 80: o2control.NewAutoEnvironmentRequest.VarsEntry - nil, // 81: o2control.SetEnvironmentPropertiesRequest.PropertiesEntry - nil, // 82: o2control.GetEnvironmentPropertiesReply.PropertiesEntry - nil, // 83: o2control.TaskInfo.PropertiesEntry - nil, // 84: o2control.RoleInfo.DefaultsEntry - nil, // 85: o2control.RoleInfo.VarsEntry - nil, // 86: o2control.RoleInfo.UserVarsEntry - nil, // 87: o2control.RoleInfo.ConsolidatedStackEntry - nil, // 88: o2control.WorkflowTemplateInfo.VarSpecMapEntry - nil, // 89: o2control.ListIntegratedServicesReply.ServicesEntry + (ControlEnvironmentRequest_Optype)(0), // 0: o2control.ControlEnvironmentRequest.Optype + (EnvironmentOperation_Optype)(0), // 1: o2control.EnvironmentOperation.Optype + (VarSpecMessage_UiWidget)(0), // 2: o2control.VarSpecMessage.UiWidget + (VarSpecMessage_Type)(0), // 3: o2control.VarSpecMessage.Type + (*SubscribeRequest)(nil), // 4: o2control.SubscribeRequest + (*GetFrameworkInfoRequest)(nil), // 5: o2control.GetFrameworkInfoRequest + (*Version)(nil), // 6: o2control.Version + (*GetFrameworkInfoReply)(nil), // 7: o2control.GetFrameworkInfoReply + (*TeardownRequest)(nil), // 8: o2control.TeardownRequest + (*TeardownReply)(nil), // 9: o2control.TeardownReply + (*GetEnvironmentsRequest)(nil), // 10: o2control.GetEnvironmentsRequest + (*GetEnvironmentsReply)(nil), // 11: o2control.GetEnvironmentsReply + (*EnvironmentInfo)(nil), // 12: o2control.EnvironmentInfo + (*NewEnvironmentRequest)(nil), // 13: o2control.NewEnvironmentRequest + (*NewEnvironmentReply)(nil), // 14: o2control.NewEnvironmentReply + (*NewAutoEnvironmentRequest)(nil), // 15: o2control.NewAutoEnvironmentRequest + (*NewAutoEnvironmentReply)(nil), // 16: o2control.NewAutoEnvironmentReply + (*GetEnvironmentRequest)(nil), // 17: o2control.GetEnvironmentRequest + (*GetEnvironmentReply)(nil), // 18: o2control.GetEnvironmentReply + (*ControlEnvironmentRequest)(nil), // 19: o2control.ControlEnvironmentRequest + (*ControlEnvironmentReply)(nil), // 20: o2control.ControlEnvironmentReply + (*ModifyEnvironmentRequest)(nil), // 21: o2control.ModifyEnvironmentRequest + (*EnvironmentOperation)(nil), // 22: o2control.EnvironmentOperation + (*ModifyEnvironmentReply)(nil), // 23: o2control.ModifyEnvironmentReply + (*DestroyEnvironmentRequest)(nil), // 24: o2control.DestroyEnvironmentRequest + (*DestroyEnvironmentReply)(nil), // 25: o2control.DestroyEnvironmentReply + (*GetActiveDetectorsReply)(nil), // 26: o2control.GetActiveDetectorsReply + (*GetAvailableDetectorsReply)(nil), // 27: o2control.GetAvailableDetectorsReply + (*SetEnvironmentPropertiesRequest)(nil), // 28: o2control.SetEnvironmentPropertiesRequest + (*SetEnvironmentPropertiesReply)(nil), // 29: o2control.SetEnvironmentPropertiesReply + (*GetEnvironmentPropertiesRequest)(nil), // 30: o2control.GetEnvironmentPropertiesRequest + (*GetEnvironmentPropertiesReply)(nil), // 31: o2control.GetEnvironmentPropertiesReply + (*ShortTaskInfo)(nil), // 32: o2control.ShortTaskInfo + (*TaskDeploymentInfo)(nil), // 33: o2control.TaskDeploymentInfo + (*GetTasksRequest)(nil), // 34: o2control.GetTasksRequest + (*GetTasksReply)(nil), // 35: o2control.GetTasksReply + (*GetTaskRequest)(nil), // 36: o2control.GetTaskRequest + (*GetTaskReply)(nil), // 37: o2control.GetTaskReply + (*TaskClassInfo)(nil), // 38: o2control.TaskClassInfo + (*CommandInfo)(nil), // 39: o2control.CommandInfo + (*ChannelInfo)(nil), // 40: o2control.ChannelInfo + (*TaskInfo)(nil), // 41: o2control.TaskInfo + (*CleanupTasksRequest)(nil), // 42: o2control.CleanupTasksRequest + (*CleanupTasksReply)(nil), // 43: o2control.CleanupTasksReply + (*GetRolesRequest)(nil), // 44: o2control.GetRolesRequest + (*RoleInfo)(nil), // 45: o2control.RoleInfo + (*GetRolesReply)(nil), // 46: o2control.GetRolesReply + (*GetWorkflowTemplatesRequest)(nil), // 47: o2control.GetWorkflowTemplatesRequest + (*VarSpecMessage)(nil), // 48: o2control.VarSpecMessage + (*WorkflowTemplateInfo)(nil), // 49: o2control.WorkflowTemplateInfo + (*GetWorkflowTemplatesReply)(nil), // 50: o2control.GetWorkflowTemplatesReply + (*ListReposRequest)(nil), // 51: o2control.ListReposRequest + (*RepoInfo)(nil), // 52: o2control.RepoInfo + (*ListReposReply)(nil), // 53: o2control.ListReposReply + (*AddRepoRequest)(nil), // 54: o2control.AddRepoRequest + (*AddRepoReply)(nil), // 55: o2control.AddRepoReply + (*RemoveRepoRequest)(nil), // 56: o2control.RemoveRepoRequest + (*RemoveRepoReply)(nil), // 57: o2control.RemoveRepoReply + (*RefreshReposRequest)(nil), // 58: o2control.RefreshReposRequest + (*SetDefaultRepoRequest)(nil), // 59: o2control.SetDefaultRepoRequest + (*SetGlobalDefaultRevisionRequest)(nil), // 60: o2control.SetGlobalDefaultRevisionRequest + (*SetRepoDefaultRevisionRequest)(nil), // 61: o2control.SetRepoDefaultRevisionRequest + (*SetRepoDefaultRevisionReply)(nil), // 62: o2control.SetRepoDefaultRevisionReply + (*Empty)(nil), // 63: o2control.Empty + (*ListIntegratedServicesReply)(nil), // 64: o2control.ListIntegratedServicesReply + (*IntegratedServiceInfo)(nil), // 65: o2control.IntegratedServiceInfo + nil, // 66: o2control.EnvironmentInfo.DefaultsEntry + nil, // 67: o2control.EnvironmentInfo.VarsEntry + nil, // 68: o2control.EnvironmentInfo.UserVarsEntry + nil, // 69: o2control.EnvironmentInfo.IntegratedServicesDataEntry + nil, // 70: o2control.NewEnvironmentRequest.VarsEntry + nil, // 71: o2control.NewAutoEnvironmentRequest.VarsEntry + nil, // 72: o2control.SetEnvironmentPropertiesRequest.PropertiesEntry + nil, // 73: o2control.GetEnvironmentPropertiesReply.PropertiesEntry + nil, // 74: o2control.TaskInfo.PropertiesEntry + nil, // 75: o2control.RoleInfo.DefaultsEntry + nil, // 76: o2control.RoleInfo.VarsEntry + nil, // 77: o2control.RoleInfo.UserVarsEntry + nil, // 78: o2control.RoleInfo.ConsolidatedStackEntry + nil, // 79: o2control.WorkflowTemplateInfo.VarSpecMapEntry + nil, // 80: o2control.ListIntegratedServicesReply.ServicesEntry + (*protos.Event)(nil), // 81: events.Event } var file_protos_o2control_proto_depIdxs = []int32{ - 11, // 0: o2control.StatusReply.statusUpdates:type_name -> o2control.StatusUpdate - 0, // 1: o2control.StatusUpdate.level:type_name -> o2control.StatusUpdate.Level - 5, // 2: o2control.StatusUpdate.mesosHeartbeat:type_name -> o2control.Event_MesosHeartbeat - 6, // 3: o2control.Event.environmentEvent:type_name -> o2control.Ev_EnvironmentEvent - 7, // 4: o2control.Event.taskEvent:type_name -> o2control.Ev_TaskEvent - 8, // 5: o2control.Event.roleEvent:type_name -> o2control.Ev_RoleEvent - 15, // 6: o2control.GetFrameworkInfoReply.version:type_name -> o2control.Version - 21, // 7: o2control.GetEnvironmentsReply.environments:type_name -> o2control.EnvironmentInfo - 41, // 8: o2control.EnvironmentInfo.tasks:type_name -> o2control.ShortTaskInfo - 75, // 9: o2control.EnvironmentInfo.defaults:type_name -> o2control.EnvironmentInfo.DefaultsEntry - 76, // 10: o2control.EnvironmentInfo.vars:type_name -> o2control.EnvironmentInfo.VarsEntry - 77, // 11: o2control.EnvironmentInfo.userVars:type_name -> o2control.EnvironmentInfo.UserVarsEntry - 78, // 12: o2control.EnvironmentInfo.integratedServicesData:type_name -> o2control.EnvironmentInfo.IntegratedServicesDataEntry - 79, // 13: o2control.NewEnvironmentRequest.vars:type_name -> o2control.NewEnvironmentRequest.VarsEntry - 21, // 14: o2control.NewEnvironmentReply.environment:type_name -> o2control.EnvironmentInfo - 80, // 15: o2control.NewAutoEnvironmentRequest.vars:type_name -> o2control.NewAutoEnvironmentRequest.VarsEntry - 21, // 16: o2control.GetEnvironmentReply.environment:type_name -> o2control.EnvironmentInfo - 54, // 17: o2control.GetEnvironmentReply.workflow:type_name -> o2control.RoleInfo - 1, // 18: o2control.ControlEnvironmentRequest.type:type_name -> o2control.ControlEnvironmentRequest.Optype - 31, // 19: o2control.ModifyEnvironmentRequest.operations:type_name -> o2control.EnvironmentOperation - 2, // 20: o2control.EnvironmentOperation.type:type_name -> o2control.EnvironmentOperation.Optype - 31, // 21: o2control.ModifyEnvironmentReply.failedOperations:type_name -> o2control.EnvironmentOperation - 52, // 22: o2control.DestroyEnvironmentReply.cleanupTasksReply:type_name -> o2control.CleanupTasksReply - 81, // 23: o2control.SetEnvironmentPropertiesRequest.properties:type_name -> o2control.SetEnvironmentPropertiesRequest.PropertiesEntry - 82, // 24: o2control.GetEnvironmentPropertiesReply.properties:type_name -> o2control.GetEnvironmentPropertiesReply.PropertiesEntry - 42, // 25: o2control.ShortTaskInfo.deploymentInfo:type_name -> o2control.TaskDeploymentInfo - 41, // 26: o2control.GetTasksReply.tasks:type_name -> o2control.ShortTaskInfo - 50, // 27: o2control.GetTaskReply.task:type_name -> o2control.TaskInfo - 41, // 28: o2control.TaskInfo.shortInfo:type_name -> o2control.ShortTaskInfo - 47, // 29: o2control.TaskInfo.classInfo:type_name -> o2control.TaskClassInfo - 49, // 30: o2control.TaskInfo.inboundChannels:type_name -> o2control.ChannelInfo - 49, // 31: o2control.TaskInfo.outboundChannels:type_name -> o2control.ChannelInfo - 48, // 32: o2control.TaskInfo.commandInfo:type_name -> o2control.CommandInfo - 83, // 33: o2control.TaskInfo.properties:type_name -> o2control.TaskInfo.PropertiesEntry - 41, // 34: o2control.CleanupTasksReply.killedTasks:type_name -> o2control.ShortTaskInfo - 41, // 35: o2control.CleanupTasksReply.runningTasks:type_name -> o2control.ShortTaskInfo - 54, // 36: o2control.RoleInfo.roles:type_name -> o2control.RoleInfo - 84, // 37: o2control.RoleInfo.defaults:type_name -> o2control.RoleInfo.DefaultsEntry - 85, // 38: o2control.RoleInfo.vars:type_name -> o2control.RoleInfo.VarsEntry - 86, // 39: o2control.RoleInfo.userVars:type_name -> o2control.RoleInfo.UserVarsEntry - 87, // 40: o2control.RoleInfo.consolidatedStack:type_name -> o2control.RoleInfo.ConsolidatedStackEntry - 54, // 41: o2control.GetRolesReply.roles:type_name -> o2control.RoleInfo - 4, // 42: o2control.VarSpecMessage.type:type_name -> o2control.VarSpecMessage.Type - 3, // 43: o2control.VarSpecMessage.widget:type_name -> o2control.VarSpecMessage.UiWidget - 88, // 44: o2control.WorkflowTemplateInfo.varSpecMap:type_name -> o2control.WorkflowTemplateInfo.VarSpecMapEntry - 58, // 45: o2control.GetWorkflowTemplatesReply.workflowTemplates:type_name -> o2control.WorkflowTemplateInfo - 61, // 46: o2control.ListReposReply.repos:type_name -> o2control.RepoInfo - 89, // 47: o2control.ListIntegratedServicesReply.services:type_name -> o2control.ListIntegratedServicesReply.ServicesEntry - 57, // 48: o2control.WorkflowTemplateInfo.VarSpecMapEntry.value:type_name -> o2control.VarSpecMessage - 74, // 49: o2control.ListIntegratedServicesReply.ServicesEntry.value:type_name -> o2control.IntegratedServiceInfo - 14, // 50: o2control.Control.GetFrameworkInfo:input_type -> o2control.GetFrameworkInfoRequest - 19, // 51: o2control.Control.GetEnvironments:input_type -> o2control.GetEnvironmentsRequest - 24, // 52: o2control.Control.NewAutoEnvironment:input_type -> o2control.NewAutoEnvironmentRequest - 22, // 53: o2control.Control.NewEnvironment:input_type -> o2control.NewEnvironmentRequest - 26, // 54: o2control.Control.GetEnvironment:input_type -> o2control.GetEnvironmentRequest - 28, // 55: o2control.Control.ControlEnvironment:input_type -> o2control.ControlEnvironmentRequest - 33, // 56: o2control.Control.DestroyEnvironment:input_type -> o2control.DestroyEnvironmentRequest - 72, // 57: o2control.Control.GetActiveDetectors:input_type -> o2control.Empty - 72, // 58: o2control.Control.GetAvailableDetectors:input_type -> o2control.Empty - 43, // 59: o2control.Control.GetTasks:input_type -> o2control.GetTasksRequest - 45, // 60: o2control.Control.GetTask:input_type -> o2control.GetTaskRequest - 51, // 61: o2control.Control.CleanupTasks:input_type -> o2control.CleanupTasksRequest - 53, // 62: o2control.Control.GetRoles:input_type -> o2control.GetRolesRequest - 56, // 63: o2control.Control.GetWorkflowTemplates:input_type -> o2control.GetWorkflowTemplatesRequest - 60, // 64: o2control.Control.ListRepos:input_type -> o2control.ListReposRequest - 63, // 65: o2control.Control.AddRepo:input_type -> o2control.AddRepoRequest - 65, // 66: o2control.Control.RemoveRepo:input_type -> o2control.RemoveRepoRequest - 67, // 67: o2control.Control.RefreshRepos:input_type -> o2control.RefreshReposRequest - 68, // 68: o2control.Control.SetDefaultRepo:input_type -> o2control.SetDefaultRepoRequest - 69, // 69: o2control.Control.SetGlobalDefaultRevision:input_type -> o2control.SetGlobalDefaultRevisionRequest - 70, // 70: o2control.Control.SetRepoDefaultRevision:input_type -> o2control.SetRepoDefaultRevisionRequest - 13, // 71: o2control.Control.Subscribe:input_type -> o2control.SubscribeRequest - 72, // 72: o2control.Control.GetIntegratedServices:input_type -> o2control.Empty - 9, // 73: o2control.Control.TrackStatus:input_type -> o2control.StatusRequest - 17, // 74: o2control.Control.Teardown:input_type -> o2control.TeardownRequest - 30, // 75: o2control.Control.ModifyEnvironment:input_type -> o2control.ModifyEnvironmentRequest - 16, // 76: o2control.Control.GetFrameworkInfo:output_type -> o2control.GetFrameworkInfoReply - 20, // 77: o2control.Control.GetEnvironments:output_type -> o2control.GetEnvironmentsReply - 25, // 78: o2control.Control.NewAutoEnvironment:output_type -> o2control.NewAutoEnvironmentReply - 23, // 79: o2control.Control.NewEnvironment:output_type -> o2control.NewEnvironmentReply - 27, // 80: o2control.Control.GetEnvironment:output_type -> o2control.GetEnvironmentReply - 29, // 81: o2control.Control.ControlEnvironment:output_type -> o2control.ControlEnvironmentReply - 34, // 82: o2control.Control.DestroyEnvironment:output_type -> o2control.DestroyEnvironmentReply - 35, // 83: o2control.Control.GetActiveDetectors:output_type -> o2control.GetActiveDetectorsReply - 36, // 84: o2control.Control.GetAvailableDetectors:output_type -> o2control.GetAvailableDetectorsReply - 44, // 85: o2control.Control.GetTasks:output_type -> o2control.GetTasksReply - 46, // 86: o2control.Control.GetTask:output_type -> o2control.GetTaskReply - 52, // 87: o2control.Control.CleanupTasks:output_type -> o2control.CleanupTasksReply - 55, // 88: o2control.Control.GetRoles:output_type -> o2control.GetRolesReply - 59, // 89: o2control.Control.GetWorkflowTemplates:output_type -> o2control.GetWorkflowTemplatesReply - 62, // 90: o2control.Control.ListRepos:output_type -> o2control.ListReposReply - 64, // 91: o2control.Control.AddRepo:output_type -> o2control.AddRepoReply - 66, // 92: o2control.Control.RemoveRepo:output_type -> o2control.RemoveRepoReply - 72, // 93: o2control.Control.RefreshRepos:output_type -> o2control.Empty - 72, // 94: o2control.Control.SetDefaultRepo:output_type -> o2control.Empty - 72, // 95: o2control.Control.SetGlobalDefaultRevision:output_type -> o2control.Empty - 71, // 96: o2control.Control.SetRepoDefaultRevision:output_type -> o2control.SetRepoDefaultRevisionReply - 12, // 97: o2control.Control.Subscribe:output_type -> o2control.Event - 73, // 98: o2control.Control.GetIntegratedServices:output_type -> o2control.ListIntegratedServicesReply - 10, // 99: o2control.Control.TrackStatus:output_type -> o2control.StatusReply - 18, // 100: o2control.Control.Teardown:output_type -> o2control.TeardownReply - 32, // 101: o2control.Control.ModifyEnvironment:output_type -> o2control.ModifyEnvironmentReply - 76, // [76:102] is the sub-list for method output_type - 50, // [50:76] is the sub-list for method input_type - 50, // [50:50] is the sub-list for extension type_name - 50, // [50:50] is the sub-list for extension extendee - 0, // [0:50] is the sub-list for field type_name + 6, // 0: o2control.GetFrameworkInfoReply.version:type_name -> o2control.Version + 12, // 1: o2control.GetEnvironmentsReply.environments:type_name -> o2control.EnvironmentInfo + 32, // 2: o2control.EnvironmentInfo.tasks:type_name -> o2control.ShortTaskInfo + 66, // 3: o2control.EnvironmentInfo.defaults:type_name -> o2control.EnvironmentInfo.DefaultsEntry + 67, // 4: o2control.EnvironmentInfo.vars:type_name -> o2control.EnvironmentInfo.VarsEntry + 68, // 5: o2control.EnvironmentInfo.userVars:type_name -> o2control.EnvironmentInfo.UserVarsEntry + 69, // 6: o2control.EnvironmentInfo.integratedServicesData:type_name -> o2control.EnvironmentInfo.IntegratedServicesDataEntry + 70, // 7: o2control.NewEnvironmentRequest.vars:type_name -> o2control.NewEnvironmentRequest.VarsEntry + 12, // 8: o2control.NewEnvironmentReply.environment:type_name -> o2control.EnvironmentInfo + 71, // 9: o2control.NewAutoEnvironmentRequest.vars:type_name -> o2control.NewAutoEnvironmentRequest.VarsEntry + 12, // 10: o2control.GetEnvironmentReply.environment:type_name -> o2control.EnvironmentInfo + 45, // 11: o2control.GetEnvironmentReply.workflow:type_name -> o2control.RoleInfo + 0, // 12: o2control.ControlEnvironmentRequest.type:type_name -> o2control.ControlEnvironmentRequest.Optype + 22, // 13: o2control.ModifyEnvironmentRequest.operations:type_name -> o2control.EnvironmentOperation + 1, // 14: o2control.EnvironmentOperation.type:type_name -> o2control.EnvironmentOperation.Optype + 22, // 15: o2control.ModifyEnvironmentReply.failedOperations:type_name -> o2control.EnvironmentOperation + 43, // 16: o2control.DestroyEnvironmentReply.cleanupTasksReply:type_name -> o2control.CleanupTasksReply + 72, // 17: o2control.SetEnvironmentPropertiesRequest.properties:type_name -> o2control.SetEnvironmentPropertiesRequest.PropertiesEntry + 73, // 18: o2control.GetEnvironmentPropertiesReply.properties:type_name -> o2control.GetEnvironmentPropertiesReply.PropertiesEntry + 33, // 19: o2control.ShortTaskInfo.deploymentInfo:type_name -> o2control.TaskDeploymentInfo + 32, // 20: o2control.GetTasksReply.tasks:type_name -> o2control.ShortTaskInfo + 41, // 21: o2control.GetTaskReply.task:type_name -> o2control.TaskInfo + 32, // 22: o2control.TaskInfo.shortInfo:type_name -> o2control.ShortTaskInfo + 38, // 23: o2control.TaskInfo.classInfo:type_name -> o2control.TaskClassInfo + 40, // 24: o2control.TaskInfo.inboundChannels:type_name -> o2control.ChannelInfo + 40, // 25: o2control.TaskInfo.outboundChannels:type_name -> o2control.ChannelInfo + 39, // 26: o2control.TaskInfo.commandInfo:type_name -> o2control.CommandInfo + 74, // 27: o2control.TaskInfo.properties:type_name -> o2control.TaskInfo.PropertiesEntry + 32, // 28: o2control.CleanupTasksReply.killedTasks:type_name -> o2control.ShortTaskInfo + 32, // 29: o2control.CleanupTasksReply.runningTasks:type_name -> o2control.ShortTaskInfo + 45, // 30: o2control.RoleInfo.roles:type_name -> o2control.RoleInfo + 75, // 31: o2control.RoleInfo.defaults:type_name -> o2control.RoleInfo.DefaultsEntry + 76, // 32: o2control.RoleInfo.vars:type_name -> o2control.RoleInfo.VarsEntry + 77, // 33: o2control.RoleInfo.userVars:type_name -> o2control.RoleInfo.UserVarsEntry + 78, // 34: o2control.RoleInfo.consolidatedStack:type_name -> o2control.RoleInfo.ConsolidatedStackEntry + 45, // 35: o2control.GetRolesReply.roles:type_name -> o2control.RoleInfo + 3, // 36: o2control.VarSpecMessage.type:type_name -> o2control.VarSpecMessage.Type + 2, // 37: o2control.VarSpecMessage.widget:type_name -> o2control.VarSpecMessage.UiWidget + 79, // 38: o2control.WorkflowTemplateInfo.varSpecMap:type_name -> o2control.WorkflowTemplateInfo.VarSpecMapEntry + 49, // 39: o2control.GetWorkflowTemplatesReply.workflowTemplates:type_name -> o2control.WorkflowTemplateInfo + 52, // 40: o2control.ListReposReply.repos:type_name -> o2control.RepoInfo + 80, // 41: o2control.ListIntegratedServicesReply.services:type_name -> o2control.ListIntegratedServicesReply.ServicesEntry + 48, // 42: o2control.WorkflowTemplateInfo.VarSpecMapEntry.value:type_name -> o2control.VarSpecMessage + 65, // 43: o2control.ListIntegratedServicesReply.ServicesEntry.value:type_name -> o2control.IntegratedServiceInfo + 5, // 44: o2control.Control.GetFrameworkInfo:input_type -> o2control.GetFrameworkInfoRequest + 10, // 45: o2control.Control.GetEnvironments:input_type -> o2control.GetEnvironmentsRequest + 15, // 46: o2control.Control.NewAutoEnvironment:input_type -> o2control.NewAutoEnvironmentRequest + 13, // 47: o2control.Control.NewEnvironment:input_type -> o2control.NewEnvironmentRequest + 17, // 48: o2control.Control.GetEnvironment:input_type -> o2control.GetEnvironmentRequest + 19, // 49: o2control.Control.ControlEnvironment:input_type -> o2control.ControlEnvironmentRequest + 24, // 50: o2control.Control.DestroyEnvironment:input_type -> o2control.DestroyEnvironmentRequest + 63, // 51: o2control.Control.GetActiveDetectors:input_type -> o2control.Empty + 63, // 52: o2control.Control.GetAvailableDetectors:input_type -> o2control.Empty + 13, // 53: o2control.Control.NewEnvironmentAsync:input_type -> o2control.NewEnvironmentRequest + 34, // 54: o2control.Control.GetTasks:input_type -> o2control.GetTasksRequest + 36, // 55: o2control.Control.GetTask:input_type -> o2control.GetTaskRequest + 42, // 56: o2control.Control.CleanupTasks:input_type -> o2control.CleanupTasksRequest + 44, // 57: o2control.Control.GetRoles:input_type -> o2control.GetRolesRequest + 47, // 58: o2control.Control.GetWorkflowTemplates:input_type -> o2control.GetWorkflowTemplatesRequest + 51, // 59: o2control.Control.ListRepos:input_type -> o2control.ListReposRequest + 54, // 60: o2control.Control.AddRepo:input_type -> o2control.AddRepoRequest + 56, // 61: o2control.Control.RemoveRepo:input_type -> o2control.RemoveRepoRequest + 58, // 62: o2control.Control.RefreshRepos:input_type -> o2control.RefreshReposRequest + 59, // 63: o2control.Control.SetDefaultRepo:input_type -> o2control.SetDefaultRepoRequest + 60, // 64: o2control.Control.SetGlobalDefaultRevision:input_type -> o2control.SetGlobalDefaultRevisionRequest + 61, // 65: o2control.Control.SetRepoDefaultRevision:input_type -> o2control.SetRepoDefaultRevisionRequest + 4, // 66: o2control.Control.Subscribe:input_type -> o2control.SubscribeRequest + 63, // 67: o2control.Control.GetIntegratedServices:input_type -> o2control.Empty + 8, // 68: o2control.Control.Teardown:input_type -> o2control.TeardownRequest + 21, // 69: o2control.Control.ModifyEnvironment:input_type -> o2control.ModifyEnvironmentRequest + 7, // 70: o2control.Control.GetFrameworkInfo:output_type -> o2control.GetFrameworkInfoReply + 11, // 71: o2control.Control.GetEnvironments:output_type -> o2control.GetEnvironmentsReply + 16, // 72: o2control.Control.NewAutoEnvironment:output_type -> o2control.NewAutoEnvironmentReply + 14, // 73: o2control.Control.NewEnvironment:output_type -> o2control.NewEnvironmentReply + 18, // 74: o2control.Control.GetEnvironment:output_type -> o2control.GetEnvironmentReply + 20, // 75: o2control.Control.ControlEnvironment:output_type -> o2control.ControlEnvironmentReply + 25, // 76: o2control.Control.DestroyEnvironment:output_type -> o2control.DestroyEnvironmentReply + 26, // 77: o2control.Control.GetActiveDetectors:output_type -> o2control.GetActiveDetectorsReply + 27, // 78: o2control.Control.GetAvailableDetectors:output_type -> o2control.GetAvailableDetectorsReply + 14, // 79: o2control.Control.NewEnvironmentAsync:output_type -> o2control.NewEnvironmentReply + 35, // 80: o2control.Control.GetTasks:output_type -> o2control.GetTasksReply + 37, // 81: o2control.Control.GetTask:output_type -> o2control.GetTaskReply + 43, // 82: o2control.Control.CleanupTasks:output_type -> o2control.CleanupTasksReply + 46, // 83: o2control.Control.GetRoles:output_type -> o2control.GetRolesReply + 50, // 84: o2control.Control.GetWorkflowTemplates:output_type -> o2control.GetWorkflowTemplatesReply + 53, // 85: o2control.Control.ListRepos:output_type -> o2control.ListReposReply + 55, // 86: o2control.Control.AddRepo:output_type -> o2control.AddRepoReply + 57, // 87: o2control.Control.RemoveRepo:output_type -> o2control.RemoveRepoReply + 63, // 88: o2control.Control.RefreshRepos:output_type -> o2control.Empty + 63, // 89: o2control.Control.SetDefaultRepo:output_type -> o2control.Empty + 63, // 90: o2control.Control.SetGlobalDefaultRevision:output_type -> o2control.Empty + 62, // 91: o2control.Control.SetRepoDefaultRevision:output_type -> o2control.SetRepoDefaultRevisionReply + 81, // 92: o2control.Control.Subscribe:output_type -> events.Event + 64, // 93: o2control.Control.GetIntegratedServices:output_type -> o2control.ListIntegratedServicesReply + 9, // 94: o2control.Control.Teardown:output_type -> o2control.TeardownReply + 23, // 95: o2control.Control.ModifyEnvironment:output_type -> o2control.ModifyEnvironmentReply + 70, // [70:96] is the sub-list for method output_type + 44, // [44:70] is the sub-list for method input_type + 44, // [44:44] is the sub-list for extension type_name + 44, // [44:44] is the sub-list for extension extendee + 0, // [0:44] is the sub-list for field type_name } func init() { file_protos_o2control_proto_init() } @@ -5787,102 +5124,6 @@ func file_protos_o2control_proto_init() { } if !protoimpl.UnsafeEnabled { file_protos_o2control_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Event_MesosHeartbeat); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_EnvironmentEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_TaskEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_RoleEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusReply); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusUpdate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Event); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubscribeRequest); i { case 0: return &v.state @@ -5894,7 +5135,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFrameworkInfoRequest); i { case 0: return &v.state @@ -5906,7 +5147,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Version); i { case 0: return &v.state @@ -5918,7 +5159,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFrameworkInfoReply); i { case 0: return &v.state @@ -5930,7 +5171,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeardownRequest); i { case 0: return &v.state @@ -5942,7 +5183,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeardownReply); i { case 0: return &v.state @@ -5954,7 +5195,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentsRequest); i { case 0: return &v.state @@ -5966,7 +5207,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentsReply); i { case 0: return &v.state @@ -5978,7 +5219,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EnvironmentInfo); i { case 0: return &v.state @@ -5990,7 +5231,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NewEnvironmentRequest); i { case 0: return &v.state @@ -6002,7 +5243,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NewEnvironmentReply); i { case 0: return &v.state @@ -6014,7 +5255,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NewAutoEnvironmentRequest); i { case 0: return &v.state @@ -6026,7 +5267,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NewAutoEnvironmentReply); i { case 0: return &v.state @@ -6038,7 +5279,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentRequest); i { case 0: return &v.state @@ -6050,7 +5291,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentReply); i { case 0: return &v.state @@ -6062,7 +5303,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControlEnvironmentRequest); i { case 0: return &v.state @@ -6074,7 +5315,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControlEnvironmentReply); i { case 0: return &v.state @@ -6086,7 +5327,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ModifyEnvironmentRequest); i { case 0: return &v.state @@ -6098,7 +5339,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EnvironmentOperation); i { case 0: return &v.state @@ -6110,7 +5351,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ModifyEnvironmentReply); i { case 0: return &v.state @@ -6122,7 +5363,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestroyEnvironmentRequest); i { case 0: return &v.state @@ -6134,7 +5375,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestroyEnvironmentReply); i { case 0: return &v.state @@ -6146,7 +5387,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetActiveDetectorsReply); i { case 0: return &v.state @@ -6158,7 +5399,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAvailableDetectorsReply); i { case 0: return &v.state @@ -6170,7 +5411,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetEnvironmentPropertiesRequest); i { case 0: return &v.state @@ -6182,7 +5423,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetEnvironmentPropertiesReply); i { case 0: return &v.state @@ -6194,7 +5435,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentPropertiesRequest); i { case 0: return &v.state @@ -6206,7 +5447,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentPropertiesReply); i { case 0: return &v.state @@ -6218,7 +5459,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShortTaskInfo); i { case 0: return &v.state @@ -6230,7 +5471,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskDeploymentInfo); i { case 0: return &v.state @@ -6242,7 +5483,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTasksRequest); i { case 0: return &v.state @@ -6254,7 +5495,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTasksReply); i { case 0: return &v.state @@ -6266,7 +5507,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTaskRequest); i { case 0: return &v.state @@ -6278,7 +5519,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTaskReply); i { case 0: return &v.state @@ -6290,7 +5531,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskClassInfo); i { case 0: return &v.state @@ -6302,7 +5543,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommandInfo); i { case 0: return &v.state @@ -6314,7 +5555,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelInfo); i { case 0: return &v.state @@ -6326,7 +5567,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskInfo); i { case 0: return &v.state @@ -6338,7 +5579,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CleanupTasksRequest); i { case 0: return &v.state @@ -6350,7 +5591,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CleanupTasksReply); i { case 0: return &v.state @@ -6362,7 +5603,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRolesRequest); i { case 0: return &v.state @@ -6374,7 +5615,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RoleInfo); i { case 0: return &v.state @@ -6386,7 +5627,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRolesReply); i { case 0: return &v.state @@ -6398,7 +5639,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkflowTemplatesRequest); i { case 0: return &v.state @@ -6410,7 +5651,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VarSpecMessage); i { case 0: return &v.state @@ -6422,7 +5663,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkflowTemplateInfo); i { case 0: return &v.state @@ -6434,7 +5675,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkflowTemplatesReply); i { case 0: return &v.state @@ -6446,7 +5687,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReposRequest); i { case 0: return &v.state @@ -6458,7 +5699,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepoInfo); i { case 0: return &v.state @@ -6470,7 +5711,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReposReply); i { case 0: return &v.state @@ -6482,7 +5723,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddRepoRequest); i { case 0: return &v.state @@ -6494,7 +5735,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddRepoReply); i { case 0: return &v.state @@ -6506,7 +5747,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveRepoRequest); i { case 0: return &v.state @@ -6518,7 +5759,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveRepoReply); i { case 0: return &v.state @@ -6530,7 +5771,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshReposRequest); i { case 0: return &v.state @@ -6542,7 +5783,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetDefaultRepoRequest); i { case 0: return &v.state @@ -6554,7 +5795,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetGlobalDefaultRevisionRequest); i { case 0: return &v.state @@ -6566,7 +5807,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetRepoDefaultRevisionRequest); i { case 0: return &v.state @@ -6578,7 +5819,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetRepoDefaultRevisionReply); i { case 0: return &v.state @@ -6590,7 +5831,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Empty); i { case 0: return &v.state @@ -6602,7 +5843,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListIntegratedServicesReply); i { case 0: return &v.state @@ -6614,7 +5855,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IntegratedServiceInfo); i { case 0: return &v.state @@ -6627,21 +5868,13 @@ func file_protos_o2control_proto_init() { } } } - file_protos_o2control_proto_msgTypes[6].OneofWrappers = []interface{}{ - (*StatusUpdate_MesosHeartbeat)(nil), - } - file_protos_o2control_proto_msgTypes[7].OneofWrappers = []interface{}{ - (*Event_EnvironmentEvent)(nil), - (*Event_TaskEvent)(nil), - (*Event_RoleEvent)(nil), - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protos_o2control_proto_rawDesc, - NumEnums: 5, - NumMessages: 85, + NumEnums: 4, + NumMessages: 77, NumExtensions: 0, NumServices: 1, }, diff --git a/common/protos/events.pb.go b/common/protos/events.pb.go index 4fbe78de0..a28945630 100644 --- a/common/protos/events.pb.go +++ b/common/protos/events.pb.go @@ -138,6 +138,8 @@ type Ev_EnvironmentEvent struct { CurrentRunNumber uint32 `protobuf:"varint,3,opt,name=currentRunNumber,proto3" json:"currentRunNumber,omitempty"` Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` + Transition string `protobuf:"bytes,6,opt,name=transition,proto3" json:"transition,omitempty"` + TransitionStep string `protobuf:"bytes,7,opt,name=transitionStep,proto3" json:"transitionStep,omitempty"` } func (x *Ev_EnvironmentEvent) Reset() { @@ -207,6 +209,20 @@ func (x *Ev_EnvironmentEvent) GetMessage() string { return "" } +func (x *Ev_EnvironmentEvent) GetTransition() string { + if x != nil { + return x.Transition + } + return "" +} + +func (x *Ev_EnvironmentEvent) GetTransitionStep() string { + if x != nil { + return x.TransitionStep + } + return "" +} + type Ev_TaskEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -370,7 +386,7 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Timestamp string `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Types that are assignable to Payload: // // *Event_EnvironmentEvent @@ -413,11 +429,11 @@ func (*Event) Descriptor() ([]byte, []int) { return file_protos_events_proto_rawDescGZIP(), []int{5} } -func (x *Event) GetTimestamp() string { +func (x *Event) GetTimestamp() int64 { if x != nil { return x.Timestamp } - return "" + return 0 } func (m *Event) GetPayload() isEvent_Payload { @@ -506,7 +522,7 @@ var file_protos_events_proto_rawDesc = []byte{ 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x13, 0x45, 0x76, 0x5f, 0x45, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x13, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, @@ -517,56 +533,61 @@ var file_protos_events_proto_rawDesc = []byte{ 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, - 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, - 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6c, 0x0a, 0x0c, - 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0x9f, 0x03, 0x0a, 0x05, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, - 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, - 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, - 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5d, 0x0a, 0x15, 0x66, 0x72, 0x61, - 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, - 0x00, 0x52, 0x15, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x6f, - 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, - 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, - 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x65, - 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x53, 0x0a, 0x1f, - 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, - 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, - 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, - 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x22, + 0xa2, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, + 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, + 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6c, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x22, 0x9f, 0x03, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, + 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, + 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x5d, 0x0a, 0x15, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, + 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x15, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x57, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, + 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, + 0x61, 0x74, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, + 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, + 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/common/protos/protoutils.go b/common/protos/protoutils.go index 02f13520f..e0a009de5 100644 --- a/common/protos/protoutils.go +++ b/common/protos/protoutils.go @@ -25,13 +25,12 @@ package pb import ( - "fmt" "time" ) func WrapEvent(ce isEvent_Payload) *Event { return &Event{ - Timestamp: fmt.Sprintf("%d", time.Now().UnixMilli()), + Timestamp: time.Now().UnixMilli(), Payload: ce, } } diff --git a/core/environment/eventStream.go b/core/environment/eventStream.go index 3051ea736..a23cdcaa7 100644 --- a/core/environment/eventStream.go +++ b/core/environment/eventStream.go @@ -28,7 +28,7 @@ import ( "sync" "github.com/AliceO2Group/Control/common/event" - pb "github.com/AliceO2Group/Control/core/protos" + pb "github.com/AliceO2Group/Control/common/protos" ) type Subscription interface { diff --git a/core/protos/o2control.pb.go b/core/protos/o2control.pb.go index c13fe8fe6..5b01e7a4e 100644 --- a/core/protos/o2control.pb.go +++ b/core/protos/o2control.pb.go @@ -30,6 +30,7 @@ package pb import ( + protos "github.com/AliceO2Group/Control/common/protos" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -43,57 +44,19 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -type StatusUpdate_Level int32 +// Symbols defined in public import of protos/events.proto. -const ( - StatusUpdate_DEBUG StatusUpdate_Level = 0 - StatusUpdate_INFO StatusUpdate_Level = 1 - StatusUpdate_WARNING StatusUpdate_Level = 2 - StatusUpdate_ERROR StatusUpdate_Level = 3 -) - -// Enum value maps for StatusUpdate_Level. -var ( - StatusUpdate_Level_name = map[int32]string{ - 0: "DEBUG", - 1: "INFO", - 2: "WARNING", - 3: "ERROR", - } - StatusUpdate_Level_value = map[string]int32{ - "DEBUG": 0, - "INFO": 1, - "WARNING": 2, - "ERROR": 3, - } -) - -func (x StatusUpdate_Level) Enum() *StatusUpdate_Level { - p := new(StatusUpdate_Level) - *p = x - return p -} - -func (x StatusUpdate_Level) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StatusUpdate_Level) Descriptor() protoreflect.EnumDescriptor { - return file_protos_o2control_proto_enumTypes[0].Descriptor() -} - -func (StatusUpdate_Level) Type() protoreflect.EnumType { - return &file_protos_o2control_proto_enumTypes[0] -} - -func (x StatusUpdate_Level) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use StatusUpdate_Level.Descriptor instead. -func (StatusUpdate_Level) EnumDescriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{6, 0} -} +type Ev_MetaEvent_MesosHeartbeat = protos.Ev_MetaEvent_MesosHeartbeat +type Ev_MetaEvent_FrameworkFailure = protos.Ev_MetaEvent_FrameworkFailure +type Ev_EnvironmentEvent = protos.Ev_EnvironmentEvent +type Ev_TaskEvent = protos.Ev_TaskEvent +type Ev_RoleEvent = protos.Ev_RoleEvent +type Event = protos.Event +type Event_EnvironmentEvent = protos.Event_EnvironmentEvent +type Event_TaskEvent = protos.Event_TaskEvent +type Event_RoleEvent = protos.Event_RoleEvent +type Event_FrameworkFailureEvent = protos.Event_FrameworkFailureEvent +type Event_MesosHeartbeatEvent = protos.Event_MesosHeartbeatEvent type ControlEnvironmentRequest_Optype int32 @@ -140,11 +103,11 @@ func (x ControlEnvironmentRequest_Optype) String() string { } func (ControlEnvironmentRequest_Optype) Descriptor() protoreflect.EnumDescriptor { - return file_protos_o2control_proto_enumTypes[1].Descriptor() + return file_protos_o2control_proto_enumTypes[0].Descriptor() } func (ControlEnvironmentRequest_Optype) Type() protoreflect.EnumType { - return &file_protos_o2control_proto_enumTypes[1] + return &file_protos_o2control_proto_enumTypes[0] } func (x ControlEnvironmentRequest_Optype) Number() protoreflect.EnumNumber { @@ -153,7 +116,7 @@ func (x ControlEnvironmentRequest_Optype) Number() protoreflect.EnumNumber { // Deprecated: Use ControlEnvironmentRequest_Optype.Descriptor instead. func (ControlEnvironmentRequest_Optype) EnumDescriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{23, 0} + return file_protos_o2control_proto_rawDescGZIP(), []int{15, 0} } type EnvironmentOperation_Optype int32 @@ -173,702 +136,153 @@ var ( } EnvironmentOperation_Optype_value = map[string]int32{ "NOOP": 0, - "REMOVE_ROLE": 3, - "ADD_ROLE": 4, - } -) - -func (x EnvironmentOperation_Optype) Enum() *EnvironmentOperation_Optype { - p := new(EnvironmentOperation_Optype) - *p = x - return p -} - -func (x EnvironmentOperation_Optype) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (EnvironmentOperation_Optype) Descriptor() protoreflect.EnumDescriptor { - return file_protos_o2control_proto_enumTypes[2].Descriptor() -} - -func (EnvironmentOperation_Optype) Type() protoreflect.EnumType { - return &file_protos_o2control_proto_enumTypes[2] -} - -func (x EnvironmentOperation_Optype) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use EnvironmentOperation_Optype.Descriptor instead. -func (EnvironmentOperation_Optype) EnumDescriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{26, 0} -} - -type VarSpecMessage_UiWidget int32 - -const ( - VarSpecMessage_editBox VarSpecMessage_UiWidget = 0 // plain string input line, can accept types number (like a spinBox) and string - VarSpecMessage_slider VarSpecMessage_UiWidget = 1 // input widget exclusively for numbers, range allowedValues[0]-[1] - VarSpecMessage_listBox VarSpecMessage_UiWidget = 2 // displays a list of items, can accept types number, string or list; if number/string ==> single selection, otherwise multiple selection allowed - VarSpecMessage_dropDownBox VarSpecMessage_UiWidget = 3 - VarSpecMessage_comboBox VarSpecMessage_UiWidget = 4 - VarSpecMessage_radioButtonBox VarSpecMessage_UiWidget = 5 - VarSpecMessage_checkBox VarSpecMessage_UiWidget = 6 -) - -// Enum value maps for VarSpecMessage_UiWidget. -var ( - VarSpecMessage_UiWidget_name = map[int32]string{ - 0: "editBox", - 1: "slider", - 2: "listBox", - 3: "dropDownBox", - 4: "comboBox", - 5: "radioButtonBox", - 6: "checkBox", - } - VarSpecMessage_UiWidget_value = map[string]int32{ - "editBox": 0, - "slider": 1, - "listBox": 2, - "dropDownBox": 3, - "comboBox": 4, - "radioButtonBox": 5, - "checkBox": 6, - } -) - -func (x VarSpecMessage_UiWidget) Enum() *VarSpecMessage_UiWidget { - p := new(VarSpecMessage_UiWidget) - *p = x - return p -} - -func (x VarSpecMessage_UiWidget) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VarSpecMessage_UiWidget) Descriptor() protoreflect.EnumDescriptor { - return file_protos_o2control_proto_enumTypes[3].Descriptor() -} - -func (VarSpecMessage_UiWidget) Type() protoreflect.EnumType { - return &file_protos_o2control_proto_enumTypes[3] -} - -func (x VarSpecMessage_UiWidget) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use VarSpecMessage_UiWidget.Descriptor instead. -func (VarSpecMessage_UiWidget) EnumDescriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{52, 0} -} - -type VarSpecMessage_Type int32 - -const ( - VarSpecMessage_string VarSpecMessage_Type = 0 - VarSpecMessage_number VarSpecMessage_Type = 1 - VarSpecMessage_bool VarSpecMessage_Type = 2 - VarSpecMessage_list VarSpecMessage_Type = 3 - VarSpecMessage_map VarSpecMessage_Type = 4 -) - -// Enum value maps for VarSpecMessage_Type. -var ( - VarSpecMessage_Type_name = map[int32]string{ - 0: "string", - 1: "number", - 2: "bool", - 3: "list", - 4: "map", - } - VarSpecMessage_Type_value = map[string]int32{ - "string": 0, - "number": 1, - "bool": 2, - "list": 3, - "map": 4, - } -) - -func (x VarSpecMessage_Type) Enum() *VarSpecMessage_Type { - p := new(VarSpecMessage_Type) - *p = x - return p -} - -func (x VarSpecMessage_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VarSpecMessage_Type) Descriptor() protoreflect.EnumDescriptor { - return file_protos_o2control_proto_enumTypes[4].Descriptor() -} - -func (VarSpecMessage_Type) Type() protoreflect.EnumType { - return &file_protos_o2control_proto_enumTypes[4] -} - -func (x VarSpecMessage_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use VarSpecMessage_Type.Descriptor instead. -func (VarSpecMessage_Type) EnumDescriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{52, 1} -} - -type Event_MesosHeartbeat struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Event_MesosHeartbeat) Reset() { - *x = Event_MesosHeartbeat{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Event_MesosHeartbeat) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Event_MesosHeartbeat) ProtoMessage() {} - -func (x *Event_MesosHeartbeat) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[0] - 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 Event_MesosHeartbeat.ProtoReflect.Descriptor instead. -func (*Event_MesosHeartbeat) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{0} -} - -type Ev_EnvironmentEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EnvironmentId string `protobuf:"bytes,1,opt,name=environmentId,proto3" json:"environmentId,omitempty"` - State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` - CurrentRunNumber uint32 `protobuf:"varint,3,opt,name=currentRunNumber,proto3" json:"currentRunNumber,omitempty"` - Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` - Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` -} - -func (x *Ev_EnvironmentEvent) Reset() { - *x = Ev_EnvironmentEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Ev_EnvironmentEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Ev_EnvironmentEvent) ProtoMessage() {} - -func (x *Ev_EnvironmentEvent) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[1] - 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 Ev_EnvironmentEvent.ProtoReflect.Descriptor instead. -func (*Ev_EnvironmentEvent) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{1} -} - -func (x *Ev_EnvironmentEvent) GetEnvironmentId() string { - if x != nil { - return x.EnvironmentId - } - return "" -} - -func (x *Ev_EnvironmentEvent) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *Ev_EnvironmentEvent) GetCurrentRunNumber() uint32 { - if x != nil { - return x.CurrentRunNumber - } - return 0 -} - -func (x *Ev_EnvironmentEvent) GetError() string { - if x != nil { - return x.Error - } - return "" -} - -func (x *Ev_EnvironmentEvent) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -type Ev_TaskEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Taskid string `protobuf:"bytes,2,opt,name=taskid,proto3" json:"taskid,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` - Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` - ClassName string `protobuf:"bytes,6,opt,name=className,proto3" json:"className,omitempty"` -} - -func (x *Ev_TaskEvent) Reset() { - *x = Ev_TaskEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Ev_TaskEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Ev_TaskEvent) ProtoMessage() {} - -func (x *Ev_TaskEvent) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[2] - 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 Ev_TaskEvent.ProtoReflect.Descriptor instead. -func (*Ev_TaskEvent) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{2} -} - -func (x *Ev_TaskEvent) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Ev_TaskEvent) GetTaskid() string { - if x != nil { - return x.Taskid - } - return "" -} - -func (x *Ev_TaskEvent) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *Ev_TaskEvent) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *Ev_TaskEvent) GetHostname() string { - if x != nil { - return x.Hostname - } - return "" -} - -func (x *Ev_TaskEvent) GetClassName() string { - if x != nil { - return x.ClassName - } - return "" -} - -type Ev_RoleEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - RolePath string `protobuf:"bytes,4,opt,name=rolePath,proto3" json:"rolePath,omitempty"` -} - -func (x *Ev_RoleEvent) Reset() { - *x = Ev_RoleEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Ev_RoleEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Ev_RoleEvent) ProtoMessage() {} - -func (x *Ev_RoleEvent) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[3] - 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 Ev_RoleEvent.ProtoReflect.Descriptor instead. -func (*Ev_RoleEvent) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{3} -} - -func (x *Ev_RoleEvent) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Ev_RoleEvent) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *Ev_RoleEvent) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *Ev_RoleEvent) GetRolePath() string { - if x != nil { - return x.RolePath - } - return "" -} - -// ////////////////////////////////////// -// Global status -// ////////////////////////////////////// -type StatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *StatusRequest) Reset() { - *x = StatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatusRequest) ProtoMessage() {} - -func (x *StatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[4] - 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 StatusRequest.ProtoReflect.Descriptor instead. -func (*StatusRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{4} -} - -type StatusReply struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` - StatusUpdates []*StatusUpdate `protobuf:"bytes,2,rep,name=statusUpdates,proto3" json:"statusUpdates,omitempty"` -} - -func (x *StatusReply) Reset() { - *x = StatusReply{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StatusReply) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatusReply) ProtoMessage() {} - -func (x *StatusReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[5] - 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 StatusReply.ProtoReflect.Descriptor instead. -func (*StatusReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{5} -} - -func (x *StatusReply) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *StatusReply) GetStatusUpdates() []*StatusUpdate { - if x != nil { - return x.StatusUpdates - } - return nil -} - -type StatusUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Level StatusUpdate_Level `protobuf:"varint,1,opt,name=level,proto3,enum=o2control.StatusUpdate_Level" json:"level,omitempty"` - // Types that are assignable to Event: - // - // *StatusUpdate_MesosHeartbeat - Event isStatusUpdate_Event `protobuf_oneof:"Event"` -} - -func (x *StatusUpdate) Reset() { - *x = StatusUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + "REMOVE_ROLE": 3, + "ADD_ROLE": 4, } -} - -func (x *StatusUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatusUpdate) ProtoMessage() {} +) -func (x *StatusUpdate) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[6] - 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) +func (x EnvironmentOperation_Optype) Enum() *EnvironmentOperation_Optype { + p := new(EnvironmentOperation_Optype) + *p = x + return p } -// Deprecated: Use StatusUpdate.ProtoReflect.Descriptor instead. -func (*StatusUpdate) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{6} +func (x EnvironmentOperation_Optype) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *StatusUpdate) GetLevel() StatusUpdate_Level { - if x != nil { - return x.Level - } - return StatusUpdate_DEBUG +func (EnvironmentOperation_Optype) Descriptor() protoreflect.EnumDescriptor { + return file_protos_o2control_proto_enumTypes[1].Descriptor() } -func (m *StatusUpdate) GetEvent() isStatusUpdate_Event { - if m != nil { - return m.Event - } - return nil +func (EnvironmentOperation_Optype) Type() protoreflect.EnumType { + return &file_protos_o2control_proto_enumTypes[1] } -func (x *StatusUpdate) GetMesosHeartbeat() *Event_MesosHeartbeat { - if x, ok := x.GetEvent().(*StatusUpdate_MesosHeartbeat); ok { - return x.MesosHeartbeat - } - return nil +func (x EnvironmentOperation_Optype) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -type isStatusUpdate_Event interface { - isStatusUpdate_Event() +// Deprecated: Use EnvironmentOperation_Optype.Descriptor instead. +func (EnvironmentOperation_Optype) EnumDescriptor() ([]byte, []int) { + return file_protos_o2control_proto_rawDescGZIP(), []int{18, 0} } -type StatusUpdate_MesosHeartbeat struct { - MesosHeartbeat *Event_MesosHeartbeat `protobuf:"bytes,2,opt,name=mesosHeartbeat,proto3,oneof"` //TODO add other events here and in events.proto -} +type VarSpecMessage_UiWidget int32 -func (*StatusUpdate_MesosHeartbeat) isStatusUpdate_Event() {} +const ( + VarSpecMessage_editBox VarSpecMessage_UiWidget = 0 // plain string input line, can accept types number (like a spinBox) and string + VarSpecMessage_slider VarSpecMessage_UiWidget = 1 // input widget exclusively for numbers, range allowedValues[0]-[1] + VarSpecMessage_listBox VarSpecMessage_UiWidget = 2 // displays a list of items, can accept types number, string or list; if number/string ==> single selection, otherwise multiple selection allowed + VarSpecMessage_dropDownBox VarSpecMessage_UiWidget = 3 + VarSpecMessage_comboBox VarSpecMessage_UiWidget = 4 + VarSpecMessage_radioButtonBox VarSpecMessage_UiWidget = 5 + VarSpecMessage_checkBox VarSpecMessage_UiWidget = 6 +) -type Event struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Enum value maps for VarSpecMessage_UiWidget. +var ( + VarSpecMessage_UiWidget_name = map[int32]string{ + 0: "editBox", + 1: "slider", + 2: "listBox", + 3: "dropDownBox", + 4: "comboBox", + 5: "radioButtonBox", + 6: "checkBox", + } + VarSpecMessage_UiWidget_value = map[string]int32{ + "editBox": 0, + "slider": 1, + "listBox": 2, + "dropDownBox": 3, + "comboBox": 4, + "radioButtonBox": 5, + "checkBox": 6, + } +) - Timestamp string `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Types that are assignable to Payload: - // - // *Event_EnvironmentEvent - // *Event_TaskEvent - // *Event_RoleEvent - Payload isEvent_Payload `protobuf_oneof:"Payload"` +func (x VarSpecMessage_UiWidget) Enum() *VarSpecMessage_UiWidget { + p := new(VarSpecMessage_UiWidget) + *p = x + return p } -func (x *Event) Reset() { - *x = Event{} - if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x VarSpecMessage_UiWidget) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *Event) String() string { - return protoimpl.X.MessageStringOf(x) +func (VarSpecMessage_UiWidget) Descriptor() protoreflect.EnumDescriptor { + return file_protos_o2control_proto_enumTypes[2].Descriptor() } -func (*Event) ProtoMessage() {} - -func (x *Event) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[7] - 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) +func (VarSpecMessage_UiWidget) Type() protoreflect.EnumType { + return &file_protos_o2control_proto_enumTypes[2] } -// Deprecated: Use Event.ProtoReflect.Descriptor instead. -func (*Event) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{7} +func (x VarSpecMessage_UiWidget) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Event) GetTimestamp() string { - if x != nil { - return x.Timestamp - } - return "" +// Deprecated: Use VarSpecMessage_UiWidget.Descriptor instead. +func (VarSpecMessage_UiWidget) EnumDescriptor() ([]byte, []int) { + return file_protos_o2control_proto_rawDescGZIP(), []int{44, 0} } -func (m *Event) GetPayload() isEvent_Payload { - if m != nil { - return m.Payload - } - return nil -} +type VarSpecMessage_Type int32 -func (x *Event) GetEnvironmentEvent() *Ev_EnvironmentEvent { - if x, ok := x.GetPayload().(*Event_EnvironmentEvent); ok { - return x.EnvironmentEvent - } - return nil -} +const ( + VarSpecMessage_string VarSpecMessage_Type = 0 + VarSpecMessage_number VarSpecMessage_Type = 1 + VarSpecMessage_bool VarSpecMessage_Type = 2 + VarSpecMessage_list VarSpecMessage_Type = 3 + VarSpecMessage_map VarSpecMessage_Type = 4 +) -func (x *Event) GetTaskEvent() *Ev_TaskEvent { - if x, ok := x.GetPayload().(*Event_TaskEvent); ok { - return x.TaskEvent +// Enum value maps for VarSpecMessage_Type. +var ( + VarSpecMessage_Type_name = map[int32]string{ + 0: "string", + 1: "number", + 2: "bool", + 3: "list", + 4: "map", } - return nil -} - -func (x *Event) GetRoleEvent() *Ev_RoleEvent { - if x, ok := x.GetPayload().(*Event_RoleEvent); ok { - return x.RoleEvent + VarSpecMessage_Type_value = map[string]int32{ + "string": 0, + "number": 1, + "bool": 2, + "list": 3, + "map": 4, } - return nil -} +) -type isEvent_Payload interface { - isEvent_Payload() +func (x VarSpecMessage_Type) Enum() *VarSpecMessage_Type { + p := new(VarSpecMessage_Type) + *p = x + return p } -type Event_EnvironmentEvent struct { - EnvironmentEvent *Ev_EnvironmentEvent `protobuf:"bytes,2,opt,name=environmentEvent,proto3,oneof"` +func (x VarSpecMessage_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -type Event_TaskEvent struct { - TaskEvent *Ev_TaskEvent `protobuf:"bytes,3,opt,name=taskEvent,proto3,oneof"` +func (VarSpecMessage_Type) Descriptor() protoreflect.EnumDescriptor { + return file_protos_o2control_proto_enumTypes[3].Descriptor() } -type Event_RoleEvent struct { - RoleEvent *Ev_RoleEvent `protobuf:"bytes,4,opt,name=roleEvent,proto3,oneof"` +func (VarSpecMessage_Type) Type() protoreflect.EnumType { + return &file_protos_o2control_proto_enumTypes[3] } -func (*Event_EnvironmentEvent) isEvent_Payload() {} - -func (*Event_TaskEvent) isEvent_Payload() {} +func (x VarSpecMessage_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} -func (*Event_RoleEvent) isEvent_Payload() {} +// Deprecated: Use VarSpecMessage_Type.Descriptor instead. +func (VarSpecMessage_Type) EnumDescriptor() ([]byte, []int) { + return file_protos_o2control_proto_rawDescGZIP(), []int{44, 1} +} type SubscribeRequest struct { state protoimpl.MessageState @@ -881,7 +295,7 @@ type SubscribeRequest struct { func (x *SubscribeRequest) Reset() { *x = SubscribeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[8] + mi := &file_protos_o2control_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -894,7 +308,7 @@ func (x *SubscribeRequest) String() string { func (*SubscribeRequest) ProtoMessage() {} func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[8] + mi := &file_protos_o2control_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -907,7 +321,7 @@ func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeRequest.ProtoReflect.Descriptor instead. func (*SubscribeRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{8} + return file_protos_o2control_proto_rawDescGZIP(), []int{0} } func (x *SubscribeRequest) GetId() string { @@ -929,7 +343,7 @@ type GetFrameworkInfoRequest struct { func (x *GetFrameworkInfoRequest) Reset() { *x = GetFrameworkInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[9] + mi := &file_protos_o2control_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -942,7 +356,7 @@ func (x *GetFrameworkInfoRequest) String() string { func (*GetFrameworkInfoRequest) ProtoMessage() {} func (x *GetFrameworkInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[9] + mi := &file_protos_o2control_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -955,7 +369,7 @@ func (x *GetFrameworkInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFrameworkInfoRequest.ProtoReflect.Descriptor instead. func (*GetFrameworkInfoRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{9} + return file_protos_o2control_proto_rawDescGZIP(), []int{1} } type Version struct { @@ -974,7 +388,7 @@ type Version struct { func (x *Version) Reset() { *x = Version{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[10] + mi := &file_protos_o2control_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -987,7 +401,7 @@ func (x *Version) String() string { func (*Version) ProtoMessage() {} func (x *Version) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[10] + mi := &file_protos_o2control_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1000,7 +414,7 @@ func (x *Version) ProtoReflect() protoreflect.Message { // Deprecated: Use Version.ProtoReflect.Descriptor instead. func (*Version) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{10} + return file_protos_o2control_proto_rawDescGZIP(), []int{2} } func (x *Version) GetMajor() int32 { @@ -1066,7 +480,7 @@ type GetFrameworkInfoReply struct { func (x *GetFrameworkInfoReply) Reset() { *x = GetFrameworkInfoReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[11] + mi := &file_protos_o2control_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1079,7 +493,7 @@ func (x *GetFrameworkInfoReply) String() string { func (*GetFrameworkInfoReply) ProtoMessage() {} func (x *GetFrameworkInfoReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[11] + mi := &file_protos_o2control_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1092,7 +506,7 @@ func (x *GetFrameworkInfoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFrameworkInfoReply.ProtoReflect.Descriptor instead. func (*GetFrameworkInfoReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{11} + return file_protos_o2control_proto_rawDescGZIP(), []int{3} } func (x *GetFrameworkInfoReply) GetFrameworkId() string { @@ -1184,7 +598,7 @@ type TeardownRequest struct { func (x *TeardownRequest) Reset() { *x = TeardownRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[12] + mi := &file_protos_o2control_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1197,7 +611,7 @@ func (x *TeardownRequest) String() string { func (*TeardownRequest) ProtoMessage() {} func (x *TeardownRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[12] + mi := &file_protos_o2control_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1210,7 +624,7 @@ func (x *TeardownRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TeardownRequest.ProtoReflect.Descriptor instead. func (*TeardownRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{12} + return file_protos_o2control_proto_rawDescGZIP(), []int{4} } func (x *TeardownRequest) GetReason() string { @@ -1229,7 +643,7 @@ type TeardownReply struct { func (x *TeardownReply) Reset() { *x = TeardownReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[13] + mi := &file_protos_o2control_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1242,7 +656,7 @@ func (x *TeardownReply) String() string { func (*TeardownReply) ProtoMessage() {} func (x *TeardownReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[13] + mi := &file_protos_o2control_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1255,7 +669,7 @@ func (x *TeardownReply) ProtoReflect() protoreflect.Message { // Deprecated: Use TeardownReply.ProtoReflect.Descriptor instead. func (*TeardownReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{13} + return file_protos_o2control_proto_rawDescGZIP(), []int{5} } // ////////////////////////////////////// @@ -1273,7 +687,7 @@ type GetEnvironmentsRequest struct { func (x *GetEnvironmentsRequest) Reset() { *x = GetEnvironmentsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[14] + mi := &file_protos_o2control_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1286,7 +700,7 @@ func (x *GetEnvironmentsRequest) String() string { func (*GetEnvironmentsRequest) ProtoMessage() {} func (x *GetEnvironmentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[14] + mi := &file_protos_o2control_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1299,7 +713,7 @@ func (x *GetEnvironmentsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentsRequest.ProtoReflect.Descriptor instead. func (*GetEnvironmentsRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{14} + return file_protos_o2control_proto_rawDescGZIP(), []int{6} } func (x *GetEnvironmentsRequest) GetShowAll() bool { @@ -1328,7 +742,7 @@ type GetEnvironmentsReply struct { func (x *GetEnvironmentsReply) Reset() { *x = GetEnvironmentsReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[15] + mi := &file_protos_o2control_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1341,7 +755,7 @@ func (x *GetEnvironmentsReply) String() string { func (*GetEnvironmentsReply) ProtoMessage() {} func (x *GetEnvironmentsReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[15] + mi := &file_protos_o2control_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1354,7 +768,7 @@ func (x *GetEnvironmentsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentsReply.ProtoReflect.Descriptor instead. func (*GetEnvironmentsReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{15} + return file_protos_o2control_proto_rawDescGZIP(), []int{7} } func (x *GetEnvironmentsReply) GetFrameworkId() string { @@ -1399,7 +813,7 @@ type EnvironmentInfo struct { func (x *EnvironmentInfo) Reset() { *x = EnvironmentInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[16] + mi := &file_protos_o2control_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1412,7 +826,7 @@ func (x *EnvironmentInfo) String() string { func (*EnvironmentInfo) ProtoMessage() {} func (x *EnvironmentInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[16] + mi := &file_protos_o2control_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1425,7 +839,7 @@ func (x *EnvironmentInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentInfo.ProtoReflect.Descriptor instead. func (*EnvironmentInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{16} + return file_protos_o2control_proto_rawDescGZIP(), []int{8} } func (x *EnvironmentInfo) GetId() string { @@ -1567,7 +981,7 @@ type NewEnvironmentRequest struct { func (x *NewEnvironmentRequest) Reset() { *x = NewEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[17] + mi := &file_protos_o2control_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1580,7 +994,7 @@ func (x *NewEnvironmentRequest) String() string { func (*NewEnvironmentRequest) ProtoMessage() {} func (x *NewEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[17] + mi := &file_protos_o2control_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1593,7 +1007,7 @@ func (x *NewEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NewEnvironmentRequest.ProtoReflect.Descriptor instead. func (*NewEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{17} + return file_protos_o2control_proto_rawDescGZIP(), []int{9} } func (x *NewEnvironmentRequest) GetWorkflowTemplate() string { @@ -1629,7 +1043,7 @@ type NewEnvironmentReply struct { func (x *NewEnvironmentReply) Reset() { *x = NewEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[18] + mi := &file_protos_o2control_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1642,7 +1056,7 @@ func (x *NewEnvironmentReply) String() string { func (*NewEnvironmentReply) ProtoMessage() {} func (x *NewEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[18] + mi := &file_protos_o2control_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1655,7 +1069,7 @@ func (x *NewEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use NewEnvironmentReply.ProtoReflect.Descriptor instead. func (*NewEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{18} + return file_protos_o2control_proto_rawDescGZIP(), []int{10} } func (x *NewEnvironmentReply) GetEnvironment() *EnvironmentInfo { @@ -1685,7 +1099,7 @@ type NewAutoEnvironmentRequest struct { func (x *NewAutoEnvironmentRequest) Reset() { *x = NewAutoEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[19] + mi := &file_protos_o2control_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1112,7 @@ func (x *NewAutoEnvironmentRequest) String() string { func (*NewAutoEnvironmentRequest) ProtoMessage() {} func (x *NewAutoEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[19] + mi := &file_protos_o2control_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1125,7 @@ func (x *NewAutoEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NewAutoEnvironmentRequest.ProtoReflect.Descriptor instead. func (*NewAutoEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{19} + return file_protos_o2control_proto_rawDescGZIP(), []int{11} } func (x *NewAutoEnvironmentRequest) GetWorkflowTemplate() string { @@ -1744,7 +1158,7 @@ type NewAutoEnvironmentReply struct { func (x *NewAutoEnvironmentReply) Reset() { *x = NewAutoEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[20] + mi := &file_protos_o2control_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1757,7 +1171,7 @@ func (x *NewAutoEnvironmentReply) String() string { func (*NewAutoEnvironmentReply) ProtoMessage() {} func (x *NewAutoEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[20] + mi := &file_protos_o2control_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1770,7 +1184,7 @@ func (x *NewAutoEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use NewAutoEnvironmentReply.ProtoReflect.Descriptor instead. func (*NewAutoEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{20} + return file_protos_o2control_proto_rawDescGZIP(), []int{12} } type GetEnvironmentRequest struct { @@ -1785,7 +1199,7 @@ type GetEnvironmentRequest struct { func (x *GetEnvironmentRequest) Reset() { *x = GetEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[21] + mi := &file_protos_o2control_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1798,7 +1212,7 @@ func (x *GetEnvironmentRequest) String() string { func (*GetEnvironmentRequest) ProtoMessage() {} func (x *GetEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[21] + mi := &file_protos_o2control_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1811,7 +1225,7 @@ func (x *GetEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentRequest.ProtoReflect.Descriptor instead. func (*GetEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{21} + return file_protos_o2control_proto_rawDescGZIP(), []int{13} } func (x *GetEnvironmentRequest) GetId() string { @@ -1841,7 +1255,7 @@ type GetEnvironmentReply struct { func (x *GetEnvironmentReply) Reset() { *x = GetEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[22] + mi := &file_protos_o2control_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1854,7 +1268,7 @@ func (x *GetEnvironmentReply) String() string { func (*GetEnvironmentReply) ProtoMessage() {} func (x *GetEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[22] + mi := &file_protos_o2control_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1867,7 +1281,7 @@ func (x *GetEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentReply.ProtoReflect.Descriptor instead. func (*GetEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{22} + return file_protos_o2control_proto_rawDescGZIP(), []int{14} } func (x *GetEnvironmentReply) GetEnvironment() *EnvironmentInfo { @@ -1903,7 +1317,7 @@ type ControlEnvironmentRequest struct { func (x *ControlEnvironmentRequest) Reset() { *x = ControlEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[23] + mi := &file_protos_o2control_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1916,7 +1330,7 @@ func (x *ControlEnvironmentRequest) String() string { func (*ControlEnvironmentRequest) ProtoMessage() {} func (x *ControlEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[23] + mi := &file_protos_o2control_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1929,7 +1343,7 @@ func (x *ControlEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlEnvironmentRequest.ProtoReflect.Descriptor instead. func (*ControlEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{23} + return file_protos_o2control_proto_rawDescGZIP(), []int{15} } func (x *ControlEnvironmentRequest) GetId() string { @@ -1963,7 +1377,7 @@ type ControlEnvironmentReply struct { func (x *ControlEnvironmentReply) Reset() { *x = ControlEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[24] + mi := &file_protos_o2control_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1976,7 +1390,7 @@ func (x *ControlEnvironmentReply) String() string { func (*ControlEnvironmentReply) ProtoMessage() {} func (x *ControlEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[24] + mi := &file_protos_o2control_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1989,7 +1403,7 @@ func (x *ControlEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlEnvironmentReply.ProtoReflect.Descriptor instead. func (*ControlEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{24} + return file_protos_o2control_proto_rawDescGZIP(), []int{16} } func (x *ControlEnvironmentReply) GetId() string { @@ -2047,7 +1461,7 @@ type ModifyEnvironmentRequest struct { func (x *ModifyEnvironmentRequest) Reset() { *x = ModifyEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[25] + mi := &file_protos_o2control_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2060,7 +1474,7 @@ func (x *ModifyEnvironmentRequest) String() string { func (*ModifyEnvironmentRequest) ProtoMessage() {} func (x *ModifyEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[25] + mi := &file_protos_o2control_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2073,7 +1487,7 @@ func (x *ModifyEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ModifyEnvironmentRequest.ProtoReflect.Descriptor instead. func (*ModifyEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{25} + return file_protos_o2control_proto_rawDescGZIP(), []int{17} } func (x *ModifyEnvironmentRequest) GetId() string { @@ -2109,7 +1523,7 @@ type EnvironmentOperation struct { func (x *EnvironmentOperation) Reset() { *x = EnvironmentOperation{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[26] + mi := &file_protos_o2control_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2122,7 +1536,7 @@ func (x *EnvironmentOperation) String() string { func (*EnvironmentOperation) ProtoMessage() {} func (x *EnvironmentOperation) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[26] + mi := &file_protos_o2control_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2135,7 +1549,7 @@ func (x *EnvironmentOperation) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentOperation.ProtoReflect.Descriptor instead. func (*EnvironmentOperation) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{26} + return file_protos_o2control_proto_rawDescGZIP(), []int{18} } func (x *EnvironmentOperation) GetType() EnvironmentOperation_Optype { @@ -2165,7 +1579,7 @@ type ModifyEnvironmentReply struct { func (x *ModifyEnvironmentReply) Reset() { *x = ModifyEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[27] + mi := &file_protos_o2control_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2178,7 +1592,7 @@ func (x *ModifyEnvironmentReply) String() string { func (*ModifyEnvironmentReply) ProtoMessage() {} func (x *ModifyEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[27] + mi := &file_protos_o2control_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2191,7 +1605,7 @@ func (x *ModifyEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ModifyEnvironmentReply.ProtoReflect.Descriptor instead. func (*ModifyEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{27} + return file_protos_o2control_proto_rawDescGZIP(), []int{19} } func (x *ModifyEnvironmentReply) GetFailedOperations() []*EnvironmentOperation { @@ -2229,7 +1643,7 @@ type DestroyEnvironmentRequest struct { func (x *DestroyEnvironmentRequest) Reset() { *x = DestroyEnvironmentRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[28] + mi := &file_protos_o2control_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2242,7 +1656,7 @@ func (x *DestroyEnvironmentRequest) String() string { func (*DestroyEnvironmentRequest) ProtoMessage() {} func (x *DestroyEnvironmentRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[28] + mi := &file_protos_o2control_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2255,7 +1669,7 @@ func (x *DestroyEnvironmentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DestroyEnvironmentRequest.ProtoReflect.Descriptor instead. func (*DestroyEnvironmentRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{28} + return file_protos_o2control_proto_rawDescGZIP(), []int{20} } func (x *DestroyEnvironmentRequest) GetId() string { @@ -2297,7 +1711,7 @@ type DestroyEnvironmentReply struct { func (x *DestroyEnvironmentReply) Reset() { *x = DestroyEnvironmentReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[29] + mi := &file_protos_o2control_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2310,7 +1724,7 @@ func (x *DestroyEnvironmentReply) String() string { func (*DestroyEnvironmentReply) ProtoMessage() {} func (x *DestroyEnvironmentReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[29] + mi := &file_protos_o2control_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2323,7 +1737,7 @@ func (x *DestroyEnvironmentReply) ProtoReflect() protoreflect.Message { // Deprecated: Use DestroyEnvironmentReply.ProtoReflect.Descriptor instead. func (*DestroyEnvironmentReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{29} + return file_protos_o2control_proto_rawDescGZIP(), []int{21} } func (x *DestroyEnvironmentReply) GetCleanupTasksReply() *CleanupTasksReply { @@ -2344,7 +1758,7 @@ type GetActiveDetectorsReply struct { func (x *GetActiveDetectorsReply) Reset() { *x = GetActiveDetectorsReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[30] + mi := &file_protos_o2control_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2357,7 +1771,7 @@ func (x *GetActiveDetectorsReply) String() string { func (*GetActiveDetectorsReply) ProtoMessage() {} func (x *GetActiveDetectorsReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[30] + mi := &file_protos_o2control_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2370,7 +1784,7 @@ func (x *GetActiveDetectorsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetActiveDetectorsReply.ProtoReflect.Descriptor instead. func (*GetActiveDetectorsReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{30} + return file_protos_o2control_proto_rawDescGZIP(), []int{22} } func (x *GetActiveDetectorsReply) GetDetectors() []string { @@ -2391,7 +1805,7 @@ type GetAvailableDetectorsReply struct { func (x *GetAvailableDetectorsReply) Reset() { *x = GetAvailableDetectorsReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[31] + mi := &file_protos_o2control_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2404,7 +1818,7 @@ func (x *GetAvailableDetectorsReply) String() string { func (*GetAvailableDetectorsReply) ProtoMessage() {} func (x *GetAvailableDetectorsReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[31] + mi := &file_protos_o2control_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2417,7 +1831,7 @@ func (x *GetAvailableDetectorsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAvailableDetectorsReply.ProtoReflect.Descriptor instead. func (*GetAvailableDetectorsReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{31} + return file_protos_o2control_proto_rawDescGZIP(), []int{23} } func (x *GetAvailableDetectorsReply) GetDetectors() []string { @@ -2444,7 +1858,7 @@ type SetEnvironmentPropertiesRequest struct { func (x *SetEnvironmentPropertiesRequest) Reset() { *x = SetEnvironmentPropertiesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[32] + mi := &file_protos_o2control_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2457,7 +1871,7 @@ func (x *SetEnvironmentPropertiesRequest) String() string { func (*SetEnvironmentPropertiesRequest) ProtoMessage() {} func (x *SetEnvironmentPropertiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[32] + mi := &file_protos_o2control_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2470,7 +1884,7 @@ func (x *SetEnvironmentPropertiesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetEnvironmentPropertiesRequest.ProtoReflect.Descriptor instead. func (*SetEnvironmentPropertiesRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{32} + return file_protos_o2control_proto_rawDescGZIP(), []int{24} } func (x *SetEnvironmentPropertiesRequest) GetId() string { @@ -2496,7 +1910,7 @@ type SetEnvironmentPropertiesReply struct { func (x *SetEnvironmentPropertiesReply) Reset() { *x = SetEnvironmentPropertiesReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[33] + mi := &file_protos_o2control_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2509,7 +1923,7 @@ func (x *SetEnvironmentPropertiesReply) String() string { func (*SetEnvironmentPropertiesReply) ProtoMessage() {} func (x *SetEnvironmentPropertiesReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[33] + mi := &file_protos_o2control_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2522,7 +1936,7 @@ func (x *SetEnvironmentPropertiesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SetEnvironmentPropertiesReply.ProtoReflect.Descriptor instead. func (*SetEnvironmentPropertiesReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{33} + return file_protos_o2control_proto_rawDescGZIP(), []int{25} } type GetEnvironmentPropertiesRequest struct { @@ -2541,7 +1955,7 @@ type GetEnvironmentPropertiesRequest struct { func (x *GetEnvironmentPropertiesRequest) Reset() { *x = GetEnvironmentPropertiesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[34] + mi := &file_protos_o2control_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2554,7 +1968,7 @@ func (x *GetEnvironmentPropertiesRequest) String() string { func (*GetEnvironmentPropertiesRequest) ProtoMessage() {} func (x *GetEnvironmentPropertiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[34] + mi := &file_protos_o2control_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2567,7 +1981,7 @@ func (x *GetEnvironmentPropertiesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentPropertiesRequest.ProtoReflect.Descriptor instead. func (*GetEnvironmentPropertiesRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{34} + return file_protos_o2control_proto_rawDescGZIP(), []int{26} } func (x *GetEnvironmentPropertiesRequest) GetId() string { @@ -2602,7 +2016,7 @@ type GetEnvironmentPropertiesReply struct { func (x *GetEnvironmentPropertiesReply) Reset() { *x = GetEnvironmentPropertiesReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[35] + mi := &file_protos_o2control_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2615,7 +2029,7 @@ func (x *GetEnvironmentPropertiesReply) String() string { func (*GetEnvironmentPropertiesReply) ProtoMessage() {} func (x *GetEnvironmentPropertiesReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[35] + mi := &file_protos_o2control_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2628,7 +2042,7 @@ func (x *GetEnvironmentPropertiesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvironmentPropertiesReply.ProtoReflect.Descriptor instead. func (*GetEnvironmentPropertiesReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{35} + return file_protos_o2control_proto_rawDescGZIP(), []int{27} } func (x *GetEnvironmentPropertiesReply) GetProperties() map[string]string { @@ -2661,7 +2075,7 @@ type ShortTaskInfo struct { func (x *ShortTaskInfo) Reset() { *x = ShortTaskInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[36] + mi := &file_protos_o2control_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2674,7 +2088,7 @@ func (x *ShortTaskInfo) String() string { func (*ShortTaskInfo) ProtoMessage() {} func (x *ShortTaskInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[36] + mi := &file_protos_o2control_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2687,7 +2101,7 @@ func (x *ShortTaskInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ShortTaskInfo.ProtoReflect.Descriptor instead. func (*ShortTaskInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{36} + return file_protos_o2control_proto_rawDescGZIP(), []int{28} } func (x *ShortTaskInfo) GetName() string { @@ -2774,7 +2188,7 @@ type TaskDeploymentInfo struct { func (x *TaskDeploymentInfo) Reset() { *x = TaskDeploymentInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[37] + mi := &file_protos_o2control_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2787,7 +2201,7 @@ func (x *TaskDeploymentInfo) String() string { func (*TaskDeploymentInfo) ProtoMessage() {} func (x *TaskDeploymentInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[37] + mi := &file_protos_o2control_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2800,7 +2214,7 @@ func (x *TaskDeploymentInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskDeploymentInfo.ProtoReflect.Descriptor instead. func (*TaskDeploymentInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{37} + return file_protos_o2control_proto_rawDescGZIP(), []int{29} } func (x *TaskDeploymentInfo) GetHostname() string { @@ -2840,7 +2254,7 @@ type GetTasksRequest struct { func (x *GetTasksRequest) Reset() { *x = GetTasksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[38] + mi := &file_protos_o2control_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2853,7 +2267,7 @@ func (x *GetTasksRequest) String() string { func (*GetTasksRequest) ProtoMessage() {} func (x *GetTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[38] + mi := &file_protos_o2control_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2866,7 +2280,7 @@ func (x *GetTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTasksRequest.ProtoReflect.Descriptor instead. func (*GetTasksRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{38} + return file_protos_o2control_proto_rawDescGZIP(), []int{30} } type GetTasksReply struct { @@ -2880,7 +2294,7 @@ type GetTasksReply struct { func (x *GetTasksReply) Reset() { *x = GetTasksReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[39] + mi := &file_protos_o2control_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2893,7 +2307,7 @@ func (x *GetTasksReply) String() string { func (*GetTasksReply) ProtoMessage() {} func (x *GetTasksReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[39] + mi := &file_protos_o2control_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2906,7 +2320,7 @@ func (x *GetTasksReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTasksReply.ProtoReflect.Descriptor instead. func (*GetTasksReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{39} + return file_protos_o2control_proto_rawDescGZIP(), []int{31} } func (x *GetTasksReply) GetTasks() []*ShortTaskInfo { @@ -2927,7 +2341,7 @@ type GetTaskRequest struct { func (x *GetTaskRequest) Reset() { *x = GetTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[40] + mi := &file_protos_o2control_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2940,7 +2354,7 @@ func (x *GetTaskRequest) String() string { func (*GetTaskRequest) ProtoMessage() {} func (x *GetTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[40] + mi := &file_protos_o2control_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2953,7 +2367,7 @@ func (x *GetTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskRequest.ProtoReflect.Descriptor instead. func (*GetTaskRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{40} + return file_protos_o2control_proto_rawDescGZIP(), []int{32} } func (x *GetTaskRequest) GetTaskId() string { @@ -2974,7 +2388,7 @@ type GetTaskReply struct { func (x *GetTaskReply) Reset() { *x = GetTaskReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[41] + mi := &file_protos_o2control_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2987,7 +2401,7 @@ func (x *GetTaskReply) String() string { func (*GetTaskReply) ProtoMessage() {} func (x *GetTaskReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[41] + mi := &file_protos_o2control_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3000,7 +2414,7 @@ func (x *GetTaskReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskReply.ProtoReflect.Descriptor instead. func (*GetTaskReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{41} + return file_protos_o2control_proto_rawDescGZIP(), []int{33} } func (x *GetTaskReply) GetTask() *TaskInfo { @@ -3022,7 +2436,7 @@ type TaskClassInfo struct { func (x *TaskClassInfo) Reset() { *x = TaskClassInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[42] + mi := &file_protos_o2control_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3035,7 +2449,7 @@ func (x *TaskClassInfo) String() string { func (*TaskClassInfo) ProtoMessage() {} func (x *TaskClassInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[42] + mi := &file_protos_o2control_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3048,7 +2462,7 @@ func (x *TaskClassInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskClassInfo.ProtoReflect.Descriptor instead. func (*TaskClassInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{42} + return file_protos_o2control_proto_rawDescGZIP(), []int{34} } func (x *TaskClassInfo) GetName() string { @@ -3080,7 +2494,7 @@ type CommandInfo struct { func (x *CommandInfo) Reset() { *x = CommandInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[43] + mi := &file_protos_o2control_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3093,7 +2507,7 @@ func (x *CommandInfo) String() string { func (*CommandInfo) ProtoMessage() {} func (x *CommandInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[43] + mi := &file_protos_o2control_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3106,7 +2520,7 @@ func (x *CommandInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CommandInfo.ProtoReflect.Descriptor instead. func (*CommandInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{43} + return file_protos_o2control_proto_rawDescGZIP(), []int{35} } func (x *CommandInfo) GetEnv() []string { @@ -3157,7 +2571,7 @@ type ChannelInfo struct { func (x *ChannelInfo) Reset() { *x = ChannelInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[44] + mi := &file_protos_o2control_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3170,7 +2584,7 @@ func (x *ChannelInfo) String() string { func (*ChannelInfo) ProtoMessage() {} func (x *ChannelInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[44] + mi := &file_protos_o2control_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3183,7 +2597,7 @@ func (x *ChannelInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ChannelInfo.ProtoReflect.Descriptor instead. func (*ChannelInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{44} + return file_protos_o2control_proto_rawDescGZIP(), []int{36} } func (x *ChannelInfo) GetName() string { @@ -3225,7 +2639,7 @@ type TaskInfo struct { func (x *TaskInfo) Reset() { *x = TaskInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[45] + mi := &file_protos_o2control_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3238,7 +2652,7 @@ func (x *TaskInfo) String() string { func (*TaskInfo) ProtoMessage() {} func (x *TaskInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[45] + mi := &file_protos_o2control_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3251,7 +2665,7 @@ func (x *TaskInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskInfo.ProtoReflect.Descriptor instead. func (*TaskInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{45} + return file_protos_o2control_proto_rawDescGZIP(), []int{37} } func (x *TaskInfo) GetShortInfo() *ShortTaskInfo { @@ -3321,7 +2735,7 @@ type CleanupTasksRequest struct { func (x *CleanupTasksRequest) Reset() { *x = CleanupTasksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[46] + mi := &file_protos_o2control_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3334,7 +2748,7 @@ func (x *CleanupTasksRequest) String() string { func (*CleanupTasksRequest) ProtoMessage() {} func (x *CleanupTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[46] + mi := &file_protos_o2control_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3347,7 +2761,7 @@ func (x *CleanupTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CleanupTasksRequest.ProtoReflect.Descriptor instead. func (*CleanupTasksRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{46} + return file_protos_o2control_proto_rawDescGZIP(), []int{38} } func (x *CleanupTasksRequest) GetTaskIds() []string { @@ -3369,7 +2783,7 @@ type CleanupTasksReply struct { func (x *CleanupTasksReply) Reset() { *x = CleanupTasksReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[47] + mi := &file_protos_o2control_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3382,7 +2796,7 @@ func (x *CleanupTasksReply) String() string { func (*CleanupTasksReply) ProtoMessage() {} func (x *CleanupTasksReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[47] + mi := &file_protos_o2control_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3395,7 +2809,7 @@ func (x *CleanupTasksReply) ProtoReflect() protoreflect.Message { // Deprecated: Use CleanupTasksReply.ProtoReflect.Descriptor instead. func (*CleanupTasksReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{47} + return file_protos_o2control_proto_rawDescGZIP(), []int{39} } func (x *CleanupTasksReply) GetKilledTasks() []*ShortTaskInfo { @@ -3427,7 +2841,7 @@ type GetRolesRequest struct { func (x *GetRolesRequest) Reset() { *x = GetRolesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[48] + mi := &file_protos_o2control_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3440,7 +2854,7 @@ func (x *GetRolesRequest) String() string { func (*GetRolesRequest) ProtoMessage() {} func (x *GetRolesRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[48] + mi := &file_protos_o2control_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3453,7 +2867,7 @@ func (x *GetRolesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRolesRequest.ProtoReflect.Descriptor instead. func (*GetRolesRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{48} + return file_protos_o2control_proto_rawDescGZIP(), []int{40} } func (x *GetRolesRequest) GetEnvId() string { @@ -3491,7 +2905,7 @@ type RoleInfo struct { func (x *RoleInfo) Reset() { *x = RoleInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[49] + mi := &file_protos_o2control_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3504,7 +2918,7 @@ func (x *RoleInfo) String() string { func (*RoleInfo) ProtoMessage() {} func (x *RoleInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[49] + mi := &file_protos_o2control_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3517,7 +2931,7 @@ func (x *RoleInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RoleInfo.ProtoReflect.Descriptor instead. func (*RoleInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{49} + return file_protos_o2control_proto_rawDescGZIP(), []int{41} } func (x *RoleInfo) GetName() string { @@ -3608,7 +3022,7 @@ type GetRolesReply struct { func (x *GetRolesReply) Reset() { *x = GetRolesReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[50] + mi := &file_protos_o2control_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3621,7 +3035,7 @@ func (x *GetRolesReply) String() string { func (*GetRolesReply) ProtoMessage() {} func (x *GetRolesReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[50] + mi := &file_protos_o2control_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3634,7 +3048,7 @@ func (x *GetRolesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRolesReply.ProtoReflect.Descriptor instead. func (*GetRolesReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{50} + return file_protos_o2control_proto_rawDescGZIP(), []int{42} } func (x *GetRolesReply) GetRoles() []*RoleInfo { @@ -3659,7 +3073,7 @@ type GetWorkflowTemplatesRequest struct { func (x *GetWorkflowTemplatesRequest) Reset() { *x = GetWorkflowTemplatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[51] + mi := &file_protos_o2control_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3672,7 +3086,7 @@ func (x *GetWorkflowTemplatesRequest) String() string { func (*GetWorkflowTemplatesRequest) ProtoMessage() {} func (x *GetWorkflowTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[51] + mi := &file_protos_o2control_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3685,7 +3099,7 @@ func (x *GetWorkflowTemplatesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkflowTemplatesRequest.ProtoReflect.Descriptor instead. func (*GetWorkflowTemplatesRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{51} + return file_protos_o2control_proto_rawDescGZIP(), []int{43} } func (x *GetWorkflowTemplatesRequest) GetRepoPattern() string { @@ -3743,7 +3157,7 @@ type VarSpecMessage struct { func (x *VarSpecMessage) Reset() { *x = VarSpecMessage{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[52] + mi := &file_protos_o2control_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3756,7 +3170,7 @@ func (x *VarSpecMessage) String() string { func (*VarSpecMessage) ProtoMessage() {} func (x *VarSpecMessage) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[52] + mi := &file_protos_o2control_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3769,7 +3183,7 @@ func (x *VarSpecMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use VarSpecMessage.ProtoReflect.Descriptor instead. func (*VarSpecMessage) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{52} + return file_protos_o2control_proto_rawDescGZIP(), []int{44} } func (x *VarSpecMessage) GetDefaultValue() string { @@ -3857,7 +3271,7 @@ type WorkflowTemplateInfo struct { func (x *WorkflowTemplateInfo) Reset() { *x = WorkflowTemplateInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[53] + mi := &file_protos_o2control_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3870,7 +3284,7 @@ func (x *WorkflowTemplateInfo) String() string { func (*WorkflowTemplateInfo) ProtoMessage() {} func (x *WorkflowTemplateInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[53] + mi := &file_protos_o2control_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3883,7 +3297,7 @@ func (x *WorkflowTemplateInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkflowTemplateInfo.ProtoReflect.Descriptor instead. func (*WorkflowTemplateInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{53} + return file_protos_o2control_proto_rawDescGZIP(), []int{45} } func (x *WorkflowTemplateInfo) GetRepo() string { @@ -3932,7 +3346,7 @@ type GetWorkflowTemplatesReply struct { func (x *GetWorkflowTemplatesReply) Reset() { *x = GetWorkflowTemplatesReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[54] + mi := &file_protos_o2control_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3945,7 +3359,7 @@ func (x *GetWorkflowTemplatesReply) String() string { func (*GetWorkflowTemplatesReply) ProtoMessage() {} func (x *GetWorkflowTemplatesReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[54] + mi := &file_protos_o2control_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3958,7 +3372,7 @@ func (x *GetWorkflowTemplatesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkflowTemplatesReply.ProtoReflect.Descriptor instead. func (*GetWorkflowTemplatesReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{54} + return file_protos_o2control_proto_rawDescGZIP(), []int{46} } func (x *GetWorkflowTemplatesReply) GetWorkflowTemplates() []*WorkflowTemplateInfo { @@ -3979,7 +3393,7 @@ type ListReposRequest struct { func (x *ListReposRequest) Reset() { *x = ListReposRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[55] + mi := &file_protos_o2control_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3992,7 +3406,7 @@ func (x *ListReposRequest) String() string { func (*ListReposRequest) ProtoMessage() {} func (x *ListReposRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[55] + mi := &file_protos_o2control_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4005,7 +3419,7 @@ func (x *ListReposRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReposRequest.ProtoReflect.Descriptor instead. func (*ListReposRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{55} + return file_protos_o2control_proto_rawDescGZIP(), []int{47} } func (x *ListReposRequest) GetGetRevisions() bool { @@ -4029,7 +3443,7 @@ type RepoInfo struct { func (x *RepoInfo) Reset() { *x = RepoInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[56] + mi := &file_protos_o2control_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4042,7 +3456,7 @@ func (x *RepoInfo) String() string { func (*RepoInfo) ProtoMessage() {} func (x *RepoInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[56] + mi := &file_protos_o2control_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4055,7 +3469,7 @@ func (x *RepoInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RepoInfo.ProtoReflect.Descriptor instead. func (*RepoInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{56} + return file_protos_o2control_proto_rawDescGZIP(), []int{48} } func (x *RepoInfo) GetName() string { @@ -4098,7 +3512,7 @@ type ListReposReply struct { func (x *ListReposReply) Reset() { *x = ListReposReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[57] + mi := &file_protos_o2control_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4111,7 +3525,7 @@ func (x *ListReposReply) String() string { func (*ListReposReply) ProtoMessage() {} func (x *ListReposReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[57] + mi := &file_protos_o2control_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4124,7 +3538,7 @@ func (x *ListReposReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReposReply.ProtoReflect.Descriptor instead. func (*ListReposReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{57} + return file_protos_o2control_proto_rawDescGZIP(), []int{49} } func (x *ListReposReply) GetRepos() []*RepoInfo { @@ -4153,7 +3567,7 @@ type AddRepoRequest struct { func (x *AddRepoRequest) Reset() { *x = AddRepoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[58] + mi := &file_protos_o2control_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4166,7 +3580,7 @@ func (x *AddRepoRequest) String() string { func (*AddRepoRequest) ProtoMessage() {} func (x *AddRepoRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[58] + mi := &file_protos_o2control_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4179,7 +3593,7 @@ func (x *AddRepoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddRepoRequest.ProtoReflect.Descriptor instead. func (*AddRepoRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{58} + return file_protos_o2control_proto_rawDescGZIP(), []int{50} } func (x *AddRepoRequest) GetName() string { @@ -4208,7 +3622,7 @@ type AddRepoReply struct { func (x *AddRepoReply) Reset() { *x = AddRepoReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[59] + mi := &file_protos_o2control_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4221,7 +3635,7 @@ func (x *AddRepoReply) String() string { func (*AddRepoReply) ProtoMessage() {} func (x *AddRepoReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[59] + mi := &file_protos_o2control_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4234,7 +3648,7 @@ func (x *AddRepoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddRepoReply.ProtoReflect.Descriptor instead. func (*AddRepoReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{59} + return file_protos_o2control_proto_rawDescGZIP(), []int{51} } func (x *AddRepoReply) GetNewDefaultRevision() string { @@ -4262,7 +3676,7 @@ type RemoveRepoRequest struct { func (x *RemoveRepoRequest) Reset() { *x = RemoveRepoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[60] + mi := &file_protos_o2control_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4275,7 +3689,7 @@ func (x *RemoveRepoRequest) String() string { func (*RemoveRepoRequest) ProtoMessage() {} func (x *RemoveRepoRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[60] + mi := &file_protos_o2control_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4288,7 +3702,7 @@ func (x *RemoveRepoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveRepoRequest.ProtoReflect.Descriptor instead. func (*RemoveRepoRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{60} + return file_protos_o2control_proto_rawDescGZIP(), []int{52} } func (x *RemoveRepoRequest) GetIndex() int32 { @@ -4309,7 +3723,7 @@ type RemoveRepoReply struct { func (x *RemoveRepoReply) Reset() { *x = RemoveRepoReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[61] + mi := &file_protos_o2control_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4322,7 +3736,7 @@ func (x *RemoveRepoReply) String() string { func (*RemoveRepoReply) ProtoMessage() {} func (x *RemoveRepoReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[61] + mi := &file_protos_o2control_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4335,7 +3749,7 @@ func (x *RemoveRepoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveRepoReply.ProtoReflect.Descriptor instead. func (*RemoveRepoReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{61} + return file_protos_o2control_proto_rawDescGZIP(), []int{53} } func (x *RemoveRepoReply) GetNewDefaultRepo() string { @@ -4356,7 +3770,7 @@ type RefreshReposRequest struct { func (x *RefreshReposRequest) Reset() { *x = RefreshReposRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[62] + mi := &file_protos_o2control_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4369,7 +3783,7 @@ func (x *RefreshReposRequest) String() string { func (*RefreshReposRequest) ProtoMessage() {} func (x *RefreshReposRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[62] + mi := &file_protos_o2control_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4382,7 +3796,7 @@ func (x *RefreshReposRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshReposRequest.ProtoReflect.Descriptor instead. func (*RefreshReposRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{62} + return file_protos_o2control_proto_rawDescGZIP(), []int{54} } func (x *RefreshReposRequest) GetIndex() int32 { @@ -4403,7 +3817,7 @@ type SetDefaultRepoRequest struct { func (x *SetDefaultRepoRequest) Reset() { *x = SetDefaultRepoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[63] + mi := &file_protos_o2control_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4416,7 +3830,7 @@ func (x *SetDefaultRepoRequest) String() string { func (*SetDefaultRepoRequest) ProtoMessage() {} func (x *SetDefaultRepoRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[63] + mi := &file_protos_o2control_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4429,7 +3843,7 @@ func (x *SetDefaultRepoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetDefaultRepoRequest.ProtoReflect.Descriptor instead. func (*SetDefaultRepoRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{63} + return file_protos_o2control_proto_rawDescGZIP(), []int{55} } func (x *SetDefaultRepoRequest) GetIndex() int32 { @@ -4450,7 +3864,7 @@ type SetGlobalDefaultRevisionRequest struct { func (x *SetGlobalDefaultRevisionRequest) Reset() { *x = SetGlobalDefaultRevisionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[64] + mi := &file_protos_o2control_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4463,7 +3877,7 @@ func (x *SetGlobalDefaultRevisionRequest) String() string { func (*SetGlobalDefaultRevisionRequest) ProtoMessage() {} func (x *SetGlobalDefaultRevisionRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[64] + mi := &file_protos_o2control_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4476,7 +3890,7 @@ func (x *SetGlobalDefaultRevisionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetGlobalDefaultRevisionRequest.ProtoReflect.Descriptor instead. func (*SetGlobalDefaultRevisionRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{64} + return file_protos_o2control_proto_rawDescGZIP(), []int{56} } func (x *SetGlobalDefaultRevisionRequest) GetRevision() string { @@ -4498,7 +3912,7 @@ type SetRepoDefaultRevisionRequest struct { func (x *SetRepoDefaultRevisionRequest) Reset() { *x = SetRepoDefaultRevisionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[65] + mi := &file_protos_o2control_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4511,7 +3925,7 @@ func (x *SetRepoDefaultRevisionRequest) String() string { func (*SetRepoDefaultRevisionRequest) ProtoMessage() {} func (x *SetRepoDefaultRevisionRequest) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[65] + mi := &file_protos_o2control_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4524,7 +3938,7 @@ func (x *SetRepoDefaultRevisionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetRepoDefaultRevisionRequest.ProtoReflect.Descriptor instead. func (*SetRepoDefaultRevisionRequest) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{65} + return file_protos_o2control_proto_rawDescGZIP(), []int{57} } func (x *SetRepoDefaultRevisionRequest) GetIndex() int32 { @@ -4552,7 +3966,7 @@ type SetRepoDefaultRevisionReply struct { func (x *SetRepoDefaultRevisionReply) Reset() { *x = SetRepoDefaultRevisionReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[66] + mi := &file_protos_o2control_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4565,7 +3979,7 @@ func (x *SetRepoDefaultRevisionReply) String() string { func (*SetRepoDefaultRevisionReply) ProtoMessage() {} func (x *SetRepoDefaultRevisionReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[66] + mi := &file_protos_o2control_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4578,7 +3992,7 @@ func (x *SetRepoDefaultRevisionReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SetRepoDefaultRevisionReply.ProtoReflect.Descriptor instead. func (*SetRepoDefaultRevisionReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{66} + return file_protos_o2control_proto_rawDescGZIP(), []int{58} } func (x *SetRepoDefaultRevisionReply) GetInfo() string { @@ -4597,7 +4011,7 @@ type Empty struct { func (x *Empty) Reset() { *x = Empty{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[67] + mi := &file_protos_o2control_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4610,7 +4024,7 @@ func (x *Empty) String() string { func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[67] + mi := &file_protos_o2control_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4623,7 +4037,7 @@ func (x *Empty) ProtoReflect() protoreflect.Message { // Deprecated: Use Empty.ProtoReflect.Descriptor instead. func (*Empty) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{67} + return file_protos_o2control_proto_rawDescGZIP(), []int{59} } type ListIntegratedServicesReply struct { @@ -4637,7 +4051,7 @@ type ListIntegratedServicesReply struct { func (x *ListIntegratedServicesReply) Reset() { *x = ListIntegratedServicesReply{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[68] + mi := &file_protos_o2control_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4650,7 +4064,7 @@ func (x *ListIntegratedServicesReply) String() string { func (*ListIntegratedServicesReply) ProtoMessage() {} func (x *ListIntegratedServicesReply) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[68] + mi := &file_protos_o2control_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4663,7 +4077,7 @@ func (x *ListIntegratedServicesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ListIntegratedServicesReply.ProtoReflect.Descriptor instead. func (*ListIntegratedServicesReply) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{68} + return file_protos_o2control_proto_rawDescGZIP(), []int{60} } func (x *ListIntegratedServicesReply) GetServices() map[string]*IntegratedServiceInfo { @@ -4688,7 +4102,7 @@ type IntegratedServiceInfo struct { func (x *IntegratedServiceInfo) Reset() { *x = IntegratedServiceInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protos_o2control_proto_msgTypes[69] + mi := &file_protos_o2control_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4701,7 +4115,7 @@ func (x *IntegratedServiceInfo) String() string { func (*IntegratedServiceInfo) ProtoMessage() {} func (x *IntegratedServiceInfo) ProtoReflect() protoreflect.Message { - mi := &file_protos_o2control_proto_msgTypes[69] + mi := &file_protos_o2control_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4714,7 +4128,7 @@ func (x *IntegratedServiceInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use IntegratedServiceInfo.ProtoReflect.Descriptor instead. func (*IntegratedServiceInfo) Descriptor() ([]byte, []int) { - return file_protos_o2control_proto_rawDescGZIP(), []int{69} + return file_protos_o2control_proto_rawDescGZIP(), []int{61} } func (x *IntegratedServiceInfo) GetName() string { @@ -4757,811 +4171,748 @@ var File_protos_o2control_proto protoreflect.FileDescriptor var file_protos_o2control_proto_rawDesc = []byte{ 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x22, 0x16, 0x0a, 0x14, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, - 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x22, 0xad, 0x01, 0x0a, 0x13, - 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x0c, - 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x6c, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0x0f, - 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x62, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x49, 0x0a, 0x0e, 0x6d, 0x65, 0x73, - 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, - 0x61, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, - 0x62, 0x65, 0x61, 0x74, 0x22, 0x34, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x09, 0x0a, - 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, - 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x42, 0x07, 0x0a, 0x05, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x22, 0xf0, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4c, 0x0a, 0x10, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, - 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x22, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x14, 0x0a, - 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x22, 0xd1, 0x03, 0x0a, 0x15, + 0x72, 0x6f, 0x6c, 0x1a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x22, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, - 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x11, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x68, - 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x2c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, - 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x49, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x13, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x49, 0x6e, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, - 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, - 0x2e, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, - 0x29, 0x0a, 0x0f, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x0f, 0x0a, 0x0d, 0x54, 0x65, - 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x58, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, 0x6c, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x12, - 0x24, 0x0a, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x61, 0x73, 0x6b, - 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x78, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x20, 0x0a, - 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, - 0x3e, 0x0a, 0x0c, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0c, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, - 0xdb, 0x08, 0x0a, 0x0f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x57, 0x68, - 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x57, 0x68, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x74, - 0x61, 0x73, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, - 0x6f, 0x6f, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, - 0x6f, 0x6f, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x04, 0x76, 0x61, 0x72, - 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, + 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x22, 0xd1, 0x03, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x73, + 0x6b, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x34, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x49, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x49, 0x6e, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, + 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x22, 0x29, 0x0a, 0x0f, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x0f, 0x0a, 0x0d, + 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x58, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, + 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, 0x6c, + 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, + 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x54, 0x61, + 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x78, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x45, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, + 0x64, 0x12, 0x3e, 0x0a, 0x0c, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, - 0x61, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x18, - 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x22, 0xdb, 0x08, 0x0a, 0x0f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x57, 0x68, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x57, 0x68, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, + 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, + 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x04, 0x76, + 0x61, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x76, 0x61, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, + 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x6c, 0x70, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x6c, 0x70, 0x73, 0x12, + 0x2c, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x48, 0x6f, 0x73, 0x74, 0x73, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, + 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x6c, 0x70, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x6c, 0x70, 0x73, 0x12, 0x2c, 0x0a, - 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x64, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, - 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x48, 0x6f, - 0x73, 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x54, - 0x61, 0x73, 0x6b, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x4f, 0x66, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x13, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x4f, 0x66, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x4f, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x4f, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x1a, - 0x3b, 0x0a, 0x0d, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, - 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x49, 0x0a, 0x1b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd4, 0x01, - 0x0a, 0x15, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, - 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, - 0x61, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x1a, 0x37, 0x0a, 0x09, 0x56, + 0x6f, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, + 0x66, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x13, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x4f, 0x66, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x4f, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, + 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x13, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x0b, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x65, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x22, 0xd4, 0x01, 0x0a, 0x19, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2a, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x76, - 0x61, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, 0x61, 0x72, 0x73, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a, - 0x37, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x19, 0x0a, 0x17, 0x4e, 0x65, 0x77, 0x41, - 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x53, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, - 0x73, 0x68, 0x6f, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x65, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x77, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x65, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x3c, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, - 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, - 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0xdb, 0x01, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x6d, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, - 0x41, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x10, 0x01, 0x12, 0x11, - 0x0a, 0x0d, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x10, - 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x10, 0x03, - 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x47, - 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x50, - 0x4c, 0x4f, 0x59, 0x10, 0x06, 0x22, 0xf3, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x4f, - 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x01, 0x0a, 0x18, - 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x6c, - 0x6c, 0x22, 0xa1, 0x01, 0x0a, 0x14, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x74, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, - 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, - 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x44, 0x44, 0x5f, 0x52, - 0x4f, 0x4c, 0x45, 0x10, 0x04, 0x22, 0x8b, 0x01, 0x0a, 0x16, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x4b, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x66, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x49, 0x0a, 0x1b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xd4, 0x01, 0x0a, 0x15, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x76, 0x61, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x1a, 0x37, 0x0a, + 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x13, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, + 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x22, 0xd4, 0x01, 0x0a, 0x19, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, - 0x30, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, - 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x65, 0x0a, 0x17, 0x44, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, - 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x11, 0x63, 0x6c, 0x65, - 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x37, - 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x74, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, - 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5a, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x73, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, - 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, - 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x58, 0x0a, 0x0a, 0x70, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xbc, 0x02, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, - 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, - 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, - 0x70, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x24, - 0x0a, 0x0d, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x53, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x53, 0x74, - 0x64, 0x6f, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, - 0x6c, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3f, 0x0a, 0x0d, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2e, 0x0a, - 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, - 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x28, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x74, 0x61, 0x73, 0x6b, - 0x22, 0x45, 0x0a, 0x0d, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x7d, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x65, 0x6c, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x4d, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xf0, 0x03, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x40, 0x0a, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x6e, 0x76, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x13, 0x43, 0x6c, 0x65, 0x61, - 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x11, 0x43, 0x6c, - 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x3a, 0x0a, 0x0b, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, - 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x72, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, - 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x43, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x65, 0x6e, 0x76, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, 0x53, 0x70, 0x65, 0x63, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x74, 0x68, 0x53, 0x70, 0x65, 0x63, 0x22, 0xd3, - 0x05, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x73, - 0x6b, 0x49, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, - 0x49, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, + 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, 0x61, 0x72, + 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x19, 0x0a, 0x17, 0x4e, 0x65, + 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x53, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a, + 0x0a, 0x10, 0x73, 0x68, 0x6f, 0x77, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, + 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x77, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x65, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x13, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x2f, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, - 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x3d, - 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x31, 0x0a, - 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, 0x61, 0x72, 0x73, - 0x12, 0x3d, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, - 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x12, - 0x58, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, - 0x74, 0x61, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x63, - 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3b, 0x0a, 0x0d, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, - 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0xdb, 0x01, 0x0a, 0x19, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x6d, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x10, 0x01, + 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, + 0x59, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, + 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x0c, 0x0a, + 0x08, 0x47, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x44, + 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x10, 0x06, 0x22, 0xf3, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x65, 0x6e, + 0x64, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, + 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x01, + 0x0a, 0x18, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, + 0x41, 0x6c, 0x6c, 0x22, 0xa1, 0x01, 0x0a, 0x14, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x70, 0x74, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x12, 0x08, + 0x0a, 0x04, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x4d, 0x4f, + 0x56, 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x44, 0x44, + 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x04, 0x22, 0x8b, 0x01, 0x0a, 0x16, 0x4d, 0x6f, 0x64, 0x69, + 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x4b, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, + 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x54, 0x61, 0x73, 0x6b, + 0x73, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x52, 0x75, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x65, 0x0a, 0x17, 0x44, 0x65, 0x73, + 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4a, 0x0a, 0x11, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, + 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, + 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x11, 0x63, + 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x37, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, + 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3a, 0x0a, 0x1a, 0x47, 0x65, 0x74, + 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x74, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x74, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5a, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x73, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x47, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x1d, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x58, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x38, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, + 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbc, 0x02, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, + 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, + 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x6f, 0x63, + 0x6b, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, + 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, + 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x53, 0x74, 0x64, 0x6f, 0x75, + 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, + 0x53, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x61, 0x62, 0x6c, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3f, + 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x2e, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, + 0x28, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x74, 0x61, 0x73, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x74, 0x61, + 0x73, 0x6b, 0x22, 0x45, 0x0a, 0x0d, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x7d, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, + 0x65, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x68, 0x65, 0x6c, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x4d, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xf0, 0x03, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x09, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x40, 0x0a, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x74, 0x68, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x13, 0x43, 0x6c, + 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x11, + 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x12, 0x3a, 0x0a, 0x0b, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0b, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3c, 0x0a, + 0x0c, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, + 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x43, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x6e, 0x76, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, 0x53, 0x70, 0x65, 0x63, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x74, 0x68, 0x53, 0x70, 0x65, 0x63, + 0x22, 0xd3, 0x05, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x74, + 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, + 0x73, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, - 0x22, 0xc9, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x20, 0x0a, 0x0b, - 0x61, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x61, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x61, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, - 0x61, 0x6c, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x22, 0x9a, 0x04, 0x0a, - 0x0e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x61, - 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x3a, 0x0a, 0x06, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x72, 0x53, - 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x55, 0x69, 0x57, 0x69, 0x64, - 0x67, 0x65, 0x74, 0x52, 0x06, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, - 0x61, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x6e, 0x65, - 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, - 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, - 0x09, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x49, 0x66, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x49, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x66, 0x22, 0x71, 0x0a, 0x08, 0x55, 0x69, 0x57, - 0x69, 0x64, 0x67, 0x65, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x42, 0x6f, 0x78, - 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x10, 0x01, 0x12, 0x0b, - 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x78, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x64, - 0x72, 0x6f, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x42, 0x6f, 0x78, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, - 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x42, 0x6f, 0x78, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x72, 0x61, - 0x64, 0x69, 0x6f, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x42, 0x6f, 0x78, 0x10, 0x05, 0x12, 0x0c, - 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x6f, 0x78, 0x10, 0x06, 0x22, 0x3b, 0x0a, 0x04, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x10, 0x00, - 0x12, 0x0a, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, - 0x62, 0x6f, 0x6f, 0x6c, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x10, 0x03, - 0x12, 0x07, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x10, 0x04, 0x22, 0xaf, 0x02, 0x0a, 0x14, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4f, - 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x58, 0x0a, 0x0f, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, 0x45, + 0x12, 0x3d, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, + 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, + 0x31, 0x0a, 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, 0x61, + 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, + 0x73, 0x12, 0x58, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, + 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3b, 0x0a, + 0x0d, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x56, 0x61, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, 0x19, 0x47, - 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x44, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x53, 0x74, 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x72, 0x6f, 0x6c, + 0x65, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x20, + 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x61, 0x6c, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6c, + 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x22, 0x9a, + 0x04, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x3a, 0x0a, 0x06, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x61, + 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x55, 0x69, 0x57, + 0x69, 0x64, 0x67, 0x65, 0x74, 0x52, 0x06, 0x77, 0x69, 0x64, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x70, 0x61, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, + 0x6e, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x1c, 0x0a, 0x09, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x49, 0x66, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x49, 0x66, 0x12, 0x1c, 0x0a, + 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x49, 0x66, 0x22, 0x71, 0x0a, 0x08, 0x55, + 0x69, 0x57, 0x69, 0x64, 0x67, 0x65, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x42, + 0x6f, 0x78, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x10, 0x01, + 0x12, 0x0b, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x78, 0x10, 0x02, 0x12, 0x0f, 0x0a, + 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x42, 0x6f, 0x78, 0x10, 0x03, 0x12, 0x0c, + 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x42, 0x6f, 0x78, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, + 0x72, 0x61, 0x64, 0x69, 0x6f, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x42, 0x6f, 0x78, 0x10, 0x05, + 0x12, 0x0c, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x6f, 0x78, 0x10, 0x06, 0x22, 0x3b, + 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x01, 0x12, 0x08, + 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x10, 0x04, 0x22, 0xaf, 0x02, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x36, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x67, - 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x80, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x70, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x71, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x12, - 0x34, 0x0a, 0x15, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, - 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x52, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x12, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x29, 0x0a, 0x11, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x22, 0x39, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x22, - 0x2b, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x2d, 0x0a, 0x15, - 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x3d, 0x0a, 0x1f, 0x53, - 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x1d, 0x53, 0x65, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, - 0x1b, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, - 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x1b, 0x4c, 0x69, - 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x50, 0x0a, 0x08, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x1a, 0x5d, 0x0a, 0x0d, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x15, 0x49, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x28, - 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xd8, 0x10, 0x0a, - 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x5a, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, - 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, - 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, - 0x12, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, - 0x54, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, - 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x4f, 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, 0x70, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, + 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x58, 0x0a, 0x0f, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x72, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x36, 0x0a, 0x10, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x67, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x80, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x70, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x28, 0x0a, 0x0f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x71, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x12, 0x34, 0x0a, 0x15, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x15, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x52, 0x65, + 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, + 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x52, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x52, 0x65, + 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x12, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x29, 0x0a, 0x11, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x39, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x77, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x22, 0x2b, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x2d, + 0x0a, 0x15, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x3d, 0x0a, + 0x1f, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x1d, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x31, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x12, + 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, + 0x66, 0x6f, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xce, 0x01, 0x0a, 0x1b, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x50, 0x0a, 0x08, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x1a, 0x5d, 0x0a, + 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, + 0x15, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xeb, + 0x10, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x5a, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, + 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, + 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x60, 0x0a, 0x12, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x41, 0x75, 0x74, 0x6f, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x12, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, - 0x12, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, - 0x4c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x74, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x52, 0x0a, - 0x15, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x25, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, - 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x2e, + 0x60, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x00, 0x12, 0x4c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, + 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, + 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x52, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, + 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x25, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x13, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4e, 0x65, 0x77, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, + 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, - 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x32, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, - 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, - 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x12, 0x45, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, - 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, + 0x73, 0x6b, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, + 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x45, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x41, 0x64, 0x64, - 0x52, 0x65, 0x70, 0x6f, 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x17, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x52, - 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x12, 0x5a, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x16, - 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, + 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, + 0x6f, 0x12, 0x19, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, + 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, + 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1c, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x00, 0x12, 0x42, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x52, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x20, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5a, 0x0a, + 0x18, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x09, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x73, 0x12, 0x10, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, - 0x43, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, - 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x08, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, - 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, 0x61, - 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, - 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, - 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x11, 0x4d, 0x6f, 0x64, 0x69, - 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, - 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, + 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x0d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x22, 0x00, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x10, 0x2e, + 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, + 0x26, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x08, 0x54, 0x65, 0x61, + 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1a, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x65, + 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, + 0x11, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x54, 0x0a, 0x22, 0x63, 0x68, 0x2e, 0x63, 0x65, - 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x72, 0x70, 0x63, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5a, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, - 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, - 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6f, 0x32, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x54, 0x0a, 0x22, + 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x72, 0x70, 0x63, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, + 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, + 0x70, 0x62, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5576,208 +4927,194 @@ func file_protos_o2control_proto_rawDescGZIP() []byte { return file_protos_o2control_proto_rawDescData } -var file_protos_o2control_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_protos_o2control_proto_msgTypes = make([]protoimpl.MessageInfo, 85) +var file_protos_o2control_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_protos_o2control_proto_msgTypes = make([]protoimpl.MessageInfo, 77) var file_protos_o2control_proto_goTypes = []interface{}{ - (StatusUpdate_Level)(0), // 0: o2control.StatusUpdate.Level - (ControlEnvironmentRequest_Optype)(0), // 1: o2control.ControlEnvironmentRequest.Optype - (EnvironmentOperation_Optype)(0), // 2: o2control.EnvironmentOperation.Optype - (VarSpecMessage_UiWidget)(0), // 3: o2control.VarSpecMessage.UiWidget - (VarSpecMessage_Type)(0), // 4: o2control.VarSpecMessage.Type - (*Event_MesosHeartbeat)(nil), // 5: o2control.Event_MesosHeartbeat - (*Ev_EnvironmentEvent)(nil), // 6: o2control.Ev_EnvironmentEvent - (*Ev_TaskEvent)(nil), // 7: o2control.Ev_TaskEvent - (*Ev_RoleEvent)(nil), // 8: o2control.Ev_RoleEvent - (*StatusRequest)(nil), // 9: o2control.StatusRequest - (*StatusReply)(nil), // 10: o2control.StatusReply - (*StatusUpdate)(nil), // 11: o2control.StatusUpdate - (*Event)(nil), // 12: o2control.Event - (*SubscribeRequest)(nil), // 13: o2control.SubscribeRequest - (*GetFrameworkInfoRequest)(nil), // 14: o2control.GetFrameworkInfoRequest - (*Version)(nil), // 15: o2control.Version - (*GetFrameworkInfoReply)(nil), // 16: o2control.GetFrameworkInfoReply - (*TeardownRequest)(nil), // 17: o2control.TeardownRequest - (*TeardownReply)(nil), // 18: o2control.TeardownReply - (*GetEnvironmentsRequest)(nil), // 19: o2control.GetEnvironmentsRequest - (*GetEnvironmentsReply)(nil), // 20: o2control.GetEnvironmentsReply - (*EnvironmentInfo)(nil), // 21: o2control.EnvironmentInfo - (*NewEnvironmentRequest)(nil), // 22: o2control.NewEnvironmentRequest - (*NewEnvironmentReply)(nil), // 23: o2control.NewEnvironmentReply - (*NewAutoEnvironmentRequest)(nil), // 24: o2control.NewAutoEnvironmentRequest - (*NewAutoEnvironmentReply)(nil), // 25: o2control.NewAutoEnvironmentReply - (*GetEnvironmentRequest)(nil), // 26: o2control.GetEnvironmentRequest - (*GetEnvironmentReply)(nil), // 27: o2control.GetEnvironmentReply - (*ControlEnvironmentRequest)(nil), // 28: o2control.ControlEnvironmentRequest - (*ControlEnvironmentReply)(nil), // 29: o2control.ControlEnvironmentReply - (*ModifyEnvironmentRequest)(nil), // 30: o2control.ModifyEnvironmentRequest - (*EnvironmentOperation)(nil), // 31: o2control.EnvironmentOperation - (*ModifyEnvironmentReply)(nil), // 32: o2control.ModifyEnvironmentReply - (*DestroyEnvironmentRequest)(nil), // 33: o2control.DestroyEnvironmentRequest - (*DestroyEnvironmentReply)(nil), // 34: o2control.DestroyEnvironmentReply - (*GetActiveDetectorsReply)(nil), // 35: o2control.GetActiveDetectorsReply - (*GetAvailableDetectorsReply)(nil), // 36: o2control.GetAvailableDetectorsReply - (*SetEnvironmentPropertiesRequest)(nil), // 37: o2control.SetEnvironmentPropertiesRequest - (*SetEnvironmentPropertiesReply)(nil), // 38: o2control.SetEnvironmentPropertiesReply - (*GetEnvironmentPropertiesRequest)(nil), // 39: o2control.GetEnvironmentPropertiesRequest - (*GetEnvironmentPropertiesReply)(nil), // 40: o2control.GetEnvironmentPropertiesReply - (*ShortTaskInfo)(nil), // 41: o2control.ShortTaskInfo - (*TaskDeploymentInfo)(nil), // 42: o2control.TaskDeploymentInfo - (*GetTasksRequest)(nil), // 43: o2control.GetTasksRequest - (*GetTasksReply)(nil), // 44: o2control.GetTasksReply - (*GetTaskRequest)(nil), // 45: o2control.GetTaskRequest - (*GetTaskReply)(nil), // 46: o2control.GetTaskReply - (*TaskClassInfo)(nil), // 47: o2control.TaskClassInfo - (*CommandInfo)(nil), // 48: o2control.CommandInfo - (*ChannelInfo)(nil), // 49: o2control.ChannelInfo - (*TaskInfo)(nil), // 50: o2control.TaskInfo - (*CleanupTasksRequest)(nil), // 51: o2control.CleanupTasksRequest - (*CleanupTasksReply)(nil), // 52: o2control.CleanupTasksReply - (*GetRolesRequest)(nil), // 53: o2control.GetRolesRequest - (*RoleInfo)(nil), // 54: o2control.RoleInfo - (*GetRolesReply)(nil), // 55: o2control.GetRolesReply - (*GetWorkflowTemplatesRequest)(nil), // 56: o2control.GetWorkflowTemplatesRequest - (*VarSpecMessage)(nil), // 57: o2control.VarSpecMessage - (*WorkflowTemplateInfo)(nil), // 58: o2control.WorkflowTemplateInfo - (*GetWorkflowTemplatesReply)(nil), // 59: o2control.GetWorkflowTemplatesReply - (*ListReposRequest)(nil), // 60: o2control.ListReposRequest - (*RepoInfo)(nil), // 61: o2control.RepoInfo - (*ListReposReply)(nil), // 62: o2control.ListReposReply - (*AddRepoRequest)(nil), // 63: o2control.AddRepoRequest - (*AddRepoReply)(nil), // 64: o2control.AddRepoReply - (*RemoveRepoRequest)(nil), // 65: o2control.RemoveRepoRequest - (*RemoveRepoReply)(nil), // 66: o2control.RemoveRepoReply - (*RefreshReposRequest)(nil), // 67: o2control.RefreshReposRequest - (*SetDefaultRepoRequest)(nil), // 68: o2control.SetDefaultRepoRequest - (*SetGlobalDefaultRevisionRequest)(nil), // 69: o2control.SetGlobalDefaultRevisionRequest - (*SetRepoDefaultRevisionRequest)(nil), // 70: o2control.SetRepoDefaultRevisionRequest - (*SetRepoDefaultRevisionReply)(nil), // 71: o2control.SetRepoDefaultRevisionReply - (*Empty)(nil), // 72: o2control.Empty - (*ListIntegratedServicesReply)(nil), // 73: o2control.ListIntegratedServicesReply - (*IntegratedServiceInfo)(nil), // 74: o2control.IntegratedServiceInfo - nil, // 75: o2control.EnvironmentInfo.DefaultsEntry - nil, // 76: o2control.EnvironmentInfo.VarsEntry - nil, // 77: o2control.EnvironmentInfo.UserVarsEntry - nil, // 78: o2control.EnvironmentInfo.IntegratedServicesDataEntry - nil, // 79: o2control.NewEnvironmentRequest.VarsEntry - nil, // 80: o2control.NewAutoEnvironmentRequest.VarsEntry - nil, // 81: o2control.SetEnvironmentPropertiesRequest.PropertiesEntry - nil, // 82: o2control.GetEnvironmentPropertiesReply.PropertiesEntry - nil, // 83: o2control.TaskInfo.PropertiesEntry - nil, // 84: o2control.RoleInfo.DefaultsEntry - nil, // 85: o2control.RoleInfo.VarsEntry - nil, // 86: o2control.RoleInfo.UserVarsEntry - nil, // 87: o2control.RoleInfo.ConsolidatedStackEntry - nil, // 88: o2control.WorkflowTemplateInfo.VarSpecMapEntry - nil, // 89: o2control.ListIntegratedServicesReply.ServicesEntry + (ControlEnvironmentRequest_Optype)(0), // 0: o2control.ControlEnvironmentRequest.Optype + (EnvironmentOperation_Optype)(0), // 1: o2control.EnvironmentOperation.Optype + (VarSpecMessage_UiWidget)(0), // 2: o2control.VarSpecMessage.UiWidget + (VarSpecMessage_Type)(0), // 3: o2control.VarSpecMessage.Type + (*SubscribeRequest)(nil), // 4: o2control.SubscribeRequest + (*GetFrameworkInfoRequest)(nil), // 5: o2control.GetFrameworkInfoRequest + (*Version)(nil), // 6: o2control.Version + (*GetFrameworkInfoReply)(nil), // 7: o2control.GetFrameworkInfoReply + (*TeardownRequest)(nil), // 8: o2control.TeardownRequest + (*TeardownReply)(nil), // 9: o2control.TeardownReply + (*GetEnvironmentsRequest)(nil), // 10: o2control.GetEnvironmentsRequest + (*GetEnvironmentsReply)(nil), // 11: o2control.GetEnvironmentsReply + (*EnvironmentInfo)(nil), // 12: o2control.EnvironmentInfo + (*NewEnvironmentRequest)(nil), // 13: o2control.NewEnvironmentRequest + (*NewEnvironmentReply)(nil), // 14: o2control.NewEnvironmentReply + (*NewAutoEnvironmentRequest)(nil), // 15: o2control.NewAutoEnvironmentRequest + (*NewAutoEnvironmentReply)(nil), // 16: o2control.NewAutoEnvironmentReply + (*GetEnvironmentRequest)(nil), // 17: o2control.GetEnvironmentRequest + (*GetEnvironmentReply)(nil), // 18: o2control.GetEnvironmentReply + (*ControlEnvironmentRequest)(nil), // 19: o2control.ControlEnvironmentRequest + (*ControlEnvironmentReply)(nil), // 20: o2control.ControlEnvironmentReply + (*ModifyEnvironmentRequest)(nil), // 21: o2control.ModifyEnvironmentRequest + (*EnvironmentOperation)(nil), // 22: o2control.EnvironmentOperation + (*ModifyEnvironmentReply)(nil), // 23: o2control.ModifyEnvironmentReply + (*DestroyEnvironmentRequest)(nil), // 24: o2control.DestroyEnvironmentRequest + (*DestroyEnvironmentReply)(nil), // 25: o2control.DestroyEnvironmentReply + (*GetActiveDetectorsReply)(nil), // 26: o2control.GetActiveDetectorsReply + (*GetAvailableDetectorsReply)(nil), // 27: o2control.GetAvailableDetectorsReply + (*SetEnvironmentPropertiesRequest)(nil), // 28: o2control.SetEnvironmentPropertiesRequest + (*SetEnvironmentPropertiesReply)(nil), // 29: o2control.SetEnvironmentPropertiesReply + (*GetEnvironmentPropertiesRequest)(nil), // 30: o2control.GetEnvironmentPropertiesRequest + (*GetEnvironmentPropertiesReply)(nil), // 31: o2control.GetEnvironmentPropertiesReply + (*ShortTaskInfo)(nil), // 32: o2control.ShortTaskInfo + (*TaskDeploymentInfo)(nil), // 33: o2control.TaskDeploymentInfo + (*GetTasksRequest)(nil), // 34: o2control.GetTasksRequest + (*GetTasksReply)(nil), // 35: o2control.GetTasksReply + (*GetTaskRequest)(nil), // 36: o2control.GetTaskRequest + (*GetTaskReply)(nil), // 37: o2control.GetTaskReply + (*TaskClassInfo)(nil), // 38: o2control.TaskClassInfo + (*CommandInfo)(nil), // 39: o2control.CommandInfo + (*ChannelInfo)(nil), // 40: o2control.ChannelInfo + (*TaskInfo)(nil), // 41: o2control.TaskInfo + (*CleanupTasksRequest)(nil), // 42: o2control.CleanupTasksRequest + (*CleanupTasksReply)(nil), // 43: o2control.CleanupTasksReply + (*GetRolesRequest)(nil), // 44: o2control.GetRolesRequest + (*RoleInfo)(nil), // 45: o2control.RoleInfo + (*GetRolesReply)(nil), // 46: o2control.GetRolesReply + (*GetWorkflowTemplatesRequest)(nil), // 47: o2control.GetWorkflowTemplatesRequest + (*VarSpecMessage)(nil), // 48: o2control.VarSpecMessage + (*WorkflowTemplateInfo)(nil), // 49: o2control.WorkflowTemplateInfo + (*GetWorkflowTemplatesReply)(nil), // 50: o2control.GetWorkflowTemplatesReply + (*ListReposRequest)(nil), // 51: o2control.ListReposRequest + (*RepoInfo)(nil), // 52: o2control.RepoInfo + (*ListReposReply)(nil), // 53: o2control.ListReposReply + (*AddRepoRequest)(nil), // 54: o2control.AddRepoRequest + (*AddRepoReply)(nil), // 55: o2control.AddRepoReply + (*RemoveRepoRequest)(nil), // 56: o2control.RemoveRepoRequest + (*RemoveRepoReply)(nil), // 57: o2control.RemoveRepoReply + (*RefreshReposRequest)(nil), // 58: o2control.RefreshReposRequest + (*SetDefaultRepoRequest)(nil), // 59: o2control.SetDefaultRepoRequest + (*SetGlobalDefaultRevisionRequest)(nil), // 60: o2control.SetGlobalDefaultRevisionRequest + (*SetRepoDefaultRevisionRequest)(nil), // 61: o2control.SetRepoDefaultRevisionRequest + (*SetRepoDefaultRevisionReply)(nil), // 62: o2control.SetRepoDefaultRevisionReply + (*Empty)(nil), // 63: o2control.Empty + (*ListIntegratedServicesReply)(nil), // 64: o2control.ListIntegratedServicesReply + (*IntegratedServiceInfo)(nil), // 65: o2control.IntegratedServiceInfo + nil, // 66: o2control.EnvironmentInfo.DefaultsEntry + nil, // 67: o2control.EnvironmentInfo.VarsEntry + nil, // 68: o2control.EnvironmentInfo.UserVarsEntry + nil, // 69: o2control.EnvironmentInfo.IntegratedServicesDataEntry + nil, // 70: o2control.NewEnvironmentRequest.VarsEntry + nil, // 71: o2control.NewAutoEnvironmentRequest.VarsEntry + nil, // 72: o2control.SetEnvironmentPropertiesRequest.PropertiesEntry + nil, // 73: o2control.GetEnvironmentPropertiesReply.PropertiesEntry + nil, // 74: o2control.TaskInfo.PropertiesEntry + nil, // 75: o2control.RoleInfo.DefaultsEntry + nil, // 76: o2control.RoleInfo.VarsEntry + nil, // 77: o2control.RoleInfo.UserVarsEntry + nil, // 78: o2control.RoleInfo.ConsolidatedStackEntry + nil, // 79: o2control.WorkflowTemplateInfo.VarSpecMapEntry + nil, // 80: o2control.ListIntegratedServicesReply.ServicesEntry + (*protos.Event)(nil), // 81: events.Event } var file_protos_o2control_proto_depIdxs = []int32{ - 11, // 0: o2control.StatusReply.statusUpdates:type_name -> o2control.StatusUpdate - 0, // 1: o2control.StatusUpdate.level:type_name -> o2control.StatusUpdate.Level - 5, // 2: o2control.StatusUpdate.mesosHeartbeat:type_name -> o2control.Event_MesosHeartbeat - 6, // 3: o2control.Event.environmentEvent:type_name -> o2control.Ev_EnvironmentEvent - 7, // 4: o2control.Event.taskEvent:type_name -> o2control.Ev_TaskEvent - 8, // 5: o2control.Event.roleEvent:type_name -> o2control.Ev_RoleEvent - 15, // 6: o2control.GetFrameworkInfoReply.version:type_name -> o2control.Version - 21, // 7: o2control.GetEnvironmentsReply.environments:type_name -> o2control.EnvironmentInfo - 41, // 8: o2control.EnvironmentInfo.tasks:type_name -> o2control.ShortTaskInfo - 75, // 9: o2control.EnvironmentInfo.defaults:type_name -> o2control.EnvironmentInfo.DefaultsEntry - 76, // 10: o2control.EnvironmentInfo.vars:type_name -> o2control.EnvironmentInfo.VarsEntry - 77, // 11: o2control.EnvironmentInfo.userVars:type_name -> o2control.EnvironmentInfo.UserVarsEntry - 78, // 12: o2control.EnvironmentInfo.integratedServicesData:type_name -> o2control.EnvironmentInfo.IntegratedServicesDataEntry - 79, // 13: o2control.NewEnvironmentRequest.vars:type_name -> o2control.NewEnvironmentRequest.VarsEntry - 21, // 14: o2control.NewEnvironmentReply.environment:type_name -> o2control.EnvironmentInfo - 80, // 15: o2control.NewAutoEnvironmentRequest.vars:type_name -> o2control.NewAutoEnvironmentRequest.VarsEntry - 21, // 16: o2control.GetEnvironmentReply.environment:type_name -> o2control.EnvironmentInfo - 54, // 17: o2control.GetEnvironmentReply.workflow:type_name -> o2control.RoleInfo - 1, // 18: o2control.ControlEnvironmentRequest.type:type_name -> o2control.ControlEnvironmentRequest.Optype - 31, // 19: o2control.ModifyEnvironmentRequest.operations:type_name -> o2control.EnvironmentOperation - 2, // 20: o2control.EnvironmentOperation.type:type_name -> o2control.EnvironmentOperation.Optype - 31, // 21: o2control.ModifyEnvironmentReply.failedOperations:type_name -> o2control.EnvironmentOperation - 52, // 22: o2control.DestroyEnvironmentReply.cleanupTasksReply:type_name -> o2control.CleanupTasksReply - 81, // 23: o2control.SetEnvironmentPropertiesRequest.properties:type_name -> o2control.SetEnvironmentPropertiesRequest.PropertiesEntry - 82, // 24: o2control.GetEnvironmentPropertiesReply.properties:type_name -> o2control.GetEnvironmentPropertiesReply.PropertiesEntry - 42, // 25: o2control.ShortTaskInfo.deploymentInfo:type_name -> o2control.TaskDeploymentInfo - 41, // 26: o2control.GetTasksReply.tasks:type_name -> o2control.ShortTaskInfo - 50, // 27: o2control.GetTaskReply.task:type_name -> o2control.TaskInfo - 41, // 28: o2control.TaskInfo.shortInfo:type_name -> o2control.ShortTaskInfo - 47, // 29: o2control.TaskInfo.classInfo:type_name -> o2control.TaskClassInfo - 49, // 30: o2control.TaskInfo.inboundChannels:type_name -> o2control.ChannelInfo - 49, // 31: o2control.TaskInfo.outboundChannels:type_name -> o2control.ChannelInfo - 48, // 32: o2control.TaskInfo.commandInfo:type_name -> o2control.CommandInfo - 83, // 33: o2control.TaskInfo.properties:type_name -> o2control.TaskInfo.PropertiesEntry - 41, // 34: o2control.CleanupTasksReply.killedTasks:type_name -> o2control.ShortTaskInfo - 41, // 35: o2control.CleanupTasksReply.runningTasks:type_name -> o2control.ShortTaskInfo - 54, // 36: o2control.RoleInfo.roles:type_name -> o2control.RoleInfo - 84, // 37: o2control.RoleInfo.defaults:type_name -> o2control.RoleInfo.DefaultsEntry - 85, // 38: o2control.RoleInfo.vars:type_name -> o2control.RoleInfo.VarsEntry - 86, // 39: o2control.RoleInfo.userVars:type_name -> o2control.RoleInfo.UserVarsEntry - 87, // 40: o2control.RoleInfo.consolidatedStack:type_name -> o2control.RoleInfo.ConsolidatedStackEntry - 54, // 41: o2control.GetRolesReply.roles:type_name -> o2control.RoleInfo - 4, // 42: o2control.VarSpecMessage.type:type_name -> o2control.VarSpecMessage.Type - 3, // 43: o2control.VarSpecMessage.widget:type_name -> o2control.VarSpecMessage.UiWidget - 88, // 44: o2control.WorkflowTemplateInfo.varSpecMap:type_name -> o2control.WorkflowTemplateInfo.VarSpecMapEntry - 58, // 45: o2control.GetWorkflowTemplatesReply.workflowTemplates:type_name -> o2control.WorkflowTemplateInfo - 61, // 46: o2control.ListReposReply.repos:type_name -> o2control.RepoInfo - 89, // 47: o2control.ListIntegratedServicesReply.services:type_name -> o2control.ListIntegratedServicesReply.ServicesEntry - 57, // 48: o2control.WorkflowTemplateInfo.VarSpecMapEntry.value:type_name -> o2control.VarSpecMessage - 74, // 49: o2control.ListIntegratedServicesReply.ServicesEntry.value:type_name -> o2control.IntegratedServiceInfo - 14, // 50: o2control.Control.GetFrameworkInfo:input_type -> o2control.GetFrameworkInfoRequest - 19, // 51: o2control.Control.GetEnvironments:input_type -> o2control.GetEnvironmentsRequest - 24, // 52: o2control.Control.NewAutoEnvironment:input_type -> o2control.NewAutoEnvironmentRequest - 22, // 53: o2control.Control.NewEnvironment:input_type -> o2control.NewEnvironmentRequest - 26, // 54: o2control.Control.GetEnvironment:input_type -> o2control.GetEnvironmentRequest - 28, // 55: o2control.Control.ControlEnvironment:input_type -> o2control.ControlEnvironmentRequest - 33, // 56: o2control.Control.DestroyEnvironment:input_type -> o2control.DestroyEnvironmentRequest - 72, // 57: o2control.Control.GetActiveDetectors:input_type -> o2control.Empty - 72, // 58: o2control.Control.GetAvailableDetectors:input_type -> o2control.Empty - 43, // 59: o2control.Control.GetTasks:input_type -> o2control.GetTasksRequest - 45, // 60: o2control.Control.GetTask:input_type -> o2control.GetTaskRequest - 51, // 61: o2control.Control.CleanupTasks:input_type -> o2control.CleanupTasksRequest - 53, // 62: o2control.Control.GetRoles:input_type -> o2control.GetRolesRequest - 56, // 63: o2control.Control.GetWorkflowTemplates:input_type -> o2control.GetWorkflowTemplatesRequest - 60, // 64: o2control.Control.ListRepos:input_type -> o2control.ListReposRequest - 63, // 65: o2control.Control.AddRepo:input_type -> o2control.AddRepoRequest - 65, // 66: o2control.Control.RemoveRepo:input_type -> o2control.RemoveRepoRequest - 67, // 67: o2control.Control.RefreshRepos:input_type -> o2control.RefreshReposRequest - 68, // 68: o2control.Control.SetDefaultRepo:input_type -> o2control.SetDefaultRepoRequest - 69, // 69: o2control.Control.SetGlobalDefaultRevision:input_type -> o2control.SetGlobalDefaultRevisionRequest - 70, // 70: o2control.Control.SetRepoDefaultRevision:input_type -> o2control.SetRepoDefaultRevisionRequest - 13, // 71: o2control.Control.Subscribe:input_type -> o2control.SubscribeRequest - 72, // 72: o2control.Control.GetIntegratedServices:input_type -> o2control.Empty - 9, // 73: o2control.Control.TrackStatus:input_type -> o2control.StatusRequest - 17, // 74: o2control.Control.Teardown:input_type -> o2control.TeardownRequest - 30, // 75: o2control.Control.ModifyEnvironment:input_type -> o2control.ModifyEnvironmentRequest - 16, // 76: o2control.Control.GetFrameworkInfo:output_type -> o2control.GetFrameworkInfoReply - 20, // 77: o2control.Control.GetEnvironments:output_type -> o2control.GetEnvironmentsReply - 25, // 78: o2control.Control.NewAutoEnvironment:output_type -> o2control.NewAutoEnvironmentReply - 23, // 79: o2control.Control.NewEnvironment:output_type -> o2control.NewEnvironmentReply - 27, // 80: o2control.Control.GetEnvironment:output_type -> o2control.GetEnvironmentReply - 29, // 81: o2control.Control.ControlEnvironment:output_type -> o2control.ControlEnvironmentReply - 34, // 82: o2control.Control.DestroyEnvironment:output_type -> o2control.DestroyEnvironmentReply - 35, // 83: o2control.Control.GetActiveDetectors:output_type -> o2control.GetActiveDetectorsReply - 36, // 84: o2control.Control.GetAvailableDetectors:output_type -> o2control.GetAvailableDetectorsReply - 44, // 85: o2control.Control.GetTasks:output_type -> o2control.GetTasksReply - 46, // 86: o2control.Control.GetTask:output_type -> o2control.GetTaskReply - 52, // 87: o2control.Control.CleanupTasks:output_type -> o2control.CleanupTasksReply - 55, // 88: o2control.Control.GetRoles:output_type -> o2control.GetRolesReply - 59, // 89: o2control.Control.GetWorkflowTemplates:output_type -> o2control.GetWorkflowTemplatesReply - 62, // 90: o2control.Control.ListRepos:output_type -> o2control.ListReposReply - 64, // 91: o2control.Control.AddRepo:output_type -> o2control.AddRepoReply - 66, // 92: o2control.Control.RemoveRepo:output_type -> o2control.RemoveRepoReply - 72, // 93: o2control.Control.RefreshRepos:output_type -> o2control.Empty - 72, // 94: o2control.Control.SetDefaultRepo:output_type -> o2control.Empty - 72, // 95: o2control.Control.SetGlobalDefaultRevision:output_type -> o2control.Empty - 71, // 96: o2control.Control.SetRepoDefaultRevision:output_type -> o2control.SetRepoDefaultRevisionReply - 12, // 97: o2control.Control.Subscribe:output_type -> o2control.Event - 73, // 98: o2control.Control.GetIntegratedServices:output_type -> o2control.ListIntegratedServicesReply - 10, // 99: o2control.Control.TrackStatus:output_type -> o2control.StatusReply - 18, // 100: o2control.Control.Teardown:output_type -> o2control.TeardownReply - 32, // 101: o2control.Control.ModifyEnvironment:output_type -> o2control.ModifyEnvironmentReply - 76, // [76:102] is the sub-list for method output_type - 50, // [50:76] is the sub-list for method input_type - 50, // [50:50] is the sub-list for extension type_name - 50, // [50:50] is the sub-list for extension extendee - 0, // [0:50] is the sub-list for field type_name + 6, // 0: o2control.GetFrameworkInfoReply.version:type_name -> o2control.Version + 12, // 1: o2control.GetEnvironmentsReply.environments:type_name -> o2control.EnvironmentInfo + 32, // 2: o2control.EnvironmentInfo.tasks:type_name -> o2control.ShortTaskInfo + 66, // 3: o2control.EnvironmentInfo.defaults:type_name -> o2control.EnvironmentInfo.DefaultsEntry + 67, // 4: o2control.EnvironmentInfo.vars:type_name -> o2control.EnvironmentInfo.VarsEntry + 68, // 5: o2control.EnvironmentInfo.userVars:type_name -> o2control.EnvironmentInfo.UserVarsEntry + 69, // 6: o2control.EnvironmentInfo.integratedServicesData:type_name -> o2control.EnvironmentInfo.IntegratedServicesDataEntry + 70, // 7: o2control.NewEnvironmentRequest.vars:type_name -> o2control.NewEnvironmentRequest.VarsEntry + 12, // 8: o2control.NewEnvironmentReply.environment:type_name -> o2control.EnvironmentInfo + 71, // 9: o2control.NewAutoEnvironmentRequest.vars:type_name -> o2control.NewAutoEnvironmentRequest.VarsEntry + 12, // 10: o2control.GetEnvironmentReply.environment:type_name -> o2control.EnvironmentInfo + 45, // 11: o2control.GetEnvironmentReply.workflow:type_name -> o2control.RoleInfo + 0, // 12: o2control.ControlEnvironmentRequest.type:type_name -> o2control.ControlEnvironmentRequest.Optype + 22, // 13: o2control.ModifyEnvironmentRequest.operations:type_name -> o2control.EnvironmentOperation + 1, // 14: o2control.EnvironmentOperation.type:type_name -> o2control.EnvironmentOperation.Optype + 22, // 15: o2control.ModifyEnvironmentReply.failedOperations:type_name -> o2control.EnvironmentOperation + 43, // 16: o2control.DestroyEnvironmentReply.cleanupTasksReply:type_name -> o2control.CleanupTasksReply + 72, // 17: o2control.SetEnvironmentPropertiesRequest.properties:type_name -> o2control.SetEnvironmentPropertiesRequest.PropertiesEntry + 73, // 18: o2control.GetEnvironmentPropertiesReply.properties:type_name -> o2control.GetEnvironmentPropertiesReply.PropertiesEntry + 33, // 19: o2control.ShortTaskInfo.deploymentInfo:type_name -> o2control.TaskDeploymentInfo + 32, // 20: o2control.GetTasksReply.tasks:type_name -> o2control.ShortTaskInfo + 41, // 21: o2control.GetTaskReply.task:type_name -> o2control.TaskInfo + 32, // 22: o2control.TaskInfo.shortInfo:type_name -> o2control.ShortTaskInfo + 38, // 23: o2control.TaskInfo.classInfo:type_name -> o2control.TaskClassInfo + 40, // 24: o2control.TaskInfo.inboundChannels:type_name -> o2control.ChannelInfo + 40, // 25: o2control.TaskInfo.outboundChannels:type_name -> o2control.ChannelInfo + 39, // 26: o2control.TaskInfo.commandInfo:type_name -> o2control.CommandInfo + 74, // 27: o2control.TaskInfo.properties:type_name -> o2control.TaskInfo.PropertiesEntry + 32, // 28: o2control.CleanupTasksReply.killedTasks:type_name -> o2control.ShortTaskInfo + 32, // 29: o2control.CleanupTasksReply.runningTasks:type_name -> o2control.ShortTaskInfo + 45, // 30: o2control.RoleInfo.roles:type_name -> o2control.RoleInfo + 75, // 31: o2control.RoleInfo.defaults:type_name -> o2control.RoleInfo.DefaultsEntry + 76, // 32: o2control.RoleInfo.vars:type_name -> o2control.RoleInfo.VarsEntry + 77, // 33: o2control.RoleInfo.userVars:type_name -> o2control.RoleInfo.UserVarsEntry + 78, // 34: o2control.RoleInfo.consolidatedStack:type_name -> o2control.RoleInfo.ConsolidatedStackEntry + 45, // 35: o2control.GetRolesReply.roles:type_name -> o2control.RoleInfo + 3, // 36: o2control.VarSpecMessage.type:type_name -> o2control.VarSpecMessage.Type + 2, // 37: o2control.VarSpecMessage.widget:type_name -> o2control.VarSpecMessage.UiWidget + 79, // 38: o2control.WorkflowTemplateInfo.varSpecMap:type_name -> o2control.WorkflowTemplateInfo.VarSpecMapEntry + 49, // 39: o2control.GetWorkflowTemplatesReply.workflowTemplates:type_name -> o2control.WorkflowTemplateInfo + 52, // 40: o2control.ListReposReply.repos:type_name -> o2control.RepoInfo + 80, // 41: o2control.ListIntegratedServicesReply.services:type_name -> o2control.ListIntegratedServicesReply.ServicesEntry + 48, // 42: o2control.WorkflowTemplateInfo.VarSpecMapEntry.value:type_name -> o2control.VarSpecMessage + 65, // 43: o2control.ListIntegratedServicesReply.ServicesEntry.value:type_name -> o2control.IntegratedServiceInfo + 5, // 44: o2control.Control.GetFrameworkInfo:input_type -> o2control.GetFrameworkInfoRequest + 10, // 45: o2control.Control.GetEnvironments:input_type -> o2control.GetEnvironmentsRequest + 15, // 46: o2control.Control.NewAutoEnvironment:input_type -> o2control.NewAutoEnvironmentRequest + 13, // 47: o2control.Control.NewEnvironment:input_type -> o2control.NewEnvironmentRequest + 17, // 48: o2control.Control.GetEnvironment:input_type -> o2control.GetEnvironmentRequest + 19, // 49: o2control.Control.ControlEnvironment:input_type -> o2control.ControlEnvironmentRequest + 24, // 50: o2control.Control.DestroyEnvironment:input_type -> o2control.DestroyEnvironmentRequest + 63, // 51: o2control.Control.GetActiveDetectors:input_type -> o2control.Empty + 63, // 52: o2control.Control.GetAvailableDetectors:input_type -> o2control.Empty + 13, // 53: o2control.Control.NewEnvironmentAsync:input_type -> o2control.NewEnvironmentRequest + 34, // 54: o2control.Control.GetTasks:input_type -> o2control.GetTasksRequest + 36, // 55: o2control.Control.GetTask:input_type -> o2control.GetTaskRequest + 42, // 56: o2control.Control.CleanupTasks:input_type -> o2control.CleanupTasksRequest + 44, // 57: o2control.Control.GetRoles:input_type -> o2control.GetRolesRequest + 47, // 58: o2control.Control.GetWorkflowTemplates:input_type -> o2control.GetWorkflowTemplatesRequest + 51, // 59: o2control.Control.ListRepos:input_type -> o2control.ListReposRequest + 54, // 60: o2control.Control.AddRepo:input_type -> o2control.AddRepoRequest + 56, // 61: o2control.Control.RemoveRepo:input_type -> o2control.RemoveRepoRequest + 58, // 62: o2control.Control.RefreshRepos:input_type -> o2control.RefreshReposRequest + 59, // 63: o2control.Control.SetDefaultRepo:input_type -> o2control.SetDefaultRepoRequest + 60, // 64: o2control.Control.SetGlobalDefaultRevision:input_type -> o2control.SetGlobalDefaultRevisionRequest + 61, // 65: o2control.Control.SetRepoDefaultRevision:input_type -> o2control.SetRepoDefaultRevisionRequest + 4, // 66: o2control.Control.Subscribe:input_type -> o2control.SubscribeRequest + 63, // 67: o2control.Control.GetIntegratedServices:input_type -> o2control.Empty + 8, // 68: o2control.Control.Teardown:input_type -> o2control.TeardownRequest + 21, // 69: o2control.Control.ModifyEnvironment:input_type -> o2control.ModifyEnvironmentRequest + 7, // 70: o2control.Control.GetFrameworkInfo:output_type -> o2control.GetFrameworkInfoReply + 11, // 71: o2control.Control.GetEnvironments:output_type -> o2control.GetEnvironmentsReply + 16, // 72: o2control.Control.NewAutoEnvironment:output_type -> o2control.NewAutoEnvironmentReply + 14, // 73: o2control.Control.NewEnvironment:output_type -> o2control.NewEnvironmentReply + 18, // 74: o2control.Control.GetEnvironment:output_type -> o2control.GetEnvironmentReply + 20, // 75: o2control.Control.ControlEnvironment:output_type -> o2control.ControlEnvironmentReply + 25, // 76: o2control.Control.DestroyEnvironment:output_type -> o2control.DestroyEnvironmentReply + 26, // 77: o2control.Control.GetActiveDetectors:output_type -> o2control.GetActiveDetectorsReply + 27, // 78: o2control.Control.GetAvailableDetectors:output_type -> o2control.GetAvailableDetectorsReply + 14, // 79: o2control.Control.NewEnvironmentAsync:output_type -> o2control.NewEnvironmentReply + 35, // 80: o2control.Control.GetTasks:output_type -> o2control.GetTasksReply + 37, // 81: o2control.Control.GetTask:output_type -> o2control.GetTaskReply + 43, // 82: o2control.Control.CleanupTasks:output_type -> o2control.CleanupTasksReply + 46, // 83: o2control.Control.GetRoles:output_type -> o2control.GetRolesReply + 50, // 84: o2control.Control.GetWorkflowTemplates:output_type -> o2control.GetWorkflowTemplatesReply + 53, // 85: o2control.Control.ListRepos:output_type -> o2control.ListReposReply + 55, // 86: o2control.Control.AddRepo:output_type -> o2control.AddRepoReply + 57, // 87: o2control.Control.RemoveRepo:output_type -> o2control.RemoveRepoReply + 63, // 88: o2control.Control.RefreshRepos:output_type -> o2control.Empty + 63, // 89: o2control.Control.SetDefaultRepo:output_type -> o2control.Empty + 63, // 90: o2control.Control.SetGlobalDefaultRevision:output_type -> o2control.Empty + 62, // 91: o2control.Control.SetRepoDefaultRevision:output_type -> o2control.SetRepoDefaultRevisionReply + 81, // 92: o2control.Control.Subscribe:output_type -> events.Event + 64, // 93: o2control.Control.GetIntegratedServices:output_type -> o2control.ListIntegratedServicesReply + 9, // 94: o2control.Control.Teardown:output_type -> o2control.TeardownReply + 23, // 95: o2control.Control.ModifyEnvironment:output_type -> o2control.ModifyEnvironmentReply + 70, // [70:96] is the sub-list for method output_type + 44, // [44:70] is the sub-list for method input_type + 44, // [44:44] is the sub-list for extension type_name + 44, // [44:44] is the sub-list for extension extendee + 0, // [0:44] is the sub-list for field type_name } func init() { file_protos_o2control_proto_init() } @@ -5787,102 +5124,6 @@ func file_protos_o2control_proto_init() { } if !protoimpl.UnsafeEnabled { file_protos_o2control_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Event_MesosHeartbeat); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_EnvironmentEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_TaskEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_RoleEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusReply); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusUpdate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Event); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protos_o2control_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubscribeRequest); i { case 0: return &v.state @@ -5894,7 +5135,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFrameworkInfoRequest); i { case 0: return &v.state @@ -5906,7 +5147,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Version); i { case 0: return &v.state @@ -5918,7 +5159,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFrameworkInfoReply); i { case 0: return &v.state @@ -5930,7 +5171,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeardownRequest); i { case 0: return &v.state @@ -5942,7 +5183,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeardownReply); i { case 0: return &v.state @@ -5954,7 +5195,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentsRequest); i { case 0: return &v.state @@ -5966,7 +5207,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentsReply); i { case 0: return &v.state @@ -5978,7 +5219,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EnvironmentInfo); i { case 0: return &v.state @@ -5990,7 +5231,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NewEnvironmentRequest); i { case 0: return &v.state @@ -6002,7 +5243,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NewEnvironmentReply); i { case 0: return &v.state @@ -6014,7 +5255,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NewAutoEnvironmentRequest); i { case 0: return &v.state @@ -6026,7 +5267,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NewAutoEnvironmentReply); i { case 0: return &v.state @@ -6038,7 +5279,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentRequest); i { case 0: return &v.state @@ -6050,7 +5291,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentReply); i { case 0: return &v.state @@ -6062,7 +5303,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControlEnvironmentRequest); i { case 0: return &v.state @@ -6074,7 +5315,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControlEnvironmentReply); i { case 0: return &v.state @@ -6086,7 +5327,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ModifyEnvironmentRequest); i { case 0: return &v.state @@ -6098,7 +5339,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EnvironmentOperation); i { case 0: return &v.state @@ -6110,7 +5351,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ModifyEnvironmentReply); i { case 0: return &v.state @@ -6122,7 +5363,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestroyEnvironmentRequest); i { case 0: return &v.state @@ -6134,7 +5375,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DestroyEnvironmentReply); i { case 0: return &v.state @@ -6146,7 +5387,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetActiveDetectorsReply); i { case 0: return &v.state @@ -6158,7 +5399,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAvailableDetectorsReply); i { case 0: return &v.state @@ -6170,7 +5411,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetEnvironmentPropertiesRequest); i { case 0: return &v.state @@ -6182,7 +5423,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetEnvironmentPropertiesReply); i { case 0: return &v.state @@ -6194,7 +5435,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentPropertiesRequest); i { case 0: return &v.state @@ -6206,7 +5447,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnvironmentPropertiesReply); i { case 0: return &v.state @@ -6218,7 +5459,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShortTaskInfo); i { case 0: return &v.state @@ -6230,7 +5471,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskDeploymentInfo); i { case 0: return &v.state @@ -6242,7 +5483,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTasksRequest); i { case 0: return &v.state @@ -6254,7 +5495,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTasksReply); i { case 0: return &v.state @@ -6266,7 +5507,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTaskRequest); i { case 0: return &v.state @@ -6278,7 +5519,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTaskReply); i { case 0: return &v.state @@ -6290,7 +5531,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskClassInfo); i { case 0: return &v.state @@ -6302,7 +5543,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommandInfo); i { case 0: return &v.state @@ -6314,7 +5555,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelInfo); i { case 0: return &v.state @@ -6326,7 +5567,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskInfo); i { case 0: return &v.state @@ -6338,7 +5579,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CleanupTasksRequest); i { case 0: return &v.state @@ -6350,7 +5591,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CleanupTasksReply); i { case 0: return &v.state @@ -6362,7 +5603,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRolesRequest); i { case 0: return &v.state @@ -6374,7 +5615,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RoleInfo); i { case 0: return &v.state @@ -6386,7 +5627,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRolesReply); i { case 0: return &v.state @@ -6398,7 +5639,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkflowTemplatesRequest); i { case 0: return &v.state @@ -6410,7 +5651,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VarSpecMessage); i { case 0: return &v.state @@ -6422,7 +5663,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkflowTemplateInfo); i { case 0: return &v.state @@ -6434,7 +5675,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkflowTemplatesReply); i { case 0: return &v.state @@ -6446,7 +5687,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReposRequest); i { case 0: return &v.state @@ -6458,7 +5699,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepoInfo); i { case 0: return &v.state @@ -6470,7 +5711,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReposReply); i { case 0: return &v.state @@ -6482,7 +5723,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddRepoRequest); i { case 0: return &v.state @@ -6494,7 +5735,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddRepoReply); i { case 0: return &v.state @@ -6506,7 +5747,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveRepoRequest); i { case 0: return &v.state @@ -6518,7 +5759,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveRepoReply); i { case 0: return &v.state @@ -6530,7 +5771,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshReposRequest); i { case 0: return &v.state @@ -6542,7 +5783,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetDefaultRepoRequest); i { case 0: return &v.state @@ -6554,7 +5795,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetGlobalDefaultRevisionRequest); i { case 0: return &v.state @@ -6566,7 +5807,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetRepoDefaultRevisionRequest); i { case 0: return &v.state @@ -6578,7 +5819,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetRepoDefaultRevisionReply); i { case 0: return &v.state @@ -6590,7 +5831,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Empty); i { case 0: return &v.state @@ -6602,7 +5843,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListIntegratedServicesReply); i { case 0: return &v.state @@ -6614,7 +5855,7 @@ func file_protos_o2control_proto_init() { return nil } } - file_protos_o2control_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_protos_o2control_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IntegratedServiceInfo); i { case 0: return &v.state @@ -6627,21 +5868,13 @@ func file_protos_o2control_proto_init() { } } } - file_protos_o2control_proto_msgTypes[6].OneofWrappers = []interface{}{ - (*StatusUpdate_MesosHeartbeat)(nil), - } - file_protos_o2control_proto_msgTypes[7].OneofWrappers = []interface{}{ - (*Event_EnvironmentEvent)(nil), - (*Event_TaskEvent)(nil), - (*Event_RoleEvent)(nil), - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protos_o2control_proto_rawDesc, - NumEnums: 5, - NumMessages: 85, + NumEnums: 4, + NumMessages: 77, NumExtensions: 0, NumServices: 1, }, diff --git a/core/protos/o2control.proto b/core/protos/o2control.proto index 6b17a3ac7..8d085ed88 100644 --- a/core/protos/o2control.proto +++ b/core/protos/o2control.proto @@ -28,36 +28,7 @@ package o2control; option java_package = "ch.cern.alice.o2.control.rpcserver"; option go_package = "github.com/AliceO2Group/Control/core/protos;pb"; -//////////////// Common event messages /////////////// - -message Event_MesosHeartbeat { -} - -message Ev_EnvironmentEvent { - string environmentId = 1; - string state = 2; - uint32 currentRunNumber = 3; - string error = 4; - string message = 5; -} - -message Ev_TaskEvent { - string name = 1; - string taskid = 2; - string state = 3; - string status = 4; - string hostname = 5; - string className = 6; -} - -message Ev_RoleEvent { - string name = 1; - string status = 2; - string state = 3; - string rolePath = 4; -} - -////////////////////////////////////////////////////// +import public "protos/events.proto"; service Control { rpc GetFrameworkInfo (GetFrameworkInfoRequest) returns (GetFrameworkInfoReply) {} @@ -91,47 +62,15 @@ service Control { rpc SetDefaultRepo(SetDefaultRepoRequest) returns (Empty) {} rpc SetGlobalDefaultRevision(SetGlobalDefaultRevisionRequest) returns (Empty) {} rpc SetRepoDefaultRevision(SetRepoDefaultRevisionRequest) returns (SetRepoDefaultRevisionReply) {} - rpc Subscribe(SubscribeRequest) returns (stream Event) {} + rpc Subscribe(SubscribeRequest) returns (stream events.Event) {} rpc GetIntegratedServices(Empty) returns (ListIntegratedServicesReply) {} // Reserved and not implemented: - rpc TrackStatus (StatusRequest) returns (stream StatusReply) {} rpc Teardown (TeardownRequest) returns (TeardownReply) {} rpc ModifyEnvironment (ModifyEnvironmentRequest) returns (ModifyEnvironmentReply) {} } -//////////////////////////////////////// -// Global status -//////////////////////////////////////// -message StatusRequest {} -message StatusReply { - string state = 1; - repeated StatusUpdate statusUpdates = 2; -} -message StatusUpdate { - enum Level { - DEBUG = 0; - INFO = 1; - WARNING = 2; - ERROR = 3; - } - Level level = 1; - oneof Event { - Event_MesosHeartbeat mesosHeartbeat = 2; - //TODO add other events here and in events.proto - } -} - -message Event { - string timestamp = 1; - oneof Payload { - Ev_EnvironmentEvent environmentEvent = 2; - Ev_TaskEvent taskEvent = 3; - Ev_RoleEvent roleEvent = 4; - } -} - message SubscribeRequest{ string id = 1; } diff --git a/core/protos/o2control_grpc.pb.go b/core/protos/o2control_grpc.pb.go index 12ce81f1a..d702dab58 100644 --- a/core/protos/o2control_grpc.pb.go +++ b/core/protos/o2control_grpc.pb.go @@ -31,6 +31,7 @@ package pb import ( context "context" + protos "github.com/AliceO2Group/Control/common/protos" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -51,6 +52,7 @@ const ( Control_DestroyEnvironment_FullMethodName = "/o2control.Control/DestroyEnvironment" Control_GetActiveDetectors_FullMethodName = "/o2control.Control/GetActiveDetectors" Control_GetAvailableDetectors_FullMethodName = "/o2control.Control/GetAvailableDetectors" + Control_NewEnvironmentAsync_FullMethodName = "/o2control.Control/NewEnvironmentAsync" Control_GetTasks_FullMethodName = "/o2control.Control/GetTasks" Control_GetTask_FullMethodName = "/o2control.Control/GetTask" Control_CleanupTasks_FullMethodName = "/o2control.Control/CleanupTasks" @@ -65,7 +67,6 @@ const ( Control_SetRepoDefaultRevision_FullMethodName = "/o2control.Control/SetRepoDefaultRevision" Control_Subscribe_FullMethodName = "/o2control.Control/Subscribe" Control_GetIntegratedServices_FullMethodName = "/o2control.Control/GetIntegratedServices" - Control_TrackStatus_FullMethodName = "/o2control.Control/TrackStatus" Control_Teardown_FullMethodName = "/o2control.Control/Teardown" Control_ModifyEnvironment_FullMethodName = "/o2control.Control/ModifyEnvironment" ) @@ -83,6 +84,7 @@ type ControlClient interface { DestroyEnvironment(ctx context.Context, in *DestroyEnvironmentRequest, opts ...grpc.CallOption) (*DestroyEnvironmentReply, error) GetActiveDetectors(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetActiveDetectorsReply, error) GetAvailableDetectors(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetAvailableDetectorsReply, error) + NewEnvironmentAsync(ctx context.Context, in *NewEnvironmentRequest, opts ...grpc.CallOption) (*NewEnvironmentReply, error) GetTasks(ctx context.Context, in *GetTasksRequest, opts ...grpc.CallOption) (*GetTasksReply, error) GetTask(ctx context.Context, in *GetTaskRequest, opts ...grpc.CallOption) (*GetTaskReply, error) CleanupTasks(ctx context.Context, in *CleanupTasksRequest, opts ...grpc.CallOption) (*CleanupTasksReply, error) @@ -98,7 +100,6 @@ type ControlClient interface { Subscribe(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (Control_SubscribeClient, error) GetIntegratedServices(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ListIntegratedServicesReply, error) // Reserved and not implemented: - TrackStatus(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (Control_TrackStatusClient, error) Teardown(ctx context.Context, in *TeardownRequest, opts ...grpc.CallOption) (*TeardownReply, error) ModifyEnvironment(ctx context.Context, in *ModifyEnvironmentRequest, opts ...grpc.CallOption) (*ModifyEnvironmentReply, error) } @@ -192,6 +193,15 @@ func (c *controlClient) GetAvailableDetectors(ctx context.Context, in *Empty, op return out, nil } +func (c *controlClient) NewEnvironmentAsync(ctx context.Context, in *NewEnvironmentRequest, opts ...grpc.CallOption) (*NewEnvironmentReply, error) { + out := new(NewEnvironmentReply) + err := c.cc.Invoke(ctx, Control_NewEnvironmentAsync_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *controlClient) GetTasks(ctx context.Context, in *GetTasksRequest, opts ...grpc.CallOption) (*GetTasksReply, error) { out := new(GetTasksReply) err := c.cc.Invoke(ctx, Control_GetTasks_FullMethodName, in, out, opts...) @@ -316,7 +326,7 @@ func (c *controlClient) Subscribe(ctx context.Context, in *SubscribeRequest, opt } type Control_SubscribeClient interface { - Recv() (*Event, error) + Recv() (*protos.Event, error) grpc.ClientStream } @@ -324,8 +334,8 @@ type controlSubscribeClient struct { grpc.ClientStream } -func (x *controlSubscribeClient) Recv() (*Event, error) { - m := new(Event) +func (x *controlSubscribeClient) Recv() (*protos.Event, error) { + m := new(protos.Event) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } @@ -341,38 +351,6 @@ func (c *controlClient) GetIntegratedServices(ctx context.Context, in *Empty, op return out, nil } -func (c *controlClient) TrackStatus(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (Control_TrackStatusClient, error) { - stream, err := c.cc.NewStream(ctx, &Control_ServiceDesc.Streams[1], Control_TrackStatus_FullMethodName, opts...) - if err != nil { - return nil, err - } - x := &controlTrackStatusClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Control_TrackStatusClient interface { - Recv() (*StatusReply, error) - grpc.ClientStream -} - -type controlTrackStatusClient struct { - grpc.ClientStream -} - -func (x *controlTrackStatusClient) Recv() (*StatusReply, error) { - m := new(StatusReply) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - func (c *controlClient) Teardown(ctx context.Context, in *TeardownRequest, opts ...grpc.CallOption) (*TeardownReply, error) { out := new(TeardownReply) err := c.cc.Invoke(ctx, Control_Teardown_FullMethodName, in, out, opts...) @@ -404,6 +382,7 @@ type ControlServer interface { DestroyEnvironment(context.Context, *DestroyEnvironmentRequest) (*DestroyEnvironmentReply, error) GetActiveDetectors(context.Context, *Empty) (*GetActiveDetectorsReply, error) GetAvailableDetectors(context.Context, *Empty) (*GetAvailableDetectorsReply, error) + NewEnvironmentAsync(context.Context, *NewEnvironmentRequest) (*NewEnvironmentReply, error) GetTasks(context.Context, *GetTasksRequest) (*GetTasksReply, error) GetTask(context.Context, *GetTaskRequest) (*GetTaskReply, error) CleanupTasks(context.Context, *CleanupTasksRequest) (*CleanupTasksReply, error) @@ -419,7 +398,6 @@ type ControlServer interface { Subscribe(*SubscribeRequest, Control_SubscribeServer) error GetIntegratedServices(context.Context, *Empty) (*ListIntegratedServicesReply, error) // Reserved and not implemented: - TrackStatus(*StatusRequest, Control_TrackStatusServer) error Teardown(context.Context, *TeardownRequest) (*TeardownReply, error) ModifyEnvironment(context.Context, *ModifyEnvironmentRequest) (*ModifyEnvironmentReply, error) } @@ -455,6 +433,9 @@ func (UnimplementedControlServer) GetActiveDetectors(context.Context, *Empty) (* func (UnimplementedControlServer) GetAvailableDetectors(context.Context, *Empty) (*GetAvailableDetectorsReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAvailableDetectors not implemented") } +func (UnimplementedControlServer) NewEnvironmentAsync(context.Context, *NewEnvironmentRequest) (*NewEnvironmentReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method NewEnvironmentAsync not implemented") +} func (UnimplementedControlServer) GetTasks(context.Context, *GetTasksRequest) (*GetTasksReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTasks not implemented") } @@ -497,9 +478,6 @@ func (UnimplementedControlServer) Subscribe(*SubscribeRequest, Control_Subscribe func (UnimplementedControlServer) GetIntegratedServices(context.Context, *Empty) (*ListIntegratedServicesReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetIntegratedServices not implemented") } -func (UnimplementedControlServer) TrackStatus(*StatusRequest, Control_TrackStatusServer) error { - return status.Errorf(codes.Unimplemented, "method TrackStatus not implemented") -} func (UnimplementedControlServer) Teardown(context.Context, *TeardownRequest) (*TeardownReply, error) { return nil, status.Errorf(codes.Unimplemented, "method Teardown not implemented") } @@ -680,6 +658,24 @@ func _Control_GetAvailableDetectors_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _Control_NewEnvironmentAsync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(NewEnvironmentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).NewEnvironmentAsync(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Control_NewEnvironmentAsync_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).NewEnvironmentAsync(ctx, req.(*NewEnvironmentRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Control_GetTasks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetTasksRequest) if err := dec(in); err != nil { @@ -905,7 +901,7 @@ func _Control_Subscribe_Handler(srv interface{}, stream grpc.ServerStream) error } type Control_SubscribeServer interface { - Send(*Event) error + Send(*protos.Event) error grpc.ServerStream } @@ -913,7 +909,7 @@ type controlSubscribeServer struct { grpc.ServerStream } -func (x *controlSubscribeServer) Send(m *Event) error { +func (x *controlSubscribeServer) Send(m *protos.Event) error { return x.ServerStream.SendMsg(m) } @@ -935,27 +931,6 @@ func _Control_GetIntegratedServices_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } -func _Control_TrackStatus_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StatusRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(ControlServer).TrackStatus(m, &controlTrackStatusServer{stream}) -} - -type Control_TrackStatusServer interface { - Send(*StatusReply) error - grpc.ServerStream -} - -type controlTrackStatusServer struct { - grpc.ServerStream -} - -func (x *controlTrackStatusServer) Send(m *StatusReply) error { - return x.ServerStream.SendMsg(m) -} - func _Control_Teardown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(TeardownRequest) if err := dec(in); err != nil { @@ -1035,6 +1010,10 @@ var Control_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetAvailableDetectors", Handler: _Control_GetAvailableDetectors_Handler, }, + { + MethodName: "NewEnvironmentAsync", + Handler: _Control_NewEnvironmentAsync_Handler, + }, { MethodName: "GetTasks", Handler: _Control_GetTasks_Handler, @@ -1102,11 +1081,6 @@ var Control_ServiceDesc = grpc.ServiceDesc{ Handler: _Control_Subscribe_Handler, ServerStreams: true, }, - { - StreamName: "TrackStatus", - Handler: _Control_TrackStatus_Handler, - ServerStreams: true, - }, }, Metadata: "protos/o2control.proto", } From 8c5f41f1544af831fb183aedd7439730ea65b80e Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 21 Feb 2024 16:26:26 +0100 Subject: [PATCH 06/43] [coconut] Fix Protobuf generator call --- coconut/cmd/environment.go | 2 +- coconut/protos/o2control_grpc.pb.go | 270 +++++++++++++--------------- 2 files changed, 123 insertions(+), 149 deletions(-) diff --git a/coconut/cmd/environment.go b/coconut/cmd/environment.go index 62f9dd3d9..f6dcc1f58 100644 --- a/coconut/cmd/environment.go +++ b/coconut/cmd/environment.go @@ -22,7 +22,7 @@ * Intergovernmental Organization or submit itself to any jurisdiction. */ -//go:generate protoc -I=../../core -I=../../common --go_out=.. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative --go-grpc_out=require_unimplemented_servers=false:. protos/o2control.proto +//go:generate protoc -I=../../core -I=../../common --go_out=.. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative --go-grpc_out=require_unimplemented_servers=false:.. protos/o2control.proto package cmd diff --git a/coconut/protos/o2control_grpc.pb.go b/coconut/protos/o2control_grpc.pb.go index e3bca95b1..d702dab58 100644 --- a/coconut/protos/o2control_grpc.pb.go +++ b/coconut/protos/o2control_grpc.pb.go @@ -31,6 +31,7 @@ package pb import ( context "context" + protos "github.com/AliceO2Group/Control/common/protos" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -42,18 +43,16 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Control_TrackStatus_FullMethodName = "/o2control.Control/TrackStatus" Control_GetFrameworkInfo_FullMethodName = "/o2control.Control/GetFrameworkInfo" - Control_Teardown_FullMethodName = "/o2control.Control/Teardown" Control_GetEnvironments_FullMethodName = "/o2control.Control/GetEnvironments" Control_NewAutoEnvironment_FullMethodName = "/o2control.Control/NewAutoEnvironment" Control_NewEnvironment_FullMethodName = "/o2control.Control/NewEnvironment" Control_GetEnvironment_FullMethodName = "/o2control.Control/GetEnvironment" Control_ControlEnvironment_FullMethodName = "/o2control.Control/ControlEnvironment" - Control_ModifyEnvironment_FullMethodName = "/o2control.Control/ModifyEnvironment" Control_DestroyEnvironment_FullMethodName = "/o2control.Control/DestroyEnvironment" Control_GetActiveDetectors_FullMethodName = "/o2control.Control/GetActiveDetectors" Control_GetAvailableDetectors_FullMethodName = "/o2control.Control/GetAvailableDetectors" + Control_NewEnvironmentAsync_FullMethodName = "/o2control.Control/NewEnvironmentAsync" Control_GetTasks_FullMethodName = "/o2control.Control/GetTasks" Control_GetTask_FullMethodName = "/o2control.Control/GetTask" Control_CleanupTasks_FullMethodName = "/o2control.Control/CleanupTasks" @@ -68,24 +67,24 @@ const ( Control_SetRepoDefaultRevision_FullMethodName = "/o2control.Control/SetRepoDefaultRevision" Control_Subscribe_FullMethodName = "/o2control.Control/Subscribe" Control_GetIntegratedServices_FullMethodName = "/o2control.Control/GetIntegratedServices" + Control_Teardown_FullMethodName = "/o2control.Control/Teardown" + Control_ModifyEnvironment_FullMethodName = "/o2control.Control/ModifyEnvironment" ) // ControlClient is the client API for Control service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ControlClient interface { - TrackStatus(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (Control_TrackStatusClient, error) GetFrameworkInfo(ctx context.Context, in *GetFrameworkInfoRequest, opts ...grpc.CallOption) (*GetFrameworkInfoReply, error) - Teardown(ctx context.Context, in *TeardownRequest, opts ...grpc.CallOption) (*TeardownReply, error) GetEnvironments(ctx context.Context, in *GetEnvironmentsRequest, opts ...grpc.CallOption) (*GetEnvironmentsReply, error) NewAutoEnvironment(ctx context.Context, in *NewAutoEnvironmentRequest, opts ...grpc.CallOption) (*NewAutoEnvironmentReply, error) NewEnvironment(ctx context.Context, in *NewEnvironmentRequest, opts ...grpc.CallOption) (*NewEnvironmentReply, error) GetEnvironment(ctx context.Context, in *GetEnvironmentRequest, opts ...grpc.CallOption) (*GetEnvironmentReply, error) ControlEnvironment(ctx context.Context, in *ControlEnvironmentRequest, opts ...grpc.CallOption) (*ControlEnvironmentReply, error) - ModifyEnvironment(ctx context.Context, in *ModifyEnvironmentRequest, opts ...grpc.CallOption) (*ModifyEnvironmentReply, error) DestroyEnvironment(ctx context.Context, in *DestroyEnvironmentRequest, opts ...grpc.CallOption) (*DestroyEnvironmentReply, error) GetActiveDetectors(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetActiveDetectorsReply, error) GetAvailableDetectors(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetAvailableDetectorsReply, error) + NewEnvironmentAsync(ctx context.Context, in *NewEnvironmentRequest, opts ...grpc.CallOption) (*NewEnvironmentReply, error) GetTasks(ctx context.Context, in *GetTasksRequest, opts ...grpc.CallOption) (*GetTasksReply, error) GetTask(ctx context.Context, in *GetTaskRequest, opts ...grpc.CallOption) (*GetTaskReply, error) CleanupTasks(ctx context.Context, in *CleanupTasksRequest, opts ...grpc.CallOption) (*CleanupTasksReply, error) @@ -100,6 +99,9 @@ type ControlClient interface { SetRepoDefaultRevision(ctx context.Context, in *SetRepoDefaultRevisionRequest, opts ...grpc.CallOption) (*SetRepoDefaultRevisionReply, error) Subscribe(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (Control_SubscribeClient, error) GetIntegratedServices(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ListIntegratedServicesReply, error) + // Reserved and not implemented: + Teardown(ctx context.Context, in *TeardownRequest, opts ...grpc.CallOption) (*TeardownReply, error) + ModifyEnvironment(ctx context.Context, in *ModifyEnvironmentRequest, opts ...grpc.CallOption) (*ModifyEnvironmentReply, error) } type controlClient struct { @@ -110,38 +112,6 @@ func NewControlClient(cc grpc.ClientConnInterface) ControlClient { return &controlClient{cc} } -func (c *controlClient) TrackStatus(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (Control_TrackStatusClient, error) { - stream, err := c.cc.NewStream(ctx, &Control_ServiceDesc.Streams[0], Control_TrackStatus_FullMethodName, opts...) - if err != nil { - return nil, err - } - x := &controlTrackStatusClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Control_TrackStatusClient interface { - Recv() (*StatusReply, error) - grpc.ClientStream -} - -type controlTrackStatusClient struct { - grpc.ClientStream -} - -func (x *controlTrackStatusClient) Recv() (*StatusReply, error) { - m := new(StatusReply) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - func (c *controlClient) GetFrameworkInfo(ctx context.Context, in *GetFrameworkInfoRequest, opts ...grpc.CallOption) (*GetFrameworkInfoReply, error) { out := new(GetFrameworkInfoReply) err := c.cc.Invoke(ctx, Control_GetFrameworkInfo_FullMethodName, in, out, opts...) @@ -151,15 +121,6 @@ func (c *controlClient) GetFrameworkInfo(ctx context.Context, in *GetFrameworkIn return out, nil } -func (c *controlClient) Teardown(ctx context.Context, in *TeardownRequest, opts ...grpc.CallOption) (*TeardownReply, error) { - out := new(TeardownReply) - err := c.cc.Invoke(ctx, Control_Teardown_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *controlClient) GetEnvironments(ctx context.Context, in *GetEnvironmentsRequest, opts ...grpc.CallOption) (*GetEnvironmentsReply, error) { out := new(GetEnvironmentsReply) err := c.cc.Invoke(ctx, Control_GetEnvironments_FullMethodName, in, out, opts...) @@ -205,15 +166,6 @@ func (c *controlClient) ControlEnvironment(ctx context.Context, in *ControlEnvir return out, nil } -func (c *controlClient) ModifyEnvironment(ctx context.Context, in *ModifyEnvironmentRequest, opts ...grpc.CallOption) (*ModifyEnvironmentReply, error) { - out := new(ModifyEnvironmentReply) - err := c.cc.Invoke(ctx, Control_ModifyEnvironment_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *controlClient) DestroyEnvironment(ctx context.Context, in *DestroyEnvironmentRequest, opts ...grpc.CallOption) (*DestroyEnvironmentReply, error) { out := new(DestroyEnvironmentReply) err := c.cc.Invoke(ctx, Control_DestroyEnvironment_FullMethodName, in, out, opts...) @@ -241,6 +193,15 @@ func (c *controlClient) GetAvailableDetectors(ctx context.Context, in *Empty, op return out, nil } +func (c *controlClient) NewEnvironmentAsync(ctx context.Context, in *NewEnvironmentRequest, opts ...grpc.CallOption) (*NewEnvironmentReply, error) { + out := new(NewEnvironmentReply) + err := c.cc.Invoke(ctx, Control_NewEnvironmentAsync_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *controlClient) GetTasks(ctx context.Context, in *GetTasksRequest, opts ...grpc.CallOption) (*GetTasksReply, error) { out := new(GetTasksReply) err := c.cc.Invoke(ctx, Control_GetTasks_FullMethodName, in, out, opts...) @@ -350,7 +311,7 @@ func (c *controlClient) SetRepoDefaultRevision(ctx context.Context, in *SetRepoD } func (c *controlClient) Subscribe(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (Control_SubscribeClient, error) { - stream, err := c.cc.NewStream(ctx, &Control_ServiceDesc.Streams[1], Control_Subscribe_FullMethodName, opts...) + stream, err := c.cc.NewStream(ctx, &Control_ServiceDesc.Streams[0], Control_Subscribe_FullMethodName, opts...) if err != nil { return nil, err } @@ -365,7 +326,7 @@ func (c *controlClient) Subscribe(ctx context.Context, in *SubscribeRequest, opt } type Control_SubscribeClient interface { - Recv() (*Event, error) + Recv() (*protos.Event, error) grpc.ClientStream } @@ -373,8 +334,8 @@ type controlSubscribeClient struct { grpc.ClientStream } -func (x *controlSubscribeClient) Recv() (*Event, error) { - m := new(Event) +func (x *controlSubscribeClient) Recv() (*protos.Event, error) { + m := new(protos.Event) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } @@ -390,22 +351,38 @@ func (c *controlClient) GetIntegratedServices(ctx context.Context, in *Empty, op return out, nil } +func (c *controlClient) Teardown(ctx context.Context, in *TeardownRequest, opts ...grpc.CallOption) (*TeardownReply, error) { + out := new(TeardownReply) + err := c.cc.Invoke(ctx, Control_Teardown_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *controlClient) ModifyEnvironment(ctx context.Context, in *ModifyEnvironmentRequest, opts ...grpc.CallOption) (*ModifyEnvironmentReply, error) { + out := new(ModifyEnvironmentReply) + err := c.cc.Invoke(ctx, Control_ModifyEnvironment_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ControlServer is the server API for Control service. -// All implementations must embed UnimplementedControlServer +// All implementations should embed UnimplementedControlServer // for forward compatibility type ControlServer interface { - TrackStatus(*StatusRequest, Control_TrackStatusServer) error GetFrameworkInfo(context.Context, *GetFrameworkInfoRequest) (*GetFrameworkInfoReply, error) - Teardown(context.Context, *TeardownRequest) (*TeardownReply, error) GetEnvironments(context.Context, *GetEnvironmentsRequest) (*GetEnvironmentsReply, error) NewAutoEnvironment(context.Context, *NewAutoEnvironmentRequest) (*NewAutoEnvironmentReply, error) NewEnvironment(context.Context, *NewEnvironmentRequest) (*NewEnvironmentReply, error) GetEnvironment(context.Context, *GetEnvironmentRequest) (*GetEnvironmentReply, error) ControlEnvironment(context.Context, *ControlEnvironmentRequest) (*ControlEnvironmentReply, error) - ModifyEnvironment(context.Context, *ModifyEnvironmentRequest) (*ModifyEnvironmentReply, error) DestroyEnvironment(context.Context, *DestroyEnvironmentRequest) (*DestroyEnvironmentReply, error) GetActiveDetectors(context.Context, *Empty) (*GetActiveDetectorsReply, error) GetAvailableDetectors(context.Context, *Empty) (*GetAvailableDetectorsReply, error) + NewEnvironmentAsync(context.Context, *NewEnvironmentRequest) (*NewEnvironmentReply, error) GetTasks(context.Context, *GetTasksRequest) (*GetTasksReply, error) GetTask(context.Context, *GetTaskRequest) (*GetTaskReply, error) CleanupTasks(context.Context, *CleanupTasksRequest) (*CleanupTasksReply, error) @@ -420,22 +397,18 @@ type ControlServer interface { SetRepoDefaultRevision(context.Context, *SetRepoDefaultRevisionRequest) (*SetRepoDefaultRevisionReply, error) Subscribe(*SubscribeRequest, Control_SubscribeServer) error GetIntegratedServices(context.Context, *Empty) (*ListIntegratedServicesReply, error) - mustEmbedUnimplementedControlServer() + // Reserved and not implemented: + Teardown(context.Context, *TeardownRequest) (*TeardownReply, error) + ModifyEnvironment(context.Context, *ModifyEnvironmentRequest) (*ModifyEnvironmentReply, error) } -// UnimplementedControlServer must be embedded to have forward compatible implementations. +// UnimplementedControlServer should be embedded to have forward compatible implementations. type UnimplementedControlServer struct { } -func (UnimplementedControlServer) TrackStatus(*StatusRequest, Control_TrackStatusServer) error { - return status.Errorf(codes.Unimplemented, "method TrackStatus not implemented") -} func (UnimplementedControlServer) GetFrameworkInfo(context.Context, *GetFrameworkInfoRequest) (*GetFrameworkInfoReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetFrameworkInfo not implemented") } -func (UnimplementedControlServer) Teardown(context.Context, *TeardownRequest) (*TeardownReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method Teardown not implemented") -} func (UnimplementedControlServer) GetEnvironments(context.Context, *GetEnvironmentsRequest) (*GetEnvironmentsReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetEnvironments not implemented") } @@ -451,9 +424,6 @@ func (UnimplementedControlServer) GetEnvironment(context.Context, *GetEnvironmen func (UnimplementedControlServer) ControlEnvironment(context.Context, *ControlEnvironmentRequest) (*ControlEnvironmentReply, error) { return nil, status.Errorf(codes.Unimplemented, "method ControlEnvironment not implemented") } -func (UnimplementedControlServer) ModifyEnvironment(context.Context, *ModifyEnvironmentRequest) (*ModifyEnvironmentReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method ModifyEnvironment not implemented") -} func (UnimplementedControlServer) DestroyEnvironment(context.Context, *DestroyEnvironmentRequest) (*DestroyEnvironmentReply, error) { return nil, status.Errorf(codes.Unimplemented, "method DestroyEnvironment not implemented") } @@ -463,6 +433,9 @@ func (UnimplementedControlServer) GetActiveDetectors(context.Context, *Empty) (* func (UnimplementedControlServer) GetAvailableDetectors(context.Context, *Empty) (*GetAvailableDetectorsReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAvailableDetectors not implemented") } +func (UnimplementedControlServer) NewEnvironmentAsync(context.Context, *NewEnvironmentRequest) (*NewEnvironmentReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method NewEnvironmentAsync not implemented") +} func (UnimplementedControlServer) GetTasks(context.Context, *GetTasksRequest) (*GetTasksReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTasks not implemented") } @@ -505,7 +478,12 @@ func (UnimplementedControlServer) Subscribe(*SubscribeRequest, Control_Subscribe func (UnimplementedControlServer) GetIntegratedServices(context.Context, *Empty) (*ListIntegratedServicesReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetIntegratedServices not implemented") } -func (UnimplementedControlServer) mustEmbedUnimplementedControlServer() {} +func (UnimplementedControlServer) Teardown(context.Context, *TeardownRequest) (*TeardownReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Teardown not implemented") +} +func (UnimplementedControlServer) ModifyEnvironment(context.Context, *ModifyEnvironmentRequest) (*ModifyEnvironmentReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method ModifyEnvironment not implemented") +} // UnsafeControlServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ControlServer will @@ -518,27 +496,6 @@ func RegisterControlServer(s grpc.ServiceRegistrar, srv ControlServer) { s.RegisterService(&Control_ServiceDesc, srv) } -func _Control_TrackStatus_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StatusRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(ControlServer).TrackStatus(m, &controlTrackStatusServer{stream}) -} - -type Control_TrackStatusServer interface { - Send(*StatusReply) error - grpc.ServerStream -} - -type controlTrackStatusServer struct { - grpc.ServerStream -} - -func (x *controlTrackStatusServer) Send(m *StatusReply) error { - return x.ServerStream.SendMsg(m) -} - func _Control_GetFrameworkInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetFrameworkInfoRequest) if err := dec(in); err != nil { @@ -557,24 +514,6 @@ func _Control_GetFrameworkInfo_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } -func _Control_Teardown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TeardownRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ControlServer).Teardown(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Control_Teardown_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ControlServer).Teardown(ctx, req.(*TeardownRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Control_GetEnvironments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetEnvironmentsRequest) if err := dec(in); err != nil { @@ -665,24 +604,6 @@ func _Control_ControlEnvironment_Handler(srv interface{}, ctx context.Context, d return interceptor(ctx, in, info, handler) } -func _Control_ModifyEnvironment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ModifyEnvironmentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ControlServer).ModifyEnvironment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Control_ModifyEnvironment_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ControlServer).ModifyEnvironment(ctx, req.(*ModifyEnvironmentRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Control_DestroyEnvironment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DestroyEnvironmentRequest) if err := dec(in); err != nil { @@ -737,6 +658,24 @@ func _Control_GetAvailableDetectors_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _Control_NewEnvironmentAsync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(NewEnvironmentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).NewEnvironmentAsync(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Control_NewEnvironmentAsync_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).NewEnvironmentAsync(ctx, req.(*NewEnvironmentRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Control_GetTasks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetTasksRequest) if err := dec(in); err != nil { @@ -962,7 +901,7 @@ func _Control_Subscribe_Handler(srv interface{}, stream grpc.ServerStream) error } type Control_SubscribeServer interface { - Send(*Event) error + Send(*protos.Event) error grpc.ServerStream } @@ -970,7 +909,7 @@ type controlSubscribeServer struct { grpc.ServerStream } -func (x *controlSubscribeServer) Send(m *Event) error { +func (x *controlSubscribeServer) Send(m *protos.Event) error { return x.ServerStream.SendMsg(m) } @@ -992,6 +931,42 @@ func _Control_GetIntegratedServices_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _Control_Teardown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TeardownRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).Teardown(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Control_Teardown_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).Teardown(ctx, req.(*TeardownRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Control_ModifyEnvironment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ModifyEnvironmentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).ModifyEnvironment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Control_ModifyEnvironment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).ModifyEnvironment(ctx, req.(*ModifyEnvironmentRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Control_ServiceDesc is the grpc.ServiceDesc for Control service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1003,10 +978,6 @@ var Control_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetFrameworkInfo", Handler: _Control_GetFrameworkInfo_Handler, }, - { - MethodName: "Teardown", - Handler: _Control_Teardown_Handler, - }, { MethodName: "GetEnvironments", Handler: _Control_GetEnvironments_Handler, @@ -1027,10 +998,6 @@ var Control_ServiceDesc = grpc.ServiceDesc{ MethodName: "ControlEnvironment", Handler: _Control_ControlEnvironment_Handler, }, - { - MethodName: "ModifyEnvironment", - Handler: _Control_ModifyEnvironment_Handler, - }, { MethodName: "DestroyEnvironment", Handler: _Control_DestroyEnvironment_Handler, @@ -1043,6 +1010,10 @@ var Control_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetAvailableDetectors", Handler: _Control_GetAvailableDetectors_Handler, }, + { + MethodName: "NewEnvironmentAsync", + Handler: _Control_NewEnvironmentAsync_Handler, + }, { MethodName: "GetTasks", Handler: _Control_GetTasks_Handler, @@ -1095,13 +1066,16 @@ var Control_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetIntegratedServices", Handler: _Control_GetIntegratedServices_Handler, }, - }, - Streams: []grpc.StreamDesc{ { - StreamName: "TrackStatus", - Handler: _Control_TrackStatus_Handler, - ServerStreams: true, + MethodName: "Teardown", + Handler: _Control_Teardown_Handler, }, + { + MethodName: "ModifyEnvironment", + Handler: _Control_ModifyEnvironment_Handler, + }, + }, + Streams: []grpc.StreamDesc{ { StreamName: "Subscribe", Handler: _Control_Subscribe_Handler, From 34b7a0da4ed39da3386c1962a0f2b82c8e825547 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 23 Feb 2024 14:18:43 +0100 Subject: [PATCH 07/43] [core] Kafka wrapper --- common/event/topic/topic.go | 51 +++++++++++++++++++++++++ common/event/writer.go | 75 +++++++++++++++++++++++++++++++++++++ core/config.go | 2 + core/the/eventwriter.go | 38 +++++++++++++++++++ 4 files changed, 166 insertions(+) create mode 100644 common/event/topic/topic.go create mode 100644 common/event/writer.go create mode 100644 core/the/eventwriter.go diff --git a/common/event/topic/topic.go b/common/event/topic/topic.go new file mode 100644 index 000000000..d44b1f83c --- /dev/null +++ b/common/event/topic/topic.go @@ -0,0 +1,51 @@ +/* + * === This file is part of ALICE O² === + * + * Copyright 2024 CERN and copyright holders of ALICE O². + * Author: Teo Mrnjavac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * In applying this license CERN does not waive the privileges and + * immunities granted to it by virtue of its status as an + * Intergovernmental Organization or submit itself to any jurisdiction. + */ + +package topic + +type Topic string + +const ( + Separator = "." // used to separate topic segments + Root Topic = "aliecs" + Event Topic = Root + Separator + "event" + + Ev_Env Topic = Event + Separator + "environment" + Ev_Env_EnterState Topic = Ev_Env + Separator + "enter_state" + Ev_Env_LeaveState Topic = Ev_Env + Separator + "leave_state" + Ev_Env_BeforeEv Topic = Ev_Env + Separator + "before_event" + Ev_Env_AfterEv Topic = Ev_Env + Separator + "after_event" + + Ev_Role Topic = Event + Separator + "role" + + Ev_Task = Event + Separator + "task" + Ev_Task_Lifecycle = Ev_Task + Separator + "lifecycle" + Ev_Task_StateChange = Ev_Task + Separator + "state_change" + + Ev_IntegratedService = Event + Separator + "integrated_service" + + Ev_Meta = Event + Separator + "meta" + Ev_Meta_Framework = Ev_Meta + Separator + "framework" + Ev_Meta_Mesos = Ev_Meta + Separator + "mesos" +) diff --git a/common/event/writer.go b/common/event/writer.go new file mode 100644 index 000000000..16d88cb64 --- /dev/null +++ b/common/event/writer.go @@ -0,0 +1,75 @@ +/* + * === This file is part of ALICE O² === + * + * Copyright 2024 CERN and copyright holders of ALICE O². + * Author: Teo Mrnjavac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * In applying this license CERN does not waive the privileges and + * immunities granted to it by virtue of its status as an + * Intergovernmental Organization or submit itself to any jurisdiction. + */ + +package event + +import ( + "context" + + "github.com/AliceO2Group/Control/common/event/topic" + "github.com/AliceO2Group/Control/common/logger" + "github.com/AliceO2Group/Control/common/logger/infologger" + pb "github.com/AliceO2Group/Control/common/protos" + "github.com/segmentio/kafka-go" + "github.com/sirupsen/logrus" + "github.com/spf13/viper" + "google.golang.org/protobuf/proto" +) + +var log = logger.New(logrus.StandardLogger(), "event") + +type Writer struct { + *kafka.Writer +} + +func NewWriterWithTopic(topic topic.Topic) *Writer { + return &Writer{ + Writer: &kafka.Writer{ + Addr: kafka.TCP(viper.GetStringSlice("kafkaEndpoints")...), + Topic: string(topic), + Balancer: &kafka.LeastBytes{}, + }, + } +} + +func (w *Writer) WriteEvent(e *pb.Event) { + data, err := proto.Marshal(e) + if err != nil { + log.WithField("topic", w.Topic). + WithField("event", e). + WithError(err). + Error("failed to marshal event") + } + + err = w.WriteMessages(context.Background(), kafka.Message{ + Value: data, + }) + + if err != nil { + log.WithField("topic", w.Topic). + WithField("event", e). + WithField("level", infologger.IL_Support). + Errorf("Kafka message delivery failed: %s", err.Error()) + } +} diff --git a/core/config.go b/core/config.go index 0f674b3b6..98e7c1ce6 100644 --- a/core/config.go +++ b/core/config.go @@ -122,6 +122,7 @@ func setDefaults() error { viper.SetDefault("reuseUnlockedTasks", false) viper.SetDefault("configCache", true) viper.SetDefault("taskClassCacheTTL", 7*24*time.Hour) + viper.SetDefault("kafkaEndpoints", []string{"localhost:9092"}) return nil } @@ -186,6 +187,7 @@ func setFlags() error { pflag.Bool("reuseUnlockedTasks", viper.GetBool("reuseUnlockedTasks"), "Reuse unlocked active tasks when satisfying environment deployment requests") pflag.Bool("configCache", viper.GetBool("configCache"), "Enable cache layer between AliECS core and Apricot") pflag.Duration("taskClassCacheTTL", viper.GetDuration("taskClassCacheTTL"), "TTL for task class cache entries") + pflag.StringSlice("kafkaEndpoints", viper.GetStringSlice("kafkaEndpoints"), "List of Kafka endpoints to connect to (default: localhost:9092)") pflag.Parse() return viper.BindPFlags(pflag.CommandLine) diff --git a/core/the/eventwriter.go b/core/the/eventwriter.go new file mode 100644 index 000000000..9946b498d --- /dev/null +++ b/core/the/eventwriter.go @@ -0,0 +1,38 @@ +/* + * === This file is part of ALICE O² === + * + * Copyright 2019-2024 CERN and copyright holders of ALICE O². + * Author: Teo Mrnjavac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * In applying this license CERN does not waive the privileges and + * immunities granted to it by virtue of its status as an + * Intergovernmental Organization or submit itself to any jurisdiction. + */ + +package the + +import ( + "github.com/AliceO2Group/Control/common/event" + "github.com/AliceO2Group/Control/common/event/topic" +) + +func EventWriter() *event.Writer { + return EventWriterWithTopic("") +} + +func EventWriterWithTopic(topic topic.Topic) *event.Writer { + return event.NewWriterWithTopic(topic) +} From 0a7c61b61aea2e8a85f67432cc7c3cf6f171e4e1 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 29 Feb 2024 14:22:41 +0100 Subject: [PATCH 08/43] [core] Emit environment events --- coconut/protos/o2control.pb.go | 6 +- common/event/topic/topic.go | 22 +-- common/event/writer.go | 58 +++++- common/protos/events.pb.go | 331 ++++++++++++++++++++------------ common/protos/events.proto | 12 +- common/runtype/runtype.go | 2 + core/core.go | 12 +- core/environment/environment.go | 196 ++++++++++++++++++- core/environment/manager.go | 63 ++++-- core/protos/o2control.pb.go | 6 +- core/server.go | 77 ++++++-- core/the/eventwriter.go | 2 +- 12 files changed, 596 insertions(+), 191 deletions(-) diff --git a/coconut/protos/o2control.pb.go b/coconut/protos/o2control.pb.go index 5b01e7a4e..3cf7cfa85 100644 --- a/coconut/protos/o2control.pb.go +++ b/coconut/protos/o2control.pb.go @@ -47,7 +47,8 @@ const ( // Symbols defined in public import of protos/events.proto. type Ev_MetaEvent_MesosHeartbeat = protos.Ev_MetaEvent_MesosHeartbeat -type Ev_MetaEvent_FrameworkFailure = protos.Ev_MetaEvent_FrameworkFailure +type Ev_MetaEvent_CoreStart = protos.Ev_MetaEvent_CoreStart +type Ev_MetaEvent_FrameworkEvent = protos.Ev_MetaEvent_FrameworkEvent type Ev_EnvironmentEvent = protos.Ev_EnvironmentEvent type Ev_TaskEvent = protos.Ev_TaskEvent type Ev_RoleEvent = protos.Ev_RoleEvent @@ -55,8 +56,9 @@ type Event = protos.Event type Event_EnvironmentEvent = protos.Event_EnvironmentEvent type Event_TaskEvent = protos.Event_TaskEvent type Event_RoleEvent = protos.Event_RoleEvent -type Event_FrameworkFailureEvent = protos.Event_FrameworkFailureEvent +type Event_FrameworkEvent = protos.Event_FrameworkEvent type Event_MesosHeartbeatEvent = protos.Event_MesosHeartbeatEvent +type Event_CoreStartEvent = protos.Event_CoreStartEvent type ControlEnvironmentRequest_Optype int32 diff --git a/common/event/topic/topic.go b/common/event/topic/topic.go index d44b1f83c..e026b7974 100644 --- a/common/event/topic/topic.go +++ b/common/event/topic/topic.go @@ -29,23 +29,13 @@ type Topic string const ( Separator = "." // used to separate topic segments Root Topic = "aliecs" - Event Topic = Root + Separator + "event" - Ev_Env Topic = Event + Separator + "environment" - Ev_Env_EnterState Topic = Ev_Env + Separator + "enter_state" - Ev_Env_LeaveState Topic = Ev_Env + Separator + "leave_state" - Ev_Env_BeforeEv Topic = Ev_Env + Separator + "before_event" - Ev_Env_AfterEv Topic = Ev_Env + Separator + "after_event" + Run Topic = Root + Separator + "run" + Environment Topic = Root + Separator + "environment" + Role Topic = Root + Separator + "role" + Task Topic = Root + Separator + "task" - Ev_Role Topic = Event + Separator + "role" + Core Topic = Root + Separator + "core" - Ev_Task = Event + Separator + "task" - Ev_Task_Lifecycle = Ev_Task + Separator + "lifecycle" - Ev_Task_StateChange = Ev_Task + Separator + "state_change" - - Ev_IntegratedService = Event + Separator + "integrated_service" - - Ev_Meta = Event + Separator + "meta" - Ev_Meta_Framework = Ev_Meta + Separator + "framework" - Ev_Meta_Mesos = Ev_Meta + Separator + "mesos" + IntegratedService Topic = Root + Separator + "integrated_service" ) diff --git a/common/event/writer.go b/common/event/writer.go index 16d88cb64..87196e792 100644 --- a/common/event/writer.go +++ b/common/event/writer.go @@ -26,6 +26,8 @@ package event import ( "context" + "fmt" + "time" "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/logger" @@ -53,13 +55,53 @@ func NewWriterWithTopic(topic topic.Topic) *Writer { } } -func (w *Writer) WriteEvent(e *pb.Event) { +func (w *Writer) WriteEvent(e interface{}) { + var err error + switch e := e.(type) { + case *pb.Ev_MetaEvent_CoreStart: + err = w.doWriteEvent(&pb.Event{ + Timestamp: time.Now().UnixMilli(), + Payload: &pb.Event_CoreStartEvent{CoreStartEvent: e}, + }) + case *pb.Ev_MetaEvent_MesosHeartbeat: + err = w.doWriteEvent(&pb.Event{ + Timestamp: time.Now().UnixMilli(), + Payload: &pb.Event_MesosHeartbeatEvent{MesosHeartbeatEvent: e}, + }) + case *pb.Ev_MetaEvent_FrameworkEvent: + err = w.doWriteEvent(&pb.Event{ + Timestamp: time.Now().UnixMilli(), + Payload: &pb.Event_FrameworkEvent{FrameworkEvent: e}, + }) + case *pb.Ev_TaskEvent: + err = w.doWriteEvent(&pb.Event{ + Timestamp: time.Now().UnixMilli(), + Payload: &pb.Event_TaskEvent{TaskEvent: e}, + }) + case *pb.Ev_RoleEvent: + err = w.doWriteEvent(&pb.Event{ + Timestamp: time.Now().UnixMilli(), + Payload: &pb.Event_RoleEvent{RoleEvent: e}, + }) + case *pb.Ev_EnvironmentEvent: + err = w.doWriteEvent(&pb.Event{ + Timestamp: time.Now().UnixMilli(), + Payload: &pb.Event_EnvironmentEvent{EnvironmentEvent: e}, + }) + default: + err = fmt.Errorf("unsupported event type") + } + if err != nil { + log.WithField("event", e). + WithField("level", infologger.IL_Support). + Error(err.Error()) + } +} + +func (w *Writer) doWriteEvent(e *pb.Event) error { data, err := proto.Marshal(e) if err != nil { - log.WithField("topic", w.Topic). - WithField("event", e). - WithError(err). - Error("failed to marshal event") + return fmt.Errorf("failed to marshal event: %w", err) } err = w.WriteMessages(context.Background(), kafka.Message{ @@ -67,9 +109,7 @@ func (w *Writer) WriteEvent(e *pb.Event) { }) if err != nil { - log.WithField("topic", w.Topic). - WithField("event", e). - WithField("level", infologger.IL_Support). - Errorf("Kafka message delivery failed: %s", err.Error()) + return fmt.Errorf("failed to write event: %w", err) } + return nil } diff --git a/common/protos/events.pb.go b/common/protos/events.pb.go index a28945630..c6e672ee9 100644 --- a/common/protos/events.pb.go +++ b/common/protos/events.pb.go @@ -81,16 +81,16 @@ func (*Ev_MetaEvent_MesosHeartbeat) Descriptor() ([]byte, []int) { return file_protos_events_proto_rawDescGZIP(), []int{0} } -type Ev_MetaEvent_FrameworkFailure struct { +type Ev_MetaEvent_CoreStart struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + FrameworkId string `protobuf:"bytes,1,opt,name=frameworkId,proto3" json:"frameworkId,omitempty"` } -func (x *Ev_MetaEvent_FrameworkFailure) Reset() { - *x = Ev_MetaEvent_FrameworkFailure{} +func (x *Ev_MetaEvent_CoreStart) Reset() { + *x = Ev_MetaEvent_CoreStart{} if protoimpl.UnsafeEnabled { mi := &file_protos_events_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -98,13 +98,13 @@ func (x *Ev_MetaEvent_FrameworkFailure) Reset() { } } -func (x *Ev_MetaEvent_FrameworkFailure) String() string { +func (x *Ev_MetaEvent_CoreStart) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Ev_MetaEvent_FrameworkFailure) ProtoMessage() {} +func (*Ev_MetaEvent_CoreStart) ProtoMessage() {} -func (x *Ev_MetaEvent_FrameworkFailure) ProtoReflect() protoreflect.Message { +func (x *Ev_MetaEvent_CoreStart) ProtoReflect() protoreflect.Message { mi := &file_protos_events_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -116,12 +116,67 @@ func (x *Ev_MetaEvent_FrameworkFailure) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Ev_MetaEvent_FrameworkFailure.ProtoReflect.Descriptor instead. -func (*Ev_MetaEvent_FrameworkFailure) Descriptor() ([]byte, []int) { +// Deprecated: Use Ev_MetaEvent_CoreStart.ProtoReflect.Descriptor instead. +func (*Ev_MetaEvent_CoreStart) Descriptor() ([]byte, []int) { return file_protos_events_proto_rawDescGZIP(), []int{1} } -func (x *Ev_MetaEvent_FrameworkFailure) GetMessage() string { +func (x *Ev_MetaEvent_CoreStart) GetFrameworkId() string { + if x != nil { + return x.FrameworkId + } + return "" +} + +type Ev_MetaEvent_FrameworkEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FrameworkId string `protobuf:"bytes,1,opt,name=frameworkId,proto3" json:"frameworkId,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *Ev_MetaEvent_FrameworkEvent) Reset() { + *x = Ev_MetaEvent_FrameworkEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_events_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Ev_MetaEvent_FrameworkEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Ev_MetaEvent_FrameworkEvent) ProtoMessage() {} + +func (x *Ev_MetaEvent_FrameworkEvent) ProtoReflect() protoreflect.Message { + mi := &file_protos_events_proto_msgTypes[2] + 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 Ev_MetaEvent_FrameworkEvent.ProtoReflect.Descriptor instead. +func (*Ev_MetaEvent_FrameworkEvent) Descriptor() ([]byte, []int) { + return file_protos_events_proto_rawDescGZIP(), []int{2} +} + +func (x *Ev_MetaEvent_FrameworkEvent) GetFrameworkId() string { + if x != nil { + return x.FrameworkId + } + return "" +} + +func (x *Ev_MetaEvent_FrameworkEvent) GetMessage() string { if x != nil { return x.Message } @@ -145,7 +200,7 @@ type Ev_EnvironmentEvent struct { func (x *Ev_EnvironmentEvent) Reset() { *x = Ev_EnvironmentEvent{} if protoimpl.UnsafeEnabled { - mi := &file_protos_events_proto_msgTypes[2] + mi := &file_protos_events_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -158,7 +213,7 @@ func (x *Ev_EnvironmentEvent) String() string { func (*Ev_EnvironmentEvent) ProtoMessage() {} func (x *Ev_EnvironmentEvent) ProtoReflect() protoreflect.Message { - mi := &file_protos_events_proto_msgTypes[2] + mi := &file_protos_events_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -171,7 +226,7 @@ func (x *Ev_EnvironmentEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use Ev_EnvironmentEvent.ProtoReflect.Descriptor instead. func (*Ev_EnvironmentEvent) Descriptor() ([]byte, []int) { - return file_protos_events_proto_rawDescGZIP(), []int{2} + return file_protos_events_proto_rawDescGZIP(), []int{3} } func (x *Ev_EnvironmentEvent) GetEnvironmentId() string { @@ -239,7 +294,7 @@ type Ev_TaskEvent struct { func (x *Ev_TaskEvent) Reset() { *x = Ev_TaskEvent{} if protoimpl.UnsafeEnabled { - mi := &file_protos_events_proto_msgTypes[3] + mi := &file_protos_events_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -252,7 +307,7 @@ func (x *Ev_TaskEvent) String() string { func (*Ev_TaskEvent) ProtoMessage() {} func (x *Ev_TaskEvent) ProtoReflect() protoreflect.Message { - mi := &file_protos_events_proto_msgTypes[3] + mi := &file_protos_events_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -265,7 +320,7 @@ func (x *Ev_TaskEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use Ev_TaskEvent.ProtoReflect.Descriptor instead. func (*Ev_TaskEvent) Descriptor() ([]byte, []int) { - return file_protos_events_proto_rawDescGZIP(), []int{3} + return file_protos_events_proto_rawDescGZIP(), []int{4} } func (x *Ev_TaskEvent) GetName() string { @@ -324,7 +379,7 @@ type Ev_RoleEvent struct { func (x *Ev_RoleEvent) Reset() { *x = Ev_RoleEvent{} if protoimpl.UnsafeEnabled { - mi := &file_protos_events_proto_msgTypes[4] + mi := &file_protos_events_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -337,7 +392,7 @@ func (x *Ev_RoleEvent) String() string { func (*Ev_RoleEvent) ProtoMessage() {} func (x *Ev_RoleEvent) ProtoReflect() protoreflect.Message { - mi := &file_protos_events_proto_msgTypes[4] + mi := &file_protos_events_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -350,7 +405,7 @@ func (x *Ev_RoleEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use Ev_RoleEvent.ProtoReflect.Descriptor instead. func (*Ev_RoleEvent) Descriptor() ([]byte, []int) { - return file_protos_events_proto_rawDescGZIP(), []int{4} + return file_protos_events_proto_rawDescGZIP(), []int{5} } func (x *Ev_RoleEvent) GetName() string { @@ -392,15 +447,16 @@ type Event struct { // *Event_EnvironmentEvent // *Event_TaskEvent // *Event_RoleEvent - // *Event_FrameworkFailureEvent + // *Event_FrameworkEvent // *Event_MesosHeartbeatEvent + // *Event_CoreStartEvent Payload isEvent_Payload `protobuf_oneof:"Payload"` } func (x *Event) Reset() { *x = Event{} if protoimpl.UnsafeEnabled { - mi := &file_protos_events_proto_msgTypes[5] + mi := &file_protos_events_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -413,7 +469,7 @@ func (x *Event) String() string { func (*Event) ProtoMessage() {} func (x *Event) ProtoReflect() protoreflect.Message { - mi := &file_protos_events_proto_msgTypes[5] + mi := &file_protos_events_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -426,7 +482,7 @@ func (x *Event) ProtoReflect() protoreflect.Message { // Deprecated: Use Event.ProtoReflect.Descriptor instead. func (*Event) Descriptor() ([]byte, []int) { - return file_protos_events_proto_rawDescGZIP(), []int{5} + return file_protos_events_proto_rawDescGZIP(), []int{6} } func (x *Event) GetTimestamp() int64 { @@ -464,9 +520,9 @@ func (x *Event) GetRoleEvent() *Ev_RoleEvent { return nil } -func (x *Event) GetFrameworkFailureEvent() *Ev_MetaEvent_FrameworkFailure { - if x, ok := x.GetPayload().(*Event_FrameworkFailureEvent); ok { - return x.FrameworkFailureEvent +func (x *Event) GetFrameworkEvent() *Ev_MetaEvent_FrameworkEvent { + if x, ok := x.GetPayload().(*Event_FrameworkEvent); ok { + return x.FrameworkEvent } return nil } @@ -478,6 +534,13 @@ func (x *Event) GetMesosHeartbeatEvent() *Ev_MetaEvent_MesosHeartbeat { return nil } +func (x *Event) GetCoreStartEvent() *Ev_MetaEvent_CoreStart { + if x, ok := x.GetPayload().(*Event_CoreStartEvent); ok { + return x.CoreStartEvent + } + return nil +} + type isEvent_Payload interface { isEvent_Payload() } @@ -494,100 +557,115 @@ type Event_RoleEvent struct { RoleEvent *Ev_RoleEvent `protobuf:"bytes,4,opt,name=roleEvent,proto3,oneof"` } -type Event_FrameworkFailureEvent struct { - FrameworkFailureEvent *Ev_MetaEvent_FrameworkFailure `protobuf:"bytes,5,opt,name=frameworkFailureEvent,proto3,oneof"` +type Event_FrameworkEvent struct { + FrameworkEvent *Ev_MetaEvent_FrameworkEvent `protobuf:"bytes,5,opt,name=frameworkEvent,proto3,oneof"` } type Event_MesosHeartbeatEvent struct { MesosHeartbeatEvent *Ev_MetaEvent_MesosHeartbeat `protobuf:"bytes,6,opt,name=mesosHeartbeatEvent,proto3,oneof"` } +type Event_CoreStartEvent struct { + CoreStartEvent *Ev_MetaEvent_CoreStart `protobuf:"bytes,7,opt,name=coreStartEvent,proto3,oneof"` +} + func (*Event_EnvironmentEvent) isEvent_Payload() {} func (*Event_TaskEvent) isEvent_Payload() {} func (*Event_RoleEvent) isEvent_Payload() {} -func (*Event_FrameworkFailureEvent) isEvent_Payload() {} +func (*Event_FrameworkEvent) isEvent_Payload() {} func (*Event_MesosHeartbeatEvent) isEvent_Payload() {} +func (*Event_CoreStartEvent) isEvent_Payload() {} + var File_protos_events_proto protoreflect.FileDescriptor var file_protos_events_proto_rawDesc = []byte{ 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, - 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x22, 0x39, 0x0a, 0x1d, - 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, - 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x13, 0x45, 0x76, 0x5f, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, - 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x22, - 0xa2, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x22, 0x3a, 0x0a, 0x16, + 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, + 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x1b, 0x45, 0x76, 0x5f, 0x4d, + 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x13, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x65, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x22, 0xa2, 0x01, 0x0a, 0x0c, + 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x6c, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, - 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, - 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6c, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, - 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, - 0x74, 0x68, 0x22, 0x9f, 0x03, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, - 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, - 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x5d, 0x0a, 0x15, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, - 0x69, 0x6c, 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, - 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, - 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x15, 0x66, 0x72, 0x61, 0x6d, 0x65, - 0x77, 0x6f, 0x72, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x57, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, - 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0xd9, + 0x03, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, + 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, + 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, + 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, + 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x13, + 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, + 0x52, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, - 0x61, 0x74, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, - 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, - 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, + 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, + 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, + 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, + 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -602,26 +680,28 @@ func file_protos_events_proto_rawDescGZIP() []byte { return file_protos_events_proto_rawDescData } -var file_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_protos_events_proto_goTypes = []interface{}{ - (*Ev_MetaEvent_MesosHeartbeat)(nil), // 0: events.Ev_MetaEvent_MesosHeartbeat - (*Ev_MetaEvent_FrameworkFailure)(nil), // 1: events.Ev_MetaEvent_FrameworkFailure - (*Ev_EnvironmentEvent)(nil), // 2: events.Ev_EnvironmentEvent - (*Ev_TaskEvent)(nil), // 3: events.Ev_TaskEvent - (*Ev_RoleEvent)(nil), // 4: events.Ev_RoleEvent - (*Event)(nil), // 5: events.Event + (*Ev_MetaEvent_MesosHeartbeat)(nil), // 0: events.Ev_MetaEvent_MesosHeartbeat + (*Ev_MetaEvent_CoreStart)(nil), // 1: events.Ev_MetaEvent_CoreStart + (*Ev_MetaEvent_FrameworkEvent)(nil), // 2: events.Ev_MetaEvent_FrameworkEvent + (*Ev_EnvironmentEvent)(nil), // 3: events.Ev_EnvironmentEvent + (*Ev_TaskEvent)(nil), // 4: events.Ev_TaskEvent + (*Ev_RoleEvent)(nil), // 5: events.Ev_RoleEvent + (*Event)(nil), // 6: events.Event } var file_protos_events_proto_depIdxs = []int32{ - 2, // 0: events.Event.environmentEvent:type_name -> events.Ev_EnvironmentEvent - 3, // 1: events.Event.taskEvent:type_name -> events.Ev_TaskEvent - 4, // 2: events.Event.roleEvent:type_name -> events.Ev_RoleEvent - 1, // 3: events.Event.frameworkFailureEvent:type_name -> events.Ev_MetaEvent_FrameworkFailure + 3, // 0: events.Event.environmentEvent:type_name -> events.Ev_EnvironmentEvent + 4, // 1: events.Event.taskEvent:type_name -> events.Ev_TaskEvent + 5, // 2: events.Event.roleEvent:type_name -> events.Ev_RoleEvent + 2, // 3: events.Event.frameworkEvent:type_name -> events.Ev_MetaEvent_FrameworkEvent 0, // 4: events.Event.mesosHeartbeatEvent:type_name -> events.Ev_MetaEvent_MesosHeartbeat - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 1, // 5: events.Event.coreStartEvent:type_name -> events.Ev_MetaEvent_CoreStart + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_protos_events_proto_init() } @@ -643,7 +723,7 @@ func file_protos_events_proto_init() { } } file_protos_events_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_MetaEvent_FrameworkFailure); i { + switch v := v.(*Ev_MetaEvent_CoreStart); i { case 0: return &v.state case 1: @@ -655,7 +735,7 @@ func file_protos_events_proto_init() { } } file_protos_events_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_EnvironmentEvent); i { + switch v := v.(*Ev_MetaEvent_FrameworkEvent); i { case 0: return &v.state case 1: @@ -667,7 +747,7 @@ func file_protos_events_proto_init() { } } file_protos_events_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_TaskEvent); i { + switch v := v.(*Ev_EnvironmentEvent); i { case 0: return &v.state case 1: @@ -679,7 +759,7 @@ func file_protos_events_proto_init() { } } file_protos_events_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_RoleEvent); i { + switch v := v.(*Ev_TaskEvent); i { case 0: return &v.state case 1: @@ -691,6 +771,18 @@ func file_protos_events_proto_init() { } } file_protos_events_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Ev_RoleEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_events_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Event); i { case 0: return &v.state @@ -703,12 +795,13 @@ func file_protos_events_proto_init() { } } } - file_protos_events_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_protos_events_proto_msgTypes[6].OneofWrappers = []interface{}{ (*Event_EnvironmentEvent)(nil), (*Event_TaskEvent)(nil), (*Event_RoleEvent)(nil), - (*Event_FrameworkFailureEvent)(nil), + (*Event_FrameworkEvent)(nil), (*Event_MesosHeartbeatEvent)(nil), + (*Event_CoreStartEvent)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -716,7 +809,7 @@ func file_protos_events_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protos_events_proto_rawDesc, NumEnums: 0, - NumMessages: 6, + NumMessages: 7, NumExtensions: 0, NumServices: 0, }, diff --git a/common/protos/events.proto b/common/protos/events.proto index cc9fc3fb2..1996acb75 100644 --- a/common/protos/events.proto +++ b/common/protos/events.proto @@ -33,8 +33,13 @@ option go_package = "github.com/AliceO2Group/Control/common/protos;pb"; message Ev_MetaEvent_MesosHeartbeat { } -message Ev_MetaEvent_FrameworkFailure { - string message = 1; +message Ev_MetaEvent_CoreStart { + string frameworkId = 1; +} + +message Ev_MetaEvent_FrameworkEvent { + string frameworkId = 1; + string message = 2; } message Ev_EnvironmentEvent { @@ -69,7 +74,8 @@ message Event { Ev_EnvironmentEvent environmentEvent = 2; Ev_TaskEvent taskEvent = 3; Ev_RoleEvent roleEvent = 4; - Ev_MetaEvent_FrameworkFailure frameworkFailureEvent = 5; + Ev_MetaEvent_FrameworkEvent frameworkEvent = 5; Ev_MetaEvent_MesosHeartbeat mesosHeartbeatEvent = 6; + Ev_MetaEvent_CoreStart coreStartEvent = 7; } } diff --git a/common/runtype/runtype.go b/common/runtype/runtype.go index 15ac96049..419684faa 100644 --- a/common/runtype/runtype.go +++ b/common/runtype/runtype.go @@ -30,6 +30,8 @@ package runtype // NOTE: this run type list is replicated in AliceO2 repo in // https://github.com/AliceO2Group/AliceO2/blob/dev/DataFormats/Parameters/include/DataFormatsParameters/ECSDataAdapters.h // Inform Ruben when the list is updated. +// NOTE: this run type list is replicated in Bookkeeping upstream, common.proto +// Inform George/Martin when the list is updated. type RunType int const ( diff --git a/core/core.go b/core/core.go index 26e9d55d7..d52d4f340 100644 --- a/core/core.go +++ b/core/core.go @@ -31,6 +31,7 @@ import ( "syscall" "github.com/AliceO2Group/Control/common/logger/infologger" + pb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/core/the" "github.com/AliceO2Group/Control/common/logger" @@ -40,7 +41,7 @@ import ( "github.com/spf13/viper" ) -var log = logger.New(logrus.StandardLogger(),"core") +var log = logger.New(logrus.StandardLogger(), "core") const fileLimitWant = 65536 const fileLimitMin = 8192 @@ -72,7 +73,7 @@ func Run() error { return err } - // Set up channel to receive Unix Signals. + // Set up channel to receive Unix Signals signals(state) // Raise soft file limit @@ -90,6 +91,11 @@ func Run() error { state.taskman.Start(ctx) + // First message to Kafka + the.EventWriter().WriteEvent(&pb.Ev_MetaEvent_CoreStart{ + FrameworkId: state.taskman.GetFrameworkID(), + }) + // Plugins need to start after taskman is running, because taskman provides the FID integration.PluginsInstance().InitAll(state.taskman.GetFrameworkID()) @@ -99,7 +105,7 @@ func Run() error { WithField("port", viper.GetInt("controlPort")). Fatal("net.Listener failed to listen") } - if err := s.Serve(lis); err != nil { + if err = s.Serve(lis); err != nil { log.WithField("error", err).Fatal("GRPC server failed to serve") } diff --git a/core/environment/environment.go b/core/environment/environment.go index 41a365027..6e5e79101 100644 --- a/core/environment/environment.go +++ b/core/environment/environment.go @@ -37,9 +37,11 @@ import ( "time" "github.com/AliceO2Group/Control/common/event" + "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/gera" "github.com/AliceO2Group/Control/common/logger" "github.com/AliceO2Group/Control/common/logger/infologger" + pb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/common/runtype" "github.com/AliceO2Group/Control/common/system" "github.com/AliceO2Group/Control/common/utils" @@ -95,8 +97,8 @@ func (env *Environment) NotifyEvent(e event.DeviceEvent) { } } -func newEnvironment(userVars map[string]string) (env *Environment, err error) { - envId := uid.New() +func newEnvironment(userVars map[string]string, newId uid.ID) (env *Environment, err error) { + envId := newId env = &Environment{ id: envId, workflow: nil, @@ -152,6 +154,17 @@ func newEnvironment(userVars map[string]string) (env *Environment, err error) { fsm.Callbacks{ "before_event": func(_ context.Context, e *fsm.Event) { env.currentTransition = e.Event + trigger := fmt.Sprintf("before_%s", e.Event) + + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.GetCurrentRunNumber(), + Transition: e.Event, + TransitionStep: trigger, + Message: "transition step starting", + }) + // If the event is START_ACTIVITY, we set up and update variables relevant to plugins early on. // This used to be done inside the transition_startactivity, but then the new RN isn't available to the // before_START_ACTIVITY hooks. By setting it up here, we ensure the run number is available especially @@ -227,27 +240,135 @@ func newEnvironment(userVars map[string]string) (env *Environment, err error) { ) } - errHooks := env.handleHooks(env.Workflow(), fmt.Sprintf("before_%s", e.Event)) + errHooks := env.handleHooks(env.Workflow(), trigger) if errHooks != nil { e.Cancel(errHooks) } + + errorMsg := "" + if e.Err != nil { + errorMsg = e.Err.Error() + } + + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Error: errorMsg, + Message: "transition step finished", + Transition: e.Event, + TransitionStep: trigger, + }) }, "leave_state": func(_ context.Context, e *fsm.Event) { - errHooks := env.handleHooks(env.Workflow(), fmt.Sprintf("leave_%s", e.Src)) + trigger := fmt.Sprintf("leave_%s", e.Src) + + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Transition: e.Event, + TransitionStep: trigger, + Message: "transition step starting", + }) + + // We might leave RUNNING not only through STOP_ACTIVITY. In such cases we also need a run stop time. + if e.Src == "RUNNING" { + endTime, ok := env.workflow.GetUserVars().Get("run_end_time_ms") + if ok && endTime == "" { + runEndTime := strconv.FormatInt(time.Now().UnixMilli(), 10) + env.workflow.SetRuntimeVar("run_end_time_ms", runEndTime) + } else { + log.WithField("partition", envId.String()). + Debug("O2 End time already set before leave_RUNNING") + } + } + errHooks := env.handleHooks(env.Workflow(), trigger) if errHooks != nil { e.Cancel(errHooks) + } + + errorMsg := "" + if e.Err != nil { + errorMsg = e.Err.Error() + } + + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Error: errorMsg, + Message: "transition step finished", + Transition: e.Event, + TransitionStep: trigger, + }) + + if e.Err != nil { return } + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Message: "transition step starting", + Transition: e.Event, + TransitionStep: fmt.Sprintf("tasks_%s", e.Event), + }) + env.handlerFunc()(e) + + if e.Err != nil { + errorMsg = e.Err.Error() + } + + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Error: errorMsg, + Message: "transition step finished", + Transition: e.Event, + TransitionStep: fmt.Sprintf("tasks_%s", e.Event), + }) + }, "enter_state": func(_ context.Context, e *fsm.Event) { - enterStateTimeMs := strconv.FormatInt(time.Now().UnixMilli(), 10) + trigger := fmt.Sprintf("enter_%s", e.Dst) + + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Transition: e.Event, + TransitionStep: trigger, + Message: "transition step starting", + }) + + enterStateTimeMs = strconv.FormatInt(time.Now().UnixMilli(), 10) env.workflow.SetRuntimeVar("enter_state_time_ms", enterStateTimeMs) - errHooks := env.handleHooks(env.Workflow(), fmt.Sprintf("enter_%s", e.Dst)) + errHooks := env.handleHooks(env.Workflow(), trigger) if errHooks != nil { e.Cancel(errHooks) + } + + errorMsg := "" + if e.Err != nil { + errorMsg = e.Err.Error() + } + + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Error: errorMsg, + Message: "transition step finished", + Transition: e.Event, + TransitionStep: trigger, + }) + + if e.Err != nil { return } @@ -261,7 +382,18 @@ func newEnvironment(userVars map[string]string) (env *Environment, err error) { "after_event": func(_ context.Context, e *fsm.Event) { defer func() { env.currentTransition = "" }() - errHooks := env.handleHooks(env.Workflow(), fmt.Sprintf("after_%s", e.Event)) + trigger := fmt.Sprintf("after_%s", e.Event) + + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Transition: e.Event, + TransitionStep: trigger, + Message: "transition step starting", + }) + + errHooks := env.handleHooks(env.Workflow(), trigger) if errHooks != nil { e.Cancel(errHooks) } @@ -306,6 +438,21 @@ func newEnvironment(userVars map[string]string) (env *Environment, err error) { // Ensure the auto stop timer is stopped (important for stop transitions NOT triggered by the timer itself) env.invalidateAutoStopTransition() } + + errorMsg := "" + if e.Err != nil { + errorMsg = e.Err.Error() + } + // publish transition step complete event + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Error: errorMsg, + Message: "transition step finished", + Transition: e.Event, + TransitionStep: trigger, + }) }, }, ) @@ -614,11 +761,46 @@ func (env *Environment) runTasksAsHooks(hooksToTrigger task.Tasks) (errorMap map } func (env *Environment) TryTransition(t Transition) (err error) { + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Message: "transition starting", + Transition: t.eventName(), + }) + err = t.check() if err != nil { + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Error: err.Error(), + Message: "transition impossible", + Transition: t.eventName(), + }) return } err = env.Sm.Event(context.Background(), t.eventName(), t) + + if err != nil { + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Error: err.Error(), + Message: "transition error", + Transition: t.eventName(), + }) + } else { + the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + CurrentRunNumber: env.currentRunNumber, + Message: "transition completed successfully", + Transition: t.eventName(), + }) + } return } diff --git a/core/environment/manager.go b/core/environment/manager.go index f3d8cc3f0..c47599874 100644 --- a/core/environment/manager.go +++ b/core/environment/manager.go @@ -35,7 +35,9 @@ import ( "github.com/AliceO2Group/Control/common" "github.com/AliceO2Group/Control/common/controlmode" "github.com/AliceO2Group/Control/common/event" + "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/logger/infologger" + evpb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/common/system" "github.com/AliceO2Group/Control/common/utils" "github.com/AliceO2Group/Control/common/utils/uid" @@ -199,12 +201,20 @@ func (envs *Manager) GetActiveDetectors() system.IDMap { return response } -func (envs *Manager) CreateEnvironment(workflowPath string, userVars map[string]string) (uid.ID, error) { +func (envs *Manager) CreateEnvironment(workflowPath string, userVars map[string]string, public bool, newId uid.ID) (uid.ID, error) { // Before we load the workflow, we get the list of currently active detectors. This query must be performed before // loading the workflow in order to compare the currently used detectors with the detectors required by the newly // created environment. alreadyActiveDetectors := envs.GetActiveDetectors() + the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_EnvironmentEvent{ + EnvironmentId: newId.String(), + State: "PENDING", + Transition: "CREATE", + TransitionStep: "before_CREATE", + Message: "instantiating", + }) + // userVar identifiers come in 2 forms: // environment user var: "someKey" // workflow user var: "path.to.some.role:someKey" @@ -246,31 +256,44 @@ func (envs *Manager) CreateEnvironment(workflowPath string, userVars map[string] } var env *Environment - env, err = newEnvironment(envUserVars) - newEnvId := uid.NilID() + env, err = newEnvironment(envUserVars, newId) + if public { + env.Public = true + } + + gotEnvId := uid.NilID() if err == nil { if env != nil { - newEnvId = env.Id() + gotEnvId = env.Id() } else { err = errors.New("newEnvironment returned nil environment") log.WithError(err). + WithField("partition", newId.String()). Logf(logrus.FatalLevel, "environment creation failed") } } if err != nil { log.WithError(err). - WithField("partition", newEnvId.String()). + WithField("partition", gotEnvId.String()). Logf(logrus.FatalLevel, "environment creation failed") - return newEnvId, err + return gotEnvId, err } log.WithFields(logrus.Fields{ "workflow": workflowPath, - "partition": newEnvId.String(), + "partition": gotEnvId.String(), }).Info("creating new environment") + the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_EnvironmentEvent{ + EnvironmentId: newId.String(), + State: "PENDING", + Transition: "CREATE", + TransitionStep: "before_CREATE", + Message: "running hooks", + }) + env.hookHandlerF = func(hooks task.Tasks) error { - return envs.taskman.TriggerHooks(newEnvId, hooks) + return envs.taskman.TriggerHooks(gotEnvId, hooks) } // Ensure the environment_id is available to all @@ -284,9 +307,17 @@ func (envs *Manager) CreateEnvironment(workflowPath string, userVars map[string] WithField("partition", env.Id().String()). WithError(err). Warn("parse workflow public info failed.") - return newEnvId, fmt.Errorf("workflow public info parsing failed: %w", err) + return gotEnvId, fmt.Errorf("workflow public info parsing failed: %w", err) } + the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_EnvironmentEvent{ + EnvironmentId: newId.String(), + State: "PENDING", + Transition: "CREATE", + TransitionStep: "CREATE", + Message: "loading workflow", + }) + // We load the workflow (includes template processing) env.workflow, err = envs.loadWorkflow(workflowPath, env.wfAdapter, workflowUserVars, env.BaseConfigStack) if err != nil { @@ -311,7 +342,7 @@ func (envs *Manager) CreateEnvironment(workflowPath string, userVars map[string] env.GlobalDefaults.Set("detectors", detectorsStr) log.WithFields(logrus.Fields{ - "partition": newEnvId.String(), + "partition": gotEnvId.String(), }).Infof("detectors in environment: %s", strings.Join(detectors, " ")) // env.GetActiveDetectors() is valid starting now, so we can check for detector exclusion @@ -323,6 +354,14 @@ func (envs *Manager) CreateEnvironment(workflowPath string, userVars map[string] } } + the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_EnvironmentEvent{ + EnvironmentId: newId.String(), + State: env.CurrentState(), + Transition: "CREATE", + TransitionStep: "after_CREATE", + Message: "workflow loaded", + }) + log.WithField("method", "CreateEnvironment"). WithField("level", infologger.IL_Devel). Debug("envman write lock") @@ -844,7 +883,7 @@ func (envs *Manager) handleDeviceEvent(evt event.DeviceEvent) { } // FIXME: this function should be deduplicated with CreateEnvironment so detector resource matching works correctly -func (envs *Manager) CreateAutoEnvironment(workflowPath string, userVars map[string]string, sub Subscription) { +func (envs *Manager) CreateAutoEnvironment(workflowPath string, userVars map[string]string, newId uid.ID, sub Subscription) { envUserVars := make(map[string]string) workflowUserVars := make(map[string]string) @@ -856,7 +895,7 @@ func (envs *Manager) CreateAutoEnvironment(workflowPath string, userVars map[str } } - env, err := newEnvironment(envUserVars) + env, err := newEnvironment(envUserVars, newId) newEnvId := uid.NilID() if err == nil && env != nil { newEnvId = env.Id() diff --git a/core/protos/o2control.pb.go b/core/protos/o2control.pb.go index 5b01e7a4e..3cf7cfa85 100644 --- a/core/protos/o2control.pb.go +++ b/core/protos/o2control.pb.go @@ -47,7 +47,8 @@ const ( // Symbols defined in public import of protos/events.proto. type Ev_MetaEvent_MesosHeartbeat = protos.Ev_MetaEvent_MesosHeartbeat -type Ev_MetaEvent_FrameworkFailure = protos.Ev_MetaEvent_FrameworkFailure +type Ev_MetaEvent_CoreStart = protos.Ev_MetaEvent_CoreStart +type Ev_MetaEvent_FrameworkEvent = protos.Ev_MetaEvent_FrameworkEvent type Ev_EnvironmentEvent = protos.Ev_EnvironmentEvent type Ev_TaskEvent = protos.Ev_TaskEvent type Ev_RoleEvent = protos.Ev_RoleEvent @@ -55,8 +56,9 @@ type Event = protos.Event type Event_EnvironmentEvent = protos.Event_EnvironmentEvent type Event_TaskEvent = protos.Event_TaskEvent type Event_RoleEvent = protos.Event_RoleEvent -type Event_FrameworkFailureEvent = protos.Event_FrameworkFailureEvent +type Event_FrameworkEvent = protos.Event_FrameworkEvent type Event_MesosHeartbeatEvent = protos.Event_MesosHeartbeatEvent +type Event_CoreStartEvent = protos.Event_CoreStartEvent type ControlEnvironmentRequest_Optype int32 diff --git a/core/server.go b/core/server.go index 376f4eb95..0b63741f4 100644 --- a/core/server.go +++ b/core/server.go @@ -33,7 +33,9 @@ import ( "strconv" "time" + "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/logger/infologger" + evpb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/common/system" "github.com/AliceO2Group/Control/common/utils" "github.com/AliceO2Group/Control/common/utils/uid" @@ -156,14 +158,6 @@ func (m *RpcServer) GetIntegratedServices(ctx context.Context, empty *pb.Empty) return r, nil } -func (*RpcServer) TrackStatus(*pb.StatusRequest, pb.Control_TrackStatusServer) error { - log.WithPrefix("rpcserver"). - WithField("method", "TrackStatus"). - Debug("implement me") - - return status.New(codes.Unimplemented, "not implemented").Err() -} - func (m *RpcServer) GetFrameworkInfo(context.Context, *pb.GetFrameworkInfoRequest) (*pb.GetFrameworkInfoReply, error) { defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("rpcserver")) m.logMethod() @@ -300,6 +294,58 @@ func (m *RpcServer) GetEnvironments(cxt context.Context, request *pb.GetEnvironm return r, nil } +func (m *RpcServer) doNewEnvironmentAsync(cxt context.Context, request *pb.NewEnvironmentRequest, id uid.ID) { + var err error + id, err = m.state.environments.CreateEnvironment(request.GetWorkflowTemplate(), request.GetVars(), request.GetPublic(), id) + if err != nil { + the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_EnvironmentEvent{ + EnvironmentId: id.String(), + State: "ERROR", + Error: "cannot create new environment", + Message: err.Error(), + }) + return + } + + newEnv, err := m.state.environments.Environment(id) + if err != nil { + the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_EnvironmentEvent{ + EnvironmentId: id.String(), + State: "ERROR", + Error: "cannot get newly created environment", + Message: err.Error(), + }) + return + } + + the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_EnvironmentEvent{ + EnvironmentId: id.String(), + State: newEnv.CurrentState(), + }) + return +} + +func (m *RpcServer) NewEnvironmentAsync(cxt context.Context, request *pb.NewEnvironmentRequest) (reply *pb.NewEnvironmentReply, err error) { + defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("rpcserver")) + m.logMethod() + + // Create new Environment instance with some roles, we get back a UUID + id := uid.New() + + go m.doNewEnvironmentAsync(cxt, request, id) + + ei := &pb.EnvironmentInfo{ + Id: id.String(), + State: "PENDING", + UserVars: request.GetVars(), + } + reply = &pb.NewEnvironmentReply{ + Environment: ei, + Public: request.GetPublic(), + } + return +} + func (m *RpcServer) NewEnvironment(cxt context.Context, request *pb.NewEnvironmentRequest) (reply *pb.NewEnvironmentReply, err error) { defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("rpcserver")) m.logMethod() @@ -331,8 +377,8 @@ func (m *RpcServer) NewEnvironment(cxt context.Context, request *pb.NewEnvironme reply = &pb.NewEnvironmentReply{Public: request.Public} // Create new Environment instance with some roles, we get back a UUID - id := uid.NilID() - id, err = m.state.environments.CreateEnvironment(request.GetWorkflowTemplate(), request.GetVars()) + id := uid.New() + id, err = m.state.environments.CreateEnvironment(request.GetWorkflowTemplate(), request.GetVars(), request.GetPublic(), id) if err != nil { st := status.Newf(codes.Internal, "cannot create new environment: %s", TruncateString(err.Error(), MAX_ERROR_LENGTH)) ei := &pb.EnvironmentInfo{ @@ -362,10 +408,6 @@ func (m *RpcServer) NewEnvironment(cxt context.Context, request *pb.NewEnvironme return } - if request.Public { - newEnv.Public = request.Public - } - tasks := newEnv.Workflow().GetTasks() var defaults, vars, userVars map[string]string defaults, vars, userVars, err = newEnv.Workflow().ConsolidatedVarMaps() @@ -1064,8 +1106,8 @@ func (m *RpcServer) Subscribe(req *pb.SubscribeRequest, srv pb.Control_Subscribe defer m.logMethodHandled() for { - ch, ok := m.envStreams.GetChannel(req.GetId()) - if !ok { + ch, chOk := m.envStreams.GetChannel(req.GetId()) + if !chOk { continue } select { @@ -1092,7 +1134,8 @@ func (m *RpcServer) NewAutoEnvironment(cxt context.Context, request *pb.NewAutoE ch := make(chan *pb.Event) m.envStreams.add(request.GetId(), ch) sub := environment.SubscribeToStream(ch) - go m.state.environments.CreateAutoEnvironment(request.GetWorkflowTemplate(), request.GetVars(), sub) + id := uid.New() + go m.state.environments.CreateAutoEnvironment(request.GetWorkflowTemplate(), request.GetVars(), id, sub) r := &pb.NewAutoEnvironmentReply{} return r, nil } diff --git a/core/the/eventwriter.go b/core/the/eventwriter.go index 9946b498d..8c66950d2 100644 --- a/core/the/eventwriter.go +++ b/core/the/eventwriter.go @@ -30,7 +30,7 @@ import ( ) func EventWriter() *event.Writer { - return EventWriterWithTopic("") + return EventWriterWithTopic(topic.Root) } func EventWriterWithTopic(topic topic.Topic) *event.Writer { From e983b2cec75bf9a6022f926007f18b98335bcd8d Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 16 Feb 2023 14:58:30 +0100 Subject: [PATCH 09/43] [coconut] Add asynchronous mode (-y) to coconut env create command --- coconut/cmd/environment_create.go | 1 + 1 file changed, 1 insertion(+) diff --git a/coconut/cmd/environment_create.go b/coconut/cmd/environment_create.go index 76069e2c4..5cdce95bf 100644 --- a/coconut/cmd/environment_create.go +++ b/coconut/cmd/environment_create.go @@ -66,6 +66,7 @@ func init() { environmentCreateCmd.Flags().BoolP("auto", "a", false, "create an autorun environment") environmentCreateCmd.Flags().BoolP("public", "p", true, "control public rights of the environment") + environmentCreateCmd.Flags().BoolP("asynchronous", "y", false, "use asynchronous mode for environment creation") environmentCreateCmd.Flags().StringP("extra-vars", "e", "", "values passed using key=value CSV or JSON syntax, interpreted as strings `key1=val1,key2=val2` or `{\"key1\": \"value1\", \"key2\": \"value2\"}`") } From fabece2bca203bf0598e598f21b532ce1b9a5fe4 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 29 Feb 2024 14:47:37 +0100 Subject: [PATCH 10/43] [coconut] Implement coconut env create -y --- coconut/control/control.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/coconut/control/control.go b/coconut/control/control.go index 5dc0768c7..3bc78d291 100644 --- a/coconut/control/control.go +++ b/coconut/control/control.go @@ -420,8 +420,14 @@ func CreateEnvironment(cxt context.Context, rpc *coconut.RpcClient, cmd *cobra.C // TODO: add support for setting visibility here OCTRL-178 // TODO: add support for acquiring bot config here OCTRL-177 + asynchronous, _ := cmd.Flags().GetBool("asynchronous") + var response *pb.NewEnvironmentReply - response, err = rpc.NewEnvironment(cxt, &pb.NewEnvironmentRequest{WorkflowTemplate: wfPath, Vars: extraVarsMap, Public: public}, grpc.EmptyCallOption{}) + if asynchronous { + response, err = rpc.NewEnvironmentAsync(cxt, &pb.NewEnvironmentRequest{WorkflowTemplate: wfPath, Vars: extraVarsMap, Public: public}, grpc.EmptyCallOption{}) + } else { + response, err = rpc.NewEnvironment(cxt, &pb.NewEnvironmentRequest{WorkflowTemplate: wfPath, Vars: extraVarsMap, Public: public}, grpc.EmptyCallOption{}) + } if err != nil { return } From d13d12bef28562bb7233b11b36a2c63d1d30731c Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 16 Feb 2023 16:44:16 +0100 Subject: [PATCH 11/43] [core] Add task traits and CallEvent to events.proto --- common/protos/events.proto | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/common/protos/events.proto b/common/protos/events.proto index 1996acb75..11bade7b2 100644 --- a/common/protos/events.proto +++ b/common/protos/events.proto @@ -52,6 +52,13 @@ message Ev_EnvironmentEvent { string transitionStep = 7; } +message Traits { + string trigger = 1; + string await = 2; + string timeout = 3; + bool critical = 4; +} + message Ev_TaskEvent { string name = 1; string taskid = 2; @@ -59,6 +66,16 @@ message Ev_TaskEvent { string status = 4; string hostname = 5; string className = 6; + Traits traits = 7; +} + +message Ev_CallEvent { + string func = 1; + string status = 2; + string return = 3; + Traits traits = 4; + string output = 5; + string error = 6; } message Ev_RoleEvent { From 231d3d9ec16729d499259477928b489b44d2db47 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 29 Feb 2024 15:00:55 +0100 Subject: [PATCH 12/43] [common] Add CallEvent --- coconut/protos/o2control.pb.go | 3 + common/event/writer.go | 5 + common/protos/events.pb.go | 402 ++++++++++++++++++++++++++------- common/protos/events.proto | 17 +- core/protos/o2control.pb.go | 3 + 5 files changed, 340 insertions(+), 90 deletions(-) diff --git a/coconut/protos/o2control.pb.go b/coconut/protos/o2control.pb.go index 3cf7cfa85..b7f7160f8 100644 --- a/coconut/protos/o2control.pb.go +++ b/coconut/protos/o2control.pb.go @@ -50,12 +50,15 @@ type Ev_MetaEvent_MesosHeartbeat = protos.Ev_MetaEvent_MesosHeartbeat type Ev_MetaEvent_CoreStart = protos.Ev_MetaEvent_CoreStart type Ev_MetaEvent_FrameworkEvent = protos.Ev_MetaEvent_FrameworkEvent type Ev_EnvironmentEvent = protos.Ev_EnvironmentEvent +type Traits = protos.Traits type Ev_TaskEvent = protos.Ev_TaskEvent +type Ev_CallEvent = protos.Ev_CallEvent type Ev_RoleEvent = protos.Ev_RoleEvent type Event = protos.Event type Event_EnvironmentEvent = protos.Event_EnvironmentEvent type Event_TaskEvent = protos.Event_TaskEvent type Event_RoleEvent = protos.Event_RoleEvent +type Event_CallEvent = protos.Event_CallEvent type Event_FrameworkEvent = protos.Event_FrameworkEvent type Event_MesosHeartbeatEvent = protos.Event_MesosHeartbeatEvent type Event_CoreStartEvent = protos.Event_CoreStartEvent diff --git a/common/event/writer.go b/common/event/writer.go index 87196e792..a101a6d1f 100644 --- a/common/event/writer.go +++ b/common/event/writer.go @@ -88,6 +88,11 @@ func (w *Writer) WriteEvent(e interface{}) { Timestamp: time.Now().UnixMilli(), Payload: &pb.Event_EnvironmentEvent{EnvironmentEvent: e}, }) + case *pb.Ev_CallEvent: + err = w.doWriteEvent(&pb.Event{ + Timestamp: time.Now().UnixMilli(), + Payload: &pb.Event_CallEvent{CallEvent: e}, + }) default: err = fmt.Errorf("unsupported event type") } diff --git a/common/protos/events.pb.go b/common/protos/events.pb.go index c6e672ee9..5e5bc6798 100644 --- a/common/protos/events.pb.go +++ b/common/protos/events.pb.go @@ -278,23 +278,95 @@ func (x *Ev_EnvironmentEvent) GetTransitionStep() string { return "" } +type Traits struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Trigger string `protobuf:"bytes,1,opt,name=trigger,proto3" json:"trigger,omitempty"` + Await string `protobuf:"bytes,2,opt,name=await,proto3" json:"await,omitempty"` + Timeout string `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"` + Critical bool `protobuf:"varint,4,opt,name=critical,proto3" json:"critical,omitempty"` +} + +func (x *Traits) Reset() { + *x = Traits{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_events_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Traits) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Traits) ProtoMessage() {} + +func (x *Traits) ProtoReflect() protoreflect.Message { + mi := &file_protos_events_proto_msgTypes[4] + 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 Traits.ProtoReflect.Descriptor instead. +func (*Traits) Descriptor() ([]byte, []int) { + return file_protos_events_proto_rawDescGZIP(), []int{4} +} + +func (x *Traits) GetTrigger() string { + if x != nil { + return x.Trigger + } + return "" +} + +func (x *Traits) GetAwait() string { + if x != nil { + return x.Await + } + return "" +} + +func (x *Traits) GetTimeout() string { + if x != nil { + return x.Timeout + } + return "" +} + +func (x *Traits) GetCritical() bool { + if x != nil { + return x.Critical + } + return false +} + type Ev_TaskEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Taskid string `protobuf:"bytes,2,opt,name=taskid,proto3" json:"taskid,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` - Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` - ClassName string `protobuf:"bytes,6,opt,name=className,proto3" json:"className,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Taskid string `protobuf:"bytes,2,opt,name=taskid,proto3" json:"taskid,omitempty"` + State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` + Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` + Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` + ClassName string `protobuf:"bytes,6,opt,name=className,proto3" json:"className,omitempty"` + Traits *Traits `protobuf:"bytes,7,opt,name=traits,proto3" json:"traits,omitempty"` } func (x *Ev_TaskEvent) Reset() { *x = Ev_TaskEvent{} if protoimpl.UnsafeEnabled { - mi := &file_protos_events_proto_msgTypes[4] + mi := &file_protos_events_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -307,7 +379,7 @@ func (x *Ev_TaskEvent) String() string { func (*Ev_TaskEvent) ProtoMessage() {} func (x *Ev_TaskEvent) ProtoReflect() protoreflect.Message { - mi := &file_protos_events_proto_msgTypes[4] + mi := &file_protos_events_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -320,7 +392,7 @@ func (x *Ev_TaskEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use Ev_TaskEvent.ProtoReflect.Descriptor instead. func (*Ev_TaskEvent) Descriptor() ([]byte, []int) { - return file_protos_events_proto_rawDescGZIP(), []int{4} + return file_protos_events_proto_rawDescGZIP(), []int{5} } func (x *Ev_TaskEvent) GetName() string { @@ -365,6 +437,100 @@ func (x *Ev_TaskEvent) GetClassName() string { return "" } +func (x *Ev_TaskEvent) GetTraits() *Traits { + if x != nil { + return x.Traits + } + return nil +} + +type Ev_CallEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Func string `protobuf:"bytes,1,opt,name=func,proto3" json:"func,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + Return string `protobuf:"bytes,3,opt,name=return,proto3" json:"return,omitempty"` + Traits *Traits `protobuf:"bytes,4,opt,name=traits,proto3" json:"traits,omitempty"` + Output string `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"` + Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *Ev_CallEvent) Reset() { + *x = Ev_CallEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_events_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Ev_CallEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Ev_CallEvent) ProtoMessage() {} + +func (x *Ev_CallEvent) ProtoReflect() protoreflect.Message { + mi := &file_protos_events_proto_msgTypes[6] + 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 Ev_CallEvent.ProtoReflect.Descriptor instead. +func (*Ev_CallEvent) Descriptor() ([]byte, []int) { + return file_protos_events_proto_rawDescGZIP(), []int{6} +} + +func (x *Ev_CallEvent) GetFunc() string { + if x != nil { + return x.Func + } + return "" +} + +func (x *Ev_CallEvent) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *Ev_CallEvent) GetReturn() string { + if x != nil { + return x.Return + } + return "" +} + +func (x *Ev_CallEvent) GetTraits() *Traits { + if x != nil { + return x.Traits + } + return nil +} + +func (x *Ev_CallEvent) GetOutput() string { + if x != nil { + return x.Output + } + return "" +} + +func (x *Ev_CallEvent) GetError() string { + if x != nil { + return x.Error + } + return "" +} + type Ev_RoleEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -379,7 +545,7 @@ type Ev_RoleEvent struct { func (x *Ev_RoleEvent) Reset() { *x = Ev_RoleEvent{} if protoimpl.UnsafeEnabled { - mi := &file_protos_events_proto_msgTypes[5] + mi := &file_protos_events_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -392,7 +558,7 @@ func (x *Ev_RoleEvent) String() string { func (*Ev_RoleEvent) ProtoMessage() {} func (x *Ev_RoleEvent) ProtoReflect() protoreflect.Message { - mi := &file_protos_events_proto_msgTypes[5] + mi := &file_protos_events_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -405,7 +571,7 @@ func (x *Ev_RoleEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use Ev_RoleEvent.ProtoReflect.Descriptor instead. func (*Ev_RoleEvent) Descriptor() ([]byte, []int) { - return file_protos_events_proto_rawDescGZIP(), []int{5} + return file_protos_events_proto_rawDescGZIP(), []int{7} } func (x *Ev_RoleEvent) GetName() string { @@ -447,6 +613,7 @@ type Event struct { // *Event_EnvironmentEvent // *Event_TaskEvent // *Event_RoleEvent + // *Event_CallEvent // *Event_FrameworkEvent // *Event_MesosHeartbeatEvent // *Event_CoreStartEvent @@ -456,7 +623,7 @@ type Event struct { func (x *Event) Reset() { *x = Event{} if protoimpl.UnsafeEnabled { - mi := &file_protos_events_proto_msgTypes[6] + mi := &file_protos_events_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -469,7 +636,7 @@ func (x *Event) String() string { func (*Event) ProtoMessage() {} func (x *Event) ProtoReflect() protoreflect.Message { - mi := &file_protos_events_proto_msgTypes[6] + mi := &file_protos_events_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -482,7 +649,7 @@ func (x *Event) ProtoReflect() protoreflect.Message { // Deprecated: Use Event.ProtoReflect.Descriptor instead. func (*Event) Descriptor() ([]byte, []int) { - return file_protos_events_proto_rawDescGZIP(), []int{6} + return file_protos_events_proto_rawDescGZIP(), []int{8} } func (x *Event) GetTimestamp() int64 { @@ -520,6 +687,13 @@ func (x *Event) GetRoleEvent() *Ev_RoleEvent { return nil } +func (x *Event) GetCallEvent() *Ev_CallEvent { + if x, ok := x.GetPayload().(*Event_CallEvent); ok { + return x.CallEvent + } + return nil +} + func (x *Event) GetFrameworkEvent() *Ev_MetaEvent_FrameworkEvent { if x, ok := x.GetPayload().(*Event_FrameworkEvent); ok { return x.FrameworkEvent @@ -546,27 +720,31 @@ type isEvent_Payload interface { } type Event_EnvironmentEvent struct { - EnvironmentEvent *Ev_EnvironmentEvent `protobuf:"bytes,2,opt,name=environmentEvent,proto3,oneof"` + EnvironmentEvent *Ev_EnvironmentEvent `protobuf:"bytes,11,opt,name=environmentEvent,proto3,oneof"` } type Event_TaskEvent struct { - TaskEvent *Ev_TaskEvent `protobuf:"bytes,3,opt,name=taskEvent,proto3,oneof"` + TaskEvent *Ev_TaskEvent `protobuf:"bytes,12,opt,name=taskEvent,proto3,oneof"` } type Event_RoleEvent struct { - RoleEvent *Ev_RoleEvent `protobuf:"bytes,4,opt,name=roleEvent,proto3,oneof"` + RoleEvent *Ev_RoleEvent `protobuf:"bytes,13,opt,name=roleEvent,proto3,oneof"` +} + +type Event_CallEvent struct { + CallEvent *Ev_CallEvent `protobuf:"bytes,14,opt,name=callEvent,proto3,oneof"` } type Event_FrameworkEvent struct { - FrameworkEvent *Ev_MetaEvent_FrameworkEvent `protobuf:"bytes,5,opt,name=frameworkEvent,proto3,oneof"` + FrameworkEvent *Ev_MetaEvent_FrameworkEvent `protobuf:"bytes,101,opt,name=frameworkEvent,proto3,oneof"` } type Event_MesosHeartbeatEvent struct { - MesosHeartbeatEvent *Ev_MetaEvent_MesosHeartbeat `protobuf:"bytes,6,opt,name=mesosHeartbeatEvent,proto3,oneof"` + MesosHeartbeatEvent *Ev_MetaEvent_MesosHeartbeat `protobuf:"bytes,102,opt,name=mesosHeartbeatEvent,proto3,oneof"` } type Event_CoreStartEvent struct { - CoreStartEvent *Ev_MetaEvent_CoreStart `protobuf:"bytes,7,opt,name=coreStartEvent,proto3,oneof"` + CoreStartEvent *Ev_MetaEvent_CoreStart `protobuf:"bytes,103,opt,name=coreStartEvent,proto3,oneof"` } func (*Event_EnvironmentEvent) isEvent_Payload() {} @@ -575,6 +753,8 @@ func (*Event_TaskEvent) isEvent_Payload() {} func (*Event_RoleEvent) isEvent_Payload() {} +func (*Event_CallEvent) isEvent_Payload() {} + func (*Event_FrameworkEvent) isEvent_Payload() {} func (*Event_MesosHeartbeatEvent) isEvent_Payload() {} @@ -612,7 +792,14 @@ var file_protos_events_proto_rawDesc = []byte{ 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x22, 0xa2, 0x01, 0x0a, 0x0c, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x22, 0x6e, 0x0a, 0x06, 0x54, + 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, + 0x14, 0x0a, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x61, 0x77, 0x61, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, 0xca, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, @@ -623,49 +810,66 @@ var file_protos_events_proto_rawDesc = []byte{ 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x6c, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0xd9, - 0x03, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, - 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, - 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, - 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, - 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, - 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x13, - 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, - 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, - 0x52, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, - 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, - 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, - 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, - 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, + 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, + 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, + 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x26, 0x0a, + 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x22, 0x6c, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, + 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, + 0x68, 0x22, 0x9b, 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, + 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, + 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x34, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, + 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x63, 0x61, 0x6c, + 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, + 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, + 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, + 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, + 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x48, + 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, + 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, + 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x65, 0x42, + 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, + 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, + 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -680,28 +884,33 @@ func file_protos_events_proto_rawDescGZIP() []byte { return file_protos_events_proto_rawDescData } -var file_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 9) var file_protos_events_proto_goTypes = []interface{}{ (*Ev_MetaEvent_MesosHeartbeat)(nil), // 0: events.Ev_MetaEvent_MesosHeartbeat (*Ev_MetaEvent_CoreStart)(nil), // 1: events.Ev_MetaEvent_CoreStart (*Ev_MetaEvent_FrameworkEvent)(nil), // 2: events.Ev_MetaEvent_FrameworkEvent (*Ev_EnvironmentEvent)(nil), // 3: events.Ev_EnvironmentEvent - (*Ev_TaskEvent)(nil), // 4: events.Ev_TaskEvent - (*Ev_RoleEvent)(nil), // 5: events.Ev_RoleEvent - (*Event)(nil), // 6: events.Event + (*Traits)(nil), // 4: events.Traits + (*Ev_TaskEvent)(nil), // 5: events.Ev_TaskEvent + (*Ev_CallEvent)(nil), // 6: events.Ev_CallEvent + (*Ev_RoleEvent)(nil), // 7: events.Ev_RoleEvent + (*Event)(nil), // 8: events.Event } var file_protos_events_proto_depIdxs = []int32{ - 3, // 0: events.Event.environmentEvent:type_name -> events.Ev_EnvironmentEvent - 4, // 1: events.Event.taskEvent:type_name -> events.Ev_TaskEvent - 5, // 2: events.Event.roleEvent:type_name -> events.Ev_RoleEvent - 2, // 3: events.Event.frameworkEvent:type_name -> events.Ev_MetaEvent_FrameworkEvent - 0, // 4: events.Event.mesosHeartbeatEvent:type_name -> events.Ev_MetaEvent_MesosHeartbeat - 1, // 5: events.Event.coreStartEvent:type_name -> events.Ev_MetaEvent_CoreStart - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 4, // 0: events.Ev_TaskEvent.traits:type_name -> events.Traits + 4, // 1: events.Ev_CallEvent.traits:type_name -> events.Traits + 3, // 2: events.Event.environmentEvent:type_name -> events.Ev_EnvironmentEvent + 5, // 3: events.Event.taskEvent:type_name -> events.Ev_TaskEvent + 7, // 4: events.Event.roleEvent:type_name -> events.Ev_RoleEvent + 6, // 5: events.Event.callEvent:type_name -> events.Ev_CallEvent + 2, // 6: events.Event.frameworkEvent:type_name -> events.Ev_MetaEvent_FrameworkEvent + 0, // 7: events.Event.mesosHeartbeatEvent:type_name -> events.Ev_MetaEvent_MesosHeartbeat + 1, // 8: events.Event.coreStartEvent:type_name -> events.Ev_MetaEvent_CoreStart + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_protos_events_proto_init() } @@ -759,7 +968,7 @@ func file_protos_events_proto_init() { } } file_protos_events_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_TaskEvent); i { + switch v := v.(*Traits); i { case 0: return &v.state case 1: @@ -771,7 +980,7 @@ func file_protos_events_proto_init() { } } file_protos_events_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ev_RoleEvent); i { + switch v := v.(*Ev_TaskEvent); i { case 0: return &v.state case 1: @@ -783,6 +992,30 @@ func file_protos_events_proto_init() { } } file_protos_events_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Ev_CallEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_events_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Ev_RoleEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_events_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Event); i { case 0: return &v.state @@ -795,10 +1028,11 @@ func file_protos_events_proto_init() { } } } - file_protos_events_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_protos_events_proto_msgTypes[8].OneofWrappers = []interface{}{ (*Event_EnvironmentEvent)(nil), (*Event_TaskEvent)(nil), (*Event_RoleEvent)(nil), + (*Event_CallEvent)(nil), (*Event_FrameworkEvent)(nil), (*Event_MesosHeartbeatEvent)(nil), (*Event_CoreStartEvent)(nil), @@ -809,7 +1043,7 @@ func file_protos_events_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protos_events_proto_rawDesc, NumEnums: 0, - NumMessages: 7, + NumMessages: 9, NumExtensions: 0, NumServices: 0, }, diff --git a/common/protos/events.proto b/common/protos/events.proto index 11bade7b2..99a99b720 100644 --- a/common/protos/events.proto +++ b/common/protos/events.proto @@ -87,12 +87,17 @@ message Ev_RoleEvent { message Event { int64 timestamp = 1; + reserved 2 to 10; + reserved 15 to 100; + oneof Payload { - Ev_EnvironmentEvent environmentEvent = 2; - Ev_TaskEvent taskEvent = 3; - Ev_RoleEvent roleEvent = 4; - Ev_MetaEvent_FrameworkEvent frameworkEvent = 5; - Ev_MetaEvent_MesosHeartbeat mesosHeartbeatEvent = 6; - Ev_MetaEvent_CoreStart coreStartEvent = 7; + Ev_EnvironmentEvent environmentEvent = 11; + Ev_TaskEvent taskEvent = 12; + Ev_RoleEvent roleEvent = 13; + Ev_CallEvent callEvent = 14; + + Ev_MetaEvent_FrameworkEvent frameworkEvent = 101; + Ev_MetaEvent_MesosHeartbeat mesosHeartbeatEvent = 102; + Ev_MetaEvent_CoreStart coreStartEvent = 103; } } diff --git a/core/protos/o2control.pb.go b/core/protos/o2control.pb.go index 3cf7cfa85..b7f7160f8 100644 --- a/core/protos/o2control.pb.go +++ b/core/protos/o2control.pb.go @@ -50,12 +50,15 @@ type Ev_MetaEvent_MesosHeartbeat = protos.Ev_MetaEvent_MesosHeartbeat type Ev_MetaEvent_CoreStart = protos.Ev_MetaEvent_CoreStart type Ev_MetaEvent_FrameworkEvent = protos.Ev_MetaEvent_FrameworkEvent type Ev_EnvironmentEvent = protos.Ev_EnvironmentEvent +type Traits = protos.Traits type Ev_TaskEvent = protos.Ev_TaskEvent +type Ev_CallEvent = protos.Ev_CallEvent type Ev_RoleEvent = protos.Ev_RoleEvent type Event = protos.Event type Event_EnvironmentEvent = protos.Event_EnvironmentEvent type Event_TaskEvent = protos.Event_TaskEvent type Event_RoleEvent = protos.Event_RoleEvent +type Event_CallEvent = protos.Event_CallEvent type Event_FrameworkEvent = protos.Event_FrameworkEvent type Event_MesosHeartbeatEvent = protos.Event_MesosHeartbeatEvent type Event_CoreStartEvent = protos.Event_CoreStartEvent From aa4ac3fae53cae4badc48727cc016fc55867681c Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 16 Feb 2023 16:46:01 +0100 Subject: [PATCH 13/43] [core] Emit call events to inform on plugin calls --- core/workflow/callable/call.go | 63 +++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/core/workflow/callable/call.go b/core/workflow/callable/call.go index d30a40479..daf8f0757 100644 --- a/core/workflow/callable/call.go +++ b/core/workflow/callable/call.go @@ -33,12 +33,15 @@ import ( "time" "github.com/AliceO2Group/Control/apricot" + "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/logger" "github.com/AliceO2Group/Control/common/logger/infologger" + evpb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/common/utils" "github.com/AliceO2Group/Control/configuration/template" "github.com/AliceO2Group/Control/core/integration" "github.com/AliceO2Group/Control/core/task" + "github.com/AliceO2Group/Control/core/the" "github.com/sirupsen/logrus" ) @@ -107,6 +110,19 @@ func (c *Call) Call() error { WithField("partition", c.parentRole.GetEnvironmentId().String()). WithField("level", infologger.IL_Devel). Debugf("calling hook function %s", c.Func) + + the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_CallEvent{ + Func: c.Func, + Status: "STARTED", + Return: c.Return, + Traits: &evpb.Traits{ + Trigger: c.Traits.Trigger, + Await: c.Traits.Await, + Timeout: c.Traits.Timeout, + Critical: c.Traits.Critical, + }, + }) + output := "{{" + c.Func + "}}" returnVar := c.Return fields := template.Fields{ @@ -130,8 +146,25 @@ func (c *Call) Call() error { objStack := integration.PluginsInstance().CallStack(c) + var errMsg string err = fields.Execute(apricot.Instance(), c.GetName(), c.VarStack, objStack, nil, make(map[string]texttemplate.Template), nil) if err != nil { + errMsg = err.Error() + + the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_CallEvent{ + Func: c.Func, + Status: "ERROR", + Return: c.Return, + Traits: &evpb.Traits{ + Trigger: c.Traits.Trigger, + Await: c.Traits.Await, + Timeout: c.Traits.Timeout, + Critical: c.Traits.Critical, + }, + Output: output, + Error: errMsg, + }) + return err } if len(returnVar) > 0 { @@ -139,13 +172,41 @@ func (c *Call) Call() error { } // if __call_error was written into the VarStack we treat it as an error exit from the call - if errMsg, ok := c.VarStack["__call_error"]; ok && len(errMsg) > 0 { + var ok bool + if errMsg, ok = c.VarStack["__call_error"]; ok && len(errMsg) > 0 { if errReason, ok := c.VarStack["__call_error_reason"]; ok && len(errReason) > 0 { errMsg += ". REASON: " + errReason } + the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_CallEvent{ + Func: c.Func, + Status: "ERROR", + Return: c.Return, + Traits: &evpb.Traits{ + Trigger: c.Traits.Trigger, + Await: c.Traits.Await, + Timeout: c.Traits.Timeout, + Critical: c.Traits.Critical, + }, + Output: output, + Error: errMsg, + }) + return errors.New(errMsg) } + the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_CallEvent{ + Func: c.Func, + Status: "DONE", + Return: c.Return, + Traits: &evpb.Traits{ + Trigger: c.Traits.Trigger, + Await: c.Traits.Await, + Timeout: c.Traits.Timeout, + Critical: c.Traits.Critical, + }, + Output: output, + }) + return nil } From 95c41fe7b3d4b418cb3c6d293b56d7802cd44fc3 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 29 Feb 2024 15:44:35 +0100 Subject: [PATCH 14/43] [core] Send EnvId with TaskEvents --- common/protos/events.pb.go | 124 ++++++++++++++++++++----------------- common/protos/events.proto | 1 + core/task/task.go | 22 +++++++ 3 files changed, 90 insertions(+), 57 deletions(-) diff --git a/common/protos/events.pb.go b/common/protos/events.pb.go index 5e5bc6798..954662a57 100644 --- a/common/protos/events.pb.go +++ b/common/protos/events.pb.go @@ -361,6 +361,7 @@ type Ev_TaskEvent struct { Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` ClassName string `protobuf:"bytes,6,opt,name=className,proto3" json:"className,omitempty"` Traits *Traits `protobuf:"bytes,7,opt,name=traits,proto3" json:"traits,omitempty"` + Envid string `protobuf:"bytes,8,opt,name=envid,proto3" json:"envid,omitempty"` } func (x *Ev_TaskEvent) Reset() { @@ -444,6 +445,13 @@ func (x *Ev_TaskEvent) GetTraits() *Traits { return nil } +func (x *Ev_TaskEvent) GetEnvid() string { + if x != nil { + return x.Envid + } + return "" +} + type Ev_CallEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -799,7 +807,7 @@ var file_protos_events_proto_rawDesc = []byte{ 0x61, 0x77, 0x61, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, 0xca, 0x01, 0x0a, 0x0c, + 0x08, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, 0xe0, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, @@ -812,64 +820,66 @@ var file_protos_events_proto_rawDesc = []byte{ 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, - 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, - 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, - 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x12, 0x16, 0x0a, + 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x76, 0x69, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x69, 0x64, 0x22, 0xa8, + 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, + 0x75, 0x6e, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, + 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x6c, 0x0a, 0x0c, 0x45, 0x76, 0x5f, + 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x26, 0x0a, - 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x22, 0x6c, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x22, 0x9b, 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, - 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x34, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, + 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, + 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0x9b, 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, + 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, - 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x63, 0x61, 0x6c, - 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, - 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, - 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, - 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, - 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, - 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x48, - 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x65, 0x42, - 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, - 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, - 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0e, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x65, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, + 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x13, 0x6d, + 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, + 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, + 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0e, + 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x0b, 0x4a, + 0x04, 0x08, 0x0f, 0x10, 0x65, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, + 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/common/protos/events.proto b/common/protos/events.proto index 99a99b720..6c5366dec 100644 --- a/common/protos/events.proto +++ b/common/protos/events.proto @@ -67,6 +67,7 @@ message Ev_TaskEvent { string hostname = 5; string className = 6; Traits traits = 7; + string envid = 8; } message Ev_CallEvent { diff --git a/core/task/task.go b/core/task/task.go index 7e328cf62..b58015632 100644 --- a/core/task/task.go +++ b/core/task/task.go @@ -41,8 +41,10 @@ import ( "github.com/AliceO2Group/Control/common" "github.com/AliceO2Group/Control/common/controlmode" "github.com/AliceO2Group/Control/common/event" + "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/gera" "github.com/AliceO2Group/Control/common/logger" + evpb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/common/utils" "github.com/AliceO2Group/Control/common/utils/uid" "github.com/AliceO2Group/Control/configuration/template" @@ -497,9 +499,29 @@ func (t *Task) SendEvent(ev event.Event) { t.mu.RLock() defer t.mu.RUnlock() + busEvent := &evpb.Ev_TaskEvent{ + Name: t.name, + Taskid: t.taskId, + State: t.state.String(), + Status: t.status.String(), + Hostname: t.hostname, + ClassName: t.className, + } + if t.parent == nil { + the.EventWriterWithTopic(topic.Task).WriteEvent(busEvent) return } + + busEvent.Envid = t.parent.GetEnvironmentId().String() + + taskEvent, ok := ev.(*event.TaskEvent) + if ok { + busEvent.State = taskEvent.State + busEvent.Status = taskEvent.Status + } + the.EventWriterWithTopic(topic.Task).WriteEvent(busEvent) + t.parent.SendEvent(ev) } From 225a5f9b7d18a6f40dc5a783295f5fbb0ba74c52 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 8 Mar 2024 14:18:48 +0100 Subject: [PATCH 15/43] [core] Rename busEvent in task.go --- core/task/task.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/task/task.go b/core/task/task.go index b58015632..1ef4b895a 100644 --- a/core/task/task.go +++ b/core/task/task.go @@ -499,7 +499,7 @@ func (t *Task) SendEvent(ev event.Event) { t.mu.RLock() defer t.mu.RUnlock() - busEvent := &evpb.Ev_TaskEvent{ + outgoingEvent := &evpb.Ev_TaskEvent{ Name: t.name, Taskid: t.taskId, State: t.state.String(), @@ -509,18 +509,18 @@ func (t *Task) SendEvent(ev event.Event) { } if t.parent == nil { - the.EventWriterWithTopic(topic.Task).WriteEvent(busEvent) + the.EventWriterWithTopic(topic.Task).WriteEvent(outgoingEvent) return } - busEvent.Envid = t.parent.GetEnvironmentId().String() + outgoingEvent.Envid = t.parent.GetEnvironmentId().String() taskEvent, ok := ev.(*event.TaskEvent) if ok { - busEvent.State = taskEvent.State - busEvent.Status = taskEvent.Status + outgoingEvent.State = taskEvent.State + outgoingEvent.Status = taskEvent.Status } - the.EventWriterWithTopic(topic.Task).WriteEvent(busEvent) + the.EventWriterWithTopic(topic.Task).WriteEvent(outgoingEvent) t.parent.SendEvent(ev) } From 48499fb50e25c809a57e0f53caa467043221e2a0 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 8 Mar 2024 16:00:38 +0100 Subject: [PATCH 16/43] [core] Add IntegratedServiceEvent and rename Envid field --- coconut/protos/o2control.pb.go | 2 + common/event/writer.go | 1 + common/protos/events.pb.go | 263 +++++++++++++++++++++++++-------- common/protos/events.proto | 14 +- core/protos/o2control.pb.go | 2 + core/task/task.go | 2 +- 6 files changed, 217 insertions(+), 67 deletions(-) diff --git a/coconut/protos/o2control.pb.go b/coconut/protos/o2control.pb.go index b7f7160f8..e96f95850 100644 --- a/coconut/protos/o2control.pb.go +++ b/coconut/protos/o2control.pb.go @@ -54,11 +54,13 @@ type Traits = protos.Traits type Ev_TaskEvent = protos.Ev_TaskEvent type Ev_CallEvent = protos.Ev_CallEvent type Ev_RoleEvent = protos.Ev_RoleEvent +type Ev_IntegratedServiceEvent = protos.Ev_IntegratedServiceEvent type Event = protos.Event type Event_EnvironmentEvent = protos.Event_EnvironmentEvent type Event_TaskEvent = protos.Event_TaskEvent type Event_RoleEvent = protos.Event_RoleEvent type Event_CallEvent = protos.Event_CallEvent +type Event_IntegratedServiceEvent = protos.Event_IntegratedServiceEvent type Event_FrameworkEvent = protos.Event_FrameworkEvent type Event_MesosHeartbeatEvent = protos.Event_MesosHeartbeatEvent type Event_CoreStartEvent = protos.Event_CoreStartEvent diff --git a/common/event/writer.go b/common/event/writer.go index a101a6d1f..df3ad0353 100644 --- a/common/event/writer.go +++ b/common/event/writer.go @@ -93,6 +93,7 @@ func (w *Writer) WriteEvent(e interface{}) { Timestamp: time.Now().UnixMilli(), Payload: &pb.Event_CallEvent{CallEvent: e}, }) + default: err = fmt.Errorf("unsupported event type") } diff --git a/common/protos/events.pb.go b/common/protos/events.pb.go index 954662a57..9ef4a9e84 100644 --- a/common/protos/events.pb.go +++ b/common/protos/events.pb.go @@ -354,14 +354,14 @@ type Ev_TaskEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Taskid string `protobuf:"bytes,2,opt,name=taskid,proto3" json:"taskid,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` - Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` - ClassName string `protobuf:"bytes,6,opt,name=className,proto3" json:"className,omitempty"` - Traits *Traits `protobuf:"bytes,7,opt,name=traits,proto3" json:"traits,omitempty"` - Envid string `protobuf:"bytes,8,opt,name=envid,proto3" json:"envid,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Taskid string `protobuf:"bytes,2,opt,name=taskid,proto3" json:"taskid,omitempty"` + State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` + Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` + Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` + ClassName string `protobuf:"bytes,6,opt,name=className,proto3" json:"className,omitempty"` + Traits *Traits `protobuf:"bytes,7,opt,name=traits,proto3" json:"traits,omitempty"` + EnvironmentId string `protobuf:"bytes,8,opt,name=environmentId,proto3" json:"environmentId,omitempty"` } func (x *Ev_TaskEvent) Reset() { @@ -445,9 +445,9 @@ func (x *Ev_TaskEvent) GetTraits() *Traits { return nil } -func (x *Ev_TaskEvent) GetEnvid() string { +func (x *Ev_TaskEvent) GetEnvironmentId() string { if x != nil { - return x.Envid + return x.EnvironmentId } return "" } @@ -544,10 +544,11 @@ type Ev_RoleEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - RolePath string `protobuf:"bytes,4,opt,name=rolePath,proto3" json:"rolePath,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` + RolePath string `protobuf:"bytes,4,opt,name=rolePath,proto3" json:"rolePath,omitempty"` + EnvironmentId string `protobuf:"bytes,5,opt,name=environmentId,proto3" json:"environmentId,omitempty"` } func (x *Ev_RoleEvent) Reset() { @@ -610,6 +611,92 @@ func (x *Ev_RoleEvent) GetRolePath() string { return "" } +func (x *Ev_RoleEvent) GetEnvironmentId() string { + if x != nil { + return x.EnvironmentId + } + return "" +} + +type Ev_IntegratedServiceEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` + Call string `protobuf:"bytes,3,opt,name=call,proto3" json:"call,omitempty"` + EnvironmentId string `protobuf:"bytes,4,opt,name=environmentId,proto3" json:"environmentId,omitempty"` + Payload string `protobuf:"bytes,6,opt,name=payload,proto3" json:"payload,omitempty"` +} + +func (x *Ev_IntegratedServiceEvent) Reset() { + *x = Ev_IntegratedServiceEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_protos_events_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Ev_IntegratedServiceEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Ev_IntegratedServiceEvent) ProtoMessage() {} + +func (x *Ev_IntegratedServiceEvent) ProtoReflect() protoreflect.Message { + mi := &file_protos_events_proto_msgTypes[8] + 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 Ev_IntegratedServiceEvent.ProtoReflect.Descriptor instead. +func (*Ev_IntegratedServiceEvent) Descriptor() ([]byte, []int) { + return file_protos_events_proto_rawDescGZIP(), []int{8} +} + +func (x *Ev_IntegratedServiceEvent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Ev_IntegratedServiceEvent) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +func (x *Ev_IntegratedServiceEvent) GetCall() string { + if x != nil { + return x.Call + } + return "" +} + +func (x *Ev_IntegratedServiceEvent) GetEnvironmentId() string { + if x != nil { + return x.EnvironmentId + } + return "" +} + +func (x *Ev_IntegratedServiceEvent) GetPayload() string { + if x != nil { + return x.Payload + } + return "" +} + type Event struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -622,6 +709,7 @@ type Event struct { // *Event_TaskEvent // *Event_RoleEvent // *Event_CallEvent + // *Event_IntegratedServiceEvent // *Event_FrameworkEvent // *Event_MesosHeartbeatEvent // *Event_CoreStartEvent @@ -631,7 +719,7 @@ type Event struct { func (x *Event) Reset() { *x = Event{} if protoimpl.UnsafeEnabled { - mi := &file_protos_events_proto_msgTypes[8] + mi := &file_protos_events_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -644,7 +732,7 @@ func (x *Event) String() string { func (*Event) ProtoMessage() {} func (x *Event) ProtoReflect() protoreflect.Message { - mi := &file_protos_events_proto_msgTypes[8] + mi := &file_protos_events_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -657,7 +745,7 @@ func (x *Event) ProtoReflect() protoreflect.Message { // Deprecated: Use Event.ProtoReflect.Descriptor instead. func (*Event) Descriptor() ([]byte, []int) { - return file_protos_events_proto_rawDescGZIP(), []int{8} + return file_protos_events_proto_rawDescGZIP(), []int{9} } func (x *Event) GetTimestamp() int64 { @@ -702,6 +790,13 @@ func (x *Event) GetCallEvent() *Ev_CallEvent { return nil } +func (x *Event) GetIntegratedServiceEvent() *Ev_IntegratedServiceEvent { + if x, ok := x.GetPayload().(*Event_IntegratedServiceEvent); ok { + return x.IntegratedServiceEvent + } + return nil +} + func (x *Event) GetFrameworkEvent() *Ev_MetaEvent_FrameworkEvent { if x, ok := x.GetPayload().(*Event_FrameworkEvent); ok { return x.FrameworkEvent @@ -743,6 +838,10 @@ type Event_CallEvent struct { CallEvent *Ev_CallEvent `protobuf:"bytes,14,opt,name=callEvent,proto3,oneof"` } +type Event_IntegratedServiceEvent struct { + IntegratedServiceEvent *Ev_IntegratedServiceEvent `protobuf:"bytes,15,opt,name=integratedServiceEvent,proto3,oneof"` +} + type Event_FrameworkEvent struct { FrameworkEvent *Ev_MetaEvent_FrameworkEvent `protobuf:"bytes,101,opt,name=frameworkEvent,proto3,oneof"` } @@ -763,6 +862,8 @@ func (*Event_RoleEvent) isEvent_Payload() {} func (*Event_CallEvent) isEvent_Payload() {} +func (*Event_IntegratedServiceEvent) isEvent_Payload() {} + func (*Event_FrameworkEvent) isEvent_Payload() {} func (*Event_MesosHeartbeatEvent) isEvent_Payload() {} @@ -807,7 +908,7 @@ var file_protos_events_proto_rawDesc = []byte{ 0x61, 0x77, 0x61, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, 0xe0, 0x01, 0x0a, 0x0c, + 0x08, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, 0xf0, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, @@ -820,8 +921,9 @@ var file_protos_events_proto_rawDesc = []byte{ 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, - 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x76, 0x69, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x69, 0x64, 0x22, 0xa8, + 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, @@ -832,31 +934,49 @@ var file_protos_events_proto_rawDesc = []byte{ 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x6c, 0x0a, 0x0c, 0x45, 0x76, 0x5f, - 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, - 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, - 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0x9b, 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, - 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, - 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, - 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0e, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x92, 0x01, 0x0a, 0x0c, 0x45, 0x76, + 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x99, + 0x01, 0x0a, 0x19, 0x45, 0x76, 0x5f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xf8, 0x04, 0x0a, 0x05, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, + 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, + 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, + 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, + 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x63, 0x61, 0x6c, + 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x5b, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, 0x65, @@ -873,7 +993,7 @@ var file_protos_events_proto_rawDesc = []byte{ 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x0b, 0x4a, - 0x04, 0x08, 0x0f, 0x10, 0x65, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, + 0x04, 0x08, 0x10, 0x10, 0x65, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, @@ -894,7 +1014,7 @@ func file_protos_events_proto_rawDescGZIP() []byte { return file_protos_events_proto_rawDescData } -var file_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_protos_events_proto_goTypes = []interface{}{ (*Ev_MetaEvent_MesosHeartbeat)(nil), // 0: events.Ev_MetaEvent_MesosHeartbeat (*Ev_MetaEvent_CoreStart)(nil), // 1: events.Ev_MetaEvent_CoreStart @@ -904,23 +1024,25 @@ var file_protos_events_proto_goTypes = []interface{}{ (*Ev_TaskEvent)(nil), // 5: events.Ev_TaskEvent (*Ev_CallEvent)(nil), // 6: events.Ev_CallEvent (*Ev_RoleEvent)(nil), // 7: events.Ev_RoleEvent - (*Event)(nil), // 8: events.Event + (*Ev_IntegratedServiceEvent)(nil), // 8: events.Ev_IntegratedServiceEvent + (*Event)(nil), // 9: events.Event } var file_protos_events_proto_depIdxs = []int32{ - 4, // 0: events.Ev_TaskEvent.traits:type_name -> events.Traits - 4, // 1: events.Ev_CallEvent.traits:type_name -> events.Traits - 3, // 2: events.Event.environmentEvent:type_name -> events.Ev_EnvironmentEvent - 5, // 3: events.Event.taskEvent:type_name -> events.Ev_TaskEvent - 7, // 4: events.Event.roleEvent:type_name -> events.Ev_RoleEvent - 6, // 5: events.Event.callEvent:type_name -> events.Ev_CallEvent - 2, // 6: events.Event.frameworkEvent:type_name -> events.Ev_MetaEvent_FrameworkEvent - 0, // 7: events.Event.mesosHeartbeatEvent:type_name -> events.Ev_MetaEvent_MesosHeartbeat - 1, // 8: events.Event.coreStartEvent:type_name -> events.Ev_MetaEvent_CoreStart - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 4, // 0: events.Ev_TaskEvent.traits:type_name -> events.Traits + 4, // 1: events.Ev_CallEvent.traits:type_name -> events.Traits + 3, // 2: events.Event.environmentEvent:type_name -> events.Ev_EnvironmentEvent + 5, // 3: events.Event.taskEvent:type_name -> events.Ev_TaskEvent + 7, // 4: events.Event.roleEvent:type_name -> events.Ev_RoleEvent + 6, // 5: events.Event.callEvent:type_name -> events.Ev_CallEvent + 8, // 6: events.Event.integratedServiceEvent:type_name -> events.Ev_IntegratedServiceEvent + 2, // 7: events.Event.frameworkEvent:type_name -> events.Ev_MetaEvent_FrameworkEvent + 0, // 8: events.Event.mesosHeartbeatEvent:type_name -> events.Ev_MetaEvent_MesosHeartbeat + 1, // 9: events.Event.coreStartEvent:type_name -> events.Ev_MetaEvent_CoreStart + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_protos_events_proto_init() } @@ -1026,6 +1148,18 @@ func file_protos_events_proto_init() { } } file_protos_events_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Ev_IntegratedServiceEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protos_events_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Event); i { case 0: return &v.state @@ -1038,11 +1172,12 @@ func file_protos_events_proto_init() { } } } - file_protos_events_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_protos_events_proto_msgTypes[9].OneofWrappers = []interface{}{ (*Event_EnvironmentEvent)(nil), (*Event_TaskEvent)(nil), (*Event_RoleEvent)(nil), (*Event_CallEvent)(nil), + (*Event_IntegratedServiceEvent)(nil), (*Event_FrameworkEvent)(nil), (*Event_MesosHeartbeatEvent)(nil), (*Event_CoreStartEvent)(nil), @@ -1053,7 +1188,7 @@ func file_protos_events_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protos_events_proto_rawDesc, NumEnums: 0, - NumMessages: 9, + NumMessages: 10, NumExtensions: 0, NumServices: 0, }, diff --git a/common/protos/events.proto b/common/protos/events.proto index 6c5366dec..5201fe8a8 100644 --- a/common/protos/events.proto +++ b/common/protos/events.proto @@ -67,7 +67,7 @@ message Ev_TaskEvent { string hostname = 5; string className = 6; Traits traits = 7; - string envid = 8; + string environmentId = 8; } message Ev_CallEvent { @@ -84,18 +84,28 @@ message Ev_RoleEvent { string status = 2; string state = 3; string rolePath = 4; + string environmentId = 5; +} + +message Ev_IntegratedServiceEvent { + string name = 1; + string error = 2; + string call = 3; + string environmentId = 4; + string payload = 6; } message Event { int64 timestamp = 1; reserved 2 to 10; - reserved 15 to 100; + reserved 16 to 100; oneof Payload { Ev_EnvironmentEvent environmentEvent = 11; Ev_TaskEvent taskEvent = 12; Ev_RoleEvent roleEvent = 13; Ev_CallEvent callEvent = 14; + Ev_IntegratedServiceEvent integratedServiceEvent = 15; Ev_MetaEvent_FrameworkEvent frameworkEvent = 101; Ev_MetaEvent_MesosHeartbeat mesosHeartbeatEvent = 102; diff --git a/core/protos/o2control.pb.go b/core/protos/o2control.pb.go index b7f7160f8..e96f95850 100644 --- a/core/protos/o2control.pb.go +++ b/core/protos/o2control.pb.go @@ -54,11 +54,13 @@ type Traits = protos.Traits type Ev_TaskEvent = protos.Ev_TaskEvent type Ev_CallEvent = protos.Ev_CallEvent type Ev_RoleEvent = protos.Ev_RoleEvent +type Ev_IntegratedServiceEvent = protos.Ev_IntegratedServiceEvent type Event = protos.Event type Event_EnvironmentEvent = protos.Event_EnvironmentEvent type Event_TaskEvent = protos.Event_TaskEvent type Event_RoleEvent = protos.Event_RoleEvent type Event_CallEvent = protos.Event_CallEvent +type Event_IntegratedServiceEvent = protos.Event_IntegratedServiceEvent type Event_FrameworkEvent = protos.Event_FrameworkEvent type Event_MesosHeartbeatEvent = protos.Event_MesosHeartbeatEvent type Event_CoreStartEvent = protos.Event_CoreStartEvent diff --git a/core/task/task.go b/core/task/task.go index 1ef4b895a..682ea56d9 100644 --- a/core/task/task.go +++ b/core/task/task.go @@ -513,7 +513,7 @@ func (t *Task) SendEvent(ev event.Event) { return } - outgoingEvent.Envid = t.parent.GetEnvironmentId().String() + outgoingEvent.EnvironmentId = t.parent.GetEnvironmentId().String() taskEvent, ok := ev.(*event.TaskEvent) if ok { From fe2dc90f151650799821085584dc10bce43204a3 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 13 Mar 2024 14:25:54 +0100 Subject: [PATCH 17/43] [core] Push env vars on workflow load --- common/protos/events.pb.go | 263 +++++++++++++++++++----------------- common/protos/events.proto | 1 + core/environment/manager.go | 2 + 3 files changed, 143 insertions(+), 123 deletions(-) diff --git a/common/protos/events.pb.go b/common/protos/events.pb.go index 9ef4a9e84..924d308d0 100644 --- a/common/protos/events.pb.go +++ b/common/protos/events.pb.go @@ -188,13 +188,14 @@ type Ev_EnvironmentEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EnvironmentId string `protobuf:"bytes,1,opt,name=environmentId,proto3" json:"environmentId,omitempty"` - State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` - CurrentRunNumber uint32 `protobuf:"varint,3,opt,name=currentRunNumber,proto3" json:"currentRunNumber,omitempty"` - Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` - Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` - Transition string `protobuf:"bytes,6,opt,name=transition,proto3" json:"transition,omitempty"` - TransitionStep string `protobuf:"bytes,7,opt,name=transitionStep,proto3" json:"transitionStep,omitempty"` + EnvironmentId string `protobuf:"bytes,1,opt,name=environmentId,proto3" json:"environmentId,omitempty"` + State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` + CurrentRunNumber uint32 `protobuf:"varint,3,opt,name=currentRunNumber,proto3" json:"currentRunNumber,omitempty"` + Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` + Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` + Transition string `protobuf:"bytes,6,opt,name=transition,proto3" json:"transition,omitempty"` + TransitionStep string `protobuf:"bytes,7,opt,name=transitionStep,proto3" json:"transitionStep,omitempty"` + Vars map[string]string `protobuf:"bytes,8,rep,name=vars,proto3" json:"vars,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Ev_EnvironmentEvent) Reset() { @@ -278,6 +279,13 @@ func (x *Ev_EnvironmentEvent) GetTransitionStep() string { return "" } +func (x *Ev_EnvironmentEvent) GetVars() map[string]string { + if x != nil { + return x.Vars + } + return nil +} + type Traits struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -886,7 +894,7 @@ var file_protos_events_proto_rawDesc = []byte{ 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x13, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x61, 0x67, 0x65, 0x22, 0xe9, 0x02, 0x0a, 0x13, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, @@ -901,105 +909,112 @@ var file_protos_events_proto_rawDesc = []byte{ 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x22, 0x6e, 0x0a, 0x06, 0x54, - 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, - 0x14, 0x0a, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x61, 0x77, 0x61, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, 0xf0, 0x01, 0x0a, 0x0c, - 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, - 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xa8, - 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, - 0x75, 0x6e, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, - 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x92, 0x01, 0x0a, 0x0c, 0x45, 0x76, - 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x99, - 0x01, 0x0a, 0x19, 0x45, 0x76, 0x5f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xf8, 0x04, 0x0a, 0x05, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, - 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, - 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, - 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x63, 0x61, 0x6c, - 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x5b, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0e, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x65, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, - 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, 0x65, - 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x72, 0x61, - 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x13, 0x6d, - 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, - 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, - 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x39, 0x0a, 0x04, 0x76, + 0x61, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x76, 0x61, 0x72, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x6e, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, + 0xf0, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, + 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, + 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, + 0x61, 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x92, 0x01, + 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x22, 0x99, 0x01, 0x0a, 0x19, 0x45, 0x76, 0x5f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x61, + 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x24, + 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xf8, + 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, + 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, + 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, + 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, + 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x4d, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x57, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0e, - 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, - 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x0b, 0x4a, - 0x04, 0x08, 0x10, 0x10, 0x65, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, - 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, + 0x74, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, + 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, + 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x65, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, + 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1014,7 +1029,7 @@ func file_protos_events_proto_rawDescGZIP() []byte { return file_protos_events_proto_rawDescData } -var file_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_protos_events_proto_goTypes = []interface{}{ (*Ev_MetaEvent_MesosHeartbeat)(nil), // 0: events.Ev_MetaEvent_MesosHeartbeat (*Ev_MetaEvent_CoreStart)(nil), // 1: events.Ev_MetaEvent_CoreStart @@ -1026,23 +1041,25 @@ var file_protos_events_proto_goTypes = []interface{}{ (*Ev_RoleEvent)(nil), // 7: events.Ev_RoleEvent (*Ev_IntegratedServiceEvent)(nil), // 8: events.Ev_IntegratedServiceEvent (*Event)(nil), // 9: events.Event + nil, // 10: events.Ev_EnvironmentEvent.VarsEntry } var file_protos_events_proto_depIdxs = []int32{ - 4, // 0: events.Ev_TaskEvent.traits:type_name -> events.Traits - 4, // 1: events.Ev_CallEvent.traits:type_name -> events.Traits - 3, // 2: events.Event.environmentEvent:type_name -> events.Ev_EnvironmentEvent - 5, // 3: events.Event.taskEvent:type_name -> events.Ev_TaskEvent - 7, // 4: events.Event.roleEvent:type_name -> events.Ev_RoleEvent - 6, // 5: events.Event.callEvent:type_name -> events.Ev_CallEvent - 8, // 6: events.Event.integratedServiceEvent:type_name -> events.Ev_IntegratedServiceEvent - 2, // 7: events.Event.frameworkEvent:type_name -> events.Ev_MetaEvent_FrameworkEvent - 0, // 8: events.Event.mesosHeartbeatEvent:type_name -> events.Ev_MetaEvent_MesosHeartbeat - 1, // 9: events.Event.coreStartEvent:type_name -> events.Ev_MetaEvent_CoreStart - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 10, // 0: events.Ev_EnvironmentEvent.vars:type_name -> events.Ev_EnvironmentEvent.VarsEntry + 4, // 1: events.Ev_TaskEvent.traits:type_name -> events.Traits + 4, // 2: events.Ev_CallEvent.traits:type_name -> events.Traits + 3, // 3: events.Event.environmentEvent:type_name -> events.Ev_EnvironmentEvent + 5, // 4: events.Event.taskEvent:type_name -> events.Ev_TaskEvent + 7, // 5: events.Event.roleEvent:type_name -> events.Ev_RoleEvent + 6, // 6: events.Event.callEvent:type_name -> events.Ev_CallEvent + 8, // 7: events.Event.integratedServiceEvent:type_name -> events.Ev_IntegratedServiceEvent + 2, // 8: events.Event.frameworkEvent:type_name -> events.Ev_MetaEvent_FrameworkEvent + 0, // 9: events.Event.mesosHeartbeatEvent:type_name -> events.Ev_MetaEvent_MesosHeartbeat + 1, // 10: events.Event.coreStartEvent:type_name -> events.Ev_MetaEvent_CoreStart + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_protos_events_proto_init() } @@ -1188,7 +1205,7 @@ func file_protos_events_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protos_events_proto_rawDesc, NumEnums: 0, - NumMessages: 10, + NumMessages: 11, NumExtensions: 0, NumServices: 0, }, diff --git a/common/protos/events.proto b/common/protos/events.proto index 5201fe8a8..773a468c8 100644 --- a/common/protos/events.proto +++ b/common/protos/events.proto @@ -50,6 +50,7 @@ message Ev_EnvironmentEvent { string message = 5; string transition = 6; string transitionStep = 7; + map vars = 8; } message Traits { diff --git a/core/environment/manager.go b/core/environment/manager.go index c47599874..9dbfeb92d 100644 --- a/core/environment/manager.go +++ b/core/environment/manager.go @@ -354,12 +354,14 @@ func (envs *Manager) CreateEnvironment(workflowPath string, userVars map[string] } } + cvs, _ := env.Workflow().ConsolidatedVarStack() the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_EnvironmentEvent{ EnvironmentId: newId.String(), State: env.CurrentState(), Transition: "CREATE", TransitionStep: "after_CREATE", Message: "workflow loaded", + Vars: cvs, // we push the full var stack of the root role in the workflow loaded event }) log.WithField("method", "CreateEnvironment"). From 7530576881f5e043b2bd348ccf0000fcc6cc6e67 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 14 Mar 2024 14:42:38 +0100 Subject: [PATCH 18/43] [common] Allow event creation with specific timestamp --- common/event/writer.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/common/event/writer.go b/common/event/writer.go index df3ad0353..72b2ad2d4 100644 --- a/common/event/writer.go +++ b/common/event/writer.go @@ -56,41 +56,45 @@ func NewWriterWithTopic(topic topic.Topic) *Writer { } func (w *Writer) WriteEvent(e interface{}) { + w.WriteEventWithTimestamp(e, time.Now()) +} + +func (w *Writer) WriteEventWithTimestamp(e interface{}, timestamp time.Time) { var err error switch e := e.(type) { case *pb.Ev_MetaEvent_CoreStart: err = w.doWriteEvent(&pb.Event{ - Timestamp: time.Now().UnixMilli(), + Timestamp: timestamp.UnixMilli(), Payload: &pb.Event_CoreStartEvent{CoreStartEvent: e}, }) case *pb.Ev_MetaEvent_MesosHeartbeat: err = w.doWriteEvent(&pb.Event{ - Timestamp: time.Now().UnixMilli(), + Timestamp: timestamp.UnixMilli(), Payload: &pb.Event_MesosHeartbeatEvent{MesosHeartbeatEvent: e}, }) case *pb.Ev_MetaEvent_FrameworkEvent: err = w.doWriteEvent(&pb.Event{ - Timestamp: time.Now().UnixMilli(), + Timestamp: timestamp.UnixMilli(), Payload: &pb.Event_FrameworkEvent{FrameworkEvent: e}, }) case *pb.Ev_TaskEvent: err = w.doWriteEvent(&pb.Event{ - Timestamp: time.Now().UnixMilli(), + Timestamp: timestamp.UnixMilli(), Payload: &pb.Event_TaskEvent{TaskEvent: e}, }) case *pb.Ev_RoleEvent: err = w.doWriteEvent(&pb.Event{ - Timestamp: time.Now().UnixMilli(), + Timestamp: timestamp.UnixMilli(), Payload: &pb.Event_RoleEvent{RoleEvent: e}, }) case *pb.Ev_EnvironmentEvent: err = w.doWriteEvent(&pb.Event{ - Timestamp: time.Now().UnixMilli(), + Timestamp: timestamp.UnixMilli(), Payload: &pb.Event_EnvironmentEvent{EnvironmentEvent: e}, }) case *pb.Ev_CallEvent: err = w.doWriteEvent(&pb.Event{ - Timestamp: time.Now().UnixMilli(), + Timestamp: timestamp.UnixMilli(), Payload: &pb.Event_CallEvent{CallEvent: e}, }) From 28c3e686fc1471896ae5e9bdfefb90c49c7ef04f Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 14 Mar 2024 14:44:05 +0100 Subject: [PATCH 19/43] [common] Various additions to events in events.proto --- coconut/protos/o2control.pb.go | 12 + common/protos/events.pb.go | 418 ++++++++++++++++++++++----------- common/protos/events.proto | 25 +- core/protos/o2control.pb.go | 12 + 4 files changed, 322 insertions(+), 145 deletions(-) diff --git a/coconut/protos/o2control.pb.go b/coconut/protos/o2control.pb.go index e96f95850..db47b3960 100644 --- a/coconut/protos/o2control.pb.go +++ b/coconut/protos/o2control.pb.go @@ -46,6 +46,18 @@ const ( // Symbols defined in public import of protos/events.proto. +type OpStatus = protos.OpStatus + +const OpStatus_NULL = protos.OpStatus_NULL +const OpStatus_STARTED = protos.OpStatus_STARTED +const OpStatus_ONGOING = protos.OpStatus_ONGOING +const OpStatus_DONE_OK = protos.OpStatus_DONE_OK +const OpStatus_DONE_ERROR = protos.OpStatus_DONE_ERROR +const OpStatus_DONE_TIMEOUT = protos.OpStatus_DONE_TIMEOUT + +var OpStatus_name = protos.OpStatus_name +var OpStatus_value = protos.OpStatus_value + type Ev_MetaEvent_MesosHeartbeat = protos.Ev_MetaEvent_MesosHeartbeat type Ev_MetaEvent_CoreStart = protos.Ev_MetaEvent_CoreStart type Ev_MetaEvent_FrameworkEvent = protos.Ev_MetaEvent_FrameworkEvent diff --git a/common/protos/events.pb.go b/common/protos/events.pb.go index 924d308d0..3845c4057 100644 --- a/common/protos/events.pb.go +++ b/common/protos/events.pb.go @@ -43,6 +43,64 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type OpStatus int32 + +const ( + OpStatus_NULL OpStatus = 0 + OpStatus_STARTED OpStatus = 1 + OpStatus_ONGOING OpStatus = 2 + OpStatus_DONE_OK OpStatus = 3 + OpStatus_DONE_ERROR OpStatus = 4 + OpStatus_DONE_TIMEOUT OpStatus = 5 +) + +// Enum value maps for OpStatus. +var ( + OpStatus_name = map[int32]string{ + 0: "NULL", + 1: "STARTED", + 2: "ONGOING", + 3: "DONE_OK", + 4: "DONE_ERROR", + 5: "DONE_TIMEOUT", + } + OpStatus_value = map[string]int32{ + "NULL": 0, + "STARTED": 1, + "ONGOING": 2, + "DONE_OK": 3, + "DONE_ERROR": 4, + "DONE_TIMEOUT": 5, + } +) + +func (x OpStatus) Enum() *OpStatus { + p := new(OpStatus) + *p = x + return p +} + +func (x OpStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpStatus) Descriptor() protoreflect.EnumDescriptor { + return file_protos_events_proto_enumTypes[0].Descriptor() +} + +func (OpStatus) Type() protoreflect.EnumType { + return &file_protos_events_proto_enumTypes[0] +} + +func (x OpStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpStatus.Descriptor instead. +func (OpStatus) EnumDescriptor() ([]byte, []int) { + return file_protos_events_proto_rawDescGZIP(), []int{0} +} + type Ev_MetaEvent_MesosHeartbeat struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -195,7 +253,8 @@ type Ev_EnvironmentEvent struct { Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` Transition string `protobuf:"bytes,6,opt,name=transition,proto3" json:"transition,omitempty"` TransitionStep string `protobuf:"bytes,7,opt,name=transitionStep,proto3" json:"transitionStep,omitempty"` - Vars map[string]string `protobuf:"bytes,8,rep,name=vars,proto3" json:"vars,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TransitionStatus OpStatus `protobuf:"varint,8,opt,name=transitionStatus,proto3,enum=events.OpStatus" json:"transitionStatus,omitempty"` + Vars map[string]string `protobuf:"bytes,9,rep,name=vars,proto3" json:"vars,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Ev_EnvironmentEvent) Reset() { @@ -279,6 +338,13 @@ func (x *Ev_EnvironmentEvent) GetTransitionStep() string { return "" } +func (x *Ev_EnvironmentEvent) GetTransitionStatus() OpStatus { + if x != nil { + return x.TransitionStatus + } + return OpStatus_NULL +} + func (x *Ev_EnvironmentEvent) GetVars() map[string]string { if x != nil { return x.Vars @@ -370,6 +436,7 @@ type Ev_TaskEvent struct { ClassName string `protobuf:"bytes,6,opt,name=className,proto3" json:"className,omitempty"` Traits *Traits `protobuf:"bytes,7,opt,name=traits,proto3" json:"traits,omitempty"` EnvironmentId string `protobuf:"bytes,8,opt,name=environmentId,proto3" json:"environmentId,omitempty"` + Path string `protobuf:"bytes,9,opt,name=path,proto3" json:"path,omitempty"` } func (x *Ev_TaskEvent) Reset() { @@ -460,17 +527,25 @@ func (x *Ev_TaskEvent) GetEnvironmentId() string { return "" } +func (x *Ev_TaskEvent) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + type Ev_CallEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Func string `protobuf:"bytes,1,opt,name=func,proto3" json:"func,omitempty"` - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - Return string `protobuf:"bytes,3,opt,name=return,proto3" json:"return,omitempty"` - Traits *Traits `protobuf:"bytes,4,opt,name=traits,proto3" json:"traits,omitempty"` - Output string `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"` - Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` + Func string `protobuf:"bytes,1,opt,name=func,proto3" json:"func,omitempty"` + CallStatus OpStatus `protobuf:"varint,2,opt,name=callStatus,proto3,enum=events.OpStatus" json:"callStatus,omitempty"` + Return string `protobuf:"bytes,3,opt,name=return,proto3" json:"return,omitempty"` + Traits *Traits `protobuf:"bytes,4,opt,name=traits,proto3" json:"traits,omitempty"` + Output string `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"` + Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` + Path string `protobuf:"bytes,7,opt,name=path,proto3" json:"path,omitempty"` } func (x *Ev_CallEvent) Reset() { @@ -512,11 +587,11 @@ func (x *Ev_CallEvent) GetFunc() string { return "" } -func (x *Ev_CallEvent) GetStatus() string { +func (x *Ev_CallEvent) GetCallStatus() OpStatus { if x != nil { - return x.Status + return x.CallStatus } - return "" + return OpStatus_NULL } func (x *Ev_CallEvent) GetReturn() string { @@ -547,6 +622,13 @@ func (x *Ev_CallEvent) GetError() string { return "" } +func (x *Ev_CallEvent) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + type Ev_RoleEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -631,11 +713,14 @@ type Ev_IntegratedServiceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` - Call string `protobuf:"bytes,3,opt,name=call,proto3" json:"call,omitempty"` - EnvironmentId string `protobuf:"bytes,4,opt,name=environmentId,proto3" json:"environmentId,omitempty"` - Payload string `protobuf:"bytes,6,opt,name=payload,proto3" json:"payload,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` + OperationName string `protobuf:"bytes,3,opt,name=operationName,proto3" json:"operationName,omitempty"` + OperationStatus OpStatus `protobuf:"varint,4,opt,name=operationStatus,proto3,enum=events.OpStatus" json:"operationStatus,omitempty"` + OperationStep string `protobuf:"bytes,5,opt,name=operationStep,proto3" json:"operationStep,omitempty"` + OperationStepStatus OpStatus `protobuf:"varint,6,opt,name=operationStepStatus,proto3,enum=events.OpStatus" json:"operationStepStatus,omitempty"` + EnvironmentId string `protobuf:"bytes,7,opt,name=environmentId,proto3" json:"environmentId,omitempty"` + Payload string `protobuf:"bytes,8,opt,name=payload,proto3" json:"payload,omitempty"` } func (x *Ev_IntegratedServiceEvent) Reset() { @@ -684,13 +769,34 @@ func (x *Ev_IntegratedServiceEvent) GetError() string { return "" } -func (x *Ev_IntegratedServiceEvent) GetCall() string { +func (x *Ev_IntegratedServiceEvent) GetOperationName() string { + if x != nil { + return x.OperationName + } + return "" +} + +func (x *Ev_IntegratedServiceEvent) GetOperationStatus() OpStatus { if x != nil { - return x.Call + return x.OperationStatus + } + return OpStatus_NULL +} + +func (x *Ev_IntegratedServiceEvent) GetOperationStep() string { + if x != nil { + return x.OperationStep } return "" } +func (x *Ev_IntegratedServiceEvent) GetOperationStepStatus() OpStatus { + if x != nil { + return x.OperationStepStatus + } + return OpStatus_NULL +} + func (x *Ev_IntegratedServiceEvent) GetEnvironmentId() string { if x != nil { return x.EnvironmentId @@ -894,7 +1000,7 @@ var file_protos_events_proto_rawDesc = []byte{ 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0xe9, 0x02, 0x0a, 0x13, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x61, 0x67, 0x65, 0x22, 0xa7, 0x03, 0x0a, 0x13, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, @@ -909,47 +1015,55 @@ var file_protos_events_proto_rawDesc = []byte{ 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x39, 0x0a, 0x04, 0x76, - 0x61, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x76, 0x61, 0x72, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x6e, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, - 0xf0, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, - 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, - 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, - 0x61, 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, - 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x92, 0x01, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x3c, 0x0a, 0x10, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, + 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x04, 0x76, 0x61, 0x72, + 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, + 0x76, 0x61, 0x72, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6e, 0x0a, + 0x06, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, 0x84, 0x02, + 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, + 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x22, 0xd6, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x61, 0x6c, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, + 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x92, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, @@ -959,62 +1073,79 @@ var file_protos_events_proto_rawDesc = []byte{ 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x22, 0x99, 0x01, 0x0a, 0x19, 0x45, 0x76, 0x5f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x49, 0x64, 0x22, 0xd1, 0x02, 0x0a, 0x19, 0x45, 0x76, 0x5f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x61, - 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x24, - 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xf8, - 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, - 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, - 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, - 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, - 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x4d, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x57, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, - 0x74, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, - 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, - 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, - 0x02, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x65, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, - 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x3a, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x65, 0x70, 0x12, 0x42, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x65, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xf8, 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, + 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, + 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, + 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x16, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, + 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, + 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x66, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, + 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, + 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x65, 0x73, + 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x43, + 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x65, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x10, 0x10, + 0x65, 0x2a, 0x5d, 0x0a, 0x08, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x08, 0x0a, + 0x04, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x41, 0x52, 0x54, + 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x4e, 0x47, 0x4f, 0x49, 0x4e, 0x47, 0x10, + 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x4f, 0x4b, 0x10, 0x03, 0x12, 0x0e, + 0x0a, 0x0a, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x10, + 0x0a, 0x0c, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x05, + 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, + 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1029,37 +1160,43 @@ func file_protos_events_proto_rawDescGZIP() []byte { return file_protos_events_proto_rawDescData } +var file_protos_events_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_protos_events_proto_goTypes = []interface{}{ - (*Ev_MetaEvent_MesosHeartbeat)(nil), // 0: events.Ev_MetaEvent_MesosHeartbeat - (*Ev_MetaEvent_CoreStart)(nil), // 1: events.Ev_MetaEvent_CoreStart - (*Ev_MetaEvent_FrameworkEvent)(nil), // 2: events.Ev_MetaEvent_FrameworkEvent - (*Ev_EnvironmentEvent)(nil), // 3: events.Ev_EnvironmentEvent - (*Traits)(nil), // 4: events.Traits - (*Ev_TaskEvent)(nil), // 5: events.Ev_TaskEvent - (*Ev_CallEvent)(nil), // 6: events.Ev_CallEvent - (*Ev_RoleEvent)(nil), // 7: events.Ev_RoleEvent - (*Ev_IntegratedServiceEvent)(nil), // 8: events.Ev_IntegratedServiceEvent - (*Event)(nil), // 9: events.Event - nil, // 10: events.Ev_EnvironmentEvent.VarsEntry + (OpStatus)(0), // 0: events.OpStatus + (*Ev_MetaEvent_MesosHeartbeat)(nil), // 1: events.Ev_MetaEvent_MesosHeartbeat + (*Ev_MetaEvent_CoreStart)(nil), // 2: events.Ev_MetaEvent_CoreStart + (*Ev_MetaEvent_FrameworkEvent)(nil), // 3: events.Ev_MetaEvent_FrameworkEvent + (*Ev_EnvironmentEvent)(nil), // 4: events.Ev_EnvironmentEvent + (*Traits)(nil), // 5: events.Traits + (*Ev_TaskEvent)(nil), // 6: events.Ev_TaskEvent + (*Ev_CallEvent)(nil), // 7: events.Ev_CallEvent + (*Ev_RoleEvent)(nil), // 8: events.Ev_RoleEvent + (*Ev_IntegratedServiceEvent)(nil), // 9: events.Ev_IntegratedServiceEvent + (*Event)(nil), // 10: events.Event + nil, // 11: events.Ev_EnvironmentEvent.VarsEntry } var file_protos_events_proto_depIdxs = []int32{ - 10, // 0: events.Ev_EnvironmentEvent.vars:type_name -> events.Ev_EnvironmentEvent.VarsEntry - 4, // 1: events.Ev_TaskEvent.traits:type_name -> events.Traits - 4, // 2: events.Ev_CallEvent.traits:type_name -> events.Traits - 3, // 3: events.Event.environmentEvent:type_name -> events.Ev_EnvironmentEvent - 5, // 4: events.Event.taskEvent:type_name -> events.Ev_TaskEvent - 7, // 5: events.Event.roleEvent:type_name -> events.Ev_RoleEvent - 6, // 6: events.Event.callEvent:type_name -> events.Ev_CallEvent - 8, // 7: events.Event.integratedServiceEvent:type_name -> events.Ev_IntegratedServiceEvent - 2, // 8: events.Event.frameworkEvent:type_name -> events.Ev_MetaEvent_FrameworkEvent - 0, // 9: events.Event.mesosHeartbeatEvent:type_name -> events.Ev_MetaEvent_MesosHeartbeat - 1, // 10: events.Event.coreStartEvent:type_name -> events.Ev_MetaEvent_CoreStart - 11, // [11:11] is the sub-list for method output_type - 11, // [11:11] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name + 0, // 0: events.Ev_EnvironmentEvent.transitionStatus:type_name -> events.OpStatus + 11, // 1: events.Ev_EnvironmentEvent.vars:type_name -> events.Ev_EnvironmentEvent.VarsEntry + 5, // 2: events.Ev_TaskEvent.traits:type_name -> events.Traits + 0, // 3: events.Ev_CallEvent.callStatus:type_name -> events.OpStatus + 5, // 4: events.Ev_CallEvent.traits:type_name -> events.Traits + 0, // 5: events.Ev_IntegratedServiceEvent.operationStatus:type_name -> events.OpStatus + 0, // 6: events.Ev_IntegratedServiceEvent.operationStepStatus:type_name -> events.OpStatus + 4, // 7: events.Event.environmentEvent:type_name -> events.Ev_EnvironmentEvent + 6, // 8: events.Event.taskEvent:type_name -> events.Ev_TaskEvent + 8, // 9: events.Event.roleEvent:type_name -> events.Ev_RoleEvent + 7, // 10: events.Event.callEvent:type_name -> events.Ev_CallEvent + 9, // 11: events.Event.integratedServiceEvent:type_name -> events.Ev_IntegratedServiceEvent + 3, // 12: events.Event.frameworkEvent:type_name -> events.Ev_MetaEvent_FrameworkEvent + 1, // 13: events.Event.mesosHeartbeatEvent:type_name -> events.Ev_MetaEvent_MesosHeartbeat + 2, // 14: events.Event.coreStartEvent:type_name -> events.Ev_MetaEvent_CoreStart + 15, // [15:15] is the sub-list for method output_type + 15, // [15:15] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name } func init() { file_protos_events_proto_init() } @@ -1204,13 +1341,14 @@ func file_protos_events_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protos_events_proto_rawDesc, - NumEnums: 0, + NumEnums: 1, NumMessages: 11, NumExtensions: 0, NumServices: 0, }, GoTypes: file_protos_events_proto_goTypes, DependencyIndexes: file_protos_events_proto_depIdxs, + EnumInfos: file_protos_events_proto_enumTypes, MessageInfos: file_protos_events_proto_msgTypes, }.Build() File_protos_events_proto = out.File diff --git a/common/protos/events.proto b/common/protos/events.proto index 773a468c8..edea2e072 100644 --- a/common/protos/events.proto +++ b/common/protos/events.proto @@ -30,6 +30,15 @@ option go_package = "github.com/AliceO2Group/Control/common/protos;pb"; //////////////// Common event messages /////////////// +enum OpStatus { + NULL = 0; + STARTED = 1; + ONGOING = 2; + DONE_OK = 3; + DONE_ERROR = 4; + DONE_TIMEOUT = 5; +} + message Ev_MetaEvent_MesosHeartbeat { } @@ -50,7 +59,8 @@ message Ev_EnvironmentEvent { string message = 5; string transition = 6; string transitionStep = 7; - map vars = 8; + OpStatus transitionStatus = 8; + map vars = 9; } message Traits { @@ -69,15 +79,17 @@ message Ev_TaskEvent { string className = 6; Traits traits = 7; string environmentId = 8; + string path = 9; } message Ev_CallEvent { string func = 1; - string status = 2; + OpStatus callStatus = 2; string return = 3; Traits traits = 4; string output = 5; string error = 6; + string path = 7; } message Ev_RoleEvent { @@ -91,9 +103,12 @@ message Ev_RoleEvent { message Ev_IntegratedServiceEvent { string name = 1; string error = 2; - string call = 3; - string environmentId = 4; - string payload = 6; + string operationName = 3; + OpStatus operationStatus = 4; + string operationStep = 5; + OpStatus operationStepStatus = 6; + string environmentId = 7; + string payload = 8; } message Event { diff --git a/core/protos/o2control.pb.go b/core/protos/o2control.pb.go index e96f95850..db47b3960 100644 --- a/core/protos/o2control.pb.go +++ b/core/protos/o2control.pb.go @@ -46,6 +46,18 @@ const ( // Symbols defined in public import of protos/events.proto. +type OpStatus = protos.OpStatus + +const OpStatus_NULL = protos.OpStatus_NULL +const OpStatus_STARTED = protos.OpStatus_STARTED +const OpStatus_ONGOING = protos.OpStatus_ONGOING +const OpStatus_DONE_OK = protos.OpStatus_DONE_OK +const OpStatus_DONE_ERROR = protos.OpStatus_DONE_ERROR +const OpStatus_DONE_TIMEOUT = protos.OpStatus_DONE_TIMEOUT + +var OpStatus_name = protos.OpStatus_name +var OpStatus_value = protos.OpStatus_value + type Ev_MetaEvent_MesosHeartbeat = protos.Ev_MetaEvent_MesosHeartbeat type Ev_MetaEvent_CoreStart = protos.Ev_MetaEvent_CoreStart type Ev_MetaEvent_FrameworkEvent = protos.Ev_MetaEvent_FrameworkEvent From 6b7c8fd95579a110153af2a865e4f2257f7ae47a Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 14 Mar 2024 14:49:31 +0100 Subject: [PATCH 20/43] [build] Bump dependencies --- configuration/template/fields.go | 4 +- go.mod | 83 ++++++------- go.sum | 204 +++++++++++++++---------------- 3 files changed, 145 insertions(+), 146 deletions(-) diff --git a/configuration/template/fields.go b/configuration/template/fields.go index b9e0ff9e5..5bda7967b 100644 --- a/configuration/template/fields.go +++ b/configuration/template/fields.go @@ -37,8 +37,8 @@ import ( "github.com/AliceO2Group/Control/common/logger" "github.com/AliceO2Group/Control/configuration/componentcfg" "github.com/AliceO2Group/Control/core/repos" - "github.com/antonmedv/expr" - "github.com/antonmedv/expr/vm" + "github.com/expr-lang/expr" + "github.com/expr-lang/expr/vm" "github.com/sirupsen/logrus" "github.com/valyala/fasttemplate" ) diff --git a/go.mod b/go.mod index d472b979c..983052f18 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/AliceO2Group/Control -go 1.18 +go 1.21 + +toolchain go1.21.4 // github.com/coreos/bbolt@v1.3.4: parsing go.mod: // module declares its path as: go.etcd.io/bbolt @@ -26,18 +28,17 @@ require ( github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/antonmedv/expr v1.15.5 github.com/briandowns/spinner v1.23.0 github.com/denisbrodbeck/machineid v1.0.1 github.com/dmarkham/enumer v1.5.8 github.com/fatih/color v1.16.0 - github.com/gdamore/tcell/v2 v2.6.0 + github.com/gdamore/tcell/v2 v2.7.4 github.com/go-git/go-git/v5 v5.11.0 github.com/gobwas/glob v0.2.3 - github.com/golang/protobuf v1.5.3 // indirect - github.com/google/uuid v1.4.0 + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/uuid v1.6.0 github.com/gorilla/mux v1.8.1 - github.com/hashicorp/consul/api v1.26.1 + github.com/hashicorp/consul/api v1.28.2 github.com/jinzhu/copier v0.4.0 github.com/k0kubun/pp v3.0.1+incompatible github.com/looplab/fsm v1.0.1 @@ -47,24 +48,24 @@ require ( github.com/olekukonko/tablewriter v0.0.5 github.com/osamingo/indigo v1.1.1 github.com/pborman/uuid v1.2.1 - github.com/prometheus/client_golang v1.17.0 + github.com/prometheus/client_golang v1.19.0 github.com/pseudomuto/protoc-gen-doc v1.5.1 - github.com/rivo/tview v0.0.0-20231126152417-33a1d271f2b6 + github.com/rivo/tview v0.0.0-20240307173318-e804876934a1 github.com/rs/xid v1.5.0 github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/segmentio/kafka-go v0.4.46 + github.com/segmentio/kafka-go v0.4.47 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.17.0 + github.com/spf13/viper v1.18.2 github.com/teo/logrus-prefixed-formatter v0.5.3-0.20230717095749-669d57324f0a github.com/valyala/fasttemplate v1.2.2 github.com/xeipuuv/gojsonschema v1.2.0 github.com/xlab/treeprint v1.2.0 - golang.org/x/crypto v0.17.0 - golang.org/x/net v0.19.0 - golang.org/x/sys v0.15.0 - google.golang.org/grpc v1.59.0 + golang.org/x/crypto v0.21.0 + golang.org/x/net v0.22.0 + golang.org/x/sys v0.18.0 + google.golang.org/grpc v1.62.1 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v3 v3.0.1 @@ -72,35 +73,36 @@ require ( require ( dario.cat/mergo v1.0.0 + github.com/expr-lang/expr v1.16.1 github.com/flosch/pongo2/v6 v6.0.0 github.com/hashicorp/go-multierror v1.1.1 github.com/iancoleman/strcase v0.3.0 github.com/onsi/ginkgo/v2 v2.11.0 github.com/onsi/gomega v1.27.10 github.com/swaggo/http-swagger/v2 v2.0.2 - github.com/swaggo/swag v1.16.2 + github.com/swaggo/swag v1.16.3 ) require ( github.com/KyleBanks/depth v1.2.1 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c // indirect + github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/armon/go-metrics v0.5.3 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/emirpasic/gods v1.18.1 // indirect - github.com/envoyproxy/protoc-gen-validate v1.0.2 // indirect + github.com/envoyproxy/protoc-gen-validate v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/gdamore/encoding v1.0.0 // indirect + github.com/gdamore/encoding v1.0.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-logr/logr v1.2.4 // indirect - github.com/go-openapi/jsonpointer v0.20.0 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/spec v0.20.9 // indirect - github.com/go-openapi/swag v0.22.4 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/spec v0.21.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect @@ -108,7 +110,7 @@ require ( github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-hclog v1.5.0 // indirect + github.com/hashicorp/go-hclog v1.6.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect @@ -122,7 +124,7 @@ require ( github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/klauspost/compress v1.17.3 // indirect + github.com/klauspost/compress v1.17.7 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -130,7 +132,6 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -139,19 +140,19 @@ require ( github.com/naoina/go-stringutil v0.1.0 // indirect github.com/osamingo/base58 v1.0.0 // indirect github.com/pascaldekloe/name v1.0.1 // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect - github.com/pierrec/lz4/v4 v4.1.18 // indirect + github.com/pelletier/go-toml/v2 v2.1.1 // indirect + github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.45.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.50.0 // indirect + github.com/prometheus/procfs v0.13.0 // indirect github.com/pseudomuto/protokit v0.2.1 // indirect - github.com/rivo/uniseg v0.4.4 // indirect - github.com/sagikazarmark/locafero v0.3.0 // indirect + github.com/rivo/uniseg v0.4.7 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sergi/go-diff v1.3.1 // indirect - github.com/skeema/knownhosts v1.2.1 // indirect + github.com/skeema/knownhosts v1.2.2 // indirect github.com/sony/sonyflake v1.2.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect @@ -164,14 +165,14 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/exp v0.0.0-20231127185646-65229373498e // indirect - golang.org/x/mod v0.14.0 // indirect - golang.org/x/term v0.15.0 // indirect + golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 // indirect + golang.org/x/mod v0.16.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.16.0 // indirect - google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect + golang.org/x/tools v0.19.0 // indirect + google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index f592c61c9..e54b2fd5f 100644 --- a/go.sum +++ b/go.sum @@ -17,19 +17,19 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= -github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c h1:kMFnB0vCcX7IL/m9Y5LO+KQYv+t1CQOiFe6+SV2J7bE= -github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= -github.com/antonmedv/expr v1.15.5 h1:y0Iz3cEwmpRz5/r3w4qQR0MfIqJGdGM1zbhD/v0G5Vg= -github.com/antonmedv/expr v1.15.5/go.mod h1:0E/6TxnOlRNp81GMzX9QfDPAmHo2Phg00y4JUv1ihsE= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -47,9 +47,9 @@ github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUK github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI= github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= @@ -57,15 +57,19 @@ github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxG github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denisbrodbeck/machineid v1.0.1 h1:geKr9qtkB876mXguW2X6TU4ZynleN6ezuMSRhl4D7AQ= github.com/denisbrodbeck/machineid v1.0.1/go.mod h1:dJUwb7PTidGDeYyUBmXZ2GphQBbjJCrnectwCyxcUSI= github.com/dmarkham/enumer v1.5.8 h1:fIF11F9l5jyD++YYvxcSH5WgHfeaSGPaN/T4kOQ4qEM= github.com/dmarkham/enumer v1.5.8/go.mod h1:d10o8R3t/gROm2p3BXqTkMt2+HMuxEmWCXzorAruYak= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= -github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= +github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/expr-lang/expr v1.16.1 h1:Na8CUcMdyGbnNpShY7kzcHCU7WqxuL+hnxgHZ4vaz/A= +github.com/expr-lang/expr v1.16.1/go.mod h1:uCkhfG+x7fcZ5A5sXHKuQ07jGZRl6J0FCAaf2k4PtVQ= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= @@ -74,18 +78,22 @@ github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4Nij github.com/flosch/pongo2/v6 v6.0.0 h1:lsGru8IAzHgIAw6H2m4PCyleO58I40ow6apih0WprMU= github.com/flosch/pongo2/v6 v6.0.0/go.mod h1:CuDpFm47R0uGGE7z13/tTlt1Y6zdxvr2RLT5LJhsHEU= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= -github.com/gdamore/tcell/v2 v2.6.0 h1:OKbluoP9VYmJwZwq/iLb4BxwKcwGthaa1YNBJIyCySg= -github.com/gdamore/tcell/v2 v2.6.0/go.mod h1:be9omFATkdr0D9qewWW3d+MEvl5dha+Etb5y65J2H8Y= +github.com/gdamore/encoding v1.0.1 h1:YzKZckdBL6jVt2Gc+5p82qhrGiqMdG/eNs6Wy0u3Uhw= +github.com/gdamore/encoding v1.0.1/go.mod h1:0Z0cMFinngz9kS1QfMjCP8TY7em3bZYeeklsSDPivEo= +github.com/gdamore/tcell/v2 v2.7.4 h1:sg6/UnTM9jGpZU+oFYAsDahfchWAFW8Xx2yFinNSAYU= +github.com/gdamore/tcell/v2 v2.7.4/go.mod h1:dSXtXTSK0VsW1biw65DZLZ2NKr7j0qP/0J7ONmsraWg= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -94,21 +102,14 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ= -github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8= -github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= -github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= +github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= @@ -123,35 +124,35 @@ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4er github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/hashicorp/consul/api v1.26.1 h1:5oSXOO5fboPZeW5SN+TdGFP/BILDgBm19OrPZ/pICIM= -github.com/hashicorp/consul/api v1.26.1/go.mod h1:B4sQTeaSO16NtynqrAdwOlahJ7IUDZM9cj2420xYL8A= -github.com/hashicorp/consul/sdk v0.15.0 h1:2qK9nDrr4tiJKRoxPGhm6B7xJjLVIQqkjiab2M4aKjU= +github.com/hashicorp/consul/api v1.28.2 h1:mXfkRHrpHN4YY3RqL09nXU1eHKLNiuAN4kHvDQ16k/8= +github.com/hashicorp/consul/api v1.28.2/go.mod h1:KyzqzgMEya+IZPcD65YFoOVAgPpbfERu4I/tzG6/ueE= +github.com/hashicorp/consul/sdk v0.16.0 h1:SE9m0W6DEfgIVCJX7xU+iv/hUl4m/nxqMTnCdMxDpJ8= +github.com/hashicorp/consul/sdk v0.16.0/go.mod h1:7pxqqhqoaPqnBnzXD1StKed62LqJeClzVsUEy85Zr0A= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= -github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-hclog v1.6.2 h1:NOtoftovWkDheyUM/8JW3QMiXyxJK3uHRK7wV04nD2I= +github.com/hashicorp/go-hclog v1.6.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -159,6 +160,7 @@ github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYS github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= +github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= @@ -168,11 +170,14 @@ github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5O github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= @@ -215,13 +220,13 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA= -github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -234,9 +239,6 @@ github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69 github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -256,12 +258,9 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/mesos/mesos-go v0.0.11 h1:jMp9+W3zLu46g8EuP2su2Sjj7ipBh4N/g65c0kzGl/8= github.com/mesos/mesos-go v0.0.11/go.mod h1:kPYCMQ9gsOXVAle1OsoY4I1+9kPu8GHkf88aV59fDr4= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= @@ -291,7 +290,6 @@ github.com/naoina/go-stringutil v0.1.0 h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hz github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= @@ -309,11 +307,11 @@ github.com/pascaldekloe/name v1.0.1 h1:9lnXOHeqeHHnWLbKfH6X98+4+ETVqFqxN09UXSjcM github.com/pascaldekloe/name v1.0.1/go.mod h1:Z//MfYJnH4jVpQ9wkclwu2I2MkHmXTlT9wR5UZScttM= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.1.1 h1:LWAJwfNvjQZCFIDKWYQaM62NcYeYViCmWIwmOStowAI= +github.com/pelletier/go-toml/v2 v2.1.1/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= -github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -322,6 +320,7 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7 h1:xoIK0ctDddBMnc74udxJYBqlo9Ylnsp1waqjLsnef20= @@ -329,47 +328,48 @@ github.com/pquerna/ffjson v0.0.0-20190930134022-aa0246cd15f7/go.mod h1:YARuvh7BU github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= -github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= -github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/common v0.50.0 h1:YSZE6aa9+luNa2da6/Tik0q0A5AbR+U003TItK57CPQ= +github.com/prometheus/common v0.50.0/go.mod h1:wHFBCEVWVmHMUpg7pYcOm2QUR/ocQdYSJVQJKnHc3xQ= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= +github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= github.com/pseudomuto/protoc-gen-doc v1.5.1 h1:Ah259kcrio7Ix1Rhb6u8FCaOkzf9qRBqXnvAufg061w= github.com/pseudomuto/protoc-gen-doc v1.5.1/go.mod h1:XpMKYg6zkcpgfpCfQ8GcWBDRtRxOmMR5w7pz4Xo+dYM= github.com/pseudomuto/protokit v0.2.1 h1:kCYpE3thoR6Esm0CUvd5xbrDTOZPvQPTDeyXpZfrJdk= github.com/pseudomuto/protokit v0.2.1/go.mod h1:gt7N5Rz2flBzYafvaxyIxMZC0TTF5jDZfRnw25hAAyo= -github.com/rivo/tview v0.0.0-20231126152417-33a1d271f2b6 h1:7UMY2qN9VlcY+x9jlhpYe5Bf1zrdhvmfZyLMk2u65BM= -github.com/rivo/tview v0.0.0-20231126152417-33a1d271f2b6/go.mod h1:nVwGv4MP47T0jvlk7KuTTjjuSmrGO4JF0iaiNt4bufE= +github.com/rivo/tview v0.0.0-20240307173318-e804876934a1 h1:bWLHTRekAy497pE7+nXSuzXwwFHI0XauRzz6roUvY+s= +github.com/rivo/tview v0.0.0-20240307173318-e804876934a1/go.mod h1:02iFIz7K/A9jGCvrizLPvoqr4cEIx7q54RH5Qudkrss= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= -github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/segmentio/kafka-go v0.4.46 h1:Sx8/kvtY+/G8nM0roTNnFezSJj3bT2sW0Xy/YY3CgBI= -github.com/segmentio/kafka-go v0.4.46/go.mod h1:HjF6XbOKh0Pjlkr5GVZxt6CsjjwnmhVOfURM5KMd8qg= +github.com/segmentio/kafka-go v0.4.47 h1:IqziR4pA3vrZq7YdRxaT3w1/5fvIH5qpCwstUanQQB0= +github.com/segmentio/kafka-go v0.4.47/go.mod h1:HjF6XbOKh0Pjlkr5GVZxt6CsjjwnmhVOfURM5KMd8qg= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= @@ -378,8 +378,8 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= -github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= +github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/sony/sonyflake v1.2.0 h1:Pfr3A+ejSg+0SPqpoAmQgEtNDAhc2G1SUYk205qVMLQ= github.com/sony/sonyflake v1.2.0/go.mod h1:LORtCywH/cq10ZbyfhKrHYgAUGH7mOBa76enV9txy/Y= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= @@ -392,8 +392,8 @@ github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= -github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= +github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= +github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -407,17 +407,17 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/swaggo/files/v2 v2.0.0 h1:hmAt8Dkynw7Ssz46F6pn8ok6YmGZqHSVLZ+HQM7i0kw= github.com/swaggo/files/v2 v2.0.0/go.mod h1:24kk2Y9NYEJ5lHuCra6iVwkMjIekMCaFq/0JQj66kyM= github.com/swaggo/http-swagger/v2 v2.0.2 h1:FKCdLsl+sFCx60KFsyM0rDarwiUSZ8DqbfSyIKC9OBg= github.com/swaggo/http-swagger/v2 v2.0.2/go.mod h1:r7/GBkAWIfK6E/OLnE8fXnviHiDeAHmgIyooa4xm3AQ= -github.com/swaggo/swag v1.16.2 h1:28Pp+8DkQoV+HLzLx8RGJZXNGKbFqnuvSbAAtoxiY04= -github.com/swaggo/swag v1.16.2/go.mod h1:6YzXnDcpr0767iOejs318CwYkCQqyGer6BizOg03f+E= +github.com/swaggo/swag v1.16.3 h1:PnCYjPCah8FK4I26l2F/KQ4yz3sILcVUN3cTlBFA9Pg= +github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI/gRk= github.com/teo/logrus-prefixed-formatter v0.5.3-0.20230717095749-669d57324f0a h1:iFCCEcdQHtGCeBv3zQOq67yIoVSubAMoPKnDUSfEw9M= github.com/teo/logrus-prefixed-formatter v0.5.3-0.20230717095749-669d57324f0a/go.mod h1:76q+dZ4qOCuYrqwoUUjVCuAXF1TXB4jc98eaZFo6Yh0= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -459,16 +459,16 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/exp v0.0.0-20231127185646-65229373498e h1:Gvh4YaCaXNs6dKTlfgismwWZKyjVZXwOPfIyUaqU3No= -golang.org/x/exp v0.0.0-20231127185646-65229373498e/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 h1:6R2FC06FonbXQ8pK11/PDFY6N6LWlf9KlzibaCapmqc= +golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= +golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -485,8 +485,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -495,7 +495,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -530,8 +531,9 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -539,8 +541,9 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -562,31 +565,27 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM= -golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= +golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg= -google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= @@ -601,7 +600,6 @@ gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= From 92d513f8b08517b9e18fec6c9c251a9c07adb9c9 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 14 Mar 2024 15:58:09 +0100 Subject: [PATCH 21/43] [core] Include parent role path in task events --- core/task/task.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/task/task.go b/core/task/task.go index 682ea56d9..fe06b7b48 100644 --- a/core/task/task.go +++ b/core/task/task.go @@ -158,6 +158,9 @@ func (t *Task) GetParentRole() interface{} { func (t *Task) GetParentRolePath() string { t.mu.RLock() defer t.mu.RUnlock() + if t.parent == nil { + return "" + } return t.parent.GetPath() } @@ -506,6 +509,7 @@ func (t *Task) SendEvent(ev event.Event) { Status: t.status.String(), Hostname: t.hostname, ClassName: t.className, + Path: t.GetParentRolePath(), } if t.parent == nil { From e82a40e49d198376e6be99b5d070a7a87fc7a267 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 14 Mar 2024 15:59:08 +0100 Subject: [PATCH 22/43] [core] Improve call information in CallEvents --- core/workflow/callable/call.go | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/core/workflow/callable/call.go b/core/workflow/callable/call.go index daf8f0757..900f690bb 100644 --- a/core/workflow/callable/call.go +++ b/core/workflow/callable/call.go @@ -112,9 +112,10 @@ func (c *Call) Call() error { Debugf("calling hook function %s", c.Func) the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_CallEvent{ - Func: c.Func, - Status: "STARTED", - Return: c.Return, + Path: c.GetParentRolePath(), + Func: c.Func, + CallStatus: evpb.OpStatus_STARTED, + Return: c.Return, Traits: &evpb.Traits{ Trigger: c.Traits.Trigger, Await: c.Traits.Await, @@ -152,9 +153,10 @@ func (c *Call) Call() error { errMsg = err.Error() the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_CallEvent{ - Func: c.Func, - Status: "ERROR", - Return: c.Return, + Path: c.GetParentRolePath(), + Func: c.Func, + CallStatus: evpb.OpStatus_DONE_ERROR, + Return: c.Return, Traits: &evpb.Traits{ Trigger: c.Traits.Trigger, Await: c.Traits.Await, @@ -178,9 +180,10 @@ func (c *Call) Call() error { errMsg += ". REASON: " + errReason } the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_CallEvent{ - Func: c.Func, - Status: "ERROR", - Return: c.Return, + Path: c.GetParentRolePath(), + Func: c.Func, + CallStatus: evpb.OpStatus_DONE_ERROR, + Return: c.Return, Traits: &evpb.Traits{ Trigger: c.Traits.Trigger, Await: c.Traits.Await, @@ -195,9 +198,10 @@ func (c *Call) Call() error { } the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_CallEvent{ - Func: c.Func, - Status: "DONE", - Return: c.Return, + Path: c.GetParentRolePath(), + Func: c.Func, + CallStatus: evpb.OpStatus_DONE_OK, + Return: c.Return, Traits: &evpb.Traits{ Trigger: c.Traits.Trigger, Await: c.Traits.Await, From dc190db770a15ab7ee28b8d31150581dd67b1b10 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 14 Mar 2024 16:00:53 +0100 Subject: [PATCH 23/43] [core] Emit IntegratedServiceEvents from DCS --- core/integration/dcs/plugin.go | 642 +++++++++++++++++++++++++++++++- core/integration/dcs/structs.go | 8 + 2 files changed, 638 insertions(+), 12 deletions(-) diff --git a/core/integration/dcs/plugin.go b/core/integration/dcs/plugin.go index a3ab4a8ee..74c630107 100644 --- a/core/integration/dcs/plugin.go +++ b/core/integration/dcs/plugin.go @@ -39,14 +39,19 @@ import ( "time" "dario.cat/mergo" + "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/logger/infologger" + pb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/common/runtype" "github.com/AliceO2Group/Control/common/utils/uid" "github.com/AliceO2Group/Control/core/environment" "github.com/AliceO2Group/Control/core/integration" dcspb "github.com/AliceO2Group/Control/core/integration/dcs/protos" + "github.com/AliceO2Group/Control/core/the" "github.com/AliceO2Group/Control/core/workflow/callable" + "github.com/jinzhu/copier" "github.com/spf13/viper" + "golang.org/x/exp/maps" "google.golang.org/grpc" "google.golang.org/grpc/connectivity" ) @@ -55,6 +60,7 @@ const ( DCS_DIAL_TIMEOUT = 2 * time.Hour DCS_GENERAL_OP_TIMEOUT = 45 * time.Second DCS_TIME_FORMAT = "2006-01-02 15:04:05.000" + TOPIC = topic.IntegratedService + topic.Separator + "dcs" ) type Plugin struct { @@ -224,11 +230,23 @@ func (p *Plugin) updateDetectorOpAvailabilities(detectorMatrix []*dcspb.Detector p.detectorMapMu.Lock() defer p.detectorMapMu.Unlock() + pfrAvailabilityChangedDetectors := map[dcspb.Detector]struct{}{} + sorAvailabilityChangedDetectors := map[dcspb.Detector]struct{}{} + for _, detInfo := range detectorMatrix { dcsDet := detInfo.GetDetector() if _, ok := p.detectorMap[dcsDet]; !ok { + pfrAvailabilityChangedDetectors[dcsDet] = struct{}{} + sorAvailabilityChangedDetectors[dcsDet] = struct{}{} + p.detectorMap[dcsDet] = detInfo } else { + if p.detectorMap[dcsDet].PfrAvailability != detInfo.PfrAvailability { + pfrAvailabilityChangedDetectors[dcsDet] = struct{}{} + } + if p.detectorMap[dcsDet].SorAvailability != detInfo.SorAvailability { + sorAvailabilityChangedDetectors[dcsDet] = struct{}{} + } p.detectorMap[dcsDet].PfrAvailability = detInfo.PfrAvailability p.detectorMap[dcsDet].SorAvailability = detInfo.SorAvailability timestamp, err := time.Parse(DCS_TIME_FORMAT, detInfo.Timestamp) @@ -237,6 +255,21 @@ func (p *Plugin) updateDetectorOpAvailabilities(detectorMatrix []*dcspb.Detector } } } + + // build payload for event + payload := map[string]interface{}{ + "detectors": p.detectorMap.ToEcsDetectors(), + "changed": map[string]interface{}{ + "pfrAvailability": DCSDetectors(maps.Keys(pfrAvailabilityChangedDetectors)).EcsDetectorsSlice(), + "sorAvailability": DCSDetectors(maps.Keys(sorAvailabilityChangedDetectors)).EcsDetectorsSlice(), + }, + } + + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: "dcs.updateDetectorOpAvailabilities", + Payload: string(payloadJson[:]), + }) } func (p *Plugin) Init(instanceId string) error { @@ -423,6 +456,21 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Info("DCS PFR grace period not set, defaulting to 0 seconds") } + payload := map[string]interface{}{ + "detectors": dcsDetectors.ToStringSlice(), + } + payloadJson, _ := json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "acquire detectors availability", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + pfrGraceTimeout := time.Now().Add(pfrGracePeriod) isCompatibleWithOperation := false @@ -460,6 +508,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "acquire detectors availability", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } else if isCompatibleWithOperation && err != nil { log.WithField("level", infologger.IL_Ops). @@ -468,6 +527,19 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Warnf("cannot determine PFR readiness: %s", err.Error()) } + payload["detectorsReadiness"] = knownDetectorStates.ToStringMap() + payloadJson, _ = json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "acquire detectors availability", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + // By now the DCS must be in a compatible state, so we proceed with gathering params for the operation log.WithField("partition", envId). @@ -623,6 +695,16 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { detectorStatusMap[v] = dcspb.DetectorState_NULL_STATE } + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + // Point of no return // The gRPC call below is expected to return immediately, with any actual responses arriving subsequently via // the response stream. @@ -640,6 +722,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } @@ -647,12 +740,37 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { for { if ctx.Err() != nil { err = fmt.Errorf("DCS PrepareForRun context timed out (%s), any future DCS events are ignored", timeout.String()) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break } dcsEvent, err = stream.Recv() if errors.Is(err, io.EOF) { // correct stream termination + logMsg := "DCS PFR event stream was closed from the DCS side (EOF)" log.WithField("partition", envId). - Debug("DCS PFR event stream was closed from the DCS side (EOF)") + Debug(logMsg) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logMsg, + }) + break // no more data } if errors.Is(err, context.DeadlineExceeded) { @@ -661,12 +779,37 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("timeout", timeout.String()). Debug("DCS PFR timed out") err = fmt.Errorf("DCS PFR timed out after %s: %w", timeout.String(), err) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break } if err != nil { // stream termination in case of general error + logMsg := "bad DCS PFR event received, any future DCS events are ignored" log.WithError(err). WithField("partition", envId). - Warn("bad DCS PFR event received, any future DCS events are ignored") + Warn(logMsg) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logMsg, + }) + break } if dcsEvent == nil { @@ -694,6 +837,20 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = logErr.Error() call.VarStack["__call_error"] = callFailedStr + payload["detector"] = ecsDet + payload["dcsEvent"] = dcsEvent + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logErr.Error(), + }) + return } @@ -716,6 +873,20 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = logErr.Error() call.VarStack["__call_error"] = callFailedStr + payload["detector"] = ecsDet + payload["dcsEvent"] = dcsEvent + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logErr.Error(), + }) + return } @@ -738,6 +909,20 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = logErr.Error() call.VarStack["__call_error"] = callFailedStr + payload["detector"] = ecsDet + payload["dcsEvent"] = dcsEvent + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_TIMEOUT, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logErr.Error(), + }) + return } @@ -749,12 +934,45 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("partition", envId). WithField("level", infologger.IL_Support). Debug("DCS PFR completed successfully") + + detPayload := map[string]interface{}{} + _ = copier.Copy(&detPayload, payload) + detPayload["dcsEvent"] = dcsEvent + detPayloadJson, _ := json.Marshal(detPayload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_ONGOING, + EnvironmentId: envId, + Payload: string(detPayloadJson[:]), + }) + break } else { ecsDet := dcsToEcsDetector(dcsEvent.GetDetector()) log.WithField("partition", envId). WithField("detector", ecsDet). Debugf("DCS PFR for %s: received status %s", ecsDet, dcsEvent.GetState().String()) + + detPayload := map[string]interface{}{} + _ = copier.Copy(&detPayload, payload) + detPayload["detector"] = ecsDet + detPayload["dcsEvent"] = dcsEvent + detPayloadJson, _ := json.Marshal(detPayload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_ONGOING, + EnvironmentId: envId, + Payload: string(detPayloadJson[:]), + }) + } } if dcsEvent.GetState() == dcspb.DetectorState_RUN_OK { @@ -779,7 +997,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { dcsFailedEcsDetectors = append(dcsFailedEcsDetectors, dcsToEcsDetector(v)) } } - if !dcsopOk { + if dcsopOk { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + } else { logErr := fmt.Errorf("PFR failed for %s", strings.Join(dcsFailedEcsDetectors, ", ")) if err != nil { if errors.Is(err, io.EOF) { @@ -797,6 +1025,19 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = logErr.Error() call.VarStack["__call_error"] = callFailedStr + + payload["failedDetectors"] = dcsFailedEcsDetectors + payloadJson, _ = json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) } return @@ -859,6 +1100,22 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Info("DCS SOR grace period not set, defaulting to 0 seconds") } + payload := map[string]interface{}{ + "detectors": dcsDetectors.ToStringSlice(), + "runNumber": runNumber64, + } + payloadJson, _ := json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "acquire detectors availability", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + sorGraceTimeout := time.Now().Add(sorGracePeriod) isCompatibleWithOperation := false @@ -896,6 +1153,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "acquire detectors availability", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } else if isCompatibleWithOperation && err != nil { log.WithField("level", infologger.IL_Ops). @@ -904,6 +1172,19 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Warnf("cannot determine SOR readiness: %s", err.Error()) } + payload["detectorsReadiness"] = knownDetectorStates.ToStringMap() + payloadJson, _ = json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "acquire detectors availability", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + // By now the DCS must be in a compatible state, so we proceed with gathering params for the operation log.WithField("partition", envId). @@ -1066,6 +1347,16 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { detectorStatusMap[v] = dcspb.DetectorState_NULL_STATE } + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + // Point of no return // The gRPC call below is expected to return immediately, with any actual responses arriving subsequently via // the response stream. @@ -1084,6 +1375,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } p.pendingEORs[envId] = runNumber64 // make sure the corresponding EOR runs sooner or later @@ -1092,13 +1394,38 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { for { if ctx.Err() != nil { err = fmt.Errorf("DCS StartOfRun context timed out (%s), any future DCS events are ignored", timeout.String()) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break } dcsEvent, err = stream.Recv() if errors.Is(err, io.EOF) { // correct stream termination + logMsg := "DCS SOR event stream was closed from the DCS side (EOF)" log.WithField("partition", envId). WithField("run", runNumber64). - Debug("DCS SOR event stream was closed from the DCS side (EOF)") + Debug(logMsg) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logMsg, + }) + break // no more data } if errors.Is(err, context.DeadlineExceeded) { @@ -1108,13 +1435,38 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("timeout", timeout.String()). Debug("DCS SOR timed out") err = fmt.Errorf("DCS SOR timed out after %s: %w", timeout.String(), err) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break } if err != nil { // stream termination in case of general error + logMsg := "bad DCS SOR event received, any future DCS events are ignored" log.WithError(err). WithField("partition", envId). WithField("run", runNumber64). - Warn("bad DCS SOR event received, any future DCS events are ignored") + Warn(logMsg) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logMsg, + }) + break } if dcsEvent == nil { @@ -1144,6 +1496,20 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = logErr.Error() call.VarStack["__call_error"] = callFailedStr + payload["detector"] = ecsDet + payload["dcsEvent"] = dcsEvent + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logErr.Error(), + }) + return } @@ -1167,6 +1533,20 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = logErr.Error() call.VarStack["__call_error"] = callFailedStr + payload["detector"] = ecsDet + payload["dcsEvent"] = dcsEvent + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logErr.Error(), + }) + return } @@ -1190,6 +1570,20 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = logErr.Error() call.VarStack["__call_error"] = callFailedStr + payload["detector"] = ecsDet + payload["dcsEvent"] = dcsEvent + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_TIMEOUT, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logErr.Error(), + }) + return } @@ -1203,6 +1597,22 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("level", infologger.IL_Support). Debug("DCS SOR completed successfully") p.pendingEORs[envId] = runNumber64 + + detPayload := map[string]interface{}{} + _ = copier.Copy(&detPayload, payload) + detPayload["dcsEvent"] = dcsEvent + detPayloadJson, _ := json.Marshal(detPayload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_ONGOING, + EnvironmentId: envId, + Payload: string(detPayloadJson[:]), + }) + break } else { ecsDet := dcsToEcsDetector(dcsEvent.GetDetector()) @@ -1210,6 +1620,23 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("run", runNumber64). WithField("detector", ecsDet). Debugf("DCS SOR for %s: received status %s", ecsDet, dcsEvent.GetState().String()) + + detPayload := map[string]interface{}{} + _ = copier.Copy(&detPayload, payload) + detPayload["detector"] = ecsDet + detPayload["dcsEvent"] = dcsEvent + detPayloadJson, _ := json.Marshal(detPayload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_ONGOING, + EnvironmentId: envId, + Payload: string(detPayloadJson[:]), + }) + } } if dcsEvent.GetState() == dcspb.DetectorState_RUN_OK { @@ -1239,6 +1666,16 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } if dcsopOk { p.pendingEORs[envId] = runNumber64 + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) } else { logErr := fmt.Errorf("SOR failed for %s, DCS EOR will run anyway for this run", strings.Join(dcsFailedEcsDetectors, ", ")) if err != nil { @@ -1258,6 +1695,19 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = logErr.Error() call.VarStack["__call_error"] = callFailedStr + + payload["failedDetectors"] = dcsFailedEcsDetectors + payloadJson, _ = json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) } return } @@ -1413,6 +1863,22 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() + payload := map[string]interface{}{ + "detectors": dcsDetectors.ToStringSlice(), + "runNumber": runNumber64, + } + payloadJson, _ := json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + // Point of no return // The gRPC call below is expected to return immediately, with any actual responses arriving subsequently via // the response stream. @@ -1431,6 +1897,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } delete(p.pendingEORs, envId) // make sure this EOR never runs again @@ -1451,13 +1928,38 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { for { if ctx.Err() != nil { err = fmt.Errorf("DCS EndOfRun context timed out (%s), any future DCS events are ignored", timeout.String()) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break } dcsEvent, err = stream.Recv() if errors.Is(err, io.EOF) { // correct stream termination + logMsg := "DCS EOR event stream was closed from the DCS side (EOF)" log.WithField("partition", envId). WithField("run", runNumber64). - Debug("DCS EOR event stream was closed from the DCS side (EOF)") + Debug(logMsg) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logMsg, + }) + break // no more data } if errors.Is(err, context.DeadlineExceeded) { @@ -1467,13 +1969,38 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("timeout", timeout.String()). Debug("DCS EOR timed out") err = fmt.Errorf("DCS EOR timed out after %s: %w", timeout.String(), err) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break } if err != nil { // stream termination in case of general error + logMsg := "bad DCS EOR event received, any future DCS events are ignored" log.WithError(err). WithField("partition", envId). WithField("run", runNumber64). - Warn("bad DCS EOR event received, any future DCS events are ignored") + Warn(logMsg) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logMsg, + }) + break } if dcsEvent == nil { @@ -1506,6 +2033,20 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = logErr.Error() call.VarStack["__call_error"] = callFailedStr + payload["detector"] = ecsDet + payload["dcsEvent"] = dcsEvent + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logErr.Error(), + }) + return } @@ -1529,6 +2070,20 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = logErr.Error() call.VarStack["__call_error"] = callFailedStr + payload["detector"] = ecsDet + payload["dcsEvent"] = dcsEvent + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_TIMEOUT, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: logErr.Error(), + }) + return } @@ -1542,6 +2097,22 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("level", infologger.IL_Support). Debug("DCS EOR completed successfully") delete(p.pendingEORs, envId) + + detPayload := map[string]interface{}{} + _ = copier.Copy(&detPayload, payload) + detPayload["dcsEvent"] = dcsEvent + detPayloadJson, _ := json.Marshal(detPayload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_ONGOING, + EnvironmentId: envId, + Payload: string(detPayloadJson[:]), + }) + break } else { ecsDet := dcsToEcsDetector(dcsEvent.GetDetector()) @@ -1549,14 +2120,38 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("run", runNumber64). WithField("detector", dcsEvent.GetDetector().String()). Debugf("DCS EOR for %s: received status %s", ecsDet, dcsEvent.GetState().String()) + + detPayload := map[string]interface{}{} + _ = copier.Copy(&detPayload, payload) + detPayload["detector"] = ecsDet + detPayload["dcsEvent"] = dcsEvent + detPayloadJson, _ := json.Marshal(detPayload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_ONGOING, + EnvironmentId: envId, + Payload: string(detPayloadJson[:]), + }) } } - log.WithField("event", dcsEvent). - WithField("partition", envId). - WithField("level", infologger.IL_Devel). - WithField("run", runNumber64). - Info("ALIECS EOR operation : processing DCS EOR for ") + if dcsEvent.GetState() == dcspb.DetectorState_RUN_OK { + log.WithField("event", dcsEvent). + WithField("partition", envId). + WithField("level", infologger.IL_Support). + WithField("run", runNumber64). + Info("ALIECS EOR operation : completed DCS EOR for ") + } else { + log.WithField("event", dcsEvent). + WithField("partition", envId). + WithField("level", infologger.IL_Devel). + WithField("run", runNumber64). + Info("ALIECS EOR operation : processing DCS EOR for ") + } } dcsFailedEcsDetectors := make([]string, 0) @@ -1569,6 +2164,16 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } if dcsopOk { delete(p.pendingEORs, envId) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) } else { logErr := fmt.Errorf("EOR failed for %s, DCS EOR will NOT run again for this run", strings.Join(dcsFailedEcsDetectors, ", ")) if err != nil { @@ -1585,6 +2190,19 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = logErr.Error() call.VarStack["__call_error"] = callFailedStr + + payload["failedDetectors"] = dcsFailedEcsDetectors + payloadJson, _ = json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DCS call", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) } return } diff --git a/core/integration/dcs/structs.go b/core/integration/dcs/structs.go index 849c7b480..474ef4f60 100644 --- a/core/integration/dcs/structs.go +++ b/core/integration/dcs/structs.go @@ -74,6 +74,14 @@ func (d DCSDetectors) EcsDetectorsSlice() (sslice []string) { return } +func (dsm DCSDetectorOpAvailabilityMap) ToStringMap() (sm map[string]string) { + sm = make(map[string]string) + for det, detState := range dsm { + sm[det.String()] = detState.String() + } + return +} + func (dsm DCSDetectorOpAvailabilityMap) makeDetectorsByStateMap() map[dcspb.DetectorState]DCSDetectors { detectorsByState := make(map[dcspb.DetectorState]DCSDetectors) for det, detState := range dsm { From 8c57a45cfdf7e912fe8d8f48519aab7d4643c311 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 14 Mar 2024 16:37:53 +0100 Subject: [PATCH 24/43] [core] Make sure we always output ECS detector codes, not DCS ones --- core/integration/dcs/plugin.go | 10 +++++----- core/integration/dcs/structs.go | 8 ++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/core/integration/dcs/plugin.go b/core/integration/dcs/plugin.go index 74c630107..aa19c0795 100644 --- a/core/integration/dcs/plugin.go +++ b/core/integration/dcs/plugin.go @@ -457,7 +457,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } payload := map[string]interface{}{ - "detectors": dcsDetectors.ToStringSlice(), + "detectors": dcsDetectors.EcsDetectorsSlice(), } payloadJson, _ := json.Marshal(payload) @@ -527,7 +527,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Warnf("cannot determine PFR readiness: %s", err.Error()) } - payload["detectorsReadiness"] = knownDetectorStates.ToStringMap() + payload["detectorsReadiness"] = knownDetectorStates.EcsDetectorsMap() payloadJson, _ = json.Marshal(payload) the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ @@ -1101,7 +1101,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } payload := map[string]interface{}{ - "detectors": dcsDetectors.ToStringSlice(), + "detectors": dcsDetectors.EcsDetectorsSlice(), "runNumber": runNumber64, } payloadJson, _ := json.Marshal(payload) @@ -1172,7 +1172,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Warnf("cannot determine SOR readiness: %s", err.Error()) } - payload["detectorsReadiness"] = knownDetectorStates.ToStringMap() + payload["detectorsReadiness"] = knownDetectorStates.EcsDetectorsMap() payloadJson, _ = json.Marshal(payload) the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ @@ -1864,7 +1864,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { defer cancel() payload := map[string]interface{}{ - "detectors": dcsDetectors.ToStringSlice(), + "detectors": dcsDetectors.EcsDetectorsSlice(), "runNumber": runNumber64, } payloadJson, _ := json.Marshal(payload) diff --git a/core/integration/dcs/structs.go b/core/integration/dcs/structs.go index 474ef4f60..5a98d68a3 100644 --- a/core/integration/dcs/structs.go +++ b/core/integration/dcs/structs.go @@ -82,6 +82,14 @@ func (dsm DCSDetectorOpAvailabilityMap) ToStringMap() (sm map[string]string) { return } +func (dsm DCSDetectorOpAvailabilityMap) EcsDetectorsMap() (sm map[string]string) { + sm = make(map[string]string) + for det, detState := range dsm { + sm[dcsToEcsDetector(det)] = detState.String() + } + return +} + func (dsm DCSDetectorOpAvailabilityMap) makeDetectorsByStateMap() map[dcspb.DetectorState]DCSDetectors { detectorsByState := make(map[dcspb.DetectorState]DCSDetectors) for det, detState := range dsm { From 274e73f002381fdc2c0815889a1f15514c6a32d2 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 14 Mar 2024 17:02:28 +0100 Subject: [PATCH 25/43] [core] Don't forget to include error in DCS ERROR events --- core/integration/dcs/plugin.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/integration/dcs/plugin.go b/core/integration/dcs/plugin.go index aa19c0795..fc9f964a9 100644 --- a/core/integration/dcs/plugin.go +++ b/core/integration/dcs/plugin.go @@ -1037,6 +1037,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), + Error: logErr.Error(), }) } return @@ -1707,6 +1708,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), + Error: logErr.Error(), }) } return @@ -2202,6 +2204,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), + Error: logErr.Error(), }) } return From b3e3461f29c2279ca60acb2128d58330210dddec Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 15 Mar 2024 16:24:42 +0100 Subject: [PATCH 26/43] [core] Better DCS event descriptions --- core/integration/dcs/plugin.go | 76 +++++++++++++++++----------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/core/integration/dcs/plugin.go b/core/integration/dcs/plugin.go index fc9f964a9..4dd0a92d1 100644 --- a/core/integration/dcs/plugin.go +++ b/core/integration/dcs/plugin.go @@ -699,7 +699,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_STARTED, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -726,7 +726,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -745,7 +745,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -764,7 +764,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -784,7 +784,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -803,7 +803,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -844,7 +844,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -880,7 +880,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -916,7 +916,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_TIMEOUT, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -944,7 +944,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_ONGOING, EnvironmentId: envId, Payload: string(detPayloadJson[:]), @@ -967,7 +967,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_ONGOING, EnvironmentId: envId, Payload: string(detPayloadJson[:]), @@ -1002,7 +1002,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_DONE_OK, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1033,7 +1033,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: PrepareForRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1352,7 +1352,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_STARTED, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1380,7 +1380,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1400,7 +1400,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1420,7 +1420,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1441,7 +1441,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1461,7 +1461,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1504,7 +1504,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1541,7 +1541,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1578,7 +1578,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_TIMEOUT, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1608,7 +1608,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_ONGOING, EnvironmentId: envId, Payload: string(detPayloadJson[:]), @@ -1632,7 +1632,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_ONGOING, EnvironmentId: envId, Payload: string(detPayloadJson[:]), @@ -1672,7 +1672,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_DONE_OK, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1704,7 +1704,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: StartOfRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1875,7 +1875,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_STARTED, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1903,7 +1903,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1935,7 +1935,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1955,7 +1955,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1976,7 +1976,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -1996,7 +1996,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -2042,7 +2042,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -2079,7 +2079,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_TIMEOUT, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -2109,7 +2109,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_ONGOING, EnvironmentId: envId, Payload: string(detPayloadJson[:]), @@ -2133,7 +2133,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_ONGOING, EnvironmentId: envId, Payload: string(detPayloadJson[:]), @@ -2171,7 +2171,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_DONE_OK, EnvironmentId: envId, Payload: string(payloadJson[:]), @@ -2200,7 +2200,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, - OperationStep: "perform DCS call", + OperationStep: "perform DCS call: EndOfRun", OperationStepStatus: pb.OpStatus_DONE_ERROR, EnvironmentId: envId, Payload: string(payloadJson[:]), From 27eec7197cb1f3b16f8dee19f86d27e5e09bd0d5 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 15 Mar 2024 16:25:06 +0100 Subject: [PATCH 27/43] [core] Emit ddscheduler events --- core/integration/ddsched/plugin.go | 404 ++++++++++++++++++++++++++++- 1 file changed, 401 insertions(+), 3 deletions(-) diff --git a/core/integration/ddsched/plugin.go b/core/integration/ddsched/plugin.go index 2510172f4..ed170e1fb 100644 --- a/core/integration/ddsched/plugin.go +++ b/core/integration/ddsched/plugin.go @@ -36,11 +36,14 @@ import ( "strings" "time" + "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/logger/infologger" + pb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/common/utils/uid" "github.com/AliceO2Group/Control/core/environment" "github.com/AliceO2Group/Control/core/integration" ddpb "github.com/AliceO2Group/Control/core/integration/ddsched/protos" + "github.com/AliceO2Group/Control/core/the" "github.com/AliceO2Group/Control/core/workflow" "github.com/AliceO2Group/Control/core/workflow/callable" "github.com/spf13/viper" @@ -53,6 +56,7 @@ const ( DDSCHED_INITIALIZE_TIMEOUT = 30 * time.Second DDSCHED_TERMINATE_TIMEOUT = 30 * time.Second DDSCHED_DEFAULT_POLLING_TIMEOUT = 30 * time.Second + TOPIC = topic.IntegratedService + topic.Separator + "ddsched" ) type Plugin struct { @@ -325,6 +329,21 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { timeout := callable.AcquireTimeout(DDSCHED_INITIALIZE_TIMEOUT, varStack, "Initialize", envId) ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() + + payload := map[string]interface{}{ + "ddschedRequest": &in, + } + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform DD scheduler call: PartitionInitialize", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + response, err = p.ddSchedClient.PartitionInitialize(ctx, &in, grpc.EmptyCallOption{}) if err != nil { log.WithError(err). @@ -337,6 +356,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DD scheduler call: PartitionInitialize", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } if response.PartitionState != ddpb.PartitionState_PARTITION_CONFIGURING && @@ -353,9 +383,48 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["ddschedResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DD scheduler call: PartitionInitialize", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } + payload["ddschedResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DD scheduler call: PartitionInitialize", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + + payload = map[string]interface{}{ + "lastKnownState": response.PartitionState.String(), + } + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + PARTITION_STATE_POLLING: for ctx.Err() == nil { response, err = p.ddSchedClient.PartitionStatus(ctx, in.PartitionInfo, grpc.EmptyCallOption{}) @@ -373,10 +442,34 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { continue } - switch response.PartitionState { + switch lastKnownState := response.PartitionState; lastKnownState { case ddpb.PartitionState_PARTITION_CONFIGURING: + payload["lastKnownState"] = lastKnownState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_ONGOING, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + time.Sleep(100 * time.Millisecond) case ddpb.PartitionState_PARTITION_CONFIGURED: + payload["lastKnownState"] = lastKnownState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + break PARTITION_STATE_POLLING default: err = fmt.Errorf("PartitionInitialize landed on unexpected state %s (expected: PARTITION_CONFIGURED)", response.PartitionState.String()) @@ -391,6 +484,19 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["lastKnownState"] = lastKnownState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break PARTITION_STATE_POLLING } @@ -408,6 +514,19 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["lastKnownState"] = response.PartitionState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_TIMEOUT, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break } } @@ -463,6 +582,21 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { timeout := callable.AcquireTimeout(DDSCHED_TERMINATE_TIMEOUT, varStack, "Terminate", envId) ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() + + payload := map[string]interface{}{ + "ddschedRequest": &in, + } + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform DD scheduler call: PartitionTerminate", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + response, err = p.ddSchedClient.PartitionTerminate(ctx, &in, grpc.EmptyCallOption{}) if err != nil { log.WithError(err). @@ -475,6 +609,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DD scheduler call: PartitionTerminate", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } @@ -492,9 +637,48 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["ddschedResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DD scheduler call: PartitionTerminate", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } + payload["ddschedResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DD scheduler call: PartitionTerminate", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + + payload = map[string]interface{}{ + "lastKnownState": response.PartitionState.String(), + } + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + PARTITION_STATE_POLLING: for ctx.Err() == nil { response, err = p.ddSchedClient.PartitionStatus(ctx, in.PartitionInfo, grpc.EmptyCallOption{}) @@ -512,10 +696,34 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { continue } - switch response.PartitionState { + switch lastKnownState := response.PartitionState; lastKnownState { case ddpb.PartitionState_PARTITION_TERMINATING: + payload["lastKnownState"] = lastKnownState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_ONGOING, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + time.Sleep(100 * time.Millisecond) case ddpb.PartitionState_PARTITION_TERMINATED: + payload["lastKnownState"] = lastKnownState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + break PARTITION_STATE_POLLING default: err = fmt.Errorf("PartitionTerminate landed on unexpected state %s (expected: PARTITION_TERMINATED)", response.PartitionState.String()) @@ -530,6 +738,19 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["lastKnownState"] = lastKnownState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break PARTITION_STATE_POLLING } if ctx.Err() != nil { @@ -546,6 +767,19 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["lastKnownState"] = response.PartitionState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_TIMEOUT, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break } } @@ -600,6 +834,16 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { timeout := callable.AcquireTimeout(DDSCHED_TERMINATE_TIMEOUT, varStack, "Terminate", envId) ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "check DD partition status", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + }) + response, err = p.ddSchedClient.PartitionStatus(ctx, &infoReq, grpc.EmptyCallOption{}) if err != nil { log.WithError(err). @@ -612,6 +856,16 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "check DD partition status", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Error: err.Error(), + }) + return } @@ -628,6 +882,16 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "check DD partition status", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Error: err.Error(), + }) + return } @@ -643,9 +907,29 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("partition", envId). WithField("partition_state", response.PartitionState). Trace("DD scheduler session cleanup not needed") + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "check DD partition status", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + }) + return } + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "check DD partition status", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Error: "partition still exists, cleanup needed", + }) + // No guarantee that the DDsched partition is in an obedient state or able // to perform control commands, but if it's CONFIGURED we should be able // call PartitionTerminate @@ -662,6 +946,20 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("level", infologger.IL_Support). Warn("DD scheduler partition still active, performing PartitionTerminate") + payload := map[string]interface{}{ + "ddschedRequest": &in, + } + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DD scheduler call: PartitionTerminate", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + response, err = p.ddSchedClient.PartitionTerminate(ctx, &in, grpc.EmptyCallOption{}) if err != nil { log.WithError(err). @@ -674,6 +972,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DD scheduler call: PartitionTerminate", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } if response.PartitionState != ddpb.PartitionState_PARTITION_TERMINATING && @@ -690,9 +999,48 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["ddschedResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform DD scheduler call: PartitionTerminate", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } + payload["ddschedResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform DD scheduler call: PartitionTerminate", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + + payload = map[string]interface{}{ + "lastKnownState": response.PartitionState.String(), + } + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + PARTITION_STATE_POLLING: for ctx.Err() == nil { response, err = p.ddSchedClient.PartitionStatus(ctx, in.PartitionInfo, grpc.EmptyCallOption{}) @@ -710,10 +1058,34 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { continue } - switch response.PartitionState { + switch lastKnownState := response.PartitionState; lastKnownState { case ddpb.PartitionState_PARTITION_TERMINATING: + payload["lastKnownState"] = lastKnownState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_ONGOING, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + time.Sleep(100 * time.Millisecond) case ddpb.PartitionState_PARTITION_TERMINATED: + payload["lastKnownState"] = lastKnownState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + break PARTITION_STATE_POLLING default: err = fmt.Errorf("PartitionTerminate landed on unexpected state %s (expected: PARTITION_TERMINATED)", response.PartitionState.String()) @@ -728,6 +1100,19 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["lastKnownState"] = lastKnownState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break PARTITION_STATE_POLLING } if ctx.Err() != nil { @@ -744,6 +1129,19 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["lastKnownState"] = response.PartitionState.String() + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_TIMEOUT, + OperationStep: "poll for DD partition state", + OperationStepStatus: pb.OpStatus_DONE_TIMEOUT, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + break } } From 68b2c46b712927a8564a95b72a71ba88ac907744 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 15 Mar 2024 16:26:48 +0100 Subject: [PATCH 28/43] [core] Remove legacy ODC handlers --- core/integration/odc/handlers.go | 150 ------------------------------- core/integration/odc/plugin.go | 125 +------------------------- 2 files changed, 3 insertions(+), 272 deletions(-) diff --git a/core/integration/odc/handlers.go b/core/integration/odc/handlers.go index 980a5ea00..199889f33 100644 --- a/core/integration/odc/handlers.go +++ b/core/integration/odc/handlers.go @@ -278,29 +278,6 @@ func handleReset(ctx context.Context, odcClient *RpcClient, arguments map[string return nil } -func handleResetLegacy(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string) error { - defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("odcclient").WithField("partition", envId)) - if envId == "" { - return errors.New("cannot proceed with empty environment id") - } - - err := doReset(ctx, odcClient, arguments, paddingTimeout, envId) - if err != nil { - return printGrpcError(err) - } - - err = doTerminate(ctx, odcClient, arguments, paddingTimeout, envId) - if err != nil { - return printGrpcError(err) - } - - err = doShutdown(ctx, odcClient, arguments, paddingTimeout, envId) - if err != nil { - return printGrpcError(err) - } - return nil -} - func handleCleanupLegacy(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string) error { defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("odcclient").WithField("partition", envId)) if envId == "" { @@ -771,133 +748,6 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st return err } -func handleConfigureLegacy(ctx context.Context, odcClient *RpcClient, arguments map[string]string, isManualXml bool, topology string, script string, plugin string, resources string, paddingTimeout time.Duration, envId string) error { - defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("odcclient")) - if envId == "" { - return errors.New("cannot proceed with empty environment id") - } - - var err error = nil - - // SetProperties before CONFIGURE - setPropertiesRequest := &odcpb.SetPropertiesRequest{ - Partitionid: envId, - Path: "", - Properties: make([]*odcpb.Property, len(arguments)), - } - // We ask this ODC call to complete within our own DEADLINE, minus 1 second - ctxDeadline, ok := ctx.Deadline() - if ok { - setPropertiesRequest.Timeout = uint32((time.Until(ctxDeadline) - paddingTimeout).Seconds()) - } - - // Extract relevant parameters from Arguments payload - // and build payload for SetProperty+Configure - i := 0 - for k, v := range arguments { - setPropertiesRequest.Properties[i] = &odcpb.Property{ - Key: k, - Value: v, - } - i++ - } - - log.WithField("partition", envId).Debugf("preparing call odc.Run") - - err = handleRun(ctx, odcClient, isManualXml, map[string]string{ - "topology": topology, - "script": script, - "plugin": plugin, - "resources": resources, - }, - paddingTimeout, - envId) - if err != nil { - log.WithField("partition", envId).WithError(err).Debugf("finished call odc.Run with ERROR") - return printGrpcError(err) - } - log.WithField("partition", envId).Debugf("finished call odc.Run with SUCCESS") - - log.WithField("partition", envId).Debugf("preparing call odc.SetProperties") - - var setPropertiesResponse *odcpb.GeneralReply - setPropertiesResponse, err = odcClient.SetProperties(ctx, setPropertiesRequest, grpc.EmptyCallOption{}) - if err != nil { - log.WithField("partition", envId).WithError(err).Debugf("finished call odc.SetProperties with ERROR") - return printGrpcError(err) - } - - if setPropertiesResponse == nil { - log.WithField("partition", envId).WithError(err).Debugf("finished call odc.SetProperties, ERROR nil response") - - // We got a nil response with nil error, this should never happen - return errors.New("nil response error") - } - - if odcErr := setPropertiesResponse.GetError(); odcErr != nil { - log.WithField("partition", envId).WithError(err).Debugf("finished call odc.SetProperties, ERROR in response payload") - - return fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) - } - if replyStatus := setPropertiesResponse.Status; replyStatus != odcpb.ReplyStatus_SUCCESS { - log.WithField("partition", envId).WithError(err).Debugf("finished call odc.SetProperties, bad status in response payload") - - return fmt.Errorf("status %s from ODC", replyStatus.String()) - } - - log.WithField("partition", envId).Debugf("finished call odc.SetProperties with SUCCESS") - - log.WithFields(logrus.Fields{ - "odcMsg": setPropertiesResponse.Msg, - "odcStatus": setPropertiesResponse.Status.String(), - "odcExectime": setPropertiesResponse.Exectime, - "partition": setPropertiesResponse.Partitionid, - "odcSessionid": setPropertiesResponse.Sessionid, - }). - Debug("call to ODC complete: odc.SetProperties") - - // CONFIGURE - configureRequest := &odcpb.ConfigureRequest{ - Request: &odcpb.StateRequest{ - Partitionid: envId, - Path: "", - Detailed: false, - }, - } - // We ask this ODC call to complete within our own DEADLINE, minus 1 second - ctxDeadline, ok = ctx.Deadline() - if ok { - configureRequest.Request.Timeout = uint32((time.Until(ctxDeadline) - paddingTimeout).Seconds()) - } - - var configureResponse *odcpb.StateReply - configureResponse, err = odcClient.Configure(ctx, configureRequest, grpc.EmptyCallOption{}) - if err != nil { - return printGrpcError(err) - } - - if configureResponse == nil || configureResponse.Reply == nil { - // We got a nil response with nil error, this should never happen - return errors.New("nil response error") - } - - if odcErr := configureResponse.Reply.GetError(); odcErr != nil { - return fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) - } - if replyStatus := configureResponse.Reply.Status; replyStatus != odcpb.ReplyStatus_SUCCESS { - return fmt.Errorf("status %s from ODC", replyStatus.String()) - } - log.WithFields(logrus.Fields{ - "odcMsg": configureResponse.Reply.Msg, - "odcStatus": configureResponse.Reply.Status.String(), - "odcExectime": configureResponse.Reply.Exectime, - "partition": configureResponse.Reply.Partitionid, - "odcSessionid": configureResponse.Reply.Sessionid, - }). - Debug("call to ODC complete: odc.Configure") - return err -} - func printGrpcError(err error) error { grpcStatus, ok := status.FromError(err) if ok { diff --git a/core/integration/odc/plugin.go b/core/integration/odc/plugin.go index 8a2bffcbf..0cfc5992e 100644 --- a/core/integration/odc/plugin.go +++ b/core/integration/odc/plugin.go @@ -40,6 +40,7 @@ import ( "github.com/AliceO2Group/Control/apricot" common_event "github.com/AliceO2Group/Control/common/event" + "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/logger/infologger" "github.com/AliceO2Group/Control/common/utils" "github.com/AliceO2Group/Control/common/utils/uid" @@ -65,6 +66,7 @@ const ( ODC_STATUS_TIMEOUT = 3 * time.Second ODC_POLLING_INTERVAL = 3 * time.Second ODC_MAX_INBOUND_MESSAGE_SIZE = 32 * 1024 * 1024 // 16 MiB + TOPIC = topic.IntegratedService + topic.Separator + "odc" ) type Plugin struct { @@ -253,6 +255,7 @@ func (p *Plugin) queryPartitionStatus() { WithField("oldState", existingPartition.State). WithField("state", partitionInfo.State). Info("ODC Partition state changed") + envMan := environment.ManagerInstance() if envMan != nil { go envMan.NotifyIntegratedServiceEvent(&event.OdcPartitionStateChangeEvent{ @@ -1357,128 +1360,6 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } return } - stack["ConfigureLegacy"] = func() (out string) { - // ODC Run + SetProperties + Configure - - var ( - pdpConfigOption, script, topology, plugin, resources string - ) - ok := false - isManualXml := false - callFailedStr := "EPN ConfigureLegacy call failed" - - pdpConfigOption, ok = varStack["pdp_config_option"] - if !ok { - msg := "cannot acquire PDP workflow configuration mode" - log.WithField("partition", envId). - WithField("call", "ConfigureLegacy"). - Error(msg) - call.VarStack["__call_error_reason"] = msg - call.VarStack["__call_error"] = callFailedStr - return - } - switch pdpConfigOption { - case "Repository hash": - fallthrough - case "Repository path": - script, ok = varStack["odc_script"] - if !ok { - msg := "cannot acquire ODC script, make sure GenerateEPNWorkflowScript is called and its " + - "output is written to odc_script" - log.WithField("partition", envId). - WithField("call", "ConfigureLegacy"). - Error(msg) - call.VarStack["__call_error_reason"] = msg - call.VarStack["__call_error"] = callFailedStr - return - } - - case "Manual XML": - topology, ok = varStack["odc_topology"] - if !ok { - msg := "cannot acquire ODC topology" - log.WithField("partition", envId). - WithField("call", "ConfigureLegacy"). - Error(msg) - call.VarStack["__call_error_reason"] = msg - call.VarStack["__call_error"] = callFailedStr - return - } - isManualXml = true - - default: - msg := "cannot acquire valid PDP workflow configuration mode value" - log.WithField("partition", envId). - WithField("call", "ConfigureLegacy"). - WithField("value", pdpConfigOption). - Error(msg) - call.VarStack["__call_error_reason"] = msg - call.VarStack["__call_error"] = callFailedStr - return - } - - plugin, ok = varStack["odc_plugin"] - if !ok { - msg := "cannot acquire ODC RMS plugin declaration" - log.WithField("partition", envId). - WithField("call", "ConfigureLegacy"). - Error(msg) - call.VarStack["__call_error_reason"] = msg - call.VarStack["__call_error"] = callFailedStr - return - } - - resources, ok = varStack["odc_resources"] - if !ok { - msg := "cannot acquire ODC resources declaration" - log.WithField("partition", envId). - WithField("call", "ConfigureLegacy"). - Error(msg) - call.VarStack["__call_error_reason"] = msg - call.VarStack["__call_error"] = callFailedStr - return - } - - timeout := callable.AcquireTimeout(ODC_CONFIGURE_TIMEOUT, varStack, "Configure", envId) - - arguments := make(map[string]string) - arguments["environment_id"] = envId - - ctx, cancel := context.WithTimeout(context.Background(), timeout) - defer cancel() - err := handleConfigureLegacy(ctx, p.odcClient, arguments, isManualXml, topology, script, plugin, resources, paddingTimeout, envId) - if err != nil { - log.WithField("level", infologger.IL_Support). - WithField("partition", envId). - WithField("call", "ConfigureLegacy"). - WithError(err).Error("ODC error") - call.VarStack["__call_error_reason"] = err.Error() - call.VarStack["__call_error"] = callFailedStr - } - - return - } - stack["ResetLegacy"] = func() (out string) { - // ODC Reset + Terminate + Shutdown - - timeout := callable.AcquireTimeout(ODC_RESET_TIMEOUT, varStack, "Reset", envId) - - callFailedStr := "EPN ResetLegacy call failed" - - ctx, cancel := context.WithTimeout(context.Background(), timeout) - defer cancel() - err := handleResetLegacy(ctx, p.odcClient, nil, paddingTimeout, envId) - if err != nil { - log.WithError(err). - WithField("level", infologger.IL_Support). - WithField("partition", envId). - WithField("call", "ResetLegacy"). - Error("ODC error") - call.VarStack["__call_error_reason"] = err.Error() - call.VarStack["__call_error"] = callFailedStr - } - return - } stack["EnsureCleanupLegacy"] = func() (out string) { // ODC Reset + Terminate + Shutdown for current env From 16ce849810b7a21a86a81289aae336fafd5c475c Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 15 Mar 2024 17:33:07 +0100 Subject: [PATCH 29/43] [core] Emit ODC events --- core/integration/dcs/plugin.go | 2 +- core/integration/ddsched/plugin.go | 2 +- core/integration/odc/handlers.go | 955 +++++++++++++++++++++++++++-- core/integration/odc/plugin.go | 33 +- 4 files changed, 921 insertions(+), 71 deletions(-) diff --git a/core/integration/dcs/plugin.go b/core/integration/dcs/plugin.go index 4dd0a92d1..ebfe3195f 100644 --- a/core/integration/dcs/plugin.go +++ b/core/integration/dcs/plugin.go @@ -1,7 +1,7 @@ /* * === This file is part of ALICE O² === * - * Copyright 2021-2023 CERN and copyright holders of ALICE O². + * Copyright 2021-2024 CERN and copyright holders of ALICE O². * Author: Teo Mrnjavac * * This program is free software: you can redistribute it and/or modify diff --git a/core/integration/ddsched/plugin.go b/core/integration/ddsched/plugin.go index ed170e1fb..5a4e04515 100644 --- a/core/integration/ddsched/plugin.go +++ b/core/integration/ddsched/plugin.go @@ -1,7 +1,7 @@ /* * === This file is part of ALICE O² === * - * Copyright 2021 CERN and copyright holders of ALICE O². + * Copyright 2021-2024 CERN and copyright holders of ALICE O². * Author: Teo Mrnjavac * * This program is free software: you can redistribute it and/or modify diff --git a/core/integration/odc/handlers.go b/core/integration/odc/handlers.go index 199889f33..b2a65d270 100644 --- a/core/integration/odc/handlers.go +++ b/core/integration/odc/handlers.go @@ -1,7 +1,7 @@ /* * === This file is part of ALICE O² === * - * Copyright 2020-2022 CERN and copyright holders of ALICE O². + * Copyright 2020-2024 CERN and copyright holders of ALICE O². * Author: Teo Mrnjavac * * This program is free software: you can redistribute it and/or modify @@ -26,6 +26,7 @@ package odc import ( "context" + "encoding/json" "errors" "fmt" "strconv" @@ -34,10 +35,13 @@ import ( "time" "github.com/AliceO2Group/Control/common/logger/infologger" + pb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/common/utils" "github.com/AliceO2Group/Control/core/environment" "github.com/AliceO2Group/Control/core/integration/odc/odcutils" odcpb "github.com/AliceO2Group/Control/core/integration/odc/protos" + "github.com/AliceO2Group/Control/core/the" + "github.com/AliceO2Group/Control/core/workflow/callable" "github.com/sirupsen/logrus" "google.golang.org/grpc" "google.golang.org/grpc/status" @@ -91,7 +95,7 @@ func handleGetState(ctx context.Context, odcClient *RpcClient, envId string) (st return odcutils.StateForOdcState(newState), err } -func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, runNumber uint64) error { +func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, runNumber uint64, call *callable.Call) error { defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("odcclient").WithField("partition", envId)) var err error = nil @@ -125,23 +129,114 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string i++ } + payload := map[string]interface{}{ + "odcRequest": &setPropertiesRequest, + } + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + var setPropertiesResponse *odcpb.GeneralReply setPropertiesResponse, err = odcClient.SetProperties(ctx, setPropertiesRequest, grpc.EmptyCallOption{}) if err != nil { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return printGrpcError(err) } if setPropertiesResponse == nil { + err = fmt.Errorf("nil response error") + log.WithField("partition", envId).WithError(err). + Debugf("finished call odc.SetProperties, ERROR nil response") + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + // We got a nil response with nil error, this should never happen - return errors.New("nil response error") + return err } if odcErr := setPropertiesResponse.GetError(); odcErr != nil { - return fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + log.WithField("partition", envId). + WithError(err). + Debugf("finished call odc.SetProperties, ERROR in response payload") + + err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + + payload["odcResponse"] = &setPropertiesResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } if replyStatus := setPropertiesResponse.Status; replyStatus != odcpb.ReplyStatus_SUCCESS { - return fmt.Errorf("status %s from ODC", replyStatus.String()) - } + log.WithField("partition", envId). + WithError(err). + Debugf("finished call odc.SetProperties, bad status in response payload") + + err = fmt.Errorf("status %s from ODC", replyStatus.String()) + + payload["odcResponse"] = &setPropertiesResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err + } + + payload["odcResponse"] = &setPropertiesResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + log.WithField("partition", envId). WithFields(logrus.Fields{ "odcMsg": setPropertiesResponse.Msg, @@ -167,22 +262,103 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string req.Request.Timeout = uint32((time.Until(ctxDeadline) - paddingTimeout).Seconds()) } + payload = map[string]interface{}{ + "odcRequest": &req, + } + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform ODC call: Start", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + rep, err = odcClient.Start(ctx, req, grpc.EmptyCallOption{}) if err != nil { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Start", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return printGrpcError(err) } if rep == nil || rep.Reply == nil { + err = fmt.Errorf("nil response error") + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Start", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + // We got a nil response with nil error, this should never happen - return errors.New("nil response error") + return err } if odcErr := rep.Reply.GetError(); odcErr != nil { - return fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Start", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } if replyStatus := rep.Reply.Status; replyStatus != odcpb.ReplyStatus_SUCCESS { - return fmt.Errorf("status %s from ODC", replyStatus.String()) - } + err = fmt.Errorf("status %s from ODC", replyStatus.String()) + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Start", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err + } + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform ODC call: Start", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + log.WithField("partition", envId). WithFields(logrus.Fields{ "odcMsg": rep.Reply.Msg, @@ -195,7 +371,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string return err } -func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, runNumber uint64) error { +func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, runNumber uint64, call *callable.Call) error { defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("odcclient").WithField("partition", envId)) req := &odcpb.StopRequest{ Request: &odcpb.StateRequest{ @@ -218,22 +394,103 @@ func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string] return errors.New("cannot proceed with empty environment id") } + payload := map[string]interface{}{ + "odcRequest": &req, + } + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform ODC call: Stop", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + rep, err = odcClient.Stop(ctx, req, grpc.EmptyCallOption{}) if err != nil { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Stop", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return printGrpcError(err) } if rep == nil || rep.Reply == nil { + err = fmt.Errorf("nil response error") + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Stop", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + // We got a nil response with nil error, this should never happen - return errors.New("nil response error") + return err } if odcErr := rep.Reply.GetError(); odcErr != nil { - return fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Stop", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } if replyStatus := rep.Reply.Status; replyStatus != odcpb.ReplyStatus_SUCCESS { - return fmt.Errorf("status %s from ODC", replyStatus.String()) - } + err = fmt.Errorf("status %s from ODC", replyStatus.String()) + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Stop", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err + } + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform ODC call: Stop", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + log.WithField("partition", envId). WithFields(logrus.Fields{ "odcMsg": rep.Reply.Msg, @@ -246,31 +503,31 @@ func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string] return err } -func handlePartitionTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string) error { +func handlePartitionTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, call *callable.Call) error { defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("odcclient").WithField("partition", envId)) if envId == "" { return errors.New("cannot proceed with empty environment id") } - err := doTerminate(ctx, odcClient, arguments, paddingTimeout, envId) + err := doTerminate(ctx, odcClient, arguments, paddingTimeout, envId, call) if err != nil { return printGrpcError(err) } - err = doShutdown(ctx, odcClient, arguments, paddingTimeout, envId) + err = doShutdown(ctx, odcClient, arguments, paddingTimeout, envId, call) if err != nil { return printGrpcError(err) } return nil } -func handleReset(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string) error { +func handleReset(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, call *callable.Call) error { defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("odcclient").WithField("partition", envId)) if envId == "" { return errors.New("cannot proceed with empty environment id") } - err := doReset(ctx, odcClient, arguments, paddingTimeout, envId) + err := doReset(ctx, odcClient, arguments, paddingTimeout, envId, call) if err != nil { return printGrpcError(err) } @@ -278,7 +535,7 @@ func handleReset(ctx context.Context, odcClient *RpcClient, arguments map[string return nil } -func handleCleanupLegacy(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string) error { +func handleCleanupLegacy(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, call *callable.Call) error { defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("odcclient").WithField("partition", envId)) if envId == "" { return errors.New("cannot proceed with empty environment id") @@ -286,7 +543,7 @@ func handleCleanupLegacy(ctx context.Context, odcClient *RpcClient, arguments ma // This function tries to perform the regular teardown sequence. // Since Shutdown is supposed to work in any state, we don't bail on error. - err := doReset(ctx, odcClient, arguments, paddingTimeout, envId) + err := doReset(ctx, odcClient, arguments, paddingTimeout, envId, call) if err != nil { log.WithError(printGrpcError(err)). WithField("level", infologger.IL_Devel). @@ -294,7 +551,7 @@ func handleCleanupLegacy(ctx context.Context, odcClient *RpcClient, arguments ma Warn("ODC Reset call failed") } - err = doTerminate(ctx, odcClient, arguments, paddingTimeout, envId) + err = doTerminate(ctx, odcClient, arguments, paddingTimeout, envId, call) if err != nil { log.WithError(printGrpcError(err)). WithField("level", infologger.IL_Devel). @@ -302,7 +559,7 @@ func handleCleanupLegacy(ctx context.Context, odcClient *RpcClient, arguments ma Warn("ODC Terminate call failed") } - err = doShutdown(ctx, odcClient, arguments, paddingTimeout, envId) + err = doShutdown(ctx, odcClient, arguments, paddingTimeout, envId, call) if err != nil { log.WithError(printGrpcError(err)). WithField("level", infologger.IL_Devel). @@ -312,7 +569,7 @@ func handleCleanupLegacy(ctx context.Context, odcClient *RpcClient, arguments ma return nil // We clobber the error because nothing can be done for a failed cleanup } -func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string) error { +func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, call *callable.Call) error { log.WithField("partition", envId). Debug("handleCleanup starting") defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("odcclient").WithField("partition", envId)) @@ -323,22 +580,101 @@ func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[stri var err error = nil var rep *odcpb.StatusReply + payload := map[string]interface{}{ + "odcRequest": &req, + } + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform ODC call: Status", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + rep, err = odcClient.Status(ctx, req, grpc.EmptyCallOption{}) if err != nil { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Status", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return printGrpcError(err) } if rep == nil || rep.GetStatus() == odcpb.ReplyStatus_UNKNOWN { + err = fmt.Errorf("nil response error") + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Status", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + // We got a nil response with nil error, this should never happen - return errors.New("nil response error") + return err } if odcErr := rep.GetError(); odcErr != nil { - return fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Status", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) } if replyStatus := rep.GetStatus(); replyStatus != odcpb.ReplyStatus_SUCCESS { - return fmt.Errorf("status %s from ODC", replyStatus.String()) - } + err = fmt.Errorf("status %s from ODC", replyStatus.String()) + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Status", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err + } + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform ODC call: Status", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + log.WithField("partition", envId). WithFields(logrus.Fields{ "odcCall": "Status", @@ -394,7 +730,7 @@ func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[stri for odcPartitionId, _ := range partitionsToClean { go func(odcPartitionId string) { defer wg.Done() - err = doShutdown(ctx, odcClient, arguments, paddingTimeout, odcPartitionId) // FIXME make this parallel + err = doShutdown(ctx, odcClient, arguments, paddingTimeout, odcPartitionId, call) // FIXME make this parallel if err != nil { log.WithError(printGrpcError(err)). WithField("level", infologger.IL_Devel). @@ -405,10 +741,29 @@ func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[stri } wg.Wait() + if len(partitionsToClean) == 0 { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "no cleanup necessary", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + }) + } else { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform ODC calls for all known partitions: Shutdown", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + }) + } return nil // We clobber the error because nothing can be done for a failed cleanup } -func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string) error { +func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, call *callable.Call) error { // RESET req := &odcpb.ResetRequest{ Request: &odcpb.StateRequest{ @@ -426,22 +781,103 @@ func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]str var err error = nil var rep *odcpb.StateReply + payload := map[string]interface{}{ + "odcRequest": &req, + } + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform ODC call: Reset", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + rep, err = odcClient.Reset(ctx, req, grpc.EmptyCallOption{}) if err != nil { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Reset", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return printGrpcError(err) } if rep == nil || rep.Reply == nil { // We got a nil response with nil error, this should never happen - return errors.New("nil response error") + err = errors.New("nil response error") + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Reset", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } if odcErr := rep.Reply.GetError(); odcErr != nil { - return fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Reset", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } if replyStatus := rep.Reply.Status; replyStatus != odcpb.ReplyStatus_SUCCESS { - return fmt.Errorf("status %s from ODC", replyStatus.String()) - } + err = fmt.Errorf("status %s from ODC", replyStatus.String()) + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Reset", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err + } + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform ODC call: Reset", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + log.WithFields(logrus.Fields{ "odcMsg": rep.Reply.Msg, "odcStatus": rep.Reply.Status.String(), @@ -453,7 +889,7 @@ func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]str return err } -func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string) error { +func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, call *callable.Call) error { // TERMINATE req := &odcpb.TerminateRequest{ Request: &odcpb.StateRequest{ @@ -471,22 +907,103 @@ func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string var err error = nil var rep *odcpb.StateReply + payload := map[string]interface{}{ + "odcRequest": &req, + } + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform ODC call: Terminate", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + rep, err = odcClient.Terminate(ctx, req, grpc.EmptyCallOption{}) if err != nil { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Terminate", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return printGrpcError(err) } if rep == nil || rep.Reply == nil { // We got a nil response with nil error, this should never happen - return errors.New("nil response error") + err = errors.New("nil response error") + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Terminate", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } if odcErr := rep.Reply.GetError(); odcErr != nil { - return fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Terminate", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } if replyStatus := rep.Reply.Status; replyStatus != odcpb.ReplyStatus_SUCCESS { - return fmt.Errorf("status %s from ODC", replyStatus.String()) - } + err = fmt.Errorf("status %s from ODC", replyStatus.String()) + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Terminate", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err + } + + payload["odcResponse"] = &rep + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform ODC call: Terminate", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + log.WithFields(logrus.Fields{ "odcMsg": rep.Reply.Msg, "odcStatus": rep.Reply.Status.String(), @@ -498,7 +1015,7 @@ func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string return err } -func doShutdown(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string) error { +func doShutdown(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, call *callable.Call) error { // SHUTDOWN shutdownRequest := &odcpb.ShutdownRequest{ Partitionid: envId, @@ -511,22 +1028,104 @@ func doShutdown(ctx context.Context, odcClient *RpcClient, arguments map[string] var err error = nil var shutdownResponse *odcpb.GeneralReply + + payload := map[string]interface{}{ + "odcRequest": &shutdownRequest, + } + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform ODC call: Shutdown", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + shutdownResponse, err = odcClient.Shutdown(ctx, shutdownRequest, grpc.EmptyCallOption{}) if err != nil { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Shutdown", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return printGrpcError(err) } if shutdownResponse == nil { // We got a nil response with nil error, this should never happen - return errors.New("nil response error") + err = errors.New("nil response error") + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Shutdown", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } if odcErr := shutdownResponse.GetError(); odcErr != nil { - return fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + + payload["odcResponse"] = &shutdownResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Shutdown", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } if replyStatus := shutdownResponse.Status; replyStatus != odcpb.ReplyStatus_SUCCESS { - return fmt.Errorf("status %s from ODC", replyStatus.String()) - } + err = fmt.Errorf("status %s from ODC", replyStatus.String()) + + payload["odcResponse"] = &shutdownResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Shutdown", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err + } + + payload["odcResponse"] = &shutdownResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform ODC call: Shutdown", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + log.WithFields(logrus.Fields{ "odcMsg": shutdownResponse.Msg, "odcStatus": shutdownResponse.Status.String(), @@ -538,7 +1137,7 @@ func doShutdown(ctx context.Context, odcClient *RpcClient, arguments map[string] return err } -func handleRun(ctx context.Context, odcClient *RpcClient, isManualXml bool, arguments map[string]string, paddingTimeout time.Duration, envId string) error { +func handleRun(ctx context.Context, odcClient *RpcClient, isManualXml bool, arguments map[string]string, paddingTimeout time.Duration, envId string, call *callable.Call) error { defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("odcclient")) if envId == "" { return errors.New("cannot proceed with empty environment id") @@ -610,20 +1209,76 @@ func handleRun(ctx context.Context, odcClient *RpcClient, isManualXml bool, argu var err error = nil var runResponse *odcpb.GeneralReply + payload := map[string]interface{}{ + "odcRequest": &runRequest, + } + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform ODC call: Run", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + runResponse, err = odcClient.Run(ctx, runRequest, grpc.EmptyCallOption{}) if err != nil { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Run", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return printGrpcError(err) } if runResponse == nil { + errMsg := "nil response error" + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Run", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + // We got a nil response with nil error, this should never happen - return errors.New("nil response error") + return errors.New(errMsg) } if odcErr := runResponse.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) } if replyStatus := runResponse.Status; replyStatus != odcpb.ReplyStatus_SUCCESS { + payload["odcResponse"] = &runResponse + payloadJson, _ = json.Marshal(payload) + + errMsg := "" + if err != nil { + errMsg = err.Error() + } + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Run", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: errMsg, + }) + return fmt.Errorf("status %s from ODC with error %w", replyStatus.String(), err) } log.WithFields(logrus.Fields{ @@ -634,10 +1289,24 @@ func handleRun(ctx context.Context, odcClient *RpcClient, isManualXml bool, argu "odcSessionid": runResponse.Sessionid, }). Debug("call to ODC complete: odc.Run") + + payload["odcResponse"] = &runResponse + payloadJson, _ = json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform ODC call: Run", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + return err } -func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string) error { +func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[string]string, paddingTimeout time.Duration, envId string, call *callable.Call) error { defer utils.TimeTrackFunction(time.Now(), log.WithPrefix("odcclient")) if envId == "" { return errors.New("cannot proceed with empty environment id") @@ -670,33 +1339,120 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st log.WithField("partition", envId).Debugf("preparing call odc.SetProperties") + payload := map[string]interface{}{ + "odcRequest": &setPropertiesRequest, + } + payloadJson, _ := json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + var setPropertiesResponse *odcpb.GeneralReply setPropertiesResponse, err = odcClient.SetProperties(ctx, setPropertiesRequest, grpc.EmptyCallOption{}) if err != nil { - log.WithField("partition", envId).WithError(err).Debugf("finished call odc.SetProperties with ERROR") + log.WithField("partition", envId). + WithError(err). + Debugf("finished call odc.SetProperties with ERROR") + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return printGrpcError(err) } if setPropertiesResponse == nil { - log.WithField("partition", envId).WithError(err).Debugf("finished call odc.SetProperties, ERROR nil response") + err = fmt.Errorf("nil response error") + log.WithField("partition", envId).WithError(err). + Debugf("finished call odc.SetProperties, ERROR nil response") + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) // We got a nil response with nil error, this should never happen - return errors.New("nil response error") + return err } if odcErr := setPropertiesResponse.GetError(); odcErr != nil { - log.WithField("partition", envId).WithError(err).Debugf("finished call odc.SetProperties, ERROR in response payload") + log.WithField("partition", envId). + WithError(err). + Debugf("finished call odc.SetProperties, ERROR in response payload") + + err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) - return fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + payload["odcResponse"] = &setPropertiesResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } if replyStatus := setPropertiesResponse.Status; replyStatus != odcpb.ReplyStatus_SUCCESS { - log.WithField("partition", envId).WithError(err).Debugf("finished call odc.SetProperties, bad status in response payload") + log.WithField("partition", envId). + WithError(err). + Debugf("finished call odc.SetProperties, bad status in response payload") - return fmt.Errorf("status %s from ODC", replyStatus.String()) + err = fmt.Errorf("status %s from ODC", replyStatus.String()) + + payload["odcResponse"] = &setPropertiesResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } log.WithField("partition", envId).Debugf("finished call odc.SetProperties with SUCCESS") + payload["odcResponse"] = &setPropertiesResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform ODC call: SetProperties", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + log.WithFields(logrus.Fields{ "odcMsg": setPropertiesResponse.Msg, "odcStatus": setPropertiesResponse.Status.String(), @@ -720,23 +1476,104 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st configureRequest.Request.Timeout = uint32((time.Until(ctxDeadline) - paddingTimeout).Seconds()) } + payload = map[string]interface{}{ + "odcRequest": &configureRequest, + } + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_ONGOING, + OperationStep: "perform ODC call: Configure", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + var configureResponse *odcpb.StateReply configureResponse, err = odcClient.Configure(ctx, configureRequest, grpc.EmptyCallOption{}) if err != nil { + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Configure", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return printGrpcError(err) } if configureResponse == nil || configureResponse.Reply == nil { + err = fmt.Errorf("nil response error") + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Configure", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + // We got a nil response with nil error, this should never happen - return errors.New("nil response error") + return err } if odcErr := configureResponse.Reply.GetError(); odcErr != nil { - return fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) + + payload["odcResponse"] = &configureResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Configure", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err } if replyStatus := configureResponse.Reply.Status; replyStatus != odcpb.ReplyStatus_SUCCESS { - return fmt.Errorf("status %s from ODC", replyStatus.String()) - } + err = fmt.Errorf("status %s from ODC", replyStatus.String()) + + payload["odcResponse"] = &configureResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform ODC call: Configure", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + + return err + } + + payload["odcResponse"] = &configureResponse + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform ODC call: Configure", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + log.WithFields(logrus.Fields{ "odcMsg": configureResponse.Reply.Msg, "odcStatus": configureResponse.Reply.Status.String(), diff --git a/core/integration/odc/plugin.go b/core/integration/odc/plugin.go index 0cfc5992e..65ff86c34 100644 --- a/core/integration/odc/plugin.go +++ b/core/integration/odc/plugin.go @@ -1,7 +1,7 @@ /* * === This file is part of ALICE O² === * - * Copyright 2021-2022 CERN and copyright holders of ALICE O². + * Copyright 2021-2024 CERN and copyright holders of ALICE O². * Author: Teo Mrnjavac * * This program is free software: you can redistribute it and/or modify @@ -42,12 +42,14 @@ import ( common_event "github.com/AliceO2Group/Control/common/event" "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/logger/infologger" + pb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/common/utils" "github.com/AliceO2Group/Control/common/utils/uid" "github.com/AliceO2Group/Control/core/environment" "github.com/AliceO2Group/Control/core/integration" "github.com/AliceO2Group/Control/core/integration/odc/event" odc "github.com/AliceO2Group/Control/core/integration/odc/protos" + "github.com/AliceO2Group/Control/core/the" "github.com/AliceO2Group/Control/core/workflow/callable" "github.com/spf13/viper" "google.golang.org/grpc" @@ -256,6 +258,17 @@ func (p *Plugin) queryPartitionStatus() { WithField("state", partitionInfo.State). Info("ODC Partition state changed") + payload := map[string]interface{}{ + "odcStatus": &response, + } + payloadJson, _ := json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: "odc.queryPartitionStatus", + EnvironmentId: id.String(), + Payload: string(payloadJson[:]), + }) + envMan := environment.ManagerInstance() if envMan != nil { go envMan.NotifyIntegratedServiceEvent(&event.OdcPartitionStateChangeEvent{ @@ -1062,7 +1075,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { "resources": resources, "extractTopoResources": strconv.FormatBool(extractTopoResources), }, - paddingTimeout, envId) + paddingTimeout, envId, call) if err != nil { log.WithError(err). WithField("level", infologger.IL_Support). @@ -1156,7 +1169,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - err := handleConfigure(ctx, p.odcClient, arguments, paddingTimeout, envId) + err := handleConfigure(ctx, p.odcClient, arguments, paddingTimeout, envId, call) if err != nil { log.WithField("level", infologger.IL_Support). WithField("partition", envId). @@ -1178,7 +1191,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - err := handleReset(ctx, p.odcClient, nil, paddingTimeout, envId) + err := handleReset(ctx, p.odcClient, nil, paddingTimeout, envId, call) if err != nil { log.WithError(err). WithField("level", infologger.IL_Support). @@ -1207,7 +1220,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - err := handlePartitionTerminate(ctx, p.odcClient, nil, paddingTimeout, envId) + err := handlePartitionTerminate(ctx, p.odcClient, nil, paddingTimeout, envId, call) if err != nil { log.WithError(err). WithField("level", infologger.IL_Support). @@ -1267,7 +1280,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - err = handleStart(ctx, p.odcClient, arguments, paddingTimeout, envId, runNumberu64) + err = handleStart(ctx, p.odcClient, arguments, paddingTimeout, envId, runNumberu64, call) if err != nil { log.WithError(err). WithField("level", infologger.IL_Support). @@ -1306,7 +1319,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - err = handleStop(ctx, p.odcClient, nil, paddingTimeout, envId, runNumberu64) + err = handleStop(ctx, p.odcClient, nil, paddingTimeout, envId, runNumberu64, call) if err != nil { log.WithError(err). WithField("level", infologger.IL_Support). @@ -1327,7 +1340,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - err := handleCleanup(ctx, p.odcClient, nil, paddingTimeout, envId) + err := handleCleanup(ctx, p.odcClient, nil, paddingTimeout, envId, call) if err != nil { log.WithError(err). WithField("level", infologger.IL_Support). @@ -1348,7 +1361,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - err := handleCleanup(ctx, p.odcClient, nil, paddingTimeout, "") + err := handleCleanup(ctx, p.odcClient, nil, paddingTimeout, "", call) if err != nil { log.WithError(err). WithField("level", infologger.IL_Support). @@ -1369,7 +1382,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - err := handleCleanupLegacy(ctx, p.odcClient, nil, paddingTimeout, envId) + err := handleCleanupLegacy(ctx, p.odcClient, nil, paddingTimeout, envId, call) if err != nil { log.WithError(err). WithField("level", infologger.IL_Support). From db62a9f0d3d860fdf39aa93103ff4a48371a183f Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Mon, 18 Mar 2024 17:15:31 +0100 Subject: [PATCH 30/43] [core] Emit TRG events --- core/integration/trg/plugin.go | 274 ++++++++++++++++++++++++++++++++- 1 file changed, 268 insertions(+), 6 deletions(-) diff --git a/core/integration/trg/plugin.go b/core/integration/trg/plugin.go index 3cb13c864..763a4386c 100644 --- a/core/integration/trg/plugin.go +++ b/core/integration/trg/plugin.go @@ -37,11 +37,14 @@ import ( "sync" "time" + "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/logger/infologger" + pb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/common/utils/uid" "github.com/AliceO2Group/Control/core/environment" "github.com/AliceO2Group/Control/core/integration" trgpb "github.com/AliceO2Group/Control/core/integration/trg/protos" + "github.com/AliceO2Group/Control/core/the" "github.com/AliceO2Group/Control/core/workflow/callable" "github.com/spf13/viper" "google.golang.org/grpc" @@ -52,6 +55,7 @@ const ( TRG_DIAL_TIMEOUT = 2 * time.Second TRG_POLLING_INTERVAL = 3 * time.Second TRG_RECONCILIATION_TIMEOUT = 5 * time.Second + TOPIC = topic.IntegratedService + topic.Separator + "trg" ) type Plugin struct { @@ -453,6 +457,21 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { return } + payload := map[string]interface{}{ + "trgRequest": &in, + } + payloadJson, _ := json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform TRG call: PrepareForRun", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + var response *trgpb.RunReply response, err = p.trgClient.PrepareForRun(context.Background(), &in, grpc.EmptyCallOption{}) if err != nil { @@ -466,6 +485,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform TRG call: PrepareForRun", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } @@ -483,10 +513,35 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["trgResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform TRG call: PrepareForRun", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } } + payload["trgResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform TRG call: PrepareForRun", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + log.WithField("partition", envId). Info("ALIECS SOR Operation : TRG PrepareForRun success") @@ -611,6 +666,21 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { return } + payload := map[string]interface{}{ + "trgRequest": &in, + } + payloadJson, _ := json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform TRG call: RunLoad", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + var response *trgpb.RunReply response, err = p.trgClient.RunLoad(context.Background(), &in, grpc.EmptyCallOption{}) if err != nil { @@ -625,6 +695,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform TRG call: RunLoad", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } @@ -643,10 +724,35 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["trgResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform TRG call: RunLoad", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } } + payload["trgResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform TRG call: RunLoad", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + // runLoad successful, we cache the run number for eventual cleanup p.pendingRunUnloads[envId] = runNumber64 log.WithField("partition", envId). @@ -747,8 +853,22 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { return } - var response *trgpb.RunReply + payload := map[string]interface{}{ + "trgRequest": &in, + } + payloadJson, _ := json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform TRG call: RunStart", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + var response *trgpb.RunReply response, err = p.trgClient.RunStart(context.Background(), &in, grpc.EmptyCallOption{}) if err != nil { log.WithError(err). @@ -762,6 +882,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform TRG call: RunStart", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } if response != nil { @@ -779,20 +910,47 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["trgResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform TRG call: RunStart", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } } + trgStartTime := time.Now() + + payload["trgResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEventWithTimestamp(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform TRG call: RunStart", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }, trgStartTime) + // runStart successful, we cache the run number for eventual cleanup p.pendingRunStops[envId] = runNumber64 log.WithField("partition", envId). WithField("run", runNumber64). Info("TRG RunStart success") - trgStartTime := strconv.FormatInt(time.Now().UnixMilli(), 10) + trgStartTimeS := strconv.FormatInt(trgStartTime.UnixMilli(), 10) parentRole, ok := call.GetParentRole().(callable.ParentRole) if ok { - parentRole.SetGlobalRuntimeVar("trg_start_time_ms", trgStartTime) + parentRole.SetGlobalRuntimeVar("trg_start_time_ms", trgStartTimeS) parentRole.DeleteGlobalRuntimeVar("trg_end_time_ms") } @@ -859,6 +1017,21 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { return } + payload := map[string]interface{}{ + "trgRequest": &in, + } + payloadJson, _ := json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform TRG call: RunStop", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + var response *trgpb.RunReply response, err = p.trgClient.RunStop(context.Background(), &in, grpc.EmptyCallOption{}) if err != nil { @@ -873,6 +1046,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform TRG call: RunStop", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } if response != nil { @@ -890,24 +1074,51 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["trgResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform TRG call: RunStop", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } } + trgEndTime := time.Now() + + payload["trgResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEventWithTimestamp(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform TRG call: RunStop", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }, trgEndTime) + // RunStop successful, we pop the run number from the cache delete(p.pendingRunStops, envId) log.WithField("partition", envId). WithField("run", runNumber64). Info("TRG RunStop success") - trgEndTime := strconv.FormatInt(time.Now().UnixMilli(), 10) + trgEndTimeS := strconv.FormatInt(trgEndTime.UnixMilli(), 10) parentRole, ok := call.GetParentRole().(callable.ParentRole) if ok { - parentRole.SetGlobalRuntimeVar("trg_end_time_ms", trgEndTime) + parentRole.SetGlobalRuntimeVar("trg_end_time_ms", trgEndTimeS) } else { log.WithField("partition", envId). WithField("run", runNumber64). - WithField("trgEndTime", trgEndTime). + WithField("trgEndTime", trgEndTimeS). Debug("could not get parentRole and set TRG end time") } @@ -974,6 +1185,21 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { return } + payload := map[string]interface{}{ + "trgRequest": &in, + } + payloadJson, _ := json.Marshal(payload) + + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_STARTED, + OperationStep: "perform TRG call: RunUnload", + OperationStepStatus: pb.OpStatus_STARTED, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + var response *trgpb.RunReply response, err = p.trgClient.RunUnload(context.Background(), &in, grpc.EmptyCallOption{}) if err != nil { @@ -988,6 +1214,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform TRG call: RunUnload", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } if response != nil { @@ -1005,10 +1242,35 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr + payload["trgResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_ERROR, + OperationStep: "perform TRG call: RunUnload", + OperationStepStatus: pb.OpStatus_DONE_ERROR, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + Error: err.Error(), + }) + return } } + payload["trgResponse"] = &response + payloadJson, _ = json.Marshal(payload) + the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + Name: call.GetName(), + OperationName: call.Func, + OperationStatus: pb.OpStatus_DONE_OK, + OperationStep: "perform TRG call: RunUnload", + OperationStepStatus: pb.OpStatus_DONE_OK, + EnvironmentId: envId, + Payload: string(payloadJson[:]), + }) + // RunUnload successful, we pop the run number from the cache delete(p.pendingRunUnloads, envId) log.WithField("partition", envId). From ae22193aabe205a2a195e8d3513bfd6ffb193aad Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Tue, 19 Mar 2024 13:36:00 +0100 Subject: [PATCH 31/43] [common] Enable AllowAutoTopicCreation in Kafka client --- common/event/writer.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/common/event/writer.go b/common/event/writer.go index 72b2ad2d4..34b600b18 100644 --- a/common/event/writer.go +++ b/common/event/writer.go @@ -48,9 +48,10 @@ type Writer struct { func NewWriterWithTopic(topic topic.Topic) *Writer { return &Writer{ Writer: &kafka.Writer{ - Addr: kafka.TCP(viper.GetStringSlice("kafkaEndpoints")...), - Topic: string(topic), - Balancer: &kafka.LeastBytes{}, + Addr: kafka.TCP(viper.GetStringSlice("kafkaEndpoints")...), + Topic: string(topic), + Balancer: &kafka.LeastBytes{}, + AllowAutoTopicCreation: true, }, } } @@ -102,6 +103,7 @@ func (w *Writer) WriteEventWithTimestamp(e interface{}, timestamp time.Time) { err = fmt.Errorf("unsupported event type") } if err != nil { + log.WithField("event", e). WithField("level", infologger.IL_Support). Error(err.Error()) From 831178ddfed0489deef8bb8695e7b3f037ce809a Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Tue, 19 Mar 2024 13:36:27 +0100 Subject: [PATCH 32/43] [core] Correct Kafka topic --- core/core.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/core.go b/core/core.go index d52d4f340..bd3e689cd 100644 --- a/core/core.go +++ b/core/core.go @@ -30,6 +30,7 @@ import ( "net" "syscall" + "github.com/AliceO2Group/Control/common/event/topic" "github.com/AliceO2Group/Control/common/logger/infologger" pb "github.com/AliceO2Group/Control/common/protos" "github.com/AliceO2Group/Control/core/the" @@ -92,7 +93,7 @@ func Run() error { state.taskman.Start(ctx) // First message to Kafka - the.EventWriter().WriteEvent(&pb.Ev_MetaEvent_CoreStart{ + the.EventWriterWithTopic(topic.Core).WriteEvent(&pb.Ev_MetaEvent_CoreStart{ FrameworkId: state.taskman.GetFrameworkID(), }) From 9c624312aeedcb0881f847331339f412d38dfa4e Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Tue, 19 Mar 2024 13:36:43 +0100 Subject: [PATCH 33/43] [build] Generate fdset file for decoding Kafka messages with pq --- Makefile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index bb0b6c677..e0ce249e5 100644 --- a/Makefile +++ b/Makefile @@ -86,7 +86,7 @@ HAS_PROTOC := $(shell command -v $(GOPROTOCPATH) 2> /dev/null) .EXPORT_ALL_VARIABLES: CGO_ENABLED = 0 -.PHONY: build all install generate test debugtest vet fmt clean cleanall help $(WHAT) tools vendor doc docs +.PHONY: build all install generate test debugtest vet fmt clean cleanall help $(WHAT) tools vendor doc docs fdset build: $(WHAT) @@ -273,6 +273,15 @@ tools/protoc: docs: docs/coconut docs/grpc docs/swaggo +fdset: + @echo -e "building fdset files \033[1;33m==>\033[0m \033[1;34m./common/protos\033[0m" + + @mkdir -p fdset + @cd common/protos && protoc -o events.fdset events.proto && cd ../.. + @mv common/protos/events.fdset fdset + + @echo -e "to consume with \033[1;33mhttps://github.com/sevagh/pq\033[0m: FDSET_PATH=./fdset pq kafka aliecs.environment --brokers kafka-broker-hostname:9092 --beginning --msgtype events.Event" + docs/coconut: @echo -e "generating coconut documentation \033[1;33m==>\033[0m \033[1;34m./coconut/doc\033[0m" @cd coconut/doc && go run . && cd ../.. From d17a4a1cf75701c844da6facfc82462f32a34947 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Tue, 19 Mar 2024 17:05:51 +0100 Subject: [PATCH 34/43] [core] Emit call events to aliecs.call topic and include envId --- common/event/topic/topic.go | 1 + common/protos/events.pb.go | 193 +++++++++++++++++---------------- common/protos/events.proto | 3 +- core/workflow/callable/call.go | 16 ++- 4 files changed, 115 insertions(+), 98 deletions(-) diff --git a/common/event/topic/topic.go b/common/event/topic/topic.go index e026b7974..5acfcf867 100644 --- a/common/event/topic/topic.go +++ b/common/event/topic/topic.go @@ -34,6 +34,7 @@ const ( Environment Topic = Root + Separator + "environment" Role Topic = Root + Separator + "role" Task Topic = Root + Separator + "task" + Call Topic = Root + Separator + "call" Core Topic = Root + Separator + "core" diff --git a/common/protos/events.pb.go b/common/protos/events.pb.go index 3845c4057..42cb4b0f3 100644 --- a/common/protos/events.pb.go +++ b/common/protos/events.pb.go @@ -539,13 +539,14 @@ type Ev_CallEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Func string `protobuf:"bytes,1,opt,name=func,proto3" json:"func,omitempty"` - CallStatus OpStatus `protobuf:"varint,2,opt,name=callStatus,proto3,enum=events.OpStatus" json:"callStatus,omitempty"` - Return string `protobuf:"bytes,3,opt,name=return,proto3" json:"return,omitempty"` - Traits *Traits `protobuf:"bytes,4,opt,name=traits,proto3" json:"traits,omitempty"` - Output string `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"` - Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` - Path string `protobuf:"bytes,7,opt,name=path,proto3" json:"path,omitempty"` + Func string `protobuf:"bytes,1,opt,name=func,proto3" json:"func,omitempty"` + CallStatus OpStatus `protobuf:"varint,2,opt,name=callStatus,proto3,enum=events.OpStatus" json:"callStatus,omitempty"` + Return string `protobuf:"bytes,3,opt,name=return,proto3" json:"return,omitempty"` + Traits *Traits `protobuf:"bytes,4,opt,name=traits,proto3" json:"traits,omitempty"` + Output string `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"` + Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` + EnvironmentId string `protobuf:"bytes,7,opt,name=environmentId,proto3" json:"environmentId,omitempty"` + Path string `protobuf:"bytes,8,opt,name=path,proto3" json:"path,omitempty"` } func (x *Ev_CallEvent) Reset() { @@ -622,6 +623,13 @@ func (x *Ev_CallEvent) GetError() string { return "" } +func (x *Ev_CallEvent) GetEnvironmentId() string { + if x != nil { + return x.EnvironmentId + } + return "" +} + func (x *Ev_CallEvent) GetPath() string { if x != nil { return x.Path @@ -1050,7 +1058,7 @@ var file_protos_events_proto_rawDesc = []byte{ 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x22, 0xd6, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, + 0x70, 0x61, 0x74, 0x68, 0x22, 0xfc, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, @@ -1062,90 +1070,93 @@ var file_protos_events_proto_rawDesc = []byte{ 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x92, 0x01, - 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, - 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x22, 0xd1, 0x02, 0x0a, 0x19, 0x45, 0x76, 0x5f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x3a, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x65, 0x70, 0x12, 0x42, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x65, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x22, 0x92, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xd1, 0x02, 0x0a, 0x19, 0x45, 0x76, 0x5f, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xf8, 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, - 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, - 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, - 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x16, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, - 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, - 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, - 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x66, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, - 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, - 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x65, 0x73, - 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x43, - 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x65, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x10, 0x10, - 0x65, 0x2a, 0x5d, 0x0a, 0x08, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x08, 0x0a, - 0x04, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x41, 0x52, 0x54, - 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x4e, 0x47, 0x4f, 0x49, 0x4e, 0x47, 0x10, - 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x4f, 0x4b, 0x10, 0x03, 0x12, 0x0e, - 0x0a, 0x0a, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x10, - 0x0a, 0x0c, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x05, - 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, - 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x65, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x42, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, + 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xf8, 0x04, 0x0a, + 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, + 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x63, + 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x5b, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, + 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, + 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, + 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, + 0x00, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, + 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, + 0x0b, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x65, 0x2a, 0x5d, 0x0a, 0x08, 0x4f, 0x70, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, + 0x07, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x4e, + 0x47, 0x4f, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x4f, 0x4e, 0x45, 0x5f, + 0x4f, 0x4b, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x49, 0x4d, + 0x45, 0x4f, 0x55, 0x54, 0x10, 0x05, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, + 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/common/protos/events.proto b/common/protos/events.proto index edea2e072..ee2ebb123 100644 --- a/common/protos/events.proto +++ b/common/protos/events.proto @@ -89,7 +89,8 @@ message Ev_CallEvent { Traits traits = 4; string output = 5; string error = 6; - string path = 7; + string environmentId = 7; + string path = 8; } message Ev_RoleEvent { diff --git a/core/workflow/callable/call.go b/core/workflow/callable/call.go index 900f690bb..afc21d0bd 100644 --- a/core/workflow/callable/call.go +++ b/core/workflow/callable/call.go @@ -111,7 +111,7 @@ func (c *Call) Call() error { WithField("level", infologger.IL_Devel). Debugf("calling hook function %s", c.Func) - the.EventWriterWithTopic(topic.Environment).WriteEvent(&evpb.Ev_CallEvent{ + the.EventWriterWithTopic(topic.Call).WriteEvent(&evpb.Ev_CallEvent{ Path: c.GetParentRolePath(), Func: c.Func, CallStatus: evpb.OpStatus_STARTED, @@ -122,6 +122,7 @@ func (c *Call) Call() error { Timeout: c.Traits.Timeout, Critical: c.Traits.Critical, }, + EnvironmentId: c.parentRole.GetEnvironmentId().String(), }) output := "{{" + c.Func + "}}" @@ -163,8 +164,9 @@ func (c *Call) Call() error { Timeout: c.Traits.Timeout, Critical: c.Traits.Critical, }, - Output: output, - Error: errMsg, + Output: output, + Error: errMsg, + EnvironmentId: c.parentRole.GetEnvironmentId().String(), }) return err @@ -190,8 +192,9 @@ func (c *Call) Call() error { Timeout: c.Traits.Timeout, Critical: c.Traits.Critical, }, - Output: output, - Error: errMsg, + Output: output, + Error: errMsg, + EnvironmentId: c.parentRole.GetEnvironmentId().String(), }) return errors.New(errMsg) @@ -208,7 +211,8 @@ func (c *Call) Call() error { Timeout: c.Traits.Timeout, Critical: c.Traits.Critical, }, - Output: output, + Output: output, + EnvironmentId: c.parentRole.GetEnvironmentId().String(), }) return nil From 8695b2a22b501bec4982b08dc5bd6a6cf24c216c Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 20 Mar 2024 14:23:36 +0100 Subject: [PATCH 35/43] [core] Enable IntegratedServiceEvents --- common/event/writer.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/event/writer.go b/common/event/writer.go index 34b600b18..e91fbebc3 100644 --- a/common/event/writer.go +++ b/common/event/writer.go @@ -98,6 +98,11 @@ func (w *Writer) WriteEventWithTimestamp(e interface{}, timestamp time.Time) { Timestamp: timestamp.UnixMilli(), Payload: &pb.Event_CallEvent{CallEvent: e}, }) + case *pb.Ev_IntegratedServiceEvent: + err = w.doWriteEvent(&pb.Event{ + Timestamp: timestamp.UnixMilli(), + Payload: &pb.Event_IntegratedServiceEvent{IntegratedServiceEvent: e}, + }) default: err = fmt.Errorf("unsupported event type") From 31eb36d75309e3ed02d1cd9c0a75d4f7b867af4d Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 20 Mar 2024 15:37:31 +0100 Subject: [PATCH 36/43] [core] Pass IntegratedServiceEvents by ref --- core/integration/dcs/plugin.go | 90 ++++++++++----------- core/integration/ddsched/plugin.go | 64 +++++++-------- core/integration/odc/handlers.go | 122 ++++++++++++++--------------- core/integration/odc/plugin.go | 2 +- core/integration/trg/plugin.go | 40 +++++----- 5 files changed, 159 insertions(+), 159 deletions(-) diff --git a/core/integration/dcs/plugin.go b/core/integration/dcs/plugin.go index ebfe3195f..500fae2a8 100644 --- a/core/integration/dcs/plugin.go +++ b/core/integration/dcs/plugin.go @@ -266,7 +266,7 @@ func (p *Plugin) updateDetectorOpAvailabilities(detectorMatrix []*dcspb.Detector } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: "dcs.updateDetectorOpAvailabilities", Payload: string(payloadJson[:]), }) @@ -461,7 +461,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -508,7 +508,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -530,7 +530,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["detectorsReadiness"] = knownDetectorStates.EcsDetectorsMap() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -695,7 +695,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { detectorStatusMap[v] = dcspb.DetectorState_NULL_STATE } - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -722,7 +722,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -741,7 +741,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { if ctx.Err() != nil { err = fmt.Errorf("DCS PrepareForRun context timed out (%s), any future DCS events are ignored", timeout.String()) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -760,7 +760,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { log.WithField("partition", envId). Debug(logMsg) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -780,7 +780,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Debug("DCS PFR timed out") err = fmt.Errorf("DCS PFR timed out after %s: %w", timeout.String(), err) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -799,7 +799,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("partition", envId). Warn(logMsg) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -840,7 +840,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["detector"] = ecsDet payload["dcsEvent"] = dcsEvent payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -876,7 +876,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["detector"] = ecsDet payload["dcsEvent"] = dcsEvent payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -912,7 +912,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["detector"] = ecsDet payload["dcsEvent"] = dcsEvent payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_TIMEOUT, @@ -940,7 +940,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { detPayload["dcsEvent"] = dcsEvent detPayloadJson, _ := json.Marshal(detPayload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -963,7 +963,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { detPayload["dcsEvent"] = dcsEvent detPayloadJson, _ := json.Marshal(detPayload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -998,7 +998,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } } if dcsopOk { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -1029,7 +1029,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["failedDetectors"] = dcsFailedEcsDetectors payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1107,7 +1107,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -1154,7 +1154,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1176,7 +1176,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["detectorsReadiness"] = knownDetectorStates.EcsDetectorsMap() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1348,7 +1348,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { detectorStatusMap[v] = dcspb.DetectorState_NULL_STATE } - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1376,7 +1376,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1396,7 +1396,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { if ctx.Err() != nil { err = fmt.Errorf("DCS StartOfRun context timed out (%s), any future DCS events are ignored", timeout.String()) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1416,7 +1416,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("run", runNumber64). Debug(logMsg) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1437,7 +1437,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Debug("DCS SOR timed out") err = fmt.Errorf("DCS SOR timed out after %s: %w", timeout.String(), err) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1457,7 +1457,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("run", runNumber64). Warn(logMsg) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1500,7 +1500,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["detector"] = ecsDet payload["dcsEvent"] = dcsEvent payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1537,7 +1537,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["detector"] = ecsDet payload["dcsEvent"] = dcsEvent payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1574,7 +1574,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["detector"] = ecsDet payload["dcsEvent"] = dcsEvent payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_TIMEOUT, @@ -1604,7 +1604,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { detPayload["dcsEvent"] = dcsEvent detPayloadJson, _ := json.Marshal(detPayload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1628,7 +1628,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { detPayload["dcsEvent"] = dcsEvent detPayloadJson, _ := json.Marshal(detPayload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1668,7 +1668,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { if dcsopOk { p.pendingEORs[envId] = runNumber64 - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -1700,7 +1700,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["failedDetectors"] = dcsFailedEcsDetectors payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1871,7 +1871,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -1899,7 +1899,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1931,7 +1931,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { if ctx.Err() != nil { err = fmt.Errorf("DCS EndOfRun context timed out (%s), any future DCS events are ignored", timeout.String()) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1951,7 +1951,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("run", runNumber64). Debug(logMsg) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1972,7 +1972,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { Debug("DCS EOR timed out") err = fmt.Errorf("DCS EOR timed out after %s: %w", timeout.String(), err) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1992,7 +1992,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("run", runNumber64). Warn(logMsg) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -2038,7 +2038,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["detector"] = ecsDet payload["dcsEvent"] = dcsEvent payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -2075,7 +2075,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["detector"] = ecsDet payload["dcsEvent"] = dcsEvent payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_TIMEOUT, @@ -2105,7 +2105,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { detPayload["dcsEvent"] = dcsEvent detPayloadJson, _ := json.Marshal(detPayload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -2129,7 +2129,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { detPayload["dcsEvent"] = dcsEvent detPayloadJson, _ := json.Marshal(detPayload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -2167,7 +2167,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { if dcsopOk { delete(p.pendingEORs, envId) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -2196,7 +2196,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["failedDetectors"] = dcsFailedEcsDetectors payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, diff --git a/core/integration/ddsched/plugin.go b/core/integration/ddsched/plugin.go index 5a4e04515..e440fa91a 100644 --- a/core/integration/ddsched/plugin.go +++ b/core/integration/ddsched/plugin.go @@ -334,7 +334,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { "ddschedRequest": &in, } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -356,7 +356,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -385,7 +385,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["ddschedResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -401,7 +401,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["ddschedResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -415,7 +415,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { "lastKnownState": response.PartitionState.String(), } payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -446,7 +446,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { case ddpb.PartitionState_PARTITION_CONFIGURING: payload["lastKnownState"] = lastKnownState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -460,7 +460,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { case ddpb.PartitionState_PARTITION_CONFIGURED: payload["lastKnownState"] = lastKnownState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -486,7 +486,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["lastKnownState"] = lastKnownState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -516,7 +516,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["lastKnownState"] = response.PartitionState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_TIMEOUT, @@ -587,7 +587,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { "ddschedRequest": &in, } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -609,7 +609,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -639,7 +639,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["ddschedResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -655,7 +655,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["ddschedResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -669,7 +669,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { "lastKnownState": response.PartitionState.String(), } payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -700,7 +700,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { case ddpb.PartitionState_PARTITION_TERMINATING: payload["lastKnownState"] = lastKnownState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -714,7 +714,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { case ddpb.PartitionState_PARTITION_TERMINATED: payload["lastKnownState"] = lastKnownState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -740,7 +740,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["lastKnownState"] = lastKnownState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -769,7 +769,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["lastKnownState"] = response.PartitionState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_TIMEOUT, @@ -835,7 +835,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -856,7 +856,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -882,7 +882,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -908,7 +908,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { WithField("partition_state", response.PartitionState). Trace("DD scheduler session cleanup not needed") - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -920,7 +920,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { return } - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -950,7 +950,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { "ddschedRequest": &in, } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -972,7 +972,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1001,7 +1001,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["ddschedResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1017,7 +1017,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["ddschedResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1031,7 +1031,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { "lastKnownState": response.PartitionState.String(), } payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1062,7 +1062,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { case ddpb.PartitionState_PARTITION_TERMINATING: payload["lastKnownState"] = lastKnownState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1076,7 +1076,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { case ddpb.PartitionState_PARTITION_TERMINATED: payload["lastKnownState"] = lastKnownState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -1102,7 +1102,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["lastKnownState"] = lastKnownState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1131,7 +1131,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["lastKnownState"] = response.PartitionState.String() payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_TIMEOUT, diff --git a/core/integration/odc/handlers.go b/core/integration/odc/handlers.go index b2a65d270..488f9019b 100644 --- a/core/integration/odc/handlers.go +++ b/core/integration/odc/handlers.go @@ -133,7 +133,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string "odcRequest": &setPropertiesRequest, } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -146,7 +146,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string var setPropertiesResponse *odcpb.GeneralReply setPropertiesResponse, err = odcClient.SetProperties(ctx, setPropertiesRequest, grpc.EmptyCallOption{}) if err != nil { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -165,7 +165,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string log.WithField("partition", envId).WithError(err). Debugf("finished call odc.SetProperties, ERROR nil response") - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -189,7 +189,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string payload["odcResponse"] = &setPropertiesResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -211,7 +211,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string payload["odcResponse"] = &setPropertiesResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -227,7 +227,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string payload["odcResponse"] = &setPropertiesResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -266,7 +266,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string "odcRequest": &req, } payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -278,7 +278,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string rep, err = odcClient.Start(ctx, req, grpc.EmptyCallOption{}) if err != nil { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -295,7 +295,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string if rep == nil || rep.Reply == nil { err = fmt.Errorf("nil response error") - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -315,7 +315,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -333,7 +333,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -349,7 +349,7 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -398,7 +398,7 @@ func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string] "odcRequest": &req, } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -410,7 +410,7 @@ func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string] rep, err = odcClient.Stop(ctx, req, grpc.EmptyCallOption{}) if err != nil { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -427,7 +427,7 @@ func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string] if rep == nil || rep.Reply == nil { err = fmt.Errorf("nil response error") - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -447,7 +447,7 @@ func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string] payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -465,7 +465,7 @@ func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string] payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -481,7 +481,7 @@ func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string] payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -584,7 +584,7 @@ func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[stri "odcRequest": &req, } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -596,7 +596,7 @@ func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[stri rep, err = odcClient.Status(ctx, req, grpc.EmptyCallOption{}) if err != nil { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -613,7 +613,7 @@ func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[stri if rep == nil || rep.GetStatus() == odcpb.ReplyStatus_UNKNOWN { err = fmt.Errorf("nil response error") - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -633,7 +633,7 @@ func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[stri payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -649,7 +649,7 @@ func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[stri payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -665,7 +665,7 @@ func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[stri payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -742,7 +742,7 @@ func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[stri wg.Wait() if len(partitionsToClean) == 0 { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -751,7 +751,7 @@ func handleCleanup(ctx context.Context, odcClient *RpcClient, arguments map[stri EnvironmentId: envId, }) } else { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -785,7 +785,7 @@ func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]str "odcRequest": &req, } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -797,7 +797,7 @@ func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]str rep, err = odcClient.Reset(ctx, req, grpc.EmptyCallOption{}) if err != nil { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -815,7 +815,7 @@ func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]str // We got a nil response with nil error, this should never happen err = errors.New("nil response error") - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -834,7 +834,7 @@ func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]str payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -852,7 +852,7 @@ func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]str payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -868,7 +868,7 @@ func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]str payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -911,7 +911,7 @@ func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string "odcRequest": &req, } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -923,7 +923,7 @@ func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string rep, err = odcClient.Terminate(ctx, req, grpc.EmptyCallOption{}) if err != nil { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -941,7 +941,7 @@ func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string // We got a nil response with nil error, this should never happen err = errors.New("nil response error") - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -960,7 +960,7 @@ func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -978,7 +978,7 @@ func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -994,7 +994,7 @@ func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string payload["odcResponse"] = &rep payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -1033,7 +1033,7 @@ func doShutdown(ctx context.Context, odcClient *RpcClient, arguments map[string] "odcRequest": &shutdownRequest, } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -1045,7 +1045,7 @@ func doShutdown(ctx context.Context, odcClient *RpcClient, arguments map[string] shutdownResponse, err = odcClient.Shutdown(ctx, shutdownRequest, grpc.EmptyCallOption{}) if err != nil { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1063,7 +1063,7 @@ func doShutdown(ctx context.Context, odcClient *RpcClient, arguments map[string] // We got a nil response with nil error, this should never happen err = errors.New("nil response error") - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1082,7 +1082,7 @@ func doShutdown(ctx context.Context, odcClient *RpcClient, arguments map[string] payload["odcResponse"] = &shutdownResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1100,7 +1100,7 @@ func doShutdown(ctx context.Context, odcClient *RpcClient, arguments map[string] payload["odcResponse"] = &shutdownResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1116,7 +1116,7 @@ func doShutdown(ctx context.Context, odcClient *RpcClient, arguments map[string] payload["odcResponse"] = &shutdownResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -1213,7 +1213,7 @@ func handleRun(ctx context.Context, odcClient *RpcClient, isManualXml bool, argu "odcRequest": &runRequest, } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -1225,7 +1225,7 @@ func handleRun(ctx context.Context, odcClient *RpcClient, isManualXml bool, argu runResponse, err = odcClient.Run(ctx, runRequest, grpc.EmptyCallOption{}) if err != nil { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1242,7 +1242,7 @@ func handleRun(ctx context.Context, odcClient *RpcClient, isManualXml bool, argu if runResponse == nil { errMsg := "nil response error" - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1268,7 +1268,7 @@ func handleRun(ctx context.Context, odcClient *RpcClient, isManualXml bool, argu if err != nil { errMsg = err.Error() } - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1293,7 +1293,7 @@ func handleRun(ctx context.Context, odcClient *RpcClient, isManualXml bool, argu payload["odcResponse"] = &runResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -1343,7 +1343,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st "odcRequest": &setPropertiesRequest, } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -1360,7 +1360,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st WithError(err). Debugf("finished call odc.SetProperties with ERROR") - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1379,7 +1379,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st log.WithField("partition", envId).WithError(err). Debugf("finished call odc.SetProperties, ERROR nil response") - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1403,7 +1403,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st payload["odcResponse"] = &setPropertiesResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1425,7 +1425,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st payload["odcResponse"] = &setPropertiesResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1443,7 +1443,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st payload["odcResponse"] = &setPropertiesResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1480,7 +1480,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st "odcRequest": &configureRequest, } payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_ONGOING, @@ -1493,7 +1493,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st var configureResponse *odcpb.StateReply configureResponse, err = odcClient.Configure(ctx, configureRequest, grpc.EmptyCallOption{}) if err != nil { - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1510,7 +1510,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st if configureResponse == nil || configureResponse.Reply == nil { err = fmt.Errorf("nil response error") - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1530,7 +1530,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st payload["odcResponse"] = &configureResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1548,7 +1548,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st payload["odcResponse"] = &configureResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1564,7 +1564,7 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st payload["odcResponse"] = &configureResponse payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, diff --git a/core/integration/odc/plugin.go b/core/integration/odc/plugin.go index 65ff86c34..8bda15acc 100644 --- a/core/integration/odc/plugin.go +++ b/core/integration/odc/plugin.go @@ -263,7 +263,7 @@ func (p *Plugin) queryPartitionStatus() { } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: "odc.queryPartitionStatus", EnvironmentId: id.String(), Payload: string(payloadJson[:]), diff --git a/core/integration/trg/plugin.go b/core/integration/trg/plugin.go index 763a4386c..d636ec557 100644 --- a/core/integration/trg/plugin.go +++ b/core/integration/trg/plugin.go @@ -462,7 +462,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -485,7 +485,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -515,7 +515,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["trgResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -532,7 +532,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["trgResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -671,7 +671,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -695,7 +695,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -726,7 +726,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["trgResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -743,7 +743,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["trgResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -858,7 +858,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -882,7 +882,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -912,7 +912,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["trgResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -931,7 +931,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["trgResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEventWithTimestamp(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEventWithTimestamp(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -1022,7 +1022,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -1046,7 +1046,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1076,7 +1076,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["trgResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1095,7 +1095,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["trgResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEventWithTimestamp(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEventWithTimestamp(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, @@ -1190,7 +1190,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { } payloadJson, _ := json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_STARTED, @@ -1214,7 +1214,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { call.VarStack["__call_error_reason"] = err.Error() call.VarStack["__call_error"] = callFailedStr - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1244,7 +1244,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["trgResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_ERROR, @@ -1261,7 +1261,7 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) { payload["trgResponse"] = &response payloadJson, _ = json.Marshal(payload) - the.EventWriterWithTopic(TOPIC).WriteEvent(pb.Ev_IntegratedServiceEvent{ + the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ Name: call.GetName(), OperationName: call.Func, OperationStatus: pb.OpStatus_DONE_OK, From e7331908b9d5618c87fccb06ca59884fd88e2c59 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 21 Mar 2024 12:01:10 +0100 Subject: [PATCH 37/43] [core] Write to Kafka asynchronously --- common/event/writer.go | 109 ++++++++++++++++++++++------------------- 1 file changed, 59 insertions(+), 50 deletions(-) diff --git a/common/event/writer.go b/common/event/writer.go index e91fbebc3..faf4a76d4 100644 --- a/common/event/writer.go +++ b/common/event/writer.go @@ -61,58 +61,67 @@ func (w *Writer) WriteEvent(e interface{}) { } func (w *Writer) WriteEventWithTimestamp(e interface{}, timestamp time.Time) { - var err error - switch e := e.(type) { - case *pb.Ev_MetaEvent_CoreStart: - err = w.doWriteEvent(&pb.Event{ - Timestamp: timestamp.UnixMilli(), - Payload: &pb.Event_CoreStartEvent{CoreStartEvent: e}, - }) - case *pb.Ev_MetaEvent_MesosHeartbeat: - err = w.doWriteEvent(&pb.Event{ - Timestamp: timestamp.UnixMilli(), - Payload: &pb.Event_MesosHeartbeatEvent{MesosHeartbeatEvent: e}, - }) - case *pb.Ev_MetaEvent_FrameworkEvent: - err = w.doWriteEvent(&pb.Event{ - Timestamp: timestamp.UnixMilli(), - Payload: &pb.Event_FrameworkEvent{FrameworkEvent: e}, - }) - case *pb.Ev_TaskEvent: - err = w.doWriteEvent(&pb.Event{ - Timestamp: timestamp.UnixMilli(), - Payload: &pb.Event_TaskEvent{TaskEvent: e}, - }) - case *pb.Ev_RoleEvent: - err = w.doWriteEvent(&pb.Event{ - Timestamp: timestamp.UnixMilli(), - Payload: &pb.Event_RoleEvent{RoleEvent: e}, - }) - case *pb.Ev_EnvironmentEvent: - err = w.doWriteEvent(&pb.Event{ - Timestamp: timestamp.UnixMilli(), - Payload: &pb.Event_EnvironmentEvent{EnvironmentEvent: e}, - }) - case *pb.Ev_CallEvent: - err = w.doWriteEvent(&pb.Event{ - Timestamp: timestamp.UnixMilli(), - Payload: &pb.Event_CallEvent{CallEvent: e}, - }) - case *pb.Ev_IntegratedServiceEvent: - err = w.doWriteEvent(&pb.Event{ - Timestamp: timestamp.UnixMilli(), - Payload: &pb.Event_IntegratedServiceEvent{IntegratedServiceEvent: e}, - }) + go func() { + var ( + err error + wrappedEvent *pb.Event + ) - default: - err = fmt.Errorf("unsupported event type") - } - if err != nil { + switch e := e.(type) { + case *pb.Ev_MetaEvent_CoreStart: + wrappedEvent = &pb.Event{ + Timestamp: timestamp.UnixMilli(), + Payload: &pb.Event_CoreStartEvent{CoreStartEvent: e}, + } + case *pb.Ev_MetaEvent_MesosHeartbeat: + wrappedEvent = &pb.Event{ + Timestamp: timestamp.UnixMilli(), + Payload: &pb.Event_MesosHeartbeatEvent{MesosHeartbeatEvent: e}, + } + case *pb.Ev_MetaEvent_FrameworkEvent: + wrappedEvent = &pb.Event{ + Timestamp: timestamp.UnixMilli(), + Payload: &pb.Event_FrameworkEvent{FrameworkEvent: e}, + } + case *pb.Ev_TaskEvent: + wrappedEvent = &pb.Event{ + Timestamp: timestamp.UnixMilli(), + Payload: &pb.Event_TaskEvent{TaskEvent: e}, + } + case *pb.Ev_RoleEvent: + wrappedEvent = &pb.Event{ + Timestamp: timestamp.UnixMilli(), + Payload: &pb.Event_RoleEvent{RoleEvent: e}, + } + case *pb.Ev_EnvironmentEvent: + wrappedEvent = &pb.Event{ + Timestamp: timestamp.UnixMilli(), + Payload: &pb.Event_EnvironmentEvent{EnvironmentEvent: e}, + } + case *pb.Ev_CallEvent: + wrappedEvent = &pb.Event{ + Timestamp: timestamp.UnixMilli(), + Payload: &pb.Event_CallEvent{CallEvent: e}, + } + case *pb.Ev_IntegratedServiceEvent: + wrappedEvent = &pb.Event{ + Timestamp: timestamp.UnixMilli(), + Payload: &pb.Event_IntegratedServiceEvent{IntegratedServiceEvent: e}, + } + } - log.WithField("event", e). - WithField("level", infologger.IL_Support). - Error(err.Error()) - } + if wrappedEvent == nil { + err = fmt.Errorf("unsupported event type") + } else { + err = w.doWriteEvent(wrappedEvent) + } + + if err != nil { + log.WithField("event", e). + WithField("level", infologger.IL_Support). + Error(err.Error()) + } + }() } func (w *Writer) doWriteEvent(e *pb.Event) error { From 6ffe6b6b9727c0fa259458151b9725363ca76877 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 21 Mar 2024 14:12:05 +0100 Subject: [PATCH 38/43] [core] Nullify odc Devices list before emitting events --- core/integration/odc/handlers.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/core/integration/odc/handlers.go b/core/integration/odc/handlers.go index 488f9019b..6f8862163 100644 --- a/core/integration/odc/handlers.go +++ b/core/integration/odc/handlers.go @@ -310,6 +310,9 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string return err } + // We nullify rep.Devices because the payload is too large to be included in the outgoing event + rep.Devices = nil + if odcErr := rep.Reply.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) @@ -442,6 +445,9 @@ func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string] return err } + // We nullify rep.Devices because the payload is too large to be included in the outgoing event + rep.Devices = nil + if odcErr := rep.Reply.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) @@ -829,6 +835,9 @@ func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]str return err } + // We nullify rep.Devices because the payload is too large to be included in the outgoing event + rep.Devices = nil + if odcErr := rep.Reply.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) @@ -955,6 +964,9 @@ func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string return err } + // We nullify rep.Devices because the payload is too large to be included in the outgoing event + rep.Devices = nil + if odcErr := rep.Reply.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) @@ -1525,6 +1537,9 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st return err } + // We nullify configureResponse.Devices because the payload is too large to be included in the outgoing event + configureResponse.Devices = nil + if odcErr := configureResponse.Reply.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) From d8785f00e9dd891bd5f5d34af16e39b019fbb10c Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 21 Mar 2024 15:01:08 +0100 Subject: [PATCH 39/43] [core] Trim down ODC events some more --- core/integration/odc/handlers.go | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/core/integration/odc/handlers.go b/core/integration/odc/handlers.go index 6f8862163..9555d0ed2 100644 --- a/core/integration/odc/handlers.go +++ b/core/integration/odc/handlers.go @@ -180,6 +180,9 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string return err } + // We nullify setPropertiesResponse.Hosts because the payload is too large to be included in the outgoing event + setPropertiesResponse.Hosts = nil + if odcErr := setPropertiesResponse.GetError(); odcErr != nil { log.WithField("partition", envId). WithError(err). @@ -310,8 +313,9 @@ func handleStart(ctx context.Context, odcClient *RpcClient, arguments map[string return err } - // We nullify rep.Devices because the payload is too large to be included in the outgoing event + // We nullify rep.Devices and rep.Reply.Hosts because the payload is too large to be included in the outgoing event rep.Devices = nil + rep.Reply.Hosts = nil if odcErr := rep.Reply.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) @@ -445,8 +449,9 @@ func handleStop(ctx context.Context, odcClient *RpcClient, arguments map[string] return err } - // We nullify rep.Devices because the payload is too large to be included in the outgoing event + // We nullify rep.Devices and rep.Reply.Hosts because the payload is too large to be included in the outgoing event rep.Devices = nil + rep.Reply.Hosts = nil if odcErr := rep.Reply.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) @@ -835,8 +840,9 @@ func doReset(ctx context.Context, odcClient *RpcClient, arguments map[string]str return err } - // We nullify rep.Devices because the payload is too large to be included in the outgoing event + // We nullify rep.Devices and rep.Reply.Hosts because the payload is too large to be included in the outgoing event rep.Devices = nil + rep.Reply.Hosts = nil if odcErr := rep.Reply.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) @@ -964,8 +970,9 @@ func doTerminate(ctx context.Context, odcClient *RpcClient, arguments map[string return err } - // We nullify rep.Devices because the payload is too large to be included in the outgoing event + // We nullify rep.Devices and rep.Reply.Hosts because the payload is too large to be included in the outgoing event rep.Devices = nil + rep.Reply.Hosts = nil if odcErr := rep.Reply.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) @@ -1089,6 +1096,9 @@ func doShutdown(ctx context.Context, odcClient *RpcClient, arguments map[string] return err } + // We nullify rep.Hosts because the payload is too large to be included in the outgoing event + shutdownResponse.Hosts = nil + if odcErr := shutdownResponse.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) @@ -1269,6 +1279,9 @@ func handleRun(ctx context.Context, odcClient *RpcClient, isManualXml bool, argu return errors.New(errMsg) } + // We nullify runResponse.Hosts because the payload is too large to be included in the outgoing event + runResponse.Hosts = nil + if odcErr := runResponse.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) } @@ -1406,6 +1419,9 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st return err } + // We nullify setPropertiesResponse.Hosts because the payload is too large to be included in the outgoing event + setPropertiesResponse.Hosts = nil + if odcErr := setPropertiesResponse.GetError(); odcErr != nil { log.WithField("partition", envId). WithError(err). @@ -1537,8 +1553,9 @@ func handleConfigure(ctx context.Context, odcClient *RpcClient, arguments map[st return err } - // We nullify configureResponse.Devices because the payload is too large to be included in the outgoing event + // We nullify configureResponse.Devices and configureResponse.Reply.Hosts because the payload is too large to be included in the outgoing event configureResponse.Devices = nil + configureResponse.Reply.Hosts = nil if odcErr := configureResponse.Reply.GetError(); odcErr != nil { err = fmt.Errorf("code %d from ODC: %s", odcErr.GetCode(), odcErr.GetMsg()) From e3a392f2e0369274c3aae2e4d4cc4b2bd2209044 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 21 Mar 2024 16:37:57 +0100 Subject: [PATCH 40/43] [core] Publish ODC partition state changes --- core/integration/odc/plugin.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/integration/odc/plugin.go b/core/integration/odc/plugin.go index 8bda15acc..5fd148fdd 100644 --- a/core/integration/odc/plugin.go +++ b/core/integration/odc/plugin.go @@ -259,12 +259,16 @@ func (p *Plugin) queryPartitionStatus() { Info("ODC Partition state changed") payload := map[string]interface{}{ - "odcStatus": &response, + "oldState": existingPartition.State, + "newState": partitionInfo.State, + "partitionId": partitionInfo.PartitionId.String(), + "ddsSessionId": partitionInfo.DdsSessionId, + "ddsSessionStatus": partitionInfo.DdsSessionStatus, } payloadJson, _ := json.Marshal(payload) the.EventWriterWithTopic(TOPIC).WriteEvent(&pb.Ev_IntegratedServiceEvent{ - Name: "odc.queryPartitionStatus", + Name: "odc.partitionStateChanged", EnvironmentId: id.String(), Payload: string(payloadJson[:]), }) From e3d59c1818ff510d95ce91b78c81d3027124205f Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 22 Mar 2024 11:30:41 +0100 Subject: [PATCH 41/43] [core] Document events.proto and change currentRunNumber field --- common/protos/events.pb.go | 343 ++++++++++++++++---------------- common/protos/events.proto | 52 ++--- core/environment/environment.go | 174 ++++++++-------- core/environment/eventStream.go | 10 +- 4 files changed, 289 insertions(+), 290 deletions(-) diff --git a/common/protos/events.pb.go b/common/protos/events.pb.go index 42cb4b0f3..1babe9d66 100644 --- a/common/protos/events.pb.go +++ b/common/protos/events.pb.go @@ -248,13 +248,13 @@ type Ev_EnvironmentEvent struct { EnvironmentId string `protobuf:"bytes,1,opt,name=environmentId,proto3" json:"environmentId,omitempty"` State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` - CurrentRunNumber uint32 `protobuf:"varint,3,opt,name=currentRunNumber,proto3" json:"currentRunNumber,omitempty"` + RunNumber uint32 `protobuf:"varint,3,opt,name=runNumber,proto3" json:"runNumber,omitempty"` // only when the environment is in the running state Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` - Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` // any additional message concerning the current state or transition Transition string `protobuf:"bytes,6,opt,name=transition,proto3" json:"transition,omitempty"` TransitionStep string `protobuf:"bytes,7,opt,name=transitionStep,proto3" json:"transitionStep,omitempty"` TransitionStatus OpStatus `protobuf:"varint,8,opt,name=transitionStatus,proto3,enum=events.OpStatus" json:"transitionStatus,omitempty"` - Vars map[string]string `protobuf:"bytes,9,rep,name=vars,proto3" json:"vars,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Vars map[string]string `protobuf:"bytes,9,rep,name=vars,proto3" json:"vars,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // consolidated environment variables at the root role of the environment } func (x *Ev_EnvironmentEvent) Reset() { @@ -303,9 +303,9 @@ func (x *Ev_EnvironmentEvent) GetState() string { return "" } -func (x *Ev_EnvironmentEvent) GetCurrentRunNumber() uint32 { +func (x *Ev_EnvironmentEvent) GetRunNumber() uint32 { if x != nil { - return x.CurrentRunNumber + return x.RunNumber } return 0 } @@ -428,15 +428,15 @@ type Ev_TaskEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Taskid string `protobuf:"bytes,2,opt,name=taskid,proto3" json:"taskid,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // task name, based on the name of the task class + Taskid string `protobuf:"bytes,2,opt,name=taskid,proto3" json:"taskid,omitempty"` // task id, unique + State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` // state machine state for this task + Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` // active/inactive etc. Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` - ClassName string `protobuf:"bytes,6,opt,name=className,proto3" json:"className,omitempty"` + ClassName string `protobuf:"bytes,6,opt,name=className,proto3" json:"className,omitempty"` // name of the task class from which this task was spawned Traits *Traits `protobuf:"bytes,7,opt,name=traits,proto3" json:"traits,omitempty"` EnvironmentId string `protobuf:"bytes,8,opt,name=environmentId,proto3" json:"environmentId,omitempty"` - Path string `protobuf:"bytes,9,opt,name=path,proto3" json:"path,omitempty"` + Path string `protobuf:"bytes,9,opt,name=path,proto3" json:"path,omitempty"` // path to the parent taskRole of this task within the environment } func (x *Ev_TaskEvent) Reset() { @@ -539,14 +539,14 @@ type Ev_CallEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Func string `protobuf:"bytes,1,opt,name=func,proto3" json:"func,omitempty"` - CallStatus OpStatus `protobuf:"varint,2,opt,name=callStatus,proto3,enum=events.OpStatus" json:"callStatus,omitempty"` - Return string `protobuf:"bytes,3,opt,name=return,proto3" json:"return,omitempty"` + Func string `protobuf:"bytes,1,opt,name=func,proto3" json:"func,omitempty"` // name of the function being called, within the workflow template context + CallStatus OpStatus `protobuf:"varint,2,opt,name=callStatus,proto3,enum=events.OpStatus" json:"callStatus,omitempty"` // progress or success/failure state of the call + Return string `protobuf:"bytes,3,opt,name=return,proto3" json:"return,omitempty"` // return value of the function Traits *Traits `protobuf:"bytes,4,opt,name=traits,proto3" json:"traits,omitempty"` - Output string `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"` - Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` + Output string `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"` // any additional output of the function + Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` // error value, if returned EnvironmentId string `protobuf:"bytes,7,opt,name=environmentId,proto3" json:"environmentId,omitempty"` - Path string `protobuf:"bytes,8,opt,name=path,proto3" json:"path,omitempty"` + Path string `protobuf:"bytes,8,opt,name=path,proto3" json:"path,omitempty"` // path to the parent callRole of this call within the environment } func (x *Ev_CallEvent) Reset() { @@ -642,10 +642,10 @@ type Ev_RoleEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - RolePath string `protobuf:"bytes,4,opt,name=rolePath,proto3" json:"rolePath,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // role name + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // active/inactive etc., derived from the state of child tasks, calls or other roles + State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` // state machine state for this role + RolePath string `protobuf:"bytes,4,opt,name=rolePath,proto3" json:"rolePath,omitempty"` // path to this role within the environment EnvironmentId string `protobuf:"bytes,5,opt,name=environmentId,proto3" json:"environmentId,omitempty"` } @@ -721,14 +721,14 @@ type Ev_IntegratedServiceEvent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` - OperationName string `protobuf:"bytes,3,opt,name=operationName,proto3" json:"operationName,omitempty"` - OperationStatus OpStatus `protobuf:"varint,4,opt,name=operationStatus,proto3,enum=events.OpStatus" json:"operationStatus,omitempty"` - OperationStep string `protobuf:"bytes,5,opt,name=operationStep,proto3" json:"operationStep,omitempty"` - OperationStepStatus OpStatus `protobuf:"varint,6,opt,name=operationStepStatus,proto3,enum=events.OpStatus" json:"operationStepStatus,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // name of the context, usually the path of the callRole that calls a given integrated service function e.g. readout-dataflow.dd-scheduler.terminate + Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` // error message, if any + OperationName string `protobuf:"bytes,3,opt,name=operationName,proto3" json:"operationName,omitempty"` // name of the operation, usually the name of the integrated service function being called e.g. ddsched.PartitionTerminate()" + OperationStatus OpStatus `protobuf:"varint,4,opt,name=operationStatus,proto3,enum=events.OpStatus" json:"operationStatus,omitempty"` // progress or success/failure state of the operation + OperationStep string `protobuf:"bytes,5,opt,name=operationStep,proto3" json:"operationStep,omitempty"` // if the operation has substeps, this is the name of the current substep, like an API call or polling phase + OperationStepStatus OpStatus `protobuf:"varint,6,opt,name=operationStepStatus,proto3,enum=events.OpStatus" json:"operationStepStatus,omitempty"` // progress or success/failure state of the current substep EnvironmentId string `protobuf:"bytes,7,opt,name=environmentId,proto3" json:"environmentId,omitempty"` - Payload string `protobuf:"bytes,8,opt,name=payload,proto3" json:"payload,omitempty"` + Payload string `protobuf:"bytes,8,opt,name=payload,proto3" json:"payload,omitempty"` // any additional payload, depending on the integrated service; there is no schema, it can even be the raw return structure of a remote API call } func (x *Ev_IntegratedServiceEvent) Reset() { @@ -1008,155 +1008,154 @@ var file_protos_events_proto_rawDesc = []byte{ 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0xa7, 0x03, 0x0a, 0x13, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x61, 0x67, 0x65, 0x22, 0x99, 0x03, 0x0a, 0x13, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x3c, 0x0a, 0x10, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x04, 0x76, 0x61, 0x72, - 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, - 0x76, 0x61, 0x72, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6e, 0x0a, - 0x06, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, 0x84, 0x02, - 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, - 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x22, 0xfc, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x61, 0x6c, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, 0x61, - 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x22, 0x92, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, - 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x61, - 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xd1, 0x02, 0x0a, 0x19, 0x45, 0x76, 0x5f, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x65, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x42, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, - 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x75, 0x6e, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x3c, 0x0a, + 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x04, 0x76, + 0x61, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x76, 0x61, 0x72, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x6e, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x61, 0x77, 0x61, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, + 0x84, 0x02, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, + 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, + 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x72, + 0x61, 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xf8, 0x04, 0x0a, - 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x54, - 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x63, - 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, 0x6c, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x5b, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, - 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, 0x72, 0x61, - 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x66, - 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, - 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, - 0x00, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, - 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, - 0x0b, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x65, 0x2a, 0x5d, 0x0a, 0x08, 0x4f, 0x70, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, - 0x07, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x4e, - 0x47, 0x4f, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x4f, 0x4e, 0x45, 0x5f, - 0x4f, 0x4b, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x49, 0x4d, - 0x45, 0x4f, 0x55, 0x54, 0x10, 0x05, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, 0x65, 0x72, - 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xfc, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x43, 0x61, + 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x12, 0x30, 0x0a, 0x0a, 0x63, + 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, + 0x72, 0x61, 0x69, 0x74, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x65, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x92, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, + 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, + 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xd1, 0x02, 0x0a, 0x19, 0x45, + 0x76, 0x5f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x12, 0x42, 0x0a, 0x13, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x4f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, + 0x0a, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xf8, + 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x34, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, + 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x74, 0x61, + 0x73, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, + 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x43, 0x61, 0x6c, + 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x4d, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x57, 0x0a, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x5f, 0x4d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, + 0x74, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x6f, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, + 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x76, 0x5f, 0x4d, 0x65, 0x74, + 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x65, 0x2a, 0x5d, 0x0a, 0x08, 0x4f, 0x70, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x12, + 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, + 0x4f, 0x4e, 0x47, 0x4f, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x4f, 0x4e, + 0x45, 0x5f, 0x4f, 0x4b, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x4f, 0x4e, 0x45, 0x5f, 0x54, + 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x05, 0x42, 0x53, 0x0a, 0x1f, 0x63, 0x68, 0x2e, 0x63, + 0x65, 0x72, 0x6e, 0x2e, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x6f, 0x32, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x30, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x4f, 0x32, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/common/protos/events.proto b/common/protos/events.proto index ee2ebb123..8be3e4f4f 100644 --- a/common/protos/events.proto +++ b/common/protos/events.proto @@ -54,13 +54,13 @@ message Ev_MetaEvent_FrameworkEvent { message Ev_EnvironmentEvent { string environmentId = 1; string state = 2; - uint32 currentRunNumber = 3; + uint32 runNumber = 3; // only when the environment is in the running state string error = 4; - string message = 5; + string message = 5; // any additional message concerning the current state or transition string transition = 6; string transitionStep = 7; OpStatus transitionStatus = 8; - map vars = 9; + map vars = 9; // consolidated environment variables at the root role of the environment } message Traits { @@ -71,45 +71,45 @@ message Traits { } message Ev_TaskEvent { - string name = 1; - string taskid = 2; - string state = 3; - string status = 4; + string name = 1; // task name, based on the name of the task class + string taskid = 2; // task id, unique + string state = 3; // state machine state for this task + string status = 4; // active/inactive etc. string hostname = 5; - string className = 6; + string className = 6; // name of the task class from which this task was spawned Traits traits = 7; string environmentId = 8; - string path = 9; + string path = 9; // path to the parent taskRole of this task within the environment } message Ev_CallEvent { - string func = 1; - OpStatus callStatus = 2; - string return = 3; + string func = 1; // name of the function being called, within the workflow template context + OpStatus callStatus = 2; // progress or success/failure state of the call + string return = 3; // return value of the function Traits traits = 4; - string output = 5; - string error = 6; + string output = 5; // any additional output of the function + string error = 6; // error value, if returned string environmentId = 7; - string path = 8; + string path = 8; // path to the parent callRole of this call within the environment } message Ev_RoleEvent { - string name = 1; - string status = 2; - string state = 3; - string rolePath = 4; + string name = 1; // role name + string status = 2; // active/inactive etc., derived from the state of child tasks, calls or other roles + string state = 3; // state machine state for this role + string rolePath = 4; // path to this role within the environment string environmentId = 5; } message Ev_IntegratedServiceEvent { - string name = 1; - string error = 2; - string operationName = 3; - OpStatus operationStatus = 4; - string operationStep = 5; - OpStatus operationStepStatus = 6; + string name = 1; // name of the context, usually the path of the callRole that calls a given integrated service function e.g. readout-dataflow.dd-scheduler.terminate + string error = 2; // error message, if any + string operationName = 3; // name of the operation, usually the name of the integrated service function being called e.g. ddsched.PartitionTerminate()" + OpStatus operationStatus = 4; // progress or success/failure state of the operation + string operationStep = 5; // if the operation has substeps, this is the name of the current substep, like an API call or polling phase + OpStatus operationStepStatus = 6; // progress or success/failure state of the current substep string environmentId = 7; - string payload = 8; + string payload = 8; // any additional payload, depending on the integrated service; there is no schema, it can even be the raw return structure of a remote API call } message Event { diff --git a/core/environment/environment.go b/core/environment/environment.go index 6e5e79101..95e41722b 100644 --- a/core/environment/environment.go +++ b/core/environment/environment.go @@ -157,12 +157,12 @@ func newEnvironment(userVars map[string]string, newId uid.ID) (env *Environment, trigger := fmt.Sprintf("before_%s", e.Event) the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.GetCurrentRunNumber(), - Transition: e.Event, - TransitionStep: trigger, - Message: "transition step starting", + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.GetCurrentRunNumber(), + Transition: e.Event, + TransitionStep: trigger, + Message: "transition step starting", }) // If the event is START_ACTIVITY, we set up and update variables relevant to plugins early on. @@ -251,25 +251,25 @@ func newEnvironment(userVars map[string]string, newId uid.ID) (env *Environment, } the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Error: errorMsg, - Message: "transition step finished", - Transition: e.Event, - TransitionStep: trigger, + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Error: errorMsg, + Message: "transition step finished", + Transition: e.Event, + TransitionStep: trigger, }) }, "leave_state": func(_ context.Context, e *fsm.Event) { trigger := fmt.Sprintf("leave_%s", e.Src) the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Transition: e.Event, - TransitionStep: trigger, - Message: "transition step starting", + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Transition: e.Event, + TransitionStep: trigger, + Message: "transition step starting", }) // We might leave RUNNING not only through STOP_ACTIVITY. In such cases we also need a run stop time. @@ -294,13 +294,13 @@ func newEnvironment(userVars map[string]string, newId uid.ID) (env *Environment, } the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Error: errorMsg, - Message: "transition step finished", - Transition: e.Event, - TransitionStep: trigger, + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Error: errorMsg, + Message: "transition step finished", + Transition: e.Event, + TransitionStep: trigger, }) if e.Err != nil { @@ -308,12 +308,12 @@ func newEnvironment(userVars map[string]string, newId uid.ID) (env *Environment, } the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Message: "transition step starting", - Transition: e.Event, - TransitionStep: fmt.Sprintf("tasks_%s", e.Event), + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Message: "transition step starting", + Transition: e.Event, + TransitionStep: fmt.Sprintf("tasks_%s", e.Event), }) env.handlerFunc()(e) @@ -323,13 +323,13 @@ func newEnvironment(userVars map[string]string, newId uid.ID) (env *Environment, } the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Error: errorMsg, - Message: "transition step finished", - Transition: e.Event, - TransitionStep: fmt.Sprintf("tasks_%s", e.Event), + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Error: errorMsg, + Message: "transition step finished", + Transition: e.Event, + TransitionStep: fmt.Sprintf("tasks_%s", e.Event), }) }, @@ -337,12 +337,12 @@ func newEnvironment(userVars map[string]string, newId uid.ID) (env *Environment, trigger := fmt.Sprintf("enter_%s", e.Dst) the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Transition: e.Event, - TransitionStep: trigger, - Message: "transition step starting", + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Transition: e.Event, + TransitionStep: trigger, + Message: "transition step starting", }) enterStateTimeMs = strconv.FormatInt(time.Now().UnixMilli(), 10) @@ -359,13 +359,13 @@ func newEnvironment(userVars map[string]string, newId uid.ID) (env *Environment, } the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Error: errorMsg, - Message: "transition step finished", - Transition: e.Event, - TransitionStep: trigger, + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Error: errorMsg, + Message: "transition step finished", + Transition: e.Event, + TransitionStep: trigger, }) if e.Err != nil { @@ -385,12 +385,12 @@ func newEnvironment(userVars map[string]string, newId uid.ID) (env *Environment, trigger := fmt.Sprintf("after_%s", e.Event) the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Transition: e.Event, - TransitionStep: trigger, - Message: "transition step starting", + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Transition: e.Event, + TransitionStep: trigger, + Message: "transition step starting", }) errHooks := env.handleHooks(env.Workflow(), trigger) @@ -445,13 +445,13 @@ func newEnvironment(userVars map[string]string, newId uid.ID) (env *Environment, } // publish transition step complete event the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Error: errorMsg, - Message: "transition step finished", - Transition: e.Event, - TransitionStep: trigger, + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Error: errorMsg, + Message: "transition step finished", + Transition: e.Event, + TransitionStep: trigger, }) }, }, @@ -762,22 +762,22 @@ func (env *Environment) runTasksAsHooks(hooksToTrigger task.Tasks) (errorMap map func (env *Environment) TryTransition(t Transition) (err error) { the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Message: "transition starting", - Transition: t.eventName(), + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Message: "transition starting", + Transition: t.eventName(), }) err = t.check() if err != nil { the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Error: err.Error(), - Message: "transition impossible", - Transition: t.eventName(), + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Error: err.Error(), + Message: "transition impossible", + Transition: t.eventName(), }) return } @@ -785,20 +785,20 @@ func (env *Environment) TryTransition(t Transition) (err error) { if err != nil { the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Error: err.Error(), - Message: "transition error", - Transition: t.eventName(), + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Error: err.Error(), + Message: "transition error", + Transition: t.eventName(), }) } else { the.EventWriterWithTopic(topic.Environment).WriteEvent(&pb.Ev_EnvironmentEvent{ - EnvironmentId: env.id.String(), - State: env.Sm.Current(), - CurrentRunNumber: env.currentRunNumber, - Message: "transition completed successfully", - Transition: t.eventName(), + EnvironmentId: env.id.String(), + State: env.Sm.Current(), + RunNumber: env.currentRunNumber, + Message: "transition completed successfully", + Transition: t.eventName(), }) } return diff --git a/core/environment/eventStream.go b/core/environment/eventStream.go index a23cdcaa7..d1075ec25 100644 --- a/core/environment/eventStream.go +++ b/core/environment/eventStream.go @@ -113,11 +113,11 @@ func (s *eventSub) Send(ev event.Event) { case *event.EnvironmentEvent: re := pb.Event_EnvironmentEvent{ EnvironmentEvent: &pb.Ev_EnvironmentEvent{ - EnvironmentId: typedEvent.GetName(), - State: typedEvent.GetState(), - CurrentRunNumber: typedEvent.GetRun(), - Error: typedEvent.GetError(), - Message: typedEvent.GetMessage(), + EnvironmentId: typedEvent.GetName(), + State: typedEvent.GetState(), + RunNumber: typedEvent.GetRun(), + Error: typedEvent.GetError(), + Message: typedEvent.GetMessage(), }, } data = pb.WrapEvent(&re) From 62dcce81472968c7f2beba2af36ae1df20b2cc6d Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 22 Mar 2024 11:32:52 +0100 Subject: [PATCH 42/43] [core] Document currently unused topics --- common/event/topic/topic.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/event/topic/topic.go b/common/event/topic/topic.go index 5acfcf867..ae2e2d262 100644 --- a/common/event/topic/topic.go +++ b/common/event/topic/topic.go @@ -30,9 +30,9 @@ const ( Separator = "." // used to separate topic segments Root Topic = "aliecs" - Run Topic = Root + Separator + "run" + Run Topic = Root + Separator + "run" // currently unused, intended for detailed run information e.g. SOR, SOEOR, EOEOR Environment Topic = Root + Separator + "environment" - Role Topic = Root + Separator + "role" + Role Topic = Root + Separator + "role" // currently unused, intended for role state change events Task Topic = Root + Separator + "task" Call Topic = Root + Separator + "call" From f7c27866e7ad37f06a4bcc23f0af7406f770e3ba Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 22 Mar 2024 11:54:50 +0100 Subject: [PATCH 43/43] [docs] Document Kafka producer functionality --- docs/kafka.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/docs/kafka.md b/docs/kafka.md index 8329d509a..0f59f9c0e 100644 --- a/docs/kafka.md +++ b/docs/kafka.md @@ -1,9 +1,60 @@ -# Kafka plugin +# Kafka producer functionality in AliECS + +## Kafka producer functionality in AliECS core + +As of 2024 the AliECS core integrates Kafka producer functionality independent of the plugin, with the goal of all consumers eventually migrating to this new interface. + +### Making sure that AliECS sends messages + +To enable the plugin, one should make sure that the following points are fullfiled. +* The consul instance includes coordinates to the list of kafka brokers. + Navigate to `o2/components/aliecs/ANY/any/settings` and make sure the following key value pairs are there: + ``` + kafkaEndpoints: + - "my-kafka-broker-1:9092" + - "my-kafka-broker-2:9092" + - "my-kafka-broker-3:9092" + ``` + Please restart the AliECS core if you modify this file. + +No further AliECS configuration is necessary. + +AliECS will create the necessary topics if they don't exist yet, in this case the very first message will be lost. +Once the topics exist, no further messages can be lost and no action is necessary. + +### Currently available topics + +See [events.proto](../common/protos/events.proto) for the protobuf definitions of the messages. + +* `aliecs.core` - core events that don't concern a specific environment or task +* `aliecs.environment` - events that concern an environment, e.g. environment state changes +* `aliecs.task` - events emitted by a task, e.g. task state changes +* `aliecs.call` - events emitted before and after the execution of a call +* `aliecs.integrated_service.dcs` - events emitted by the DCS integrated service +* `aliecs.integrated_service.ddsched` - events emitted by the DDSched integrated service +* `aliecs.integrated_service.odc` - events emitted by the ODC integrated service +* `aliecs.integrated_service.trg` - events emitted by the TRG integrated service + +### Decoding the messages + +Messages are encoded with protobuf, with the aforementioned [events.proto](../common/protos/events.proto) file defining the schema. +Integraed service messages include a payload portion that is usually JSON-encoded, and has no predefined schema. + +To generate the precompiled protobuf interface, run `make fdset`. +You can then consume the messages from a given topic using [https://github.com/sevagh/pq](https://github.com/sevagh/pq): +``` +$ FDSET_PATH=./fdset pq kafka aliecs.environment --brokers kafka-broker-hostname:9092 --msgtype events.Event +``` + +Adjust the topic name, fdset path, and broker endpoint as necessary, and append `--beginning` to consume past messages from the beginning of the topic. + + +## Legacy events: Kafka plugin The Kafka plugin in AliECS publishes updates messages about new states of environments and lists of environments in the RUNNING state. The messages are encoded with protobuf. -## Making sure that AliECS sends messages +### Making sure that AliECS sends messages To enable the plugin, one should make sure that the following points are fullfiled. * The consul instance includes coordinates to your kafka broker and enables the plugin. @@ -17,7 +68,7 @@ To enable the plugin, one should make sure that the following points are fullfil * Plugin is enabled for the new environments. Make sure that there is a `true` value set in the consul instance at the path `o2/runtime/aliecs/vars/kafka_enabled`. Alternatively, one can put `kafka_enabled : true` in the Advanced configuration panel in the AliECS GUI. -## Currently available topics +### Currently available topics As for today, AliECS publishes on the following types of topics: @@ -25,11 +76,11 @@ As for today, AliECS publishes on the following types of topics: * `aliecs.env_leave_state.` where `state` can be `STANDBY`, `DEPLOYED`, `CONFIGURED`, `RUNNING`, `ERROR`. For each topic, AliECS publishes a `NewStateNotification` message when any environment is about to leave the corresponding state. * `aliecs.env_list.` where `state` is only `RUNNING`. Each time there is an environment state change, AliECS publishes an `ActiveRunsList` message which contains a list of all environments which are currently in `RUNNING` state. -## Decoding the messages +### Decoding the messages Messages are encoded with protobuf. Please use [this](../core/integration/kafka/protos/kafka.proto) proto file to generate code which deserializes the messages. -## Getting Start of Run and End of Run notifications +### Getting Start of Run and End of Run notifications To get SOR and EOR notifications, please subscribe to the two corresponding topics: * `aliecs.env_state.RUNNING` for Start of Run @@ -37,7 +88,7 @@ To get SOR and EOR notifications, please subscribe to the two corresponding topi Both will provide `NewStateNotification` messages encoded with protobuf. Please note that the EOR message will still contain the RUNNING state, because it is sent just before the transition starts. -## Using Kafka debug tools +### Using Kafka debug tools One can use some Kafka command line tools to verify that a given setup works correctly. One should make sure to have Kafka installed on the machine used to run the tools.