You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@yunikorn.apache.org by pb...@apache.org on 2023/06/21 10:22:22 UTC

[yunikorn-scheduler-interface] branch master updated: [YUNIKORN-1820] update yunikorn-scheduler-interface & yunikorn-core (#96)

This is an automated email from the ASF dual-hosted git repository.

pbacsko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yunikorn-scheduler-interface.git


The following commit(s) were added to refs/heads/master by this push:
     new bcadd46  [YUNIKORN-1820] update yunikorn-scheduler-interface & yunikorn-core (#96)
bcadd46 is described below

commit bcadd461d27529e1bfba968d05fe8fffd54c0571
Author: Frank Yang <ya...@gmail.com>
AuthorDate: Wed Jun 21 12:22:04 2023 +0200

    [YUNIKORN-1820] update yunikorn-scheduler-interface & yunikorn-core (#96)
    
    Signed-off-by: Frank Yang <ya...@gmail.com>
    
    Closes: #96
    
    Signed-off-by: Peter Bacsko <pb...@cloudera.com>
---
 go.mod                  |   25 +-
 go.sum                  |   50 +-
 lib/go/Makefile         |   47 +-
 lib/go/si/si.pb.go      | 4579 ++++++++++++++++++++++++++++-------------------
 lib/go/si/si_grpc.pb.go |  349 ++++
 5 files changed, 3193 insertions(+), 1857 deletions(-)

diff --git a/go.mod b/go.mod
index f26dfcc..aca5abb 100644
--- a/go.mod
+++ b/go.mod
@@ -22,24 +22,23 @@ module github.com/apache/yunikorn-scheduler-interface
 go 1.20
 
 require (
-	github.com/golang/protobuf v1.2.0
-	golang.org/x/net v0.8.0
-	google.golang.org/grpc v1.23.1
-	google.golang.org/protobuf v1.26.0-rc.1
+	google.golang.org/grpc v1.56.0
+	google.golang.org/protobuf v1.30.0
 )
 
 require (
-	golang.org/x/sys v0.6.0 // indirect
-	golang.org/x/text v0.8.0 // indirect
-	google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 // indirect
+	github.com/golang/protobuf v1.5.3 // indirect
+	golang.org/x/net v0.10.0 // indirect
+	golang.org/x/sys v0.8.0 // indirect
+	golang.org/x/text v0.9.0 // indirect
+	google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
 )
 
 replace (
-	github.com/golang/protobuf => github.com/golang/protobuf v1.2.0
-	golang.org/x/crypto => golang.org/x/crypto v0.7.0
+	golang.org/x/crypto => golang.org/x/crypto v0.10.0
 	golang.org/x/lint => golang.org/x/lint v0.0.0-20210508222113-6edffad5e616
-	golang.org/x/net => golang.org/x/net v0.8.0
-	golang.org/x/sys => golang.org/x/sys v0.6.0
-	golang.org/x/text => golang.org/x/text v0.8.0
-	golang.org/x/tools => golang.org/x/tools v0.7.0
+	golang.org/x/net => golang.org/x/net v0.10.0
+	golang.org/x/sys => golang.org/x/sys v0.8.0
+	golang.org/x/text => golang.org/x/text v0.9.0
+	golang.org/x/tools => golang.org/x/tools v0.9.3
 )
diff --git a/go.sum b/go.sum
index eb9ce1f..2b46ce0 100644
--- a/go.sum
+++ b/go.sum
@@ -1,36 +1,20 @@
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
+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/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
-golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
-golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
-golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
+github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
+golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
+golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
-google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/grpc v1.23.1 h1:q4XQuHFC6I28BKZpo6IYyb3mNO+l7lSOxRuYTCiDfXk=
-google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/protobuf v1.26.0-rc.1 h1:7QnIQpGRHE5RnLKnESfDoxm2dTapTZua5a0kS0A+VXQ=
+google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A=
+google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
+google.golang.org/grpc v1.56.0 h1:+y7Bs8rtMd07LeXmL3NxcTLn7mUkbKZqEpPhMNkwJEE=
+google.golang.org/grpc v1.56.0/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
+google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
diff --git a/lib/go/Makefile b/lib/go/Makefile
index 30db7fb..15b89c7 100644
--- a/lib/go/Makefile
+++ b/lib/go/Makefile
@@ -35,7 +35,12 @@ export GO111MODULE
 
 # Only set PROTOC_VER if it has an empty value.
 ifeq (,$(strip $(PROTOC_VER)))
-PROTOC_VER := 3.20.1
+PROTOC_VER := 23.2
+endif
+
+# Only set PROTOC_GEN_GO_GRPC_VER if it has an empty value.
+ifeq (,$(strip $(PROTOC_GEN_GO_GRPC_VER)))
+PROTOC_GEN_GO_GRPC_VER := 1.3.0
 endif
 
 PROTOC_OS := $(shell uname -s | tr '[:upper:]' '[:lower:]')
@@ -53,8 +58,10 @@ PROTOC_ARCH := x86_32
 PROTOGEN_ARCH := 386
 else ifeq (arm64, $(PROTOC_ARCH))
 PROTOC_ARCH := aarch_64
+PROTOGEN_ARCH := arm64
 else ifeq (aarch64, $(PROTOC_ARCH))
 PROTOC_ARCH := aarch_64
+PROTOGEN_ARCH := arm64
 endif
 
 # Get and install the protoc binary.
@@ -70,16 +77,32 @@ $(PROTOC):
 		chmod 0755 $(PROTOC)
 	stat $@ > /dev/null 2>&1
 
+# Get and install the go plug-in for protoc.
+PROTOC_GEN_GO_TAR := protoc-gen-go.$(PROTOBUF_VERSION).$(PROTOGEN_OS).$(PROTOGEN_ARCH).tar.gz
+PROTOC_GEN_GO_URL := https://github.com/protocolbuffers/protobuf-go/releases/download/$(PROTOBUF_VERSION)/$(PROTOC_GEN_GO_TAR)
+PROTOC_GEN_GO     := $(PROTOC_BIN_DIR)/protoc-gen-go
+$(PROTOC_GEN_GO):
+	mkdir -p $(PROTOC_TMP_DIR) && \
+		curl -L $(PROTOC_GEN_GO_URL) -o $(PROTOC_TMP_DIR)/$(PROTOC_GEN_GO_TAR) && \
+		tar -C $(PROTOC_BIN_DIR) -xzvf $(PROTOC_TMP_DIR)/$(PROTOC_GEN_GO_TAR) protoc-gen-go && \
+		chmod 0755 $(PROTOC_GEN_GO)
+	stat $@ > /dev/null 2>&1
+
+# Get and install the protoc-gen-go-grpc for protoc.
+PROTOC_GEN_GO_GRPC_TAR := protoc-gen-go-grpc.v$(PROTOC_GEN_GO_GRPC_VER).$(PROTOGEN_OS).$(PROTOGEN_ARCH).tar.gz
+PROTOC_GEN_GO_GRPC_URL := https://github.com/grpc/grpc-go/releases/download/cmd/protoc-gen-go-grpc/v$(PROTOC_GEN_GO_GRPC_VER)/$(PROTOC_GEN_GO_GRPC_TAR)
+PROTOC_GEN_GO_GRPC     := $(PROTOC_BIN_DIR)/protoc-gen-go-grpc
+$(PROTOC_GEN_GO_GRPC):
+	mkdir -p $(PROTOC_TMP_DIR) && \
+		curl -L $(PROTOC_GEN_GO_GRPC_URL) -o $(PROTOC_TMP_DIR)/$(PROTOC_GEN_GO_GRPC_TAR) && \
+		tar -C $(PROTOC_BIN_DIR) -xzvf $(PROTOC_TMP_DIR)/$(PROTOC_GEN_GO_GRPC_TAR) ./protoc-gen-go-grpc && \
+		chmod 0755 $(PROTOC_GEN_GO_GRPC)
+	stat $@ > /dev/null 2>&1
+
 # Update PATH with the protoc bin dir which contains protoc and its plug-in
 export PATH := $(HERE)/$(PROTOC_BIN_DIR):$(PATH)
 
 # Generate the go language bindings.
-# Note: before updating gRPC to later versions (e.g v1.32+), need to use
-# --go_out=plugins=grpc option to generate the gRPC code, otherwise
-# the generated code will have compile issues. We need to explicitly install
-# an older version of protoc-gen-go to make sure the generated code is
-# compatible with the current version of gRPC. See more details in
-# https://issues.apache.org/jira/browse/YUNIKORN-815.
 SI_PROTO := ../../si.proto
 SI_PKG_SUB := si
 SI_BUILD := $(SI_PKG_SUB)/build
@@ -87,12 +110,13 @@ SI_GO := $(SI_PKG_SUB)/si.pb.go
 SI_GRPC_GO := $(SI_PKG_SUB)/si_grpc.pb.go
 GO_OUT := $(HERE)/$(SI_BUILD)
 SI_GO_TMP := $(SI_BUILD)/$(PKG_ROOT)/si.pb.go
-$(SI_GO_TMP): $(SI_PROTO) | $(PROTOC)
-	GOBIN=$(HERE)/$(PROTOC_BIN_DIR) go install github.com/golang/protobuf/protoc-gen-go@v1.2.0
+SI_GRPC_GO_TMP := $(SI_BUILD)/$(PKG_ROOT)/si_grpc.pb.go
+$(SI_GO_TMP): $(SI_PROTO) | $(PROTOC) $(PROTOC_GEN_GO) $(PROTOC_GEN_GO_GRPC)
 	ls -al $(PROTOC_BIN_DIR)
 	mkdir -p $(SI_BUILD) && \
 		(cd $(BASE) && $(HERE)/$(PROTOC) \
-		--go_out=plugins=grpc:$(GO_OUT) --go_opt=paths=source_relative \
+		--go_out=$(GO_OUT) --go_opt=paths=source_relative \
+		--go-grpc_out=$(GO_OUT) --go-grpc_opt=paths=source_relative \
 		$(PKG_ROOT)/$(<F))
 
 # Syntax check constants to make sure it passes
@@ -105,7 +129,8 @@ syntax_check:
 # Build the go language bindings from the generated proto.
 build: $(SI_GO_TMP) syntax_check
 	@cp -f $(SI_GO_TMP) $(SI_GO)
-	@echo "\nprotobuf go source generated:\n\t$(HERE)/$(SI_GO)\n"
+	@cp -f $(SI_GRPC_GO_TMP) $(SI_GRPC_GO)
+	@echo "\nprotobuf go source generated:\n\t$(HERE)/$(SI_GO)\n\t$(HERE)/$(SI_GRPC_GO)\n"
 
 # Simple clean of generated file language binding.
 .PHONY: clean
diff --git a/lib/go/si/si.pb.go b/lib/go/si/si.pb.go
index e63b359..59f9d01 100644
--- a/lib/go/si/si.pb.go
+++ b/lib/go/si/si.pb.go
@@ -1,59 +1,95 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//     http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Code generated by make build. DO NOT EDIT
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.30.0
+// 	protoc        v4.23.2
 // source: yunikorn-scheduler-interface/si.proto
 
-package si // import "lib/go/si"
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import descriptorpb "google.golang.org/protobuf/types/descriptorpb"
+package si
 
 import (
-	context "golang.org/x/net/context"
-	grpc "google.golang.org/grpc"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	descriptorpb "google.golang.org/protobuf/types/descriptorpb"
+	reflect "reflect"
+	sync "sync"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 TerminationType int32
 
 const (
-	TerminationType_UNKNOWN_TERMINATION_TYPE TerminationType = 0
-	TerminationType_STOPPED_BY_RM            TerminationType = 1
-	TerminationType_TIMEOUT                  TerminationType = 2
-	TerminationType_PREEMPTED_BY_SCHEDULER   TerminationType = 3
-	TerminationType_PLACEHOLDER_REPLACED     TerminationType = 4
+	TerminationType_UNKNOWN_TERMINATION_TYPE TerminationType = 0 //TerminationType not set
+	TerminationType_STOPPED_BY_RM            TerminationType = 1 // Stopped or killed by ResourceManager (created by RM)
+	TerminationType_TIMEOUT                  TerminationType = 2 // Timed out based on the executionTimeoutMilliSeconds (created by core)
+	TerminationType_PREEMPTED_BY_SCHEDULER   TerminationType = 3 // Preempted allocation by scheduler (created by core)
+	TerminationType_PLACEHOLDER_REPLACED     TerminationType = 4 // Placeholder allocation replaced by real allocation (created by core)
 )
 
-var TerminationType_name = map[int32]string{
-	0: "UNKNOWN_TERMINATION_TYPE",
-	1: "STOPPED_BY_RM",
-	2: "TIMEOUT",
-	3: "PREEMPTED_BY_SCHEDULER",
-	4: "PLACEHOLDER_REPLACED",
-}
-var TerminationType_value = map[string]int32{
-	"UNKNOWN_TERMINATION_TYPE": 0,
-	"STOPPED_BY_RM":            1,
-	"TIMEOUT":                  2,
-	"PREEMPTED_BY_SCHEDULER":   3,
-	"PLACEHOLDER_REPLACED":     4,
+// Enum value maps for TerminationType.
+var (
+	TerminationType_name = map[int32]string{
+		0: "UNKNOWN_TERMINATION_TYPE",
+		1: "STOPPED_BY_RM",
+		2: "TIMEOUT",
+		3: "PREEMPTED_BY_SCHEDULER",
+		4: "PLACEHOLDER_REPLACED",
+	}
+	TerminationType_value = map[string]int32{
+		"UNKNOWN_TERMINATION_TYPE": 0,
+		"STOPPED_BY_RM":            1,
+		"TIMEOUT":                  2,
+		"PREEMPTED_BY_SCHEDULER":   3,
+		"PLACEHOLDER_REPLACED":     4,
+	}
+)
+
+func (x TerminationType) Enum() *TerminationType {
+	p := new(TerminationType)
+	*p = x
+	return p
 }
 
 func (x TerminationType) String() string {
-	return proto.EnumName(TerminationType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (TerminationType) Descriptor() protoreflect.EnumDescriptor {
+	return file_yunikorn_scheduler_interface_si_proto_enumTypes[0].Descriptor()
+}
+
+func (TerminationType) Type() protoreflect.EnumType {
+	return &file_yunikorn_scheduler_interface_si_proto_enumTypes[0]
+}
+
+func (x TerminationType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use TerminationType.Descriptor instead.
 func (TerminationType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{0}
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{0}
 }
 
 // Action from RM
@@ -76,28 +112,51 @@ const (
 	NodeInfo_DRAIN_TO_SCHEDULABLE NodeInfo_ActionFromRM = 5
 )
 
-var NodeInfo_ActionFromRM_name = map[int32]string{
-	0: "UNKNOWN_ACTION_FROM_RM",
-	1: "CREATE",
-	2: "UPDATE",
-	3: "DRAIN_NODE",
-	4: "DECOMISSION",
-	5: "DRAIN_TO_SCHEDULABLE",
-}
-var NodeInfo_ActionFromRM_value = map[string]int32{
-	"UNKNOWN_ACTION_FROM_RM": 0,
-	"CREATE":                 1,
-	"UPDATE":                 2,
-	"DRAIN_NODE":             3,
-	"DECOMISSION":            4,
-	"DRAIN_TO_SCHEDULABLE":   5,
+// Enum value maps for NodeInfo_ActionFromRM.
+var (
+	NodeInfo_ActionFromRM_name = map[int32]string{
+		0: "UNKNOWN_ACTION_FROM_RM",
+		1: "CREATE",
+		2: "UPDATE",
+		3: "DRAIN_NODE",
+		4: "DECOMISSION",
+		5: "DRAIN_TO_SCHEDULABLE",
+	}
+	NodeInfo_ActionFromRM_value = map[string]int32{
+		"UNKNOWN_ACTION_FROM_RM": 0,
+		"CREATE":                 1,
+		"UPDATE":                 2,
+		"DRAIN_NODE":             3,
+		"DECOMISSION":            4,
+		"DRAIN_TO_SCHEDULABLE":   5,
+	}
+)
+
+func (x NodeInfo_ActionFromRM) Enum() *NodeInfo_ActionFromRM {
+	p := new(NodeInfo_ActionFromRM)
+	*p = x
+	return p
 }
 
 func (x NodeInfo_ActionFromRM) String() string {
-	return proto.EnumName(NodeInfo_ActionFromRM_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (NodeInfo_ActionFromRM) Descriptor() protoreflect.EnumDescriptor {
+	return file_yunikorn_scheduler_interface_si_proto_enumTypes[1].Descriptor()
+}
+
+func (NodeInfo_ActionFromRM) Type() protoreflect.EnumType {
+	return &file_yunikorn_scheduler_interface_si_proto_enumTypes[1]
 }
+
+func (x NodeInfo_ActionFromRM) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use NodeInfo_ActionFromRM.Descriptor instead.
 func (NodeInfo_ActionFromRM) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{24, 0}
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{24, 0}
 }
 
 // container scheduling states
@@ -117,26 +176,49 @@ const (
 	UpdateContainerSchedulingStateRequest_FAILED UpdateContainerSchedulingStateRequest_SchedulingState = 4
 )
 
-var UpdateContainerSchedulingStateRequest_SchedulingState_name = map[int32]string{
-	0: "UNKNOWN_SCHEDULING_STATE",
-	1: "SKIPPED",
-	2: "SCHEDULED",
-	3: "RESERVED",
-	4: "FAILED",
-}
-var UpdateContainerSchedulingStateRequest_SchedulingState_value = map[string]int32{
-	"UNKNOWN_SCHEDULING_STATE": 0,
-	"SKIPPED":                  1,
-	"SCHEDULED":                2,
-	"RESERVED":                 3,
-	"FAILED":                   4,
+// Enum value maps for UpdateContainerSchedulingStateRequest_SchedulingState.
+var (
+	UpdateContainerSchedulingStateRequest_SchedulingState_name = map[int32]string{
+		0: "UNKNOWN_SCHEDULING_STATE",
+		1: "SKIPPED",
+		2: "SCHEDULED",
+		3: "RESERVED",
+		4: "FAILED",
+	}
+	UpdateContainerSchedulingStateRequest_SchedulingState_value = map[string]int32{
+		"UNKNOWN_SCHEDULING_STATE": 0,
+		"SKIPPED":                  1,
+		"SCHEDULED":                2,
+		"RESERVED":                 3,
+		"FAILED":                   4,
+	}
+)
+
+func (x UpdateContainerSchedulingStateRequest_SchedulingState) Enum() *UpdateContainerSchedulingStateRequest_SchedulingState {
+	p := new(UpdateContainerSchedulingStateRequest_SchedulingState)
+	*p = x
+	return p
 }
 
 func (x UpdateContainerSchedulingStateRequest_SchedulingState) String() string {
-	return proto.EnumName(UpdateContainerSchedulingStateRequest_SchedulingState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (UpdateContainerSchedulingStateRequest_SchedulingState) Descriptor() protoreflect.EnumDescriptor {
+	return file_yunikorn_scheduler_interface_si_proto_enumTypes[2].Descriptor()
+}
+
+func (UpdateContainerSchedulingStateRequest_SchedulingState) Type() protoreflect.EnumType {
+	return &file_yunikorn_scheduler_interface_si_proto_enumTypes[2]
+}
+
+func (x UpdateContainerSchedulingStateRequest_SchedulingState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use UpdateContainerSchedulingStateRequest_SchedulingState.Descriptor instead.
 func (UpdateContainerSchedulingStateRequest_SchedulingState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{29, 0}
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{29, 0}
 }
 
 type EventRecord_Type int32
@@ -150,26 +232,49 @@ const (
 	EventRecord_QUEUE                    EventRecord_Type = 4
 )
 
-var EventRecord_Type_name = map[int32]string{
-	0: "UNKNOWN_EVENTRECORD_TYPE",
-	1: "REQUEST",
-	2: "APP",
-	3: "NODE",
-	4: "QUEUE",
-}
-var EventRecord_Type_value = map[string]int32{
-	"UNKNOWN_EVENTRECORD_TYPE": 0,
-	"REQUEST":                  1,
-	"APP":                      2,
-	"NODE":                     3,
-	"QUEUE":                    4,
+// Enum value maps for EventRecord_Type.
+var (
+	EventRecord_Type_name = map[int32]string{
+		0: "UNKNOWN_EVENTRECORD_TYPE",
+		1: "REQUEST",
+		2: "APP",
+		3: "NODE",
+		4: "QUEUE",
+	}
+	EventRecord_Type_value = map[string]int32{
+		"UNKNOWN_EVENTRECORD_TYPE": 0,
+		"REQUEST":                  1,
+		"APP":                      2,
+		"NODE":                     3,
+		"QUEUE":                    4,
+	}
+)
+
+func (x EventRecord_Type) Enum() *EventRecord_Type {
+	p := new(EventRecord_Type)
+	*p = x
+	return p
 }
 
 func (x EventRecord_Type) String() string {
-	return proto.EnumName(EventRecord_Type_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (EventRecord_Type) Descriptor() protoreflect.EnumDescriptor {
+	return file_yunikorn_scheduler_interface_si_proto_enumTypes[3].Descriptor()
+}
+
+func (EventRecord_Type) Type() protoreflect.EnumType {
+	return &file_yunikorn_scheduler_interface_si_proto_enumTypes[3]
+}
+
+func (x EventRecord_Type) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use EventRecord_Type.Descriptor instead.
 func (EventRecord_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{31, 0}
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{31, 0}
 }
 
 type EventRecord_ChangeType int32
@@ -181,143 +286,193 @@ const (
 	EventRecord_REMOVE EventRecord_ChangeType = 3
 )
 
-var EventRecord_ChangeType_name = map[int32]string{
-	0: "NONE",
-	1: "SET",
-	2: "ADD",
-	3: "REMOVE",
-}
-var EventRecord_ChangeType_value = map[string]int32{
-	"NONE":   0,
-	"SET":    1,
-	"ADD":    2,
-	"REMOVE": 3,
+// Enum value maps for EventRecord_ChangeType.
+var (
+	EventRecord_ChangeType_name = map[int32]string{
+		0: "NONE",
+		1: "SET",
+		2: "ADD",
+		3: "REMOVE",
+	}
+	EventRecord_ChangeType_value = map[string]int32{
+		"NONE":   0,
+		"SET":    1,
+		"ADD":    2,
+		"REMOVE": 3,
+	}
+)
+
+func (x EventRecord_ChangeType) Enum() *EventRecord_ChangeType {
+	p := new(EventRecord_ChangeType)
+	*p = x
+	return p
 }
 
 func (x EventRecord_ChangeType) String() string {
-	return proto.EnumName(EventRecord_ChangeType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (EventRecord_ChangeType) Descriptor() protoreflect.EnumDescriptor {
+	return file_yunikorn_scheduler_interface_si_proto_enumTypes[4].Descriptor()
 }
+
+func (EventRecord_ChangeType) Type() protoreflect.EnumType {
+	return &file_yunikorn_scheduler_interface_si_proto_enumTypes[4]
+}
+
+func (x EventRecord_ChangeType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventRecord_ChangeType.Descriptor instead.
 func (EventRecord_ChangeType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{31, 1}
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{31, 1}
 }
 
 type EventRecord_ChangeDetail int32
 
 const (
 	EventRecord_DETAILS_NONE      EventRecord_ChangeDetail = 0
-	EventRecord_REQUEST_CANCEL    EventRecord_ChangeDetail = 100
-	EventRecord_REQUEST_ALLOC     EventRecord_ChangeDetail = 101
-	EventRecord_REQUEST_TIMEOUT   EventRecord_ChangeDetail = 102
-	EventRecord_APP_ALLOC         EventRecord_ChangeDetail = 200
-	EventRecord_APP_REQUEST       EventRecord_ChangeDetail = 201
-	EventRecord_APP_REJECT        EventRecord_ChangeDetail = 202
-	EventRecord_APP_NEW           EventRecord_ChangeDetail = 203
-	EventRecord_APP_ACCEPTED      EventRecord_ChangeDetail = 204
-	EventRecord_APP_STARTING      EventRecord_ChangeDetail = 205
-	EventRecord_APP_RUNNING       EventRecord_ChangeDetail = 206
-	EventRecord_APP_COMPLETING    EventRecord_ChangeDetail = 207
-	EventRecord_APP_COMPLETED     EventRecord_ChangeDetail = 208
-	EventRecord_APP_FAILING       EventRecord_ChangeDetail = 209
-	EventRecord_APP_FAILED        EventRecord_ChangeDetail = 210
-	EventRecord_NODE_DECOMISSION  EventRecord_ChangeDetail = 300
-	EventRecord_NODE_READY        EventRecord_ChangeDetail = 301
-	EventRecord_NODE_SCHEDULABLE  EventRecord_ChangeDetail = 302
-	EventRecord_NODE_ALLOC        EventRecord_ChangeDetail = 303
-	EventRecord_NODE_CAPACITY     EventRecord_ChangeDetail = 304
-	EventRecord_NODE_OCCUPIED     EventRecord_ChangeDetail = 305
-	EventRecord_QUEUE_CONFIG      EventRecord_ChangeDetail = 400
-	EventRecord_QUEUE_DYNAMIC     EventRecord_ChangeDetail = 401
-	EventRecord_QUEUE_TYPE        EventRecord_ChangeDetail = 402
-	EventRecord_QUEUE_MAX         EventRecord_ChangeDetail = 403
-	EventRecord_QUEUE_GUARANTEED  EventRecord_ChangeDetail = 404
-	EventRecord_QUEUE_APP         EventRecord_ChangeDetail = 405
-	EventRecord_QUEUE_ALLOC       EventRecord_ChangeDetail = 406
-	EventRecord_ALLOC_CANCEL      EventRecord_ChangeDetail = 500
-	EventRecord_ALLOC_PREEMPT     EventRecord_ChangeDetail = 501
-	EventRecord_ALLOC_TIMEOUT     EventRecord_ChangeDetail = 502
-	EventRecord_ALLOC_REPLACED    EventRecord_ChangeDetail = 503
-	EventRecord_ALLOC_NODEREMOVED EventRecord_ChangeDetail = 504
+	EventRecord_REQUEST_CANCEL    EventRecord_ChangeDetail = 100 // Request cancelled by the RM
+	EventRecord_REQUEST_ALLOC     EventRecord_ChangeDetail = 101 // Request allocated
+	EventRecord_REQUEST_TIMEOUT   EventRecord_ChangeDetail = 102 // Request cancelled due to timeout
+	EventRecord_APP_ALLOC         EventRecord_ChangeDetail = 200 // Allocation changed
+	EventRecord_APP_REQUEST       EventRecord_ChangeDetail = 201 // Request changed
+	EventRecord_APP_REJECT        EventRecord_ChangeDetail = 202 // Application rejected on create
+	EventRecord_APP_NEW           EventRecord_ChangeDetail = 203 // Application added with state new
+	EventRecord_APP_ACCEPTED      EventRecord_ChangeDetail = 204 // State change to accepted
+	EventRecord_APP_STARTING      EventRecord_ChangeDetail = 205 // State change to starting
+	EventRecord_APP_RUNNING       EventRecord_ChangeDetail = 206 // State change to running
+	EventRecord_APP_COMPLETING    EventRecord_ChangeDetail = 207 // State change to completing
+	EventRecord_APP_COMPLETED     EventRecord_ChangeDetail = 208 // State change to completed
+	EventRecord_APP_FAILING       EventRecord_ChangeDetail = 209 // State change to failing
+	EventRecord_APP_FAILED        EventRecord_ChangeDetail = 210 // State change to failed
+	EventRecord_NODE_DECOMISSION  EventRecord_ChangeDetail = 300 // Node removal
+	EventRecord_NODE_READY        EventRecord_ChangeDetail = 301 // Node ready state change
+	EventRecord_NODE_SCHEDULABLE  EventRecord_ChangeDetail = 302 // Node schedulable state change (cordon)
+	EventRecord_NODE_ALLOC        EventRecord_ChangeDetail = 303 // Allocation changed
+	EventRecord_NODE_CAPACITY     EventRecord_ChangeDetail = 304 // Capacity changed
+	EventRecord_NODE_OCCUPIED     EventRecord_ChangeDetail = 305 // Occupied resource changed
+	EventRecord_QUEUE_CONFIG      EventRecord_ChangeDetail = 400 // Managed queue update or removal
+	EventRecord_QUEUE_DYNAMIC     EventRecord_ChangeDetail = 401 // Dynamic queue update or removal
+	EventRecord_QUEUE_TYPE        EventRecord_ChangeDetail = 402 // Queue type change
+	EventRecord_QUEUE_MAX         EventRecord_ChangeDetail = 403 // Max resource changed
+	EventRecord_QUEUE_GUARANTEED  EventRecord_ChangeDetail = 404 // Guaranteed resource changed
+	EventRecord_QUEUE_APP         EventRecord_ChangeDetail = 405 // Application changed
+	EventRecord_QUEUE_ALLOC       EventRecord_ChangeDetail = 406 // Allocation changed
+	EventRecord_ALLOC_CANCEL      EventRecord_ChangeDetail = 500 // Allocation cancelled by the RM
+	EventRecord_ALLOC_PREEMPT     EventRecord_ChangeDetail = 501 // Allocation preempted by the core
+	EventRecord_ALLOC_TIMEOUT     EventRecord_ChangeDetail = 502 // Allocation cancelled due to timeout
+	EventRecord_ALLOC_REPLACED    EventRecord_ChangeDetail = 503 // Allocation replacement (placeholder)
+	EventRecord_ALLOC_NODEREMOVED EventRecord_ChangeDetail = 504 // Allocation cancelled, node removal
+)
+
+// Enum value maps for EventRecord_ChangeDetail.
+var (
+	EventRecord_ChangeDetail_name = map[int32]string{
+		0:   "DETAILS_NONE",
+		100: "REQUEST_CANCEL",
+		101: "REQUEST_ALLOC",
+		102: "REQUEST_TIMEOUT",
+		200: "APP_ALLOC",
+		201: "APP_REQUEST",
+		202: "APP_REJECT",
+		203: "APP_NEW",
+		204: "APP_ACCEPTED",
+		205: "APP_STARTING",
+		206: "APP_RUNNING",
+		207: "APP_COMPLETING",
+		208: "APP_COMPLETED",
+		209: "APP_FAILING",
+		210: "APP_FAILED",
+		300: "NODE_DECOMISSION",
+		301: "NODE_READY",
+		302: "NODE_SCHEDULABLE",
+		303: "NODE_ALLOC",
+		304: "NODE_CAPACITY",
+		305: "NODE_OCCUPIED",
+		400: "QUEUE_CONFIG",
+		401: "QUEUE_DYNAMIC",
+		402: "QUEUE_TYPE",
+		403: "QUEUE_MAX",
+		404: "QUEUE_GUARANTEED",
+		405: "QUEUE_APP",
+		406: "QUEUE_ALLOC",
+		500: "ALLOC_CANCEL",
+		501: "ALLOC_PREEMPT",
+		502: "ALLOC_TIMEOUT",
+		503: "ALLOC_REPLACED",
+		504: "ALLOC_NODEREMOVED",
+	}
+	EventRecord_ChangeDetail_value = map[string]int32{
+		"DETAILS_NONE":      0,
+		"REQUEST_CANCEL":    100,
+		"REQUEST_ALLOC":     101,
+		"REQUEST_TIMEOUT":   102,
+		"APP_ALLOC":         200,
+		"APP_REQUEST":       201,
+		"APP_REJECT":        202,
+		"APP_NEW":           203,
+		"APP_ACCEPTED":      204,
+		"APP_STARTING":      205,
+		"APP_RUNNING":       206,
+		"APP_COMPLETING":    207,
+		"APP_COMPLETED":     208,
+		"APP_FAILING":       209,
+		"APP_FAILED":        210,
+		"NODE_DECOMISSION":  300,
+		"NODE_READY":        301,
+		"NODE_SCHEDULABLE":  302,
+		"NODE_ALLOC":        303,
+		"NODE_CAPACITY":     304,
+		"NODE_OCCUPIED":     305,
+		"QUEUE_CONFIG":      400,
+		"QUEUE_DYNAMIC":     401,
+		"QUEUE_TYPE":        402,
+		"QUEUE_MAX":         403,
+		"QUEUE_GUARANTEED":  404,
+		"QUEUE_APP":         405,
+		"QUEUE_ALLOC":       406,
+		"ALLOC_CANCEL":      500,
+		"ALLOC_PREEMPT":     501,
+		"ALLOC_TIMEOUT":     502,
+		"ALLOC_REPLACED":    503,
+		"ALLOC_NODEREMOVED": 504,
+	}
 )
 
-var EventRecord_ChangeDetail_name = map[int32]string{
-	0:   "DETAILS_NONE",
-	100: "REQUEST_CANCEL",
-	101: "REQUEST_ALLOC",
-	102: "REQUEST_TIMEOUT",
-	200: "APP_ALLOC",
-	201: "APP_REQUEST",
-	202: "APP_REJECT",
-	203: "APP_NEW",
-	204: "APP_ACCEPTED",
-	205: "APP_STARTING",
-	206: "APP_RUNNING",
-	207: "APP_COMPLETING",
-	208: "APP_COMPLETED",
-	209: "APP_FAILING",
-	210: "APP_FAILED",
-	300: "NODE_DECOMISSION",
-	301: "NODE_READY",
-	302: "NODE_SCHEDULABLE",
-	303: "NODE_ALLOC",
-	304: "NODE_CAPACITY",
-	305: "NODE_OCCUPIED",
-	400: "QUEUE_CONFIG",
-	401: "QUEUE_DYNAMIC",
-	402: "QUEUE_TYPE",
-	403: "QUEUE_MAX",
-	404: "QUEUE_GUARANTEED",
-	405: "QUEUE_APP",
-	406: "QUEUE_ALLOC",
-	500: "ALLOC_CANCEL",
-	501: "ALLOC_PREEMPT",
-	502: "ALLOC_TIMEOUT",
-	503: "ALLOC_REPLACED",
-	504: "ALLOC_NODEREMOVED",
-}
-var EventRecord_ChangeDetail_value = map[string]int32{
-	"DETAILS_NONE":      0,
-	"REQUEST_CANCEL":    100,
-	"REQUEST_ALLOC":     101,
-	"REQUEST_TIMEOUT":   102,
-	"APP_ALLOC":         200,
-	"APP_REQUEST":       201,
-	"APP_REJECT":        202,
-	"APP_NEW":           203,
-	"APP_ACCEPTED":      204,
-	"APP_STARTING":      205,
-	"APP_RUNNING":       206,
-	"APP_COMPLETING":    207,
-	"APP_COMPLETED":     208,
-	"APP_FAILING":       209,
-	"APP_FAILED":        210,
-	"NODE_DECOMISSION":  300,
-	"NODE_READY":        301,
-	"NODE_SCHEDULABLE":  302,
-	"NODE_ALLOC":        303,
-	"NODE_CAPACITY":     304,
-	"NODE_OCCUPIED":     305,
-	"QUEUE_CONFIG":      400,
-	"QUEUE_DYNAMIC":     401,
-	"QUEUE_TYPE":        402,
-	"QUEUE_MAX":         403,
-	"QUEUE_GUARANTEED":  404,
-	"QUEUE_APP":         405,
-	"QUEUE_ALLOC":       406,
-	"ALLOC_CANCEL":      500,
-	"ALLOC_PREEMPT":     501,
-	"ALLOC_TIMEOUT":     502,
-	"ALLOC_REPLACED":    503,
-	"ALLOC_NODEREMOVED": 504,
+func (x EventRecord_ChangeDetail) Enum() *EventRecord_ChangeDetail {
+	p := new(EventRecord_ChangeDetail)
+	*p = x
+	return p
 }
 
 func (x EventRecord_ChangeDetail) String() string {
-	return proto.EnumName(EventRecord_ChangeDetail_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
+
+func (EventRecord_ChangeDetail) Descriptor() protoreflect.EnumDescriptor {
+	return file_yunikorn_scheduler_interface_si_proto_enumTypes[5].Descriptor()
+}
+
+func (EventRecord_ChangeDetail) Type() protoreflect.EnumType {
+	return &file_yunikorn_scheduler_interface_si_proto_enumTypes[5]
+}
+
+func (x EventRecord_ChangeDetail) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventRecord_ChangeDetail.Descriptor instead.
 func (EventRecord_ChangeDetail) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{31, 2}
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{31, 2}
 }
 
 type RegisterResourceManagerRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// An ID which can uniquely identify a RM **cluster**. (For example, if a RM cluster has multiple manager instances for HA purpose, they should use the same information when do registration).
 	// If RM register with the same ID, all previous scheduling state in memory will be cleaned up, and expect RM report full scheduling state after registration.
 	RmID string `protobuf:"bytes,1,opt,name=rmID,proto3" json:"rmID,omitempty"`
@@ -332,273 +487,317 @@ type RegisterResourceManagerRequest struct {
 	// Pass the serialized configuration for this policyGroup to core.
 	Config string `protobuf:"bytes,5,opt,name=config,proto3" json:"config,omitempty"`
 	// Additional configuration key/value pairs for configuration not related to the policyGroup.
-	ExtraConfig          map[string]string `protobuf:"bytes,6,rep,name=extraConfig,proto3" json:"extraConfig,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	ExtraConfig map[string]string `protobuf:"bytes,6,rep,name=extraConfig,proto3" json:"extraConfig,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 }
 
-func (m *RegisterResourceManagerRequest) Reset()         { *m = RegisterResourceManagerRequest{} }
-func (m *RegisterResourceManagerRequest) String() string { return proto.CompactTextString(m) }
-func (*RegisterResourceManagerRequest) ProtoMessage()    {}
-func (*RegisterResourceManagerRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{0}
-}
-func (m *RegisterResourceManagerRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RegisterResourceManagerRequest.Unmarshal(m, b)
-}
-func (m *RegisterResourceManagerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RegisterResourceManagerRequest.Marshal(b, m, deterministic)
-}
-func (dst *RegisterResourceManagerRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RegisterResourceManagerRequest.Merge(dst, src)
+func (x *RegisterResourceManagerRequest) Reset() {
+	*x = RegisterResourceManagerRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *RegisterResourceManagerRequest) XXX_Size() int {
-	return xxx_messageInfo_RegisterResourceManagerRequest.Size(m)
+
+func (x *RegisterResourceManagerRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *RegisterResourceManagerRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_RegisterResourceManagerRequest.DiscardUnknown(m)
+
+func (*RegisterResourceManagerRequest) ProtoMessage() {}
+
+func (x *RegisterResourceManagerRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_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)
 }
 
-var xxx_messageInfo_RegisterResourceManagerRequest proto.InternalMessageInfo
+// Deprecated: Use RegisterResourceManagerRequest.ProtoReflect.Descriptor instead.
+func (*RegisterResourceManagerRequest) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{0}
+}
 
-func (m *RegisterResourceManagerRequest) GetRmID() string {
-	if m != nil {
-		return m.RmID
+func (x *RegisterResourceManagerRequest) GetRmID() string {
+	if x != nil {
+		return x.RmID
 	}
 	return ""
 }
 
-func (m *RegisterResourceManagerRequest) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *RegisterResourceManagerRequest) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *RegisterResourceManagerRequest) GetPolicyGroup() string {
-	if m != nil {
-		return m.PolicyGroup
+func (x *RegisterResourceManagerRequest) GetPolicyGroup() string {
+	if x != nil {
+		return x.PolicyGroup
 	}
 	return ""
 }
 
-func (m *RegisterResourceManagerRequest) GetBuildInfo() map[string]string {
-	if m != nil {
-		return m.BuildInfo
+func (x *RegisterResourceManagerRequest) GetBuildInfo() map[string]string {
+	if x != nil {
+		return x.BuildInfo
 	}
 	return nil
 }
 
-func (m *RegisterResourceManagerRequest) GetConfig() string {
-	if m != nil {
-		return m.Config
+func (x *RegisterResourceManagerRequest) GetConfig() string {
+	if x != nil {
+		return x.Config
 	}
 	return ""
 }
 
-func (m *RegisterResourceManagerRequest) GetExtraConfig() map[string]string {
-	if m != nil {
-		return m.ExtraConfig
+func (x *RegisterResourceManagerRequest) GetExtraConfig() map[string]string {
+	if x != nil {
+		return x.ExtraConfig
 	}
 	return nil
 }
 
 // Upon success, scheduler returns RegisterResourceManagerResponse to RM, otherwise RM receives exception.
 type RegisterResourceManagerResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *RegisterResourceManagerResponse) Reset()         { *m = RegisterResourceManagerResponse{} }
-func (m *RegisterResourceManagerResponse) String() string { return proto.CompactTextString(m) }
-func (*RegisterResourceManagerResponse) ProtoMessage()    {}
-func (*RegisterResourceManagerResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{1}
-}
-func (m *RegisterResourceManagerResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RegisterResourceManagerResponse.Unmarshal(m, b)
-}
-func (m *RegisterResourceManagerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RegisterResourceManagerResponse.Marshal(b, m, deterministic)
-}
-func (dst *RegisterResourceManagerResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RegisterResourceManagerResponse.Merge(dst, src)
+func (x *RegisterResourceManagerResponse) Reset() {
+	*x = RegisterResourceManagerResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *RegisterResourceManagerResponse) XXX_Size() int {
-	return xxx_messageInfo_RegisterResourceManagerResponse.Size(m)
+
+func (x *RegisterResourceManagerResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *RegisterResourceManagerResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_RegisterResourceManagerResponse.DiscardUnknown(m)
+
+func (*RegisterResourceManagerResponse) ProtoMessage() {}
+
+func (x *RegisterResourceManagerResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_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)
 }
 
-var xxx_messageInfo_RegisterResourceManagerResponse proto.InternalMessageInfo
+// Deprecated: Use RegisterResourceManagerResponse.ProtoReflect.Descriptor instead.
+func (*RegisterResourceManagerResponse) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{1}
+}
 
 type AllocationRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// New allocation requests or replace existing allocation request (if allocationID is same)
 	Asks []*AllocationAsk `protobuf:"bytes,1,rep,name=asks,proto3" json:"asks,omitempty"`
 	// Allocations can be released.
 	Releases *AllocationReleasesRequest `protobuf:"bytes,2,opt,name=releases,proto3" json:"releases,omitempty"`
 	// ID of RM, this will be used to identify which RM of the request comes from.
-	RmID                 string   `protobuf:"bytes,3,opt,name=rmID,proto3" json:"rmID,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	RmID string `protobuf:"bytes,3,opt,name=rmID,proto3" json:"rmID,omitempty"`
 }
 
-func (m *AllocationRequest) Reset()         { *m = AllocationRequest{} }
-func (m *AllocationRequest) String() string { return proto.CompactTextString(m) }
-func (*AllocationRequest) ProtoMessage()    {}
-func (*AllocationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{2}
-}
-func (m *AllocationRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AllocationRequest.Unmarshal(m, b)
-}
-func (m *AllocationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AllocationRequest.Marshal(b, m, deterministic)
-}
-func (dst *AllocationRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AllocationRequest.Merge(dst, src)
+func (x *AllocationRequest) Reset() {
+	*x = AllocationRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AllocationRequest) XXX_Size() int {
-	return xxx_messageInfo_AllocationRequest.Size(m)
+
+func (x *AllocationRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AllocationRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_AllocationRequest.DiscardUnknown(m)
+
+func (*AllocationRequest) ProtoMessage() {}
+
+func (x *AllocationRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_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)
 }
 
-var xxx_messageInfo_AllocationRequest proto.InternalMessageInfo
+// Deprecated: Use AllocationRequest.ProtoReflect.Descriptor instead.
+func (*AllocationRequest) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *AllocationRequest) GetAsks() []*AllocationAsk {
-	if m != nil {
-		return m.Asks
+func (x *AllocationRequest) GetAsks() []*AllocationAsk {
+	if x != nil {
+		return x.Asks
 	}
 	return nil
 }
 
-func (m *AllocationRequest) GetReleases() *AllocationReleasesRequest {
-	if m != nil {
-		return m.Releases
+func (x *AllocationRequest) GetReleases() *AllocationReleasesRequest {
+	if x != nil {
+		return x.Releases
 	}
 	return nil
 }
 
-func (m *AllocationRequest) GetRmID() string {
-	if m != nil {
-		return m.RmID
+func (x *AllocationRequest) GetRmID() string {
+	if x != nil {
+		return x.RmID
 	}
 	return ""
 }
 
 type ApplicationRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// RM should explicitly add application when allocation request also explictly belongs to application.
 	// This is optional if allocation request doesn't belong to a application. (Independent allocation)
 	New []*AddApplicationRequest `protobuf:"bytes,1,rep,name=new,proto3" json:"new,omitempty"`
 	// RM can also remove applications, all allocation/allocation requests associated with the application will be removed
 	Remove []*RemoveApplicationRequest `protobuf:"bytes,2,rep,name=remove,proto3" json:"remove,omitempty"`
 	// ID of RM, this will be used to identify which RM of the request comes from.
-	RmID                 string   `protobuf:"bytes,3,opt,name=rmID,proto3" json:"rmID,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	RmID string `protobuf:"bytes,3,opt,name=rmID,proto3" json:"rmID,omitempty"`
 }
 
-func (m *ApplicationRequest) Reset()         { *m = ApplicationRequest{} }
-func (m *ApplicationRequest) String() string { return proto.CompactTextString(m) }
-func (*ApplicationRequest) ProtoMessage()    {}
-func (*ApplicationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{3}
-}
-func (m *ApplicationRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ApplicationRequest.Unmarshal(m, b)
-}
-func (m *ApplicationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ApplicationRequest.Marshal(b, m, deterministic)
-}
-func (dst *ApplicationRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ApplicationRequest.Merge(dst, src)
+func (x *ApplicationRequest) Reset() {
+	*x = ApplicationRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ApplicationRequest) XXX_Size() int {
-	return xxx_messageInfo_ApplicationRequest.Size(m)
+
+func (x *ApplicationRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ApplicationRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ApplicationRequest.DiscardUnknown(m)
+
+func (*ApplicationRequest) ProtoMessage() {}
+
+func (x *ApplicationRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_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)
 }
 
-var xxx_messageInfo_ApplicationRequest proto.InternalMessageInfo
+// Deprecated: Use ApplicationRequest.ProtoReflect.Descriptor instead.
+func (*ApplicationRequest) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *ApplicationRequest) GetNew() []*AddApplicationRequest {
-	if m != nil {
-		return m.New
+func (x *ApplicationRequest) GetNew() []*AddApplicationRequest {
+	if x != nil {
+		return x.New
 	}
 	return nil
 }
 
-func (m *ApplicationRequest) GetRemove() []*RemoveApplicationRequest {
-	if m != nil {
-		return m.Remove
+func (x *ApplicationRequest) GetRemove() []*RemoveApplicationRequest {
+	if x != nil {
+		return x.Remove
 	}
 	return nil
 }
 
-func (m *ApplicationRequest) GetRmID() string {
-	if m != nil {
-		return m.RmID
+func (x *ApplicationRequest) GetRmID() string {
+	if x != nil {
+		return x.RmID
 	}
 	return ""
 }
 
 type NodeRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// New node can be scheduled. If a node is notified to be "unscheduable", it needs to be part of this field as well.
 	Nodes []*NodeInfo `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"`
 	// ID of RM, this will be used to identify which RM of the request comes from.
-	RmID                 string   `protobuf:"bytes,2,opt,name=rmID,proto3" json:"rmID,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	RmID string `protobuf:"bytes,2,opt,name=rmID,proto3" json:"rmID,omitempty"`
 }
 
-func (m *NodeRequest) Reset()         { *m = NodeRequest{} }
-func (m *NodeRequest) String() string { return proto.CompactTextString(m) }
-func (*NodeRequest) ProtoMessage()    {}
-func (*NodeRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{4}
-}
-func (m *NodeRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_NodeRequest.Unmarshal(m, b)
-}
-func (m *NodeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_NodeRequest.Marshal(b, m, deterministic)
-}
-func (dst *NodeRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NodeRequest.Merge(dst, src)
+func (x *NodeRequest) Reset() {
+	*x = NodeRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *NodeRequest) XXX_Size() int {
-	return xxx_messageInfo_NodeRequest.Size(m)
+
+func (x *NodeRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *NodeRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_NodeRequest.DiscardUnknown(m)
+
+func (*NodeRequest) ProtoMessage() {}
+
+func (x *NodeRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_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)
 }
 
-var xxx_messageInfo_NodeRequest proto.InternalMessageInfo
+// Deprecated: Use NodeRequest.ProtoReflect.Descriptor instead.
+func (*NodeRequest) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{4}
+}
 
-func (m *NodeRequest) GetNodes() []*NodeInfo {
-	if m != nil {
-		return m.Nodes
+func (x *NodeRequest) GetNodes() []*NodeInfo {
+	if x != nil {
+		return x.Nodes
 	}
 	return nil
 }
 
-func (m *NodeRequest) GetRmID() string {
-	if m != nil {
-		return m.RmID
+func (x *NodeRequest) GetRmID() string {
+	if x != nil {
+		return x.RmID
 	}
 	return ""
 }
 
 type AllocationResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// New allocations
 	New []*Allocation `protobuf:"bytes,1,rep,name=new,proto3" json:"new,omitempty"`
 	// Released allocations, this could be either ack from scheduler when RM asks to terminate some allocations.
@@ -607,170 +806,197 @@ type AllocationResponse struct {
 	// Released allocation asks(placeholder), when the placeholder allocation times out
 	ReleasedAsks []*AllocationAskRelease `protobuf:"bytes,3,rep,name=releasedAsks,proto3" json:"releasedAsks,omitempty"`
 	// Rejected allocation requests
-	Rejected             []*RejectedAllocationAsk `protobuf:"bytes,4,rep,name=rejected,proto3" json:"rejected,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	Rejected []*RejectedAllocationAsk `protobuf:"bytes,4,rep,name=rejected,proto3" json:"rejected,omitempty"`
 }
 
-func (m *AllocationResponse) Reset()         { *m = AllocationResponse{} }
-func (m *AllocationResponse) String() string { return proto.CompactTextString(m) }
-func (*AllocationResponse) ProtoMessage()    {}
-func (*AllocationResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{5}
-}
-func (m *AllocationResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AllocationResponse.Unmarshal(m, b)
-}
-func (m *AllocationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AllocationResponse.Marshal(b, m, deterministic)
-}
-func (dst *AllocationResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AllocationResponse.Merge(dst, src)
+func (x *AllocationResponse) Reset() {
+	*x = AllocationResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AllocationResponse) XXX_Size() int {
-	return xxx_messageInfo_AllocationResponse.Size(m)
+
+func (x *AllocationResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AllocationResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_AllocationResponse.DiscardUnknown(m)
+
+func (*AllocationResponse) ProtoMessage() {}
+
+func (x *AllocationResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_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)
 }
 
-var xxx_messageInfo_AllocationResponse proto.InternalMessageInfo
+// Deprecated: Use AllocationResponse.ProtoReflect.Descriptor instead.
+func (*AllocationResponse) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{5}
+}
 
-func (m *AllocationResponse) GetNew() []*Allocation {
-	if m != nil {
-		return m.New
+func (x *AllocationResponse) GetNew() []*Allocation {
+	if x != nil {
+		return x.New
 	}
 	return nil
 }
 
-func (m *AllocationResponse) GetReleased() []*AllocationRelease {
-	if m != nil {
-		return m.Released
+func (x *AllocationResponse) GetReleased() []*AllocationRelease {
+	if x != nil {
+		return x.Released
 	}
 	return nil
 }
 
-func (m *AllocationResponse) GetReleasedAsks() []*AllocationAskRelease {
-	if m != nil {
-		return m.ReleasedAsks
+func (x *AllocationResponse) GetReleasedAsks() []*AllocationAskRelease {
+	if x != nil {
+		return x.ReleasedAsks
 	}
 	return nil
 }
 
-func (m *AllocationResponse) GetRejected() []*RejectedAllocationAsk {
-	if m != nil {
-		return m.Rejected
+func (x *AllocationResponse) GetRejected() []*RejectedAllocationAsk {
+	if x != nil {
+		return x.Rejected
 	}
 	return nil
 }
 
 type ApplicationResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Rejected Applications
 	Rejected []*RejectedApplication `protobuf:"bytes,1,rep,name=rejected,proto3" json:"rejected,omitempty"`
 	// Accepted Applications
 	Accepted []*AcceptedApplication `protobuf:"bytes,2,rep,name=accepted,proto3" json:"accepted,omitempty"`
 	// Updated Applications
-	Updated              []*UpdatedApplication `protobuf:"bytes,3,rep,name=updated,proto3" json:"updated,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	Updated []*UpdatedApplication `protobuf:"bytes,3,rep,name=updated,proto3" json:"updated,omitempty"`
 }
 
-func (m *ApplicationResponse) Reset()         { *m = ApplicationResponse{} }
-func (m *ApplicationResponse) String() string { return proto.CompactTextString(m) }
-func (*ApplicationResponse) ProtoMessage()    {}
-func (*ApplicationResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{6}
-}
-func (m *ApplicationResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ApplicationResponse.Unmarshal(m, b)
-}
-func (m *ApplicationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ApplicationResponse.Marshal(b, m, deterministic)
-}
-func (dst *ApplicationResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ApplicationResponse.Merge(dst, src)
+func (x *ApplicationResponse) Reset() {
+	*x = ApplicationResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ApplicationResponse) XXX_Size() int {
-	return xxx_messageInfo_ApplicationResponse.Size(m)
+
+func (x *ApplicationResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ApplicationResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ApplicationResponse.DiscardUnknown(m)
+
+func (*ApplicationResponse) ProtoMessage() {}
+
+func (x *ApplicationResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_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)
 }
 
-var xxx_messageInfo_ApplicationResponse proto.InternalMessageInfo
+// Deprecated: Use ApplicationResponse.ProtoReflect.Descriptor instead.
+func (*ApplicationResponse) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{6}
+}
 
-func (m *ApplicationResponse) GetRejected() []*RejectedApplication {
-	if m != nil {
-		return m.Rejected
+func (x *ApplicationResponse) GetRejected() []*RejectedApplication {
+	if x != nil {
+		return x.Rejected
 	}
 	return nil
 }
 
-func (m *ApplicationResponse) GetAccepted() []*AcceptedApplication {
-	if m != nil {
-		return m.Accepted
+func (x *ApplicationResponse) GetAccepted() []*AcceptedApplication {
+	if x != nil {
+		return x.Accepted
 	}
 	return nil
 }
 
-func (m *ApplicationResponse) GetUpdated() []*UpdatedApplication {
-	if m != nil {
-		return m.Updated
+func (x *ApplicationResponse) GetUpdated() []*UpdatedApplication {
+	if x != nil {
+		return x.Updated
 	}
 	return nil
 }
 
 type NodeResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Rejected Node Registrations
 	Rejected []*RejectedNode `protobuf:"bytes,1,rep,name=rejected,proto3" json:"rejected,omitempty"`
 	// Accepted Node Registrations
-	Accepted             []*AcceptedNode `protobuf:"bytes,2,rep,name=accepted,proto3" json:"accepted,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	Accepted []*AcceptedNode `protobuf:"bytes,2,rep,name=accepted,proto3" json:"accepted,omitempty"`
 }
 
-func (m *NodeResponse) Reset()         { *m = NodeResponse{} }
-func (m *NodeResponse) String() string { return proto.CompactTextString(m) }
-func (*NodeResponse) ProtoMessage()    {}
-func (*NodeResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{7}
-}
-func (m *NodeResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_NodeResponse.Unmarshal(m, b)
-}
-func (m *NodeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_NodeResponse.Marshal(b, m, deterministic)
-}
-func (dst *NodeResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NodeResponse.Merge(dst, src)
+func (x *NodeResponse) Reset() {
+	*x = NodeResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *NodeResponse) XXX_Size() int {
-	return xxx_messageInfo_NodeResponse.Size(m)
+
+func (x *NodeResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *NodeResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_NodeResponse.DiscardUnknown(m)
+
+func (*NodeResponse) ProtoMessage() {}
+
+func (x *NodeResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_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)
 }
 
-var xxx_messageInfo_NodeResponse proto.InternalMessageInfo
+// Deprecated: Use NodeResponse.ProtoReflect.Descriptor instead.
+func (*NodeResponse) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{7}
+}
 
-func (m *NodeResponse) GetRejected() []*RejectedNode {
-	if m != nil {
-		return m.Rejected
+func (x *NodeResponse) GetRejected() []*RejectedNode {
+	if x != nil {
+		return x.Rejected
 	}
 	return nil
 }
 
-func (m *NodeResponse) GetAccepted() []*AcceptedNode {
-	if m != nil {
-		return m.Accepted
+func (x *NodeResponse) GetAccepted() []*AcceptedNode {
+	if x != nil {
+		return x.Accepted
 	}
 	return nil
 }
 
 type UpdatedApplication struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The application ID that was updated
 	ApplicationID string `protobuf:"bytes,1,opt,name=applicationID,proto3" json:"applicationID,omitempty"`
 	// State of the application
@@ -778,317 +1004,380 @@ type UpdatedApplication struct {
 	// Timestamp of the state transition
 	StateTransitionTimestamp int64 `protobuf:"varint,3,opt,name=stateTransitionTimestamp,proto3" json:"stateTransitionTimestamp,omitempty"`
 	// Detailed message
-	Message              string   `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"`
 }
 
-func (m *UpdatedApplication) Reset()         { *m = UpdatedApplication{} }
-func (m *UpdatedApplication) String() string { return proto.CompactTextString(m) }
-func (*UpdatedApplication) ProtoMessage()    {}
-func (*UpdatedApplication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{8}
-}
-func (m *UpdatedApplication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UpdatedApplication.Unmarshal(m, b)
-}
-func (m *UpdatedApplication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UpdatedApplication.Marshal(b, m, deterministic)
-}
-func (dst *UpdatedApplication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UpdatedApplication.Merge(dst, src)
+func (x *UpdatedApplication) Reset() {
+	*x = UpdatedApplication{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *UpdatedApplication) XXX_Size() int {
-	return xxx_messageInfo_UpdatedApplication.Size(m)
+
+func (x *UpdatedApplication) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *UpdatedApplication) XXX_DiscardUnknown() {
-	xxx_messageInfo_UpdatedApplication.DiscardUnknown(m)
+
+func (*UpdatedApplication) ProtoMessage() {}
+
+func (x *UpdatedApplication) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_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)
 }
 
-var xxx_messageInfo_UpdatedApplication proto.InternalMessageInfo
+// Deprecated: Use UpdatedApplication.ProtoReflect.Descriptor instead.
+func (*UpdatedApplication) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{8}
+}
 
-func (m *UpdatedApplication) GetApplicationID() string {
-	if m != nil {
-		return m.ApplicationID
+func (x *UpdatedApplication) GetApplicationID() string {
+	if x != nil {
+		return x.ApplicationID
 	}
 	return ""
 }
 
-func (m *UpdatedApplication) GetState() string {
-	if m != nil {
-		return m.State
+func (x *UpdatedApplication) GetState() string {
+	if x != nil {
+		return x.State
 	}
 	return ""
 }
 
-func (m *UpdatedApplication) GetStateTransitionTimestamp() int64 {
-	if m != nil {
-		return m.StateTransitionTimestamp
+func (x *UpdatedApplication) GetStateTransitionTimestamp() int64 {
+	if x != nil {
+		return x.StateTransitionTimestamp
 	}
 	return 0
 }
 
-func (m *UpdatedApplication) GetMessage() string {
-	if m != nil {
-		return m.Message
+func (x *UpdatedApplication) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
 type RejectedApplication struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The application ID that was rejected
 	ApplicationID string `protobuf:"bytes,1,opt,name=applicationID,proto3" json:"applicationID,omitempty"`
 	// A human-readable reason message
-	Reason               string   `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
 }
 
-func (m *RejectedApplication) Reset()         { *m = RejectedApplication{} }
-func (m *RejectedApplication) String() string { return proto.CompactTextString(m) }
-func (*RejectedApplication) ProtoMessage()    {}
-func (*RejectedApplication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{9}
-}
-func (m *RejectedApplication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RejectedApplication.Unmarshal(m, b)
-}
-func (m *RejectedApplication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RejectedApplication.Marshal(b, m, deterministic)
-}
-func (dst *RejectedApplication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RejectedApplication.Merge(dst, src)
+func (x *RejectedApplication) Reset() {
+	*x = RejectedApplication{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *RejectedApplication) XXX_Size() int {
-	return xxx_messageInfo_RejectedApplication.Size(m)
+
+func (x *RejectedApplication) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *RejectedApplication) XXX_DiscardUnknown() {
-	xxx_messageInfo_RejectedApplication.DiscardUnknown(m)
+
+func (*RejectedApplication) ProtoMessage() {}
+
+func (x *RejectedApplication) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[9]
+	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)
 }
 
-var xxx_messageInfo_RejectedApplication proto.InternalMessageInfo
+// Deprecated: Use RejectedApplication.ProtoReflect.Descriptor instead.
+func (*RejectedApplication) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{9}
+}
 
-func (m *RejectedApplication) GetApplicationID() string {
-	if m != nil {
-		return m.ApplicationID
+func (x *RejectedApplication) GetApplicationID() string {
+	if x != nil {
+		return x.ApplicationID
 	}
 	return ""
 }
 
-func (m *RejectedApplication) GetReason() string {
-	if m != nil {
-		return m.Reason
+func (x *RejectedApplication) GetReason() string {
+	if x != nil {
+		return x.Reason
 	}
 	return ""
 }
 
 type AcceptedApplication struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The application ID that was accepted
-	ApplicationID        string   `protobuf:"bytes,1,opt,name=applicationID,proto3" json:"applicationID,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	ApplicationID string `protobuf:"bytes,1,opt,name=applicationID,proto3" json:"applicationID,omitempty"`
 }
 
-func (m *AcceptedApplication) Reset()         { *m = AcceptedApplication{} }
-func (m *AcceptedApplication) String() string { return proto.CompactTextString(m) }
-func (*AcceptedApplication) ProtoMessage()    {}
-func (*AcceptedApplication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{10}
-}
-func (m *AcceptedApplication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AcceptedApplication.Unmarshal(m, b)
-}
-func (m *AcceptedApplication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AcceptedApplication.Marshal(b, m, deterministic)
-}
-func (dst *AcceptedApplication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AcceptedApplication.Merge(dst, src)
+func (x *AcceptedApplication) Reset() {
+	*x = AcceptedApplication{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AcceptedApplication) XXX_Size() int {
-	return xxx_messageInfo_AcceptedApplication.Size(m)
+
+func (x *AcceptedApplication) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AcceptedApplication) XXX_DiscardUnknown() {
-	xxx_messageInfo_AcceptedApplication.DiscardUnknown(m)
+
+func (*AcceptedApplication) ProtoMessage() {}
+
+func (x *AcceptedApplication) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[10]
+	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)
 }
 
-var xxx_messageInfo_AcceptedApplication proto.InternalMessageInfo
+// Deprecated: Use AcceptedApplication.ProtoReflect.Descriptor instead.
+func (*AcceptedApplication) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{10}
+}
 
-func (m *AcceptedApplication) GetApplicationID() string {
-	if m != nil {
-		return m.ApplicationID
+func (x *AcceptedApplication) GetApplicationID() string {
+	if x != nil {
+		return x.ApplicationID
 	}
 	return ""
 }
 
 type RejectedNode struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The node ID that was rejected
 	NodeID string `protobuf:"bytes,1,opt,name=nodeID,proto3" json:"nodeID,omitempty"`
 	// A human-readable reason message
-	Reason               string   `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
 }
 
-func (m *RejectedNode) Reset()         { *m = RejectedNode{} }
-func (m *RejectedNode) String() string { return proto.CompactTextString(m) }
-func (*RejectedNode) ProtoMessage()    {}
-func (*RejectedNode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{11}
-}
-func (m *RejectedNode) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RejectedNode.Unmarshal(m, b)
-}
-func (m *RejectedNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RejectedNode.Marshal(b, m, deterministic)
-}
-func (dst *RejectedNode) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RejectedNode.Merge(dst, src)
+func (x *RejectedNode) Reset() {
+	*x = RejectedNode{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *RejectedNode) XXX_Size() int {
-	return xxx_messageInfo_RejectedNode.Size(m)
+
+func (x *RejectedNode) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *RejectedNode) XXX_DiscardUnknown() {
-	xxx_messageInfo_RejectedNode.DiscardUnknown(m)
+
+func (*RejectedNode) ProtoMessage() {}
+
+func (x *RejectedNode) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[11]
+	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)
 }
 
-var xxx_messageInfo_RejectedNode proto.InternalMessageInfo
+// Deprecated: Use RejectedNode.ProtoReflect.Descriptor instead.
+func (*RejectedNode) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{11}
+}
 
-func (m *RejectedNode) GetNodeID() string {
-	if m != nil {
-		return m.NodeID
+func (x *RejectedNode) GetNodeID() string {
+	if x != nil {
+		return x.NodeID
 	}
 	return ""
 }
 
-func (m *RejectedNode) GetReason() string {
-	if m != nil {
-		return m.Reason
+func (x *RejectedNode) GetReason() string {
+	if x != nil {
+		return x.Reason
 	}
 	return ""
 }
 
 type AcceptedNode struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The node ID that was accepted
-	NodeID               string   `protobuf:"bytes,1,opt,name=nodeID,proto3" json:"nodeID,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	NodeID string `protobuf:"bytes,1,opt,name=nodeID,proto3" json:"nodeID,omitempty"`
 }
 
-func (m *AcceptedNode) Reset()         { *m = AcceptedNode{} }
-func (m *AcceptedNode) String() string { return proto.CompactTextString(m) }
-func (*AcceptedNode) ProtoMessage()    {}
-func (*AcceptedNode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{12}
-}
-func (m *AcceptedNode) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AcceptedNode.Unmarshal(m, b)
-}
-func (m *AcceptedNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AcceptedNode.Marshal(b, m, deterministic)
-}
-func (dst *AcceptedNode) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AcceptedNode.Merge(dst, src)
+func (x *AcceptedNode) Reset() {
+	*x = AcceptedNode{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AcceptedNode) XXX_Size() int {
-	return xxx_messageInfo_AcceptedNode.Size(m)
+
+func (x *AcceptedNode) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AcceptedNode) XXX_DiscardUnknown() {
-	xxx_messageInfo_AcceptedNode.DiscardUnknown(m)
+
+func (*AcceptedNode) ProtoMessage() {}
+
+func (x *AcceptedNode) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[12]
+	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)
 }
 
-var xxx_messageInfo_AcceptedNode proto.InternalMessageInfo
+// Deprecated: Use AcceptedNode.ProtoReflect.Descriptor instead.
+func (*AcceptedNode) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{12}
+}
 
-func (m *AcceptedNode) GetNodeID() string {
-	if m != nil {
-		return m.NodeID
+func (x *AcceptedNode) GetNodeID() string {
+	if x != nil {
+		return x.NodeID
 	}
 	return ""
 }
 
 // A sparse map of resource to Quantity.
 type Resource struct {
-	Resources            map[string]*Quantity `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *Resource) Reset()         { *m = Resource{} }
-func (m *Resource) String() string { return proto.CompactTextString(m) }
-func (*Resource) ProtoMessage()    {}
-func (*Resource) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{13}
-}
-func (m *Resource) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Resource.Unmarshal(m, b)
+	Resources map[string]*Quantity `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 }
-func (m *Resource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Resource.Marshal(b, m, deterministic)
-}
-func (dst *Resource) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Resource.Merge(dst, src)
+
+func (x *Resource) Reset() {
+	*x = Resource{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Resource) XXX_Size() int {
-	return xxx_messageInfo_Resource.Size(m)
+
+func (x *Resource) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Resource) XXX_DiscardUnknown() {
-	xxx_messageInfo_Resource.DiscardUnknown(m)
+
+func (*Resource) ProtoMessage() {}
+
+func (x *Resource) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[13]
+	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)
 }
 
-var xxx_messageInfo_Resource proto.InternalMessageInfo
+// Deprecated: Use Resource.ProtoReflect.Descriptor instead.
+func (*Resource) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{13}
+}
 
-func (m *Resource) GetResources() map[string]*Quantity {
-	if m != nil {
-		return m.Resources
+func (x *Resource) GetResources() map[string]*Quantity {
+	if x != nil {
+		return x.Resources
 	}
 	return nil
 }
 
 // Quantity includes a single int64 value
 type Quantity struct {
-	Value                int64    `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *Quantity) Reset()         { *m = Quantity{} }
-func (m *Quantity) String() string { return proto.CompactTextString(m) }
-func (*Quantity) ProtoMessage()    {}
-func (*Quantity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{14}
-}
-func (m *Quantity) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Quantity.Unmarshal(m, b)
+	Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (m *Quantity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Quantity.Marshal(b, m, deterministic)
-}
-func (dst *Quantity) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Quantity.Merge(dst, src)
+
+func (x *Quantity) Reset() {
+	*x = Quantity{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Quantity) XXX_Size() int {
-	return xxx_messageInfo_Quantity.Size(m)
+
+func (x *Quantity) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Quantity) XXX_DiscardUnknown() {
-	xxx_messageInfo_Quantity.DiscardUnknown(m)
+
+func (*Quantity) ProtoMessage() {}
+
+func (x *Quantity) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[14]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
 }
 
-var xxx_messageInfo_Quantity proto.InternalMessageInfo
+// Deprecated: Use Quantity.ProtoReflect.Descriptor instead.
+func (*Quantity) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{14}
+}
 
-func (m *Quantity) GetValue() int64 {
-	if m != nil {
-		return m.Value
+func (x *Quantity) GetValue() int64 {
+	if x != nil {
+		return x.Value
 	}
 	return 0
 }
 
 type AllocationAsk struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Allocation key is used by both of scheduler and RM to track allocations.
 	// It doesn't have to be same as RM's internal allocation id (such as Pod name of K8s or ContainerID of YARN).
 	// Allocations from the same AllocationAsk which are returned to the RM at the same time will have the same allocationKey.
@@ -1120,169 +1409,187 @@ type AllocationAsk struct {
 	// Is this ask the originator of the application?
 	Originator bool `protobuf:"varint,11,opt,name=Originator,proto3" json:"Originator,omitempty"`
 	// The preemption policy for this ask
-	PreemptionPolicy     *PreemptionPolicy `protobuf:"bytes,12,opt,name=preemptionPolicy,proto3" json:"preemptionPolicy,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	PreemptionPolicy *PreemptionPolicy `protobuf:"bytes,12,opt,name=preemptionPolicy,proto3" json:"preemptionPolicy,omitempty"`
 }
 
-func (m *AllocationAsk) Reset()         { *m = AllocationAsk{} }
-func (m *AllocationAsk) String() string { return proto.CompactTextString(m) }
-func (*AllocationAsk) ProtoMessage()    {}
-func (*AllocationAsk) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{15}
+func (x *AllocationAsk) Reset() {
+	*x = AllocationAsk{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AllocationAsk) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AllocationAsk.Unmarshal(m, b)
-}
-func (m *AllocationAsk) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AllocationAsk.Marshal(b, m, deterministic)
-}
-func (dst *AllocationAsk) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AllocationAsk.Merge(dst, src)
-}
-func (m *AllocationAsk) XXX_Size() int {
-	return xxx_messageInfo_AllocationAsk.Size(m)
+
+func (x *AllocationAsk) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AllocationAsk) XXX_DiscardUnknown() {
-	xxx_messageInfo_AllocationAsk.DiscardUnknown(m)
+
+func (*AllocationAsk) ProtoMessage() {}
+
+func (x *AllocationAsk) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[15]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
 }
 
-var xxx_messageInfo_AllocationAsk proto.InternalMessageInfo
+// Deprecated: Use AllocationAsk.ProtoReflect.Descriptor instead.
+func (*AllocationAsk) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{15}
+}
 
-func (m *AllocationAsk) GetAllocationKey() string {
-	if m != nil {
-		return m.AllocationKey
+func (x *AllocationAsk) GetAllocationKey() string {
+	if x != nil {
+		return x.AllocationKey
 	}
 	return ""
 }
 
-func (m *AllocationAsk) GetApplicationID() string {
-	if m != nil {
-		return m.ApplicationID
+func (x *AllocationAsk) GetApplicationID() string {
+	if x != nil {
+		return x.ApplicationID
 	}
 	return ""
 }
 
-func (m *AllocationAsk) GetPartitionName() string {
-	if m != nil {
-		return m.PartitionName
+func (x *AllocationAsk) GetPartitionName() string {
+	if x != nil {
+		return x.PartitionName
 	}
 	return ""
 }
 
-func (m *AllocationAsk) GetResourceAsk() *Resource {
-	if m != nil {
-		return m.ResourceAsk
+func (x *AllocationAsk) GetResourceAsk() *Resource {
+	if x != nil {
+		return x.ResourceAsk
 	}
 	return nil
 }
 
-func (m *AllocationAsk) GetMaxAllocations() int32 {
-	if m != nil {
-		return m.MaxAllocations
+func (x *AllocationAsk) GetMaxAllocations() int32 {
+	if x != nil {
+		return x.MaxAllocations
 	}
 	return 0
 }
 
-func (m *AllocationAsk) GetPriority() int32 {
-	if m != nil {
-		return m.Priority
+func (x *AllocationAsk) GetPriority() int32 {
+	if x != nil {
+		return x.Priority
 	}
 	return 0
 }
 
-func (m *AllocationAsk) GetExecutionTimeoutMilliSeconds() int64 {
-	if m != nil {
-		return m.ExecutionTimeoutMilliSeconds
+func (x *AllocationAsk) GetExecutionTimeoutMilliSeconds() int64 {
+	if x != nil {
+		return x.ExecutionTimeoutMilliSeconds
 	}
 	return 0
 }
 
-func (m *AllocationAsk) GetTags() map[string]string {
-	if m != nil {
-		return m.Tags
+func (x *AllocationAsk) GetTags() map[string]string {
+	if x != nil {
+		return x.Tags
 	}
 	return nil
 }
 
-func (m *AllocationAsk) GetTaskGroupName() string {
-	if m != nil {
-		return m.TaskGroupName
+func (x *AllocationAsk) GetTaskGroupName() string {
+	if x != nil {
+		return x.TaskGroupName
 	}
 	return ""
 }
 
-func (m *AllocationAsk) GetPlaceholder() bool {
-	if m != nil {
-		return m.Placeholder
+func (x *AllocationAsk) GetPlaceholder() bool {
+	if x != nil {
+		return x.Placeholder
 	}
 	return false
 }
 
-func (m *AllocationAsk) GetOriginator() bool {
-	if m != nil {
-		return m.Originator
+func (x *AllocationAsk) GetOriginator() bool {
+	if x != nil {
+		return x.Originator
 	}
 	return false
 }
 
-func (m *AllocationAsk) GetPreemptionPolicy() *PreemptionPolicy {
-	if m != nil {
-		return m.PreemptionPolicy
+func (x *AllocationAsk) GetPreemptionPolicy() *PreemptionPolicy {
+	if x != nil {
+		return x.PreemptionPolicy
 	}
 	return nil
 }
 
 type PreemptionPolicy struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Opt-out from preemption
 	AllowPreemptSelf bool `protobuf:"varint,1,opt,name=allowPreemptSelf,proto3" json:"allowPreemptSelf,omitempty"`
 	// Allow preemption of other tasks with same or lower priority
-	AllowPreemptOther    bool     `protobuf:"varint,2,opt,name=allowPreemptOther,proto3" json:"allowPreemptOther,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AllowPreemptOther bool `protobuf:"varint,2,opt,name=allowPreemptOther,proto3" json:"allowPreemptOther,omitempty"`
 }
 
-func (m *PreemptionPolicy) Reset()         { *m = PreemptionPolicy{} }
-func (m *PreemptionPolicy) String() string { return proto.CompactTextString(m) }
-func (*PreemptionPolicy) ProtoMessage()    {}
-func (*PreemptionPolicy) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{16}
-}
-func (m *PreemptionPolicy) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PreemptionPolicy.Unmarshal(m, b)
-}
-func (m *PreemptionPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PreemptionPolicy.Marshal(b, m, deterministic)
-}
-func (dst *PreemptionPolicy) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PreemptionPolicy.Merge(dst, src)
+func (x *PreemptionPolicy) Reset() {
+	*x = PreemptionPolicy{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PreemptionPolicy) XXX_Size() int {
-	return xxx_messageInfo_PreemptionPolicy.Size(m)
+
+func (x *PreemptionPolicy) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *PreemptionPolicy) XXX_DiscardUnknown() {
-	xxx_messageInfo_PreemptionPolicy.DiscardUnknown(m)
+
+func (*PreemptionPolicy) ProtoMessage() {}
+
+func (x *PreemptionPolicy) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[16]
+	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)
 }
 
-var xxx_messageInfo_PreemptionPolicy proto.InternalMessageInfo
+// Deprecated: Use PreemptionPolicy.ProtoReflect.Descriptor instead.
+func (*PreemptionPolicy) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{16}
+}
 
-func (m *PreemptionPolicy) GetAllowPreemptSelf() bool {
-	if m != nil {
-		return m.AllowPreemptSelf
+func (x *PreemptionPolicy) GetAllowPreemptSelf() bool {
+	if x != nil {
+		return x.AllowPreemptSelf
 	}
 	return false
 }
 
-func (m *PreemptionPolicy) GetAllowPreemptOther() bool {
-	if m != nil {
-		return m.AllowPreemptOther
+func (x *PreemptionPolicy) GetAllowPreemptOther() bool {
+	if x != nil {
+		return x.AllowPreemptOther
 	}
 	return false
 }
 
 type AddApplicationRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The ID of the application, must be unique
 	ApplicationID string `protobuf:"bytes,1,opt,name=applicationID,proto3" json:"applicationID,omitempty"`
 	// The queue this application is requesting. The scheduler will place the application into a
@@ -1303,189 +1610,216 @@ type AddApplicationRequest struct {
 	PlaceholderAsk *Resource `protobuf:"bytes,7,opt,name=placeholderAsk,proto3" json:"placeholderAsk,omitempty"`
 	// Gang scheduling style can be hard (the application will fail after placeholder timeout)
 	// or soft (after the timeout the application will be scheduled as a normal application)
-	GangSchedulingStyle  string   `protobuf:"bytes,8,opt,name=gangSchedulingStyle,proto3" json:"gangSchedulingStyle,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	GangSchedulingStyle string `protobuf:"bytes,8,opt,name=gangSchedulingStyle,proto3" json:"gangSchedulingStyle,omitempty"`
 }
 
-func (m *AddApplicationRequest) Reset()         { *m = AddApplicationRequest{} }
-func (m *AddApplicationRequest) String() string { return proto.CompactTextString(m) }
-func (*AddApplicationRequest) ProtoMessage()    {}
-func (*AddApplicationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{17}
-}
-func (m *AddApplicationRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AddApplicationRequest.Unmarshal(m, b)
-}
-func (m *AddApplicationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AddApplicationRequest.Marshal(b, m, deterministic)
-}
-func (dst *AddApplicationRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AddApplicationRequest.Merge(dst, src)
+func (x *AddApplicationRequest) Reset() {
+	*x = AddApplicationRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AddApplicationRequest) XXX_Size() int {
-	return xxx_messageInfo_AddApplicationRequest.Size(m)
+
+func (x *AddApplicationRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AddApplicationRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_AddApplicationRequest.DiscardUnknown(m)
+
+func (*AddApplicationRequest) ProtoMessage() {}
+
+func (x *AddApplicationRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[17]
+	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)
 }
 
-var xxx_messageInfo_AddApplicationRequest proto.InternalMessageInfo
+// Deprecated: Use AddApplicationRequest.ProtoReflect.Descriptor instead.
+func (*AddApplicationRequest) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{17}
+}
 
-func (m *AddApplicationRequest) GetApplicationID() string {
-	if m != nil {
-		return m.ApplicationID
+func (x *AddApplicationRequest) GetApplicationID() string {
+	if x != nil {
+		return x.ApplicationID
 	}
 	return ""
 }
 
-func (m *AddApplicationRequest) GetQueueName() string {
-	if m != nil {
-		return m.QueueName
+func (x *AddApplicationRequest) GetQueueName() string {
+	if x != nil {
+		return x.QueueName
 	}
 	return ""
 }
 
-func (m *AddApplicationRequest) GetPartitionName() string {
-	if m != nil {
-		return m.PartitionName
+func (x *AddApplicationRequest) GetPartitionName() string {
+	if x != nil {
+		return x.PartitionName
 	}
 	return ""
 }
 
-func (m *AddApplicationRequest) GetUgi() *UserGroupInformation {
-	if m != nil {
-		return m.Ugi
+func (x *AddApplicationRequest) GetUgi() *UserGroupInformation {
+	if x != nil {
+		return x.Ugi
 	}
 	return nil
 }
 
-func (m *AddApplicationRequest) GetTags() map[string]string {
-	if m != nil {
-		return m.Tags
+func (x *AddApplicationRequest) GetTags() map[string]string {
+	if x != nil {
+		return x.Tags
 	}
 	return nil
 }
 
-func (m *AddApplicationRequest) GetExecutionTimeoutMilliSeconds() int64 {
-	if m != nil {
-		return m.ExecutionTimeoutMilliSeconds
+func (x *AddApplicationRequest) GetExecutionTimeoutMilliSeconds() int64 {
+	if x != nil {
+		return x.ExecutionTimeoutMilliSeconds
 	}
 	return 0
 }
 
-func (m *AddApplicationRequest) GetPlaceholderAsk() *Resource {
-	if m != nil {
-		return m.PlaceholderAsk
+func (x *AddApplicationRequest) GetPlaceholderAsk() *Resource {
+	if x != nil {
+		return x.PlaceholderAsk
 	}
 	return nil
 }
 
-func (m *AddApplicationRequest) GetGangSchedulingStyle() string {
-	if m != nil {
-		return m.GangSchedulingStyle
+func (x *AddApplicationRequest) GetGangSchedulingStyle() string {
+	if x != nil {
+		return x.GangSchedulingStyle
 	}
 	return ""
 }
 
 type RemoveApplicationRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The ID of the application to remove
 	ApplicationID string `protobuf:"bytes,1,opt,name=applicationID,proto3" json:"applicationID,omitempty"`
 	// The partition the application belongs to
-	PartitionName        string   `protobuf:"bytes,2,opt,name=partitionName,proto3" json:"partitionName,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	PartitionName string `protobuf:"bytes,2,opt,name=partitionName,proto3" json:"partitionName,omitempty"`
 }
 
-func (m *RemoveApplicationRequest) Reset()         { *m = RemoveApplicationRequest{} }
-func (m *RemoveApplicationRequest) String() string { return proto.CompactTextString(m) }
-func (*RemoveApplicationRequest) ProtoMessage()    {}
-func (*RemoveApplicationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{18}
-}
-func (m *RemoveApplicationRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RemoveApplicationRequest.Unmarshal(m, b)
-}
-func (m *RemoveApplicationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RemoveApplicationRequest.Marshal(b, m, deterministic)
-}
-func (dst *RemoveApplicationRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RemoveApplicationRequest.Merge(dst, src)
+func (x *RemoveApplicationRequest) Reset() {
+	*x = RemoveApplicationRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *RemoveApplicationRequest) XXX_Size() int {
-	return xxx_messageInfo_RemoveApplicationRequest.Size(m)
+
+func (x *RemoveApplicationRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *RemoveApplicationRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_RemoveApplicationRequest.DiscardUnknown(m)
+
+func (*RemoveApplicationRequest) ProtoMessage() {}
+
+func (x *RemoveApplicationRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[18]
+	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)
 }
 
-var xxx_messageInfo_RemoveApplicationRequest proto.InternalMessageInfo
+// Deprecated: Use RemoveApplicationRequest.ProtoReflect.Descriptor instead.
+func (*RemoveApplicationRequest) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{18}
+}
 
-func (m *RemoveApplicationRequest) GetApplicationID() string {
-	if m != nil {
-		return m.ApplicationID
+func (x *RemoveApplicationRequest) GetApplicationID() string {
+	if x != nil {
+		return x.ApplicationID
 	}
 	return ""
 }
 
-func (m *RemoveApplicationRequest) GetPartitionName() string {
-	if m != nil {
-		return m.PartitionName
+func (x *RemoveApplicationRequest) GetPartitionName() string {
+	if x != nil {
+		return x.PartitionName
 	}
 	return ""
 }
 
 type UserGroupInformation struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// the user name
 	User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
 	// the list of groups of the user, can be empty
-	Groups               []string `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Groups []string `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty"`
 }
 
-func (m *UserGroupInformation) Reset()         { *m = UserGroupInformation{} }
-func (m *UserGroupInformation) String() string { return proto.CompactTextString(m) }
-func (*UserGroupInformation) ProtoMessage()    {}
-func (*UserGroupInformation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{19}
-}
-func (m *UserGroupInformation) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UserGroupInformation.Unmarshal(m, b)
-}
-func (m *UserGroupInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UserGroupInformation.Marshal(b, m, deterministic)
-}
-func (dst *UserGroupInformation) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UserGroupInformation.Merge(dst, src)
+func (x *UserGroupInformation) Reset() {
+	*x = UserGroupInformation{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *UserGroupInformation) XXX_Size() int {
-	return xxx_messageInfo_UserGroupInformation.Size(m)
+
+func (x *UserGroupInformation) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *UserGroupInformation) XXX_DiscardUnknown() {
-	xxx_messageInfo_UserGroupInformation.DiscardUnknown(m)
+
+func (*UserGroupInformation) ProtoMessage() {}
+
+func (x *UserGroupInformation) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[19]
+	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)
 }
 
-var xxx_messageInfo_UserGroupInformation proto.InternalMessageInfo
+// Deprecated: Use UserGroupInformation.ProtoReflect.Descriptor instead.
+func (*UserGroupInformation) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{19}
+}
 
-func (m *UserGroupInformation) GetUser() string {
-	if m != nil {
-		return m.User
+func (x *UserGroupInformation) GetUser() string {
+	if x != nil {
+		return x.User
 	}
 	return ""
 }
 
-func (m *UserGroupInformation) GetGroups() []string {
-	if m != nil {
-		return m.Groups
+func (x *UserGroupInformation) GetGroups() []string {
+	if x != nil {
+		return x.Groups
 	}
 	return nil
 }
 
 type Allocation struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// AllocationKey from AllocationAsk
 	AllocationKey string `protobuf:"bytes,1,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"`
 	// Allocation tags from AllocationAsk
@@ -1506,150 +1840,164 @@ type Allocation struct {
 	TaskGroupName string `protobuf:"bytes,11,opt,name=taskGroupName,proto3" json:"taskGroupName,omitempty"`
 	// Is this a placeholder allocation (true) or a real allocation (false), defaults to false
 	// ignored if the taskGroupName is not set
-	Placeholder          bool     `protobuf:"varint,12,opt,name=placeholder,proto3" json:"placeholder,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Placeholder bool `protobuf:"varint,12,opt,name=placeholder,proto3" json:"placeholder,omitempty"`
 }
 
-func (m *Allocation) Reset()         { *m = Allocation{} }
-func (m *Allocation) String() string { return proto.CompactTextString(m) }
-func (*Allocation) ProtoMessage()    {}
-func (*Allocation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{20}
-}
-func (m *Allocation) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Allocation.Unmarshal(m, b)
-}
-func (m *Allocation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Allocation.Marshal(b, m, deterministic)
-}
-func (dst *Allocation) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Allocation.Merge(dst, src)
+func (x *Allocation) Reset() {
+	*x = Allocation{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Allocation) XXX_Size() int {
-	return xxx_messageInfo_Allocation.Size(m)
+
+func (x *Allocation) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Allocation) XXX_DiscardUnknown() {
-	xxx_messageInfo_Allocation.DiscardUnknown(m)
+
+func (*Allocation) ProtoMessage() {}
+
+func (x *Allocation) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[20]
+	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)
 }
 
-var xxx_messageInfo_Allocation proto.InternalMessageInfo
+// Deprecated: Use Allocation.ProtoReflect.Descriptor instead.
+func (*Allocation) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{20}
+}
 
-func (m *Allocation) GetAllocationKey() string {
-	if m != nil {
-		return m.AllocationKey
+func (x *Allocation) GetAllocationKey() string {
+	if x != nil {
+		return x.AllocationKey
 	}
 	return ""
 }
 
-func (m *Allocation) GetAllocationTags() map[string]string {
-	if m != nil {
-		return m.AllocationTags
+func (x *Allocation) GetAllocationTags() map[string]string {
+	if x != nil {
+		return x.AllocationTags
 	}
 	return nil
 }
 
-func (m *Allocation) GetUUID() string {
-	if m != nil {
-		return m.UUID
+func (x *Allocation) GetUUID() string {
+	if x != nil {
+		return x.UUID
 	}
 	return ""
 }
 
-func (m *Allocation) GetResourcePerAlloc() *Resource {
-	if m != nil {
-		return m.ResourcePerAlloc
+func (x *Allocation) GetResourcePerAlloc() *Resource {
+	if x != nil {
+		return x.ResourcePerAlloc
 	}
 	return nil
 }
 
-func (m *Allocation) GetPriority() int32 {
-	if m != nil {
-		return m.Priority
+func (x *Allocation) GetPriority() int32 {
+	if x != nil {
+		return x.Priority
 	}
 	return 0
 }
 
-func (m *Allocation) GetNodeID() string {
-	if m != nil {
-		return m.NodeID
+func (x *Allocation) GetNodeID() string {
+	if x != nil {
+		return x.NodeID
 	}
 	return ""
 }
 
-func (m *Allocation) GetApplicationID() string {
-	if m != nil {
-		return m.ApplicationID
+func (x *Allocation) GetApplicationID() string {
+	if x != nil {
+		return x.ApplicationID
 	}
 	return ""
 }
 
-func (m *Allocation) GetPartitionName() string {
-	if m != nil {
-		return m.PartitionName
+func (x *Allocation) GetPartitionName() string {
+	if x != nil {
+		return x.PartitionName
 	}
 	return ""
 }
 
-func (m *Allocation) GetTaskGroupName() string {
-	if m != nil {
-		return m.TaskGroupName
+func (x *Allocation) GetTaskGroupName() string {
+	if x != nil {
+		return x.TaskGroupName
 	}
 	return ""
 }
 
-func (m *Allocation) GetPlaceholder() bool {
-	if m != nil {
-		return m.Placeholder
+func (x *Allocation) GetPlaceholder() bool {
+	if x != nil {
+		return x.Placeholder
 	}
 	return false
 }
 
 type AllocationReleasesRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The allocations to release
 	AllocationsToRelease []*AllocationRelease `protobuf:"bytes,1,rep,name=allocationsToRelease,proto3" json:"allocationsToRelease,omitempty"`
 	// The asks to release
 	AllocationAsksToRelease []*AllocationAskRelease `protobuf:"bytes,2,rep,name=allocationAsksToRelease,proto3" json:"allocationAsksToRelease,omitempty"`
-	XXX_NoUnkeyedLiteral    struct{}                `json:"-"`
-	XXX_unrecognized        []byte                  `json:"-"`
-	XXX_sizecache           int32                   `json:"-"`
 }
 
-func (m *AllocationReleasesRequest) Reset()         { *m = AllocationReleasesRequest{} }
-func (m *AllocationReleasesRequest) String() string { return proto.CompactTextString(m) }
-func (*AllocationReleasesRequest) ProtoMessage()    {}
-func (*AllocationReleasesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{21}
-}
-func (m *AllocationReleasesRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AllocationReleasesRequest.Unmarshal(m, b)
-}
-func (m *AllocationReleasesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AllocationReleasesRequest.Marshal(b, m, deterministic)
-}
-func (dst *AllocationReleasesRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AllocationReleasesRequest.Merge(dst, src)
+func (x *AllocationReleasesRequest) Reset() {
+	*x = AllocationReleasesRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AllocationReleasesRequest) XXX_Size() int {
-	return xxx_messageInfo_AllocationReleasesRequest.Size(m)
+
+func (x *AllocationReleasesRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AllocationReleasesRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_AllocationReleasesRequest.DiscardUnknown(m)
+
+func (*AllocationReleasesRequest) ProtoMessage() {}
+
+func (x *AllocationReleasesRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[21]
+	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)
 }
 
-var xxx_messageInfo_AllocationReleasesRequest proto.InternalMessageInfo
+// Deprecated: Use AllocationReleasesRequest.ProtoReflect.Descriptor instead.
+func (*AllocationReleasesRequest) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{21}
+}
 
-func (m *AllocationReleasesRequest) GetAllocationsToRelease() []*AllocationRelease {
-	if m != nil {
-		return m.AllocationsToRelease
+func (x *AllocationReleasesRequest) GetAllocationsToRelease() []*AllocationRelease {
+	if x != nil {
+		return x.AllocationsToRelease
 	}
 	return nil
 }
 
-func (m *AllocationReleasesRequest) GetAllocationAsksToRelease() []*AllocationAskRelease {
-	if m != nil {
-		return m.AllocationAsksToRelease
+func (x *AllocationReleasesRequest) GetAllocationAsksToRelease() []*AllocationAskRelease {
+	if x != nil {
+		return x.AllocationAsksToRelease
 	}
 	return nil
 }
@@ -1658,6 +2006,10 @@ func (m *AllocationReleasesRequest) GetAllocationAsksToRelease() []*AllocationAs
 // as per the comment. The confirmation or response from the receiver is the same message with the same
 // termination type set.
 type AllocationRelease struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The name of the partition the allocation belongs to
 	PartitionName string `protobuf:"bytes,1,opt,name=partitionName,proto3" json:"partitionName,omitempty"`
 	// The application the allocation belongs to
@@ -1670,80 +2022,89 @@ type AllocationRelease struct {
 	// human-readable message
 	Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"`
 	// AllocationKey from AllocationAsk
-	AllocationKey        string   `protobuf:"bytes,6,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AllocationKey string `protobuf:"bytes,6,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"`
 }
 
-func (m *AllocationRelease) Reset()         { *m = AllocationRelease{} }
-func (m *AllocationRelease) String() string { return proto.CompactTextString(m) }
-func (*AllocationRelease) ProtoMessage()    {}
-func (*AllocationRelease) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{22}
-}
-func (m *AllocationRelease) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AllocationRelease.Unmarshal(m, b)
-}
-func (m *AllocationRelease) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AllocationRelease.Marshal(b, m, deterministic)
-}
-func (dst *AllocationRelease) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AllocationRelease.Merge(dst, src)
+func (x *AllocationRelease) Reset() {
+	*x = AllocationRelease{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[22]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AllocationRelease) XXX_Size() int {
-	return xxx_messageInfo_AllocationRelease.Size(m)
+
+func (x *AllocationRelease) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AllocationRelease) XXX_DiscardUnknown() {
-	xxx_messageInfo_AllocationRelease.DiscardUnknown(m)
+
+func (*AllocationRelease) ProtoMessage() {}
+
+func (x *AllocationRelease) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[22]
+	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)
 }
 
-var xxx_messageInfo_AllocationRelease proto.InternalMessageInfo
+// Deprecated: Use AllocationRelease.ProtoReflect.Descriptor instead.
+func (*AllocationRelease) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{22}
+}
 
-func (m *AllocationRelease) GetPartitionName() string {
-	if m != nil {
-		return m.PartitionName
+func (x *AllocationRelease) GetPartitionName() string {
+	if x != nil {
+		return x.PartitionName
 	}
 	return ""
 }
 
-func (m *AllocationRelease) GetApplicationID() string {
-	if m != nil {
-		return m.ApplicationID
+func (x *AllocationRelease) GetApplicationID() string {
+	if x != nil {
+		return x.ApplicationID
 	}
 	return ""
 }
 
-func (m *AllocationRelease) GetUUID() string {
-	if m != nil {
-		return m.UUID
+func (x *AllocationRelease) GetUUID() string {
+	if x != nil {
+		return x.UUID
 	}
 	return ""
 }
 
-func (m *AllocationRelease) GetTerminationType() TerminationType {
-	if m != nil {
-		return m.TerminationType
+func (x *AllocationRelease) GetTerminationType() TerminationType {
+	if x != nil {
+		return x.TerminationType
 	}
 	return TerminationType_UNKNOWN_TERMINATION_TYPE
 }
 
-func (m *AllocationRelease) GetMessage() string {
-	if m != nil {
-		return m.Message
+func (x *AllocationRelease) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
-func (m *AllocationRelease) GetAllocationKey() string {
-	if m != nil {
-		return m.AllocationKey
+func (x *AllocationRelease) GetAllocationKey() string {
+	if x != nil {
+		return x.AllocationKey
 	}
 	return ""
 }
 
 // Release ask
 type AllocationAskRelease struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Which partition to release the ask from, required.
 	PartitionName string `protobuf:"bytes,1,opt,name=partitionName,proto3" json:"partitionName,omitempty"`
 	// optional, when this is set, filter allocation key by application id.
@@ -1754,72 +2115,81 @@ type AllocationAskRelease struct {
 	// Termination type of the released allocation ask
 	TerminationType TerminationType `protobuf:"varint,4,opt,name=terminationType,proto3,enum=si.v1.TerminationType" json:"terminationType,omitempty"`
 	// For human-readable message
-	Message              string   `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"`
 }
 
-func (m *AllocationAskRelease) Reset()         { *m = AllocationAskRelease{} }
-func (m *AllocationAskRelease) String() string { return proto.CompactTextString(m) }
-func (*AllocationAskRelease) ProtoMessage()    {}
-func (*AllocationAskRelease) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{23}
-}
-func (m *AllocationAskRelease) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AllocationAskRelease.Unmarshal(m, b)
-}
-func (m *AllocationAskRelease) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AllocationAskRelease.Marshal(b, m, deterministic)
-}
-func (dst *AllocationAskRelease) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AllocationAskRelease.Merge(dst, src)
+func (x *AllocationAskRelease) Reset() {
+	*x = AllocationAskRelease{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[23]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AllocationAskRelease) XXX_Size() int {
-	return xxx_messageInfo_AllocationAskRelease.Size(m)
+
+func (x *AllocationAskRelease) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AllocationAskRelease) XXX_DiscardUnknown() {
-	xxx_messageInfo_AllocationAskRelease.DiscardUnknown(m)
+
+func (*AllocationAskRelease) ProtoMessage() {}
+
+func (x *AllocationAskRelease) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[23]
+	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)
 }
 
-var xxx_messageInfo_AllocationAskRelease proto.InternalMessageInfo
+// Deprecated: Use AllocationAskRelease.ProtoReflect.Descriptor instead.
+func (*AllocationAskRelease) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{23}
+}
 
-func (m *AllocationAskRelease) GetPartitionName() string {
-	if m != nil {
-		return m.PartitionName
+func (x *AllocationAskRelease) GetPartitionName() string {
+	if x != nil {
+		return x.PartitionName
 	}
 	return ""
 }
 
-func (m *AllocationAskRelease) GetApplicationID() string {
-	if m != nil {
-		return m.ApplicationID
+func (x *AllocationAskRelease) GetApplicationID() string {
+	if x != nil {
+		return x.ApplicationID
 	}
 	return ""
 }
 
-func (m *AllocationAskRelease) GetAllocationKey() string {
-	if m != nil {
-		return m.AllocationKey
+func (x *AllocationAskRelease) GetAllocationKey() string {
+	if x != nil {
+		return x.AllocationKey
 	}
 	return ""
 }
 
-func (m *AllocationAskRelease) GetTerminationType() TerminationType {
-	if m != nil {
-		return m.TerminationType
+func (x *AllocationAskRelease) GetTerminationType() TerminationType {
+	if x != nil {
+		return x.TerminationType
 	}
 	return TerminationType_UNKNOWN_TERMINATION_TYPE
 }
 
-func (m *AllocationAskRelease) GetMessage() string {
-	if m != nil {
-		return m.Message
+func (x *AllocationAskRelease) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
 type NodeInfo struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// ID of node, the node must exist to be updated
 	NodeID string `protobuf:"bytes,1,opt,name=nodeID,proto3" json:"nodeID,omitempty"`
 	// Action to perform by the scheduler
@@ -1833,193 +2203,220 @@ type NodeInfo struct {
 	// resources might be occupied (allocated) by other schedulers.
 	OccupiedResource *Resource `protobuf:"bytes,5,opt,name=occupiedResource,proto3" json:"occupiedResource,omitempty"`
 	// Allocated resources, this will be added when node registered to RM (recovery)
-	ExistingAllocations  []*Allocation `protobuf:"bytes,6,rep,name=existingAllocations,proto3" json:"existingAllocations,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
+	ExistingAllocations []*Allocation `protobuf:"bytes,6,rep,name=existingAllocations,proto3" json:"existingAllocations,omitempty"`
 }
 
-func (m *NodeInfo) Reset()         { *m = NodeInfo{} }
-func (m *NodeInfo) String() string { return proto.CompactTextString(m) }
-func (*NodeInfo) ProtoMessage()    {}
-func (*NodeInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{24}
-}
-func (m *NodeInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_NodeInfo.Unmarshal(m, b)
-}
-func (m *NodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_NodeInfo.Marshal(b, m, deterministic)
-}
-func (dst *NodeInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NodeInfo.Merge(dst, src)
+func (x *NodeInfo) Reset() {
+	*x = NodeInfo{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[24]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *NodeInfo) XXX_Size() int {
-	return xxx_messageInfo_NodeInfo.Size(m)
+
+func (x *NodeInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *NodeInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_NodeInfo.DiscardUnknown(m)
+
+func (*NodeInfo) ProtoMessage() {}
+
+func (x *NodeInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[24]
+	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)
 }
 
-var xxx_messageInfo_NodeInfo proto.InternalMessageInfo
+// Deprecated: Use NodeInfo.ProtoReflect.Descriptor instead.
+func (*NodeInfo) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{24}
+}
 
-func (m *NodeInfo) GetNodeID() string {
-	if m != nil {
-		return m.NodeID
+func (x *NodeInfo) GetNodeID() string {
+	if x != nil {
+		return x.NodeID
 	}
 	return ""
 }
 
-func (m *NodeInfo) GetAction() NodeInfo_ActionFromRM {
-	if m != nil {
-		return m.Action
+func (x *NodeInfo) GetAction() NodeInfo_ActionFromRM {
+	if x != nil {
+		return x.Action
 	}
 	return NodeInfo_UNKNOWN_ACTION_FROM_RM
 }
 
-func (m *NodeInfo) GetAttributes() map[string]string {
-	if m != nil {
-		return m.Attributes
+func (x *NodeInfo) GetAttributes() map[string]string {
+	if x != nil {
+		return x.Attributes
 	}
 	return nil
 }
 
-func (m *NodeInfo) GetSchedulableResource() *Resource {
-	if m != nil {
-		return m.SchedulableResource
+func (x *NodeInfo) GetSchedulableResource() *Resource {
+	if x != nil {
+		return x.SchedulableResource
 	}
 	return nil
 }
 
-func (m *NodeInfo) GetOccupiedResource() *Resource {
-	if m != nil {
-		return m.OccupiedResource
+func (x *NodeInfo) GetOccupiedResource() *Resource {
+	if x != nil {
+		return x.OccupiedResource
 	}
 	return nil
 }
 
-func (m *NodeInfo) GetExistingAllocations() []*Allocation {
-	if m != nil {
-		return m.ExistingAllocations
+func (x *NodeInfo) GetExistingAllocations() []*Allocation {
+	if x != nil {
+		return x.ExistingAllocations
 	}
 	return nil
 }
 
 type RejectedAllocationAsk struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	AllocationKey string `protobuf:"bytes,1,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"`
 	// The ID of the application
 	ApplicationID string `protobuf:"bytes,2,opt,name=applicationID,proto3" json:"applicationID,omitempty"`
 	// A human-readable reason message
-	Reason               string   `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"`
 }
 
-func (m *RejectedAllocationAsk) Reset()         { *m = RejectedAllocationAsk{} }
-func (m *RejectedAllocationAsk) String() string { return proto.CompactTextString(m) }
-func (*RejectedAllocationAsk) ProtoMessage()    {}
-func (*RejectedAllocationAsk) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{25}
-}
-func (m *RejectedAllocationAsk) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RejectedAllocationAsk.Unmarshal(m, b)
-}
-func (m *RejectedAllocationAsk) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RejectedAllocationAsk.Marshal(b, m, deterministic)
-}
-func (dst *RejectedAllocationAsk) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RejectedAllocationAsk.Merge(dst, src)
+func (x *RejectedAllocationAsk) Reset() {
+	*x = RejectedAllocationAsk{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[25]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *RejectedAllocationAsk) XXX_Size() int {
-	return xxx_messageInfo_RejectedAllocationAsk.Size(m)
+
+func (x *RejectedAllocationAsk) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *RejectedAllocationAsk) XXX_DiscardUnknown() {
-	xxx_messageInfo_RejectedAllocationAsk.DiscardUnknown(m)
+
+func (*RejectedAllocationAsk) ProtoMessage() {}
+
+func (x *RejectedAllocationAsk) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[25]
+	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)
 }
 
-var xxx_messageInfo_RejectedAllocationAsk proto.InternalMessageInfo
+// Deprecated: Use RejectedAllocationAsk.ProtoReflect.Descriptor instead.
+func (*RejectedAllocationAsk) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{25}
+}
 
-func (m *RejectedAllocationAsk) GetAllocationKey() string {
-	if m != nil {
-		return m.AllocationKey
+func (x *RejectedAllocationAsk) GetAllocationKey() string {
+	if x != nil {
+		return x.AllocationKey
 	}
 	return ""
 }
 
-func (m *RejectedAllocationAsk) GetApplicationID() string {
-	if m != nil {
-		return m.ApplicationID
+func (x *RejectedAllocationAsk) GetApplicationID() string {
+	if x != nil {
+		return x.ApplicationID
 	}
 	return ""
 }
 
-func (m *RejectedAllocationAsk) GetReason() string {
-	if m != nil {
-		return m.Reason
+func (x *RejectedAllocationAsk) GetReason() string {
+	if x != nil {
+		return x.Reason
 	}
 	return ""
 }
 
 type PredicatesArgs struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// allocation key identifies a container, the predicates function is going to check
 	// if this container is eligible to be placed ont to a node.
 	AllocationKey string `protobuf:"bytes,1,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"`
 	// the node ID the container is assigned to.
 	NodeID string `protobuf:"bytes,2,opt,name=nodeID,proto3" json:"nodeID,omitempty"`
 	// run the predicates for alloactions (true) or reservations (false)
-	Allocate             bool     `protobuf:"varint,3,opt,name=allocate,proto3" json:"allocate,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Allocate bool `protobuf:"varint,3,opt,name=allocate,proto3" json:"allocate,omitempty"`
 }
 
-func (m *PredicatesArgs) Reset()         { *m = PredicatesArgs{} }
-func (m *PredicatesArgs) String() string { return proto.CompactTextString(m) }
-func (*PredicatesArgs) ProtoMessage()    {}
-func (*PredicatesArgs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{26}
-}
-func (m *PredicatesArgs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PredicatesArgs.Unmarshal(m, b)
-}
-func (m *PredicatesArgs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PredicatesArgs.Marshal(b, m, deterministic)
-}
-func (dst *PredicatesArgs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PredicatesArgs.Merge(dst, src)
+func (x *PredicatesArgs) Reset() {
+	*x = PredicatesArgs{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[26]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PredicatesArgs) XXX_Size() int {
-	return xxx_messageInfo_PredicatesArgs.Size(m)
+
+func (x *PredicatesArgs) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *PredicatesArgs) XXX_DiscardUnknown() {
-	xxx_messageInfo_PredicatesArgs.DiscardUnknown(m)
+
+func (*PredicatesArgs) ProtoMessage() {}
+
+func (x *PredicatesArgs) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[26]
+	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)
 }
 
-var xxx_messageInfo_PredicatesArgs proto.InternalMessageInfo
+// Deprecated: Use PredicatesArgs.ProtoReflect.Descriptor instead.
+func (*PredicatesArgs) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{26}
+}
 
-func (m *PredicatesArgs) GetAllocationKey() string {
-	if m != nil {
-		return m.AllocationKey
+func (x *PredicatesArgs) GetAllocationKey() string {
+	if x != nil {
+		return x.AllocationKey
 	}
 	return ""
 }
 
-func (m *PredicatesArgs) GetNodeID() string {
-	if m != nil {
-		return m.NodeID
+func (x *PredicatesArgs) GetNodeID() string {
+	if x != nil {
+		return x.NodeID
 	}
 	return ""
 }
 
-func (m *PredicatesArgs) GetAllocate() bool {
-	if m != nil {
-		return m.Allocate
+func (x *PredicatesArgs) GetAllocate() bool {
+	if x != nil {
+		return x.Allocate
 	}
 	return false
 }
 
 type PreemptionPredicatesArgs struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// the allocation key of the container to check
 	AllocationKey string `protobuf:"bytes,1,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"`
 	// the node ID the container should be attempted to be scheduled on
@@ -2027,113 +2424,131 @@ type PreemptionPredicatesArgs struct {
 	// a list of existing allocations that should be tentatively removed before checking
 	PreemptAllocationKeys []string `protobuf:"bytes,3,rep,name=preemptAllocationKeys,proto3" json:"preemptAllocationKeys,omitempty"`
 	// index of last allocation in starting attempt (first attempt should be 0..startIndex)
-	StartIndex           int32    `protobuf:"varint,4,opt,name=startIndex,proto3" json:"startIndex,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	StartIndex int32 `protobuf:"varint,4,opt,name=startIndex,proto3" json:"startIndex,omitempty"`
 }
 
-func (m *PreemptionPredicatesArgs) Reset()         { *m = PreemptionPredicatesArgs{} }
-func (m *PreemptionPredicatesArgs) String() string { return proto.CompactTextString(m) }
-func (*PreemptionPredicatesArgs) ProtoMessage()    {}
-func (*PreemptionPredicatesArgs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{27}
-}
-func (m *PreemptionPredicatesArgs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PreemptionPredicatesArgs.Unmarshal(m, b)
-}
-func (m *PreemptionPredicatesArgs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PreemptionPredicatesArgs.Marshal(b, m, deterministic)
-}
-func (dst *PreemptionPredicatesArgs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PreemptionPredicatesArgs.Merge(dst, src)
+func (x *PreemptionPredicatesArgs) Reset() {
+	*x = PreemptionPredicatesArgs{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[27]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PreemptionPredicatesArgs) XXX_Size() int {
-	return xxx_messageInfo_PreemptionPredicatesArgs.Size(m)
+
+func (x *PreemptionPredicatesArgs) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *PreemptionPredicatesArgs) XXX_DiscardUnknown() {
-	xxx_messageInfo_PreemptionPredicatesArgs.DiscardUnknown(m)
+
+func (*PreemptionPredicatesArgs) ProtoMessage() {}
+
+func (x *PreemptionPredicatesArgs) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[27]
+	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)
 }
 
-var xxx_messageInfo_PreemptionPredicatesArgs proto.InternalMessageInfo
+// Deprecated: Use PreemptionPredicatesArgs.ProtoReflect.Descriptor instead.
+func (*PreemptionPredicatesArgs) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{27}
+}
 
-func (m *PreemptionPredicatesArgs) GetAllocationKey() string {
-	if m != nil {
-		return m.AllocationKey
+func (x *PreemptionPredicatesArgs) GetAllocationKey() string {
+	if x != nil {
+		return x.AllocationKey
 	}
 	return ""
 }
 
-func (m *PreemptionPredicatesArgs) GetNodeID() string {
-	if m != nil {
-		return m.NodeID
+func (x *PreemptionPredicatesArgs) GetNodeID() string {
+	if x != nil {
+		return x.NodeID
 	}
 	return ""
 }
 
-func (m *PreemptionPredicatesArgs) GetPreemptAllocationKeys() []string {
-	if m != nil {
-		return m.PreemptAllocationKeys
+func (x *PreemptionPredicatesArgs) GetPreemptAllocationKeys() []string {
+	if x != nil {
+		return x.PreemptAllocationKeys
 	}
 	return nil
 }
 
-func (m *PreemptionPredicatesArgs) GetStartIndex() int32 {
-	if m != nil {
-		return m.StartIndex
+func (x *PreemptionPredicatesArgs) GetStartIndex() int32 {
+	if x != nil {
+		return x.StartIndex
 	}
 	return 0
 }
 
 type PreemptionPredicatesResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// whether or not container will schedule on the node
 	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
 	// index of last allocation which was removed before success (ignored during failure)
-	Index                int32    `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Index int32 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
 }
 
-func (m *PreemptionPredicatesResponse) Reset()         { *m = PreemptionPredicatesResponse{} }
-func (m *PreemptionPredicatesResponse) String() string { return proto.CompactTextString(m) }
-func (*PreemptionPredicatesResponse) ProtoMessage()    {}
-func (*PreemptionPredicatesResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{28}
-}
-func (m *PreemptionPredicatesResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PreemptionPredicatesResponse.Unmarshal(m, b)
-}
-func (m *PreemptionPredicatesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PreemptionPredicatesResponse.Marshal(b, m, deterministic)
-}
-func (dst *PreemptionPredicatesResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PreemptionPredicatesResponse.Merge(dst, src)
+func (x *PreemptionPredicatesResponse) Reset() {
+	*x = PreemptionPredicatesResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[28]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PreemptionPredicatesResponse) XXX_Size() int {
-	return xxx_messageInfo_PreemptionPredicatesResponse.Size(m)
+
+func (x *PreemptionPredicatesResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *PreemptionPredicatesResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_PreemptionPredicatesResponse.DiscardUnknown(m)
+
+func (*PreemptionPredicatesResponse) ProtoMessage() {}
+
+func (x *PreemptionPredicatesResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[28]
+	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)
 }
 
-var xxx_messageInfo_PreemptionPredicatesResponse proto.InternalMessageInfo
+// Deprecated: Use PreemptionPredicatesResponse.ProtoReflect.Descriptor instead.
+func (*PreemptionPredicatesResponse) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{28}
+}
 
-func (m *PreemptionPredicatesResponse) GetSuccess() bool {
-	if m != nil {
-		return m.Success
+func (x *PreemptionPredicatesResponse) GetSuccess() bool {
+	if x != nil {
+		return x.Success
 	}
 	return false
 }
 
-func (m *PreemptionPredicatesResponse) GetIndex() int32 {
-	if m != nil {
-		return m.Index
+func (x *PreemptionPredicatesResponse) GetIndex() int32 {
+	if x != nil {
+		return x.Index
 	}
 	return 0
 }
 
 type UpdateContainerSchedulingStateRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// application ID
 	ApplicartionID string `protobuf:"bytes,1,opt,name=applicartionID,proto3" json:"applicartionID,omitempty"`
 	// allocation key used to identify a container.
@@ -2141,65 +2556,74 @@ type UpdateContainerSchedulingStateRequest struct {
 	// container scheduling state
 	State UpdateContainerSchedulingStateRequest_SchedulingState `protobuf:"varint,3,opt,name=state,proto3,enum=si.v1.UpdateContainerSchedulingStateRequest_SchedulingState" json:"state,omitempty"`
 	// an optional plain message to explain why it is in such state
-	Reason               string   `protobuf:"bytes,4,opt,name=reason,proto3" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Reason string `protobuf:"bytes,4,opt,name=reason,proto3" json:"reason,omitempty"`
 }
 
-func (m *UpdateContainerSchedulingStateRequest) Reset()         { *m = UpdateContainerSchedulingStateRequest{} }
-func (m *UpdateContainerSchedulingStateRequest) String() string { return proto.CompactTextString(m) }
-func (*UpdateContainerSchedulingStateRequest) ProtoMessage()    {}
-func (*UpdateContainerSchedulingStateRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{29}
-}
-func (m *UpdateContainerSchedulingStateRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UpdateContainerSchedulingStateRequest.Unmarshal(m, b)
-}
-func (m *UpdateContainerSchedulingStateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UpdateContainerSchedulingStateRequest.Marshal(b, m, deterministic)
-}
-func (dst *UpdateContainerSchedulingStateRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UpdateContainerSchedulingStateRequest.Merge(dst, src)
+func (x *UpdateContainerSchedulingStateRequest) Reset() {
+	*x = UpdateContainerSchedulingStateRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[29]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *UpdateContainerSchedulingStateRequest) XXX_Size() int {
-	return xxx_messageInfo_UpdateContainerSchedulingStateRequest.Size(m)
+
+func (x *UpdateContainerSchedulingStateRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *UpdateContainerSchedulingStateRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_UpdateContainerSchedulingStateRequest.DiscardUnknown(m)
+
+func (*UpdateContainerSchedulingStateRequest) ProtoMessage() {}
+
+func (x *UpdateContainerSchedulingStateRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[29]
+	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)
 }
 
-var xxx_messageInfo_UpdateContainerSchedulingStateRequest proto.InternalMessageInfo
+// Deprecated: Use UpdateContainerSchedulingStateRequest.ProtoReflect.Descriptor instead.
+func (*UpdateContainerSchedulingStateRequest) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{29}
+}
 
-func (m *UpdateContainerSchedulingStateRequest) GetApplicartionID() string {
-	if m != nil {
-		return m.ApplicartionID
+func (x *UpdateContainerSchedulingStateRequest) GetApplicartionID() string {
+	if x != nil {
+		return x.ApplicartionID
 	}
 	return ""
 }
 
-func (m *UpdateContainerSchedulingStateRequest) GetAllocationKey() string {
-	if m != nil {
-		return m.AllocationKey
+func (x *UpdateContainerSchedulingStateRequest) GetAllocationKey() string {
+	if x != nil {
+		return x.AllocationKey
 	}
 	return ""
 }
 
-func (m *UpdateContainerSchedulingStateRequest) GetState() UpdateContainerSchedulingStateRequest_SchedulingState {
-	if m != nil {
-		return m.State
+func (x *UpdateContainerSchedulingStateRequest) GetState() UpdateContainerSchedulingStateRequest_SchedulingState {
+	if x != nil {
+		return x.State
 	}
 	return UpdateContainerSchedulingStateRequest_UNKNOWN_SCHEDULING_STATE
 }
 
-func (m *UpdateContainerSchedulingStateRequest) GetReason() string {
-	if m != nil {
-		return m.Reason
+func (x *UpdateContainerSchedulingStateRequest) GetReason() string {
+	if x != nil {
+		return x.Reason
 	}
 	return ""
 }
 
 type UpdateConfigurationRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// RM ID to update
 	RmID string `protobuf:"bytes,2,opt,name=rmID,proto3" json:"rmID,omitempty"`
 	// PolicyGroup to update
@@ -2207,65 +2631,74 @@ type UpdateConfigurationRequest struct {
 	// New configuration to update
 	Config string `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"`
 	// Additional configuration key/value pairs for configuration not related to the policyGroup.
-	ExtraConfig          map[string]string `protobuf:"bytes,5,rep,name=extraConfig,proto3" json:"extraConfig,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	ExtraConfig map[string]string `protobuf:"bytes,5,rep,name=extraConfig,proto3" json:"extraConfig,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 }
 
-func (m *UpdateConfigurationRequest) Reset()         { *m = UpdateConfigurationRequest{} }
-func (m *UpdateConfigurationRequest) String() string { return proto.CompactTextString(m) }
-func (*UpdateConfigurationRequest) ProtoMessage()    {}
-func (*UpdateConfigurationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{30}
-}
-func (m *UpdateConfigurationRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UpdateConfigurationRequest.Unmarshal(m, b)
-}
-func (m *UpdateConfigurationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UpdateConfigurationRequest.Marshal(b, m, deterministic)
-}
-func (dst *UpdateConfigurationRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UpdateConfigurationRequest.Merge(dst, src)
+func (x *UpdateConfigurationRequest) Reset() {
+	*x = UpdateConfigurationRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[30]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *UpdateConfigurationRequest) XXX_Size() int {
-	return xxx_messageInfo_UpdateConfigurationRequest.Size(m)
+
+func (x *UpdateConfigurationRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *UpdateConfigurationRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_UpdateConfigurationRequest.DiscardUnknown(m)
+
+func (*UpdateConfigurationRequest) ProtoMessage() {}
+
+func (x *UpdateConfigurationRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[30]
+	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)
 }
 
-var xxx_messageInfo_UpdateConfigurationRequest proto.InternalMessageInfo
+// Deprecated: Use UpdateConfigurationRequest.ProtoReflect.Descriptor instead.
+func (*UpdateConfigurationRequest) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{30}
+}
 
-func (m *UpdateConfigurationRequest) GetRmID() string {
-	if m != nil {
-		return m.RmID
+func (x *UpdateConfigurationRequest) GetRmID() string {
+	if x != nil {
+		return x.RmID
 	}
 	return ""
 }
 
-func (m *UpdateConfigurationRequest) GetPolicyGroup() string {
-	if m != nil {
-		return m.PolicyGroup
+func (x *UpdateConfigurationRequest) GetPolicyGroup() string {
+	if x != nil {
+		return x.PolicyGroup
 	}
 	return ""
 }
 
-func (m *UpdateConfigurationRequest) GetConfig() string {
-	if m != nil {
-		return m.Config
+func (x *UpdateConfigurationRequest) GetConfig() string {
+	if x != nil {
+		return x.Config
 	}
 	return ""
 }
 
-func (m *UpdateConfigurationRequest) GetExtraConfig() map[string]string {
-	if m != nil {
-		return m.ExtraConfig
+func (x *UpdateConfigurationRequest) GetExtraConfig() map[string]string {
+	if x != nil {
+		return x.ExtraConfig
 	}
 	return nil
 }
 
 type EventRecord struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// the type of the object associated with the event
 	Type EventRecord_Type `protobuf:"varint,1,opt,name=type,proto3,enum=si.v1.EventRecord_Type" json:"type,omitempty"`
 	// ID of the object associated with the event
@@ -2281,606 +2714,1152 @@ type EventRecord struct {
 	// the secondary object in the event (eg. allocation UUID, request ID)
 	ReferenceID string `protobuf:"bytes,9,opt,name=referenceID,proto3" json:"referenceID,omitempty"`
 	// the resource value if the change involves setting/modifying a resource
-	Resource             *Resource `protobuf:"bytes,10,opt,name=resource,proto3" json:"resource,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
+	Resource *Resource `protobuf:"bytes,10,opt,name=resource,proto3" json:"resource,omitempty"`
 }
 
-func (m *EventRecord) Reset()         { *m = EventRecord{} }
-func (m *EventRecord) String() string { return proto.CompactTextString(m) }
-func (*EventRecord) ProtoMessage()    {}
-func (*EventRecord) Descriptor() ([]byte, []int) {
-	return fileDescriptor_si_73a39e8eef8a796f, []int{31}
-}
-func (m *EventRecord) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventRecord.Unmarshal(m, b)
-}
-func (m *EventRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventRecord.Marshal(b, m, deterministic)
-}
-func (dst *EventRecord) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventRecord.Merge(dst, src)
+func (x *EventRecord) Reset() {
+	*x = EventRecord{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[31]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *EventRecord) XXX_Size() int {
-	return xxx_messageInfo_EventRecord.Size(m)
+
+func (x *EventRecord) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *EventRecord) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventRecord.DiscardUnknown(m)
+
+func (*EventRecord) ProtoMessage() {}
+
+func (x *EventRecord) ProtoReflect() protoreflect.Message {
+	mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[31]
+	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)
 }
 
-var xxx_messageInfo_EventRecord proto.InternalMessageInfo
+// Deprecated: Use EventRecord.ProtoReflect.Descriptor instead.
+func (*EventRecord) Descriptor() ([]byte, []int) {
+	return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{31}
+}
 
-func (m *EventRecord) GetType() EventRecord_Type {
-	if m != nil {
-		return m.Type
+func (x *EventRecord) GetType() EventRecord_Type {
+	if x != nil {
+		return x.Type
 	}
 	return EventRecord_UNKNOWN_EVENTRECORD_TYPE
 }
 
-func (m *EventRecord) GetObjectID() string {
-	if m != nil {
-		return m.ObjectID
+func (x *EventRecord) GetObjectID() string {
+	if x != nil {
+		return x.ObjectID
 	}
 	return ""
 }
 
-func (m *EventRecord) GetMessage() string {
-	if m != nil {
-		return m.Message
+func (x *EventRecord) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
-func (m *EventRecord) GetTimestampNano() int64 {
-	if m != nil {
-		return m.TimestampNano
+func (x *EventRecord) GetTimestampNano() int64 {
+	if x != nil {
+		return x.TimestampNano
 	}
 	return 0
 }
 
-func (m *EventRecord) GetEventChangeType() EventRecord_ChangeType {
-	if m != nil {
-		return m.EventChangeType
+func (x *EventRecord) GetEventChangeType() EventRecord_ChangeType {
+	if x != nil {
+		return x.EventChangeType
 	}
 	return EventRecord_NONE
 }
 
-func (m *EventRecord) GetEventChangeDetail() EventRecord_ChangeDetail {
-	if m != nil {
-		return m.EventChangeDetail
+func (x *EventRecord) GetEventChangeDetail() EventRecord_ChangeDetail {
+	if x != nil {
+		return x.EventChangeDetail
 	}
 	return EventRecord_DETAILS_NONE
 }
 
-func (m *EventRecord) GetReferenceID() string {
-	if m != nil {
-		return m.ReferenceID
+func (x *EventRecord) GetReferenceID() string {
+	if x != nil {
+		return x.ReferenceID
 	}
 	return ""
 }
 
-func (m *EventRecord) GetResource() *Resource {
-	if m != nil {
-		return m.Resource
+func (x *EventRecord) GetResource() *Resource {
+	if x != nil {
+		return x.Resource
 	}
 	return nil
 }
 
-var E_SiSecret = &proto.ExtensionDesc{
-	ExtendedType:  (*descriptorpb.FieldOptions)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         1059,
-	Name:          "si.v1.si_secret",
-	Tag:           "varint,1059,opt,name=si_secret,json=siSecret",
-	Filename:      "yunikorn-scheduler-interface/si.proto",
-}
-
-func init() {
-	proto.RegisterType((*RegisterResourceManagerRequest)(nil), "si.v1.RegisterResourceManagerRequest")
-	proto.RegisterMapType((map[string]string)(nil), "si.v1.RegisterResourceManagerRequest.BuildInfoEntry")
-	proto.RegisterMapType((map[string]string)(nil), "si.v1.RegisterResourceManagerRequest.ExtraConfigEntry")
-	proto.RegisterType((*RegisterResourceManagerResponse)(nil), "si.v1.RegisterResourceManagerResponse")
-	proto.RegisterType((*AllocationRequest)(nil), "si.v1.AllocationRequest")
-	proto.RegisterType((*ApplicationRequest)(nil), "si.v1.ApplicationRequest")
-	proto.RegisterType((*NodeRequest)(nil), "si.v1.NodeRequest")
-	proto.RegisterType((*AllocationResponse)(nil), "si.v1.AllocationResponse")
-	proto.RegisterType((*ApplicationResponse)(nil), "si.v1.ApplicationResponse")
-	proto.RegisterType((*NodeResponse)(nil), "si.v1.NodeResponse")
-	proto.RegisterType((*UpdatedApplication)(nil), "si.v1.UpdatedApplication")
-	proto.RegisterType((*RejectedApplication)(nil), "si.v1.RejectedApplication")
-	proto.RegisterType((*AcceptedApplication)(nil), "si.v1.AcceptedApplication")
-	proto.RegisterType((*RejectedNode)(nil), "si.v1.RejectedNode")
-	proto.RegisterType((*AcceptedNode)(nil), "si.v1.AcceptedNode")
-	proto.RegisterType((*Resource)(nil), "si.v1.Resource")
-	proto.RegisterMapType((map[string]*Quantity)(nil), "si.v1.Resource.ResourcesEntry")
-	proto.RegisterType((*Quantity)(nil), "si.v1.Quantity")
-	proto.RegisterType((*AllocationAsk)(nil), "si.v1.AllocationAsk")
-	proto.RegisterMapType((map[string]string)(nil), "si.v1.AllocationAsk.TagsEntry")
-	proto.RegisterType((*PreemptionPolicy)(nil), "si.v1.PreemptionPolicy")
-	proto.RegisterType((*AddApplicationRequest)(nil), "si.v1.AddApplicationRequest")
-	proto.RegisterMapType((map[string]string)(nil), "si.v1.AddApplicationRequest.TagsEntry")
-	proto.RegisterType((*RemoveApplicationRequest)(nil), "si.v1.RemoveApplicationRequest")
-	proto.RegisterType((*UserGroupInformation)(nil), "si.v1.UserGroupInformation")
-	proto.RegisterType((*Allocation)(nil), "si.v1.Allocation")
-	proto.RegisterMapType((map[string]string)(nil), "si.v1.Allocation.AllocationTagsEntry")
-	proto.RegisterType((*AllocationReleasesRequest)(nil), "si.v1.AllocationReleasesRequest")
-	proto.RegisterType((*AllocationRelease)(nil), "si.v1.AllocationRelease")
-	proto.RegisterType((*AllocationAskRelease)(nil), "si.v1.AllocationAskRelease")
-	proto.RegisterType((*NodeInfo)(nil), "si.v1.NodeInfo")
-	proto.RegisterMapType((map[string]string)(nil), "si.v1.NodeInfo.AttributesEntry")
-	proto.RegisterType((*RejectedAllocationAsk)(nil), "si.v1.RejectedAllocationAsk")
-	proto.RegisterType((*PredicatesArgs)(nil), "si.v1.PredicatesArgs")
-	proto.RegisterType((*PreemptionPredicatesArgs)(nil), "si.v1.PreemptionPredicatesArgs")
-	proto.RegisterType((*PreemptionPredicatesResponse)(nil), "si.v1.PreemptionPredicatesResponse")
-	proto.RegisterType((*UpdateContainerSchedulingStateRequest)(nil), "si.v1.UpdateContainerSchedulingStateRequest")
-	proto.RegisterType((*UpdateConfigurationRequest)(nil), "si.v1.UpdateConfigurationRequest")
-	proto.RegisterMapType((map[string]string)(nil), "si.v1.UpdateConfigurationRequest.ExtraConfigEntry")
-	proto.RegisterType((*EventRecord)(nil), "si.v1.EventRecord")
-	proto.RegisterEnum("si.v1.TerminationType", TerminationType_name, TerminationType_value)
-	proto.RegisterEnum("si.v1.NodeInfo_ActionFromRM", NodeInfo_ActionFromRM_name, NodeInfo_ActionFromRM_value)
-	proto.RegisterEnum("si.v1.UpdateContainerSchedulingStateRequest_SchedulingState", UpdateContainerSchedulingStateRequest_SchedulingState_name, UpdateContainerSchedulingStateRequest_SchedulingState_value)
-	proto.RegisterEnum("si.v1.EventRecord_Type", EventRecord_Type_name, EventRecord_Type_value)
-	proto.RegisterEnum("si.v1.EventRecord_ChangeType", EventRecord_ChangeType_name, EventRecord_ChangeType_value)
-	proto.RegisterEnum("si.v1.EventRecord_ChangeDetail", EventRecord_ChangeDetail_name, EventRecord_ChangeDetail_value)
-	proto.RegisterExtension(E_SiSecret)
-}
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// SchedulerClient is the client API for Scheduler service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type SchedulerClient interface {
-	// Register a RM, if it is a reconnect from previous RM the call will
-	// trigger a cleanup of all in-memory data and resync with RM.
-	RegisterResourceManager(ctx context.Context, in *RegisterResourceManagerRequest, opts ...grpc.CallOption) (*RegisterResourceManagerResponse, error)
-	// Update Scheduler status (this includes node status update, allocation request
-	// updates, etc. And receive updates from scheduler for allocation changes,
-	// any required status changes, etc.
-	// Update allocation request
-	UpdateAllocation(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateAllocationClient, error)
-	// Update application request
-	UpdateApplication(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateApplicationClient, error)
-	// Update node info
-	UpdateNode(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateNodeClient, error)
-}
-
-type schedulerClient struct {
-	cc *grpc.ClientConn
-}
-
-func NewSchedulerClient(cc *grpc.ClientConn) SchedulerClient {
-	return &schedulerClient{cc}
-}
-
-func (c *schedulerClient) RegisterResourceManager(ctx context.Context, in *RegisterResourceManagerRequest, opts ...grpc.CallOption) (*RegisterResourceManagerResponse, error) {
-	out := new(RegisterResourceManagerResponse)
-	err := c.cc.Invoke(ctx, "/si.v1.Scheduler/RegisterResourceManager", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *schedulerClient) UpdateAllocation(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateAllocationClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_Scheduler_serviceDesc.Streams[0], "/si.v1.Scheduler/UpdateAllocation", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &schedulerUpdateAllocationClient{stream}
-	return x, nil
-}
-
-type Scheduler_UpdateAllocationClient interface {
-	Send(*AllocationRequest) error
-	Recv() (*AllocationResponse, error)
-	grpc.ClientStream
-}
-
-type schedulerUpdateAllocationClient struct {
-	grpc.ClientStream
-}
-
-func (x *schedulerUpdateAllocationClient) Send(m *AllocationRequest) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *schedulerUpdateAllocationClient) Recv() (*AllocationResponse, error) {
-	m := new(AllocationResponse)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *schedulerClient) UpdateApplication(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateApplicationClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_Scheduler_serviceDesc.Streams[1], "/si.v1.Scheduler/UpdateApplication", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &schedulerUpdateApplicationClient{stream}
-	return x, nil
-}
-
-type Scheduler_UpdateApplicationClient interface {
-	Send(*ApplicationRequest) error
-	Recv() (*ApplicationResponse, error)
-	grpc.ClientStream
-}
-
-type schedulerUpdateApplicationClient struct {
-	grpc.ClientStream
-}
-
-func (x *schedulerUpdateApplicationClient) Send(m *ApplicationRequest) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *schedulerUpdateApplicationClient) Recv() (*ApplicationResponse, error) {
-	m := new(ApplicationResponse)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *schedulerClient) UpdateNode(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateNodeClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_Scheduler_serviceDesc.Streams[2], "/si.v1.Scheduler/UpdateNode", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &schedulerUpdateNodeClient{stream}
-	return x, nil
-}
-
-type Scheduler_UpdateNodeClient interface {
-	Send(*NodeRequest) error
-	Recv() (*NodeResponse, error)
-	grpc.ClientStream
-}
-
-type schedulerUpdateNodeClient struct {
-	grpc.ClientStream
-}
-
-func (x *schedulerUpdateNodeClient) Send(m *NodeRequest) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *schedulerUpdateNodeClient) Recv() (*NodeResponse, error) {
-	m := new(NodeResponse)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-// SchedulerServer is the server API for Scheduler service.
-type SchedulerServer interface {
-	// Register a RM, if it is a reconnect from previous RM the call will
-	// trigger a cleanup of all in-memory data and resync with RM.
-	RegisterResourceManager(context.Context, *RegisterResourceManagerRequest) (*RegisterResourceManagerResponse, error)
-	// Update Scheduler status (this includes node status update, allocation request
-	// updates, etc. And receive updates from scheduler for allocation changes,
-	// any required status changes, etc.
-	// Update allocation request
-	UpdateAllocation(Scheduler_UpdateAllocationServer) error
-	// Update application request
-	UpdateApplication(Scheduler_UpdateApplicationServer) error
-	// Update node info
-	UpdateNode(Scheduler_UpdateNodeServer) error
-}
-
-func RegisterSchedulerServer(s *grpc.Server, srv SchedulerServer) {
-	s.RegisterService(&_Scheduler_serviceDesc, srv)
-}
-
-func _Scheduler_RegisterResourceManager_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(RegisterResourceManagerRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(SchedulerServer).RegisterResourceManager(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/si.v1.Scheduler/RegisterResourceManager",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(SchedulerServer).RegisterResourceManager(ctx, req.(*RegisterResourceManagerRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Scheduler_UpdateAllocation_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(SchedulerServer).UpdateAllocation(&schedulerUpdateAllocationServer{stream})
-}
-
-type Scheduler_UpdateAllocationServer interface {
-	Send(*AllocationResponse) error
-	Recv() (*AllocationRequest, error)
-	grpc.ServerStream
-}
-
-type schedulerUpdateAllocationServer struct {
-	grpc.ServerStream
-}
-
-func (x *schedulerUpdateAllocationServer) Send(m *AllocationResponse) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *schedulerUpdateAllocationServer) Recv() (*AllocationRequest, error) {
-	m := new(AllocationRequest)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func _Scheduler_UpdateApplication_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(SchedulerServer).UpdateApplication(&schedulerUpdateApplicationServer{stream})
-}
-
-type Scheduler_UpdateApplicationServer interface {
-	Send(*ApplicationResponse) error
-	Recv() (*ApplicationRequest, error)
-	grpc.ServerStream
-}
-
-type schedulerUpdateApplicationServer struct {
-	grpc.ServerStream
-}
-
-func (x *schedulerUpdateApplicationServer) Send(m *ApplicationResponse) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *schedulerUpdateApplicationServer) Recv() (*ApplicationRequest, error) {
-	m := new(ApplicationRequest)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func _Scheduler_UpdateNode_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(SchedulerServer).UpdateNode(&schedulerUpdateNodeServer{stream})
-}
-
-type Scheduler_UpdateNodeServer interface {
-	Send(*NodeResponse) error
-	Recv() (*NodeRequest, error)
-	grpc.ServerStream
-}
-
-type schedulerUpdateNodeServer struct {
-	grpc.ServerStream
+var file_yunikorn_scheduler_interface_si_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*descriptorpb.FieldOptions)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         1059,
+		Name:          "si.v1.si_secret",
+		Tag:           "varint,1059,opt,name=si_secret",
+		Filename:      "yunikorn-scheduler-interface/si.proto",
+	},
 }
 
-func (x *schedulerUpdateNodeServer) Send(m *NodeResponse) error {
-	return x.ServerStream.SendMsg(m)
-}
+// Extension fields to descriptorpb.FieldOptions.
+var (
+	// Indicates that a field MAY contain information that is sensitive
+	// and MUST be treated as such (e.g. not logged).
+	//
+	// optional bool si_secret = 1059;
+	E_SiSecret = &file_yunikorn_scheduler_interface_si_proto_extTypes[0]
+)
 
-func (x *schedulerUpdateNodeServer) Recv() (*NodeRequest, error) {
-	m := new(NodeRequest)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
+var File_yunikorn_scheduler_interface_si_proto protoreflect.FileDescriptor
+
+var file_yunikorn_scheduler_interface_si_proto_rawDesc = []byte{
+	0x0a, 0x25, 0x79, 0x75, 0x6e, 0x69, 0x6b, 0x6f, 0x72, 0x6e, 0x2d, 0x73, 0x63, 0x68, 0x65, 0x64,
+	0x75, 0x6c, 0x65, 0x72, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73,
+	0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x20,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
+	0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x22, 0xb4, 0x03, 0x0a, 0x1e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73,
+	0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
+	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+	0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72,
+	0x6f, 0x75, 0x70, 0x12, 0x52, 0x0a, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f,
+	0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
+	0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d,
+	0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x75,
+	0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x62, 0x75,
+	0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+	0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
+	0x58, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67,
+	0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e,
+	0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x72,
+	0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x78,
+	0x74, 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x3c, 0x0a, 0x0e, 0x42, 0x75, 0x69,
+	0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 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, 0x3e, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x72, 0x61,
+	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x21, 0x0a, 0x1f, 0x52, 0x65, 0x67, 0x69, 0x73,
+	0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67,
+	0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x11, 0x41,
+	0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x28, 0x0a, 0x04, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14,
+	0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x41, 0x73, 0x6b, 0x52, 0x04, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x65,
+	0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73,
+	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+	0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08,
+	0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6d, 0x49, 0x44,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x22, 0x91, 0x01, 0x0a,
+	0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x03, 0x6e, 0x65, 0x77, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x1c, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c,
+	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x03,
+	0x6e, 0x65, 0x77, 0x12, 0x37, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f,
+	0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04,
+	0x72, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6d, 0x49, 0x44,
+	0x22, 0x48, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x25, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f,
+	0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+	0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x22, 0xea, 0x01, 0x0a, 0x12, 0x41,
+	0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x23, 0x0a, 0x03, 0x6e, 0x65, 0x77, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11,
+	0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73,
+	0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31,
+	0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61,
+	0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x0c,
+	0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x73, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52,
+	0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x73, 0x6b, 0x73, 0x12, 0x38, 0x0a,
+	0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x1c, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64,
+	0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x52, 0x08, 0x72,
+	0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c,
+	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x36, 0x0a, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74,
+	0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x72,
+	0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70,
+	0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x69, 0x2e, 0x76,
+	0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12,
+	0x33, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+	0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x75, 0x70, 0x64,
+	0x61, 0x74, 0x65, 0x64, 0x22, 0x70, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
+	0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x72, 0x65, 0x6a,
+	0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65,
+	0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+	0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x61, 0x63,
+	0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x22, 0xa6, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74,
+	0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a,
+	0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x18, 0x73, 0x74, 0x61,
+	0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x73, 0x74, 0x61,
+	0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22,
+	0x53, 0x0a, 0x13, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69,
+	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61,
+	0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06,
+	0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65,
+	0x61, 0x73, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64,
+	0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x61,
+	0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
+	0x44, 0x22, 0x3e, 0x0a, 0x0c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64,
+	0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61,
+	0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
+	0x6e, 0x22, 0x26, 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64,
+	0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x22, 0x97, 0x01, 0x0a, 0x08, 0x52, 0x65,
+	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+	0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x69, 0x2e, 0x76,
+	0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75,
+	0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75,
+	0x72, 0x63, 0x65, 0x73, 0x1a, 0x4d, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 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, 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+	0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+	0x02, 0x38, 0x01, 0x22, 0x20, 0x0a, 0x08, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd6, 0x04, 0x0a, 0x0d, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
+	0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a,
+	0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x0b, 0x72, 0x65, 0x73,
+	0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
+	0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
+	0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x73, 0x6b, 0x12, 0x26, 0x0a, 0x0e,
+	0x6d, 0x61, 0x78, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
+	0x12, 0x42, 0x0a, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d,
+	0x65, 0x6f, 0x75, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
+	0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f,
+	0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x53, 0x65, 0x63,
+	0x6f, 0x6e, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b,
+	0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0d, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20,
+	0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72,
+	0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b,
+	0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72,
+	0x12, 0x43, 0x0a, 0x10, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
+	0x6c, 0x69, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x69, 0x2e,
+	0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c,
+	0x69, 0x63, 0x79, 0x52, 0x10, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 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, 0x6c,
+	0x0a, 0x10, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
+	0x63, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x65, 0x6d,
+	0x70, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x61, 0x6c,
+	0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x12, 0x2c,
+	0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x4f, 0x74,
+	0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
+	0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x22, 0xd4, 0x03, 0x0a,
+	0x15, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61,
+	0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09,
+	0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61,
+	0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65,
+	0x12, 0x2d, 0x0a, 0x03, 0x75, 0x67, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
+	0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49,
+	0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x75, 0x67, 0x69, 0x12,
+	0x3a, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e,
+	0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x42, 0x0a, 0x1c, 0x65,
+	0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d,
+	0x69, 0x6c, 0x6c, 0x69, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65,
+	0x6f, 0x75, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12,
+	0x37, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x41, 0x73,
+	0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+	0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68,
+	0x6f, 0x6c, 0x64, 0x65, 0x72, 0x41, 0x73, 0x6b, 0x12, 0x30, 0x0a, 0x13, 0x67, 0x61, 0x6e, 0x67,
+	0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x18,
+	0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x67, 0x61, 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, 0x64,
+	0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61,
+	0x67, 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, 0x66, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70,
+	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61,
+	0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x14, 0x55,
+	0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70,
+	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22,
+	0xee, 0x03, 0x0a, 0x0a, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24,
+	0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x4b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73,
+	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+	0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
+	0x61, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x55, 0x55, 0x49, 0x44, 0x12, 0x3b, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75,
+	0x72, 0x63, 0x65, 0x50, 0x65, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+	0x63, 0x65, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x65, 0x72, 0x41,
+	0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
+	0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c,
+	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x24,
+	0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18,
+	0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75,
+	0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x73,
+	0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c,
+	0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x1a, 0x41, 0x0a, 0x13,
+	0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 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, 0x4a,
+	0x04, 0x08, 0x07, 0x10, 0x08, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65,
+	0x22, 0xc0, 0x01, 0x0a, 0x19, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+	0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c,
+	0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, 0x52,
+	0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73,
+	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+	0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x17,
+	0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x73, 0x54, 0x6f,
+	0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
+	0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x41, 0x73, 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f,
+	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6c, 0x65,
+	0x61, 0x73, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x11, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x72,
+	0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+	0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x04, 0x55, 0x55, 0x49, 0x44, 0x12, 0x40, 0x0a, 0x0f, 0x74, 0x65, 0x72,
+	0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x16, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69,
+	0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x74, 0x65, 0x72, 0x6d,
+	0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 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, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c,
+	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x22, 0xe4, 0x01, 0x0a, 0x14,
+	0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x52, 0x65, 0x6c,
+	0x65, 0x61, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72,
+	0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70,
+	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44,
+	0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65,
+	0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x16, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 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, 0x9c, 0x04, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12,
+	0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+	0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46,
+	0x72, 0x6f, 0x6d, 0x52, 0x4d, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a,
+	0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e,
+	0x66, 0x6f, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x41,
+	0x0a, 0x13, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73,
+	0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69,
+	0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x13, 0x73, 0x63,
+	0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x12, 0x3b, 0x0a, 0x10, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73,
+	0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x69,
+	0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x10, 0x6f, 0x63,
+	0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x43,
+	0x0a, 0x13, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x69,
+	0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13,
+	0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 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, 0x7d, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d,
+	0x52, 0x4d, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x41, 0x43,
+	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x52, 0x4d, 0x10, 0x00, 0x12, 0x0a,
+	0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50,
+	0x44, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x5f,
+	0x4e, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x49,
+	0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x52, 0x41, 0x49, 0x4e,
+	0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10,
+	0x05, 0x22, 0x7b, 0x0a, 0x15, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c,
+	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x73, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c,
+	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79,
+	0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
+	0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x6a,
+	0x0a, 0x0e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73,
+	0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65,
+	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x1a,
+	0x0a, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
+	0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x18, 0x50,
+	0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61,
+	0x74, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
+	0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a,
+	0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e,
+	0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x15, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74,
+	0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x03,
+	0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x41, 0x6c, 0x6c,
+	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73,
+	0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x4e, 0x0a, 0x1c, 0x50,
+	0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61,
+	0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73,
+	0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75,
+	0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xc8, 0x02, 0x0a, 0x25,
+	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53,
+	0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
+	0x72, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61,
+	0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x24, 0x0a,
+	0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x4b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
+	0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
+	0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65,
+	0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
+	0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22,
+	0x65, 0x0a, 0x0f, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61,
+	0x74, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x43,
+	0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x00,
+	0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a,
+	0x09, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08,
+	0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41,
+	0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0x8f, 0x02, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74,
+	0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6f, 0x6c,
+	0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+	0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x63,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x12, 0x54, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66,
+	0x69, 0x67, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31,
+	0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x72,
+	0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x78,
+	0x74, 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x3e, 0x0a, 0x10, 0x45, 0x78, 0x74,
+	0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52,
+	0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0xa6, 0x09, 0x0a, 0x0b, 0x45, 0x76, 0x65,
+	0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45,
+	0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52,
+	0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49,
+	0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49,
+	0x44, 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, 0x24, 0x0a, 0x0d, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x61, 0x6e, 0x6f, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x61, 0x6e,
+	0x6f, 0x12, 0x47, 0x0a, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
+	0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x73, 0x69, 0x2e,
+	0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43,
+	0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74,
+	0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x11, 0x65, 0x76,
+	0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18,
+	0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76,
+	0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
+	0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x11, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x66,
+	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+	0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x12, 0x2b, 0x0a, 0x08, 0x72,
+	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
+	0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08,
+	0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65,
+	0x12, 0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x56, 0x45, 0x4e,
+	0x54, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x0b,
+	0x0a, 0x07, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41,
+	0x50, 0x50, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, 0x09,
+	0x0a, 0x05, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0x04, 0x22, 0x34, 0x0a, 0x0a, 0x43, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10,
+	0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44,
+	0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x03, 0x22,
+	0x82, 0x05, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
+	0x12, 0x10, 0x0a, 0x0c, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x53, 0x5f, 0x4e, 0x4f, 0x4e, 0x45,
+	0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x41,
+	0x4e, 0x43, 0x45, 0x4c, 0x10, 0x64, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53,
+	0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x10, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x51,
+	0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x66, 0x12, 0x0e,
+	0x0a, 0x09, 0x41, 0x50, 0x50, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x10, 0xc8, 0x01, 0x12, 0x10,
+	0x0a, 0x0b, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0xc9, 0x01,
+	0x12, 0x0f, 0x0a, 0x0a, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x10, 0xca,
+	0x01, 0x12, 0x0c, 0x0a, 0x07, 0x41, 0x50, 0x50, 0x5f, 0x4e, 0x45, 0x57, 0x10, 0xcb, 0x01, 0x12,
+	0x11, 0x0a, 0x0c, 0x41, 0x50, 0x50, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10,
+	0xcc, 0x01, 0x12, 0x11, 0x0a, 0x0c, 0x41, 0x50, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49,
+	0x4e, 0x47, 0x10, 0xcd, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x55, 0x4e,
+	0x4e, 0x49, 0x4e, 0x47, 0x10, 0xce, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x50, 0x50, 0x5f, 0x43,
+	0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0xcf, 0x01, 0x12, 0x12, 0x0a, 0x0d,
+	0x41, 0x50, 0x50, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xd0, 0x01,
+	0x12, 0x10, 0x0a, 0x0b, 0x41, 0x50, 0x50, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x49, 0x4e, 0x47, 0x10,
+	0xd1, 0x01, 0x12, 0x0f, 0x0a, 0x0a, 0x41, 0x50, 0x50, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44,
+	0x10, 0xd2, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x4f,
+	0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xac, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x4e, 0x4f,
+	0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0xad, 0x02, 0x12, 0x15, 0x0a, 0x10, 0x4e,
+	0x4f, 0x44, 0x45, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10,
+	0xae, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43,
+	0x10, 0xaf, 0x02, 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x41, 0x50, 0x41,
+	0x43, 0x49, 0x54, 0x59, 0x10, 0xb0, 0x02, 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x4f, 0x44, 0x45, 0x5f,
+	0x4f, 0x43, 0x43, 0x55, 0x50, 0x49, 0x45, 0x44, 0x10, 0xb1, 0x02, 0x12, 0x11, 0x0a, 0x0c, 0x51,
+	0x55, 0x45, 0x55, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x90, 0x03, 0x12, 0x12,
+	0x0a, 0x0d, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10,
+	0x91, 0x03, 0x12, 0x0f, 0x0a, 0x0a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45,
+	0x10, 0x92, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x58,
+	0x10, 0x93, 0x03, 0x12, 0x15, 0x0a, 0x10, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x47, 0x55, 0x41,
+	0x52, 0x41, 0x4e, 0x54, 0x45, 0x45, 0x44, 0x10, 0x94, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x51, 0x55,
+	0x45, 0x55, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x10, 0x95, 0x03, 0x12, 0x10, 0x0a, 0x0b, 0x51, 0x55,
+	0x45, 0x55, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x10, 0x96, 0x03, 0x12, 0x11, 0x0a, 0x0c,
+	0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, 0xf4, 0x03, 0x12,
+	0x12, 0x0a, 0x0d, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x54,
+	0x10, 0xf5, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x54, 0x49, 0x4d,
+	0x45, 0x4f, 0x55, 0x54, 0x10, 0xf6, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x4c, 0x4c, 0x4f, 0x43,
+	0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x44, 0x10, 0xf7, 0x03, 0x12, 0x16, 0x0a, 0x11,
+	0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45,
+	0x44, 0x10, 0xf8, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05,
+	0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
+	0x6e, 0x2a, 0x85, 0x01, 0x0a, 0x0f, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
+	0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50,
+	0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42,
+	0x59, 0x5f, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55,
+	0x54, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x54, 0x45, 0x44,
+	0x5f, 0x42, 0x59, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x03, 0x12,
+	0x18, 0x0a, 0x14, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x45, 0x52, 0x5f, 0x52,
+	0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x44, 0x10, 0x04, 0x32, 0xd5, 0x02, 0x0a, 0x09, 0x53, 0x63,
+	0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x6a, 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69, 0x73,
+	0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67,
+	0x65, 0x72, 0x12, 0x25, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73,
+	0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67,
+	0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x2e, 0x76,
+	0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+	0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c,
+	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+	0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01,
+	0x30, 0x01, 0x12, 0x50, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c,
+	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e,
+	0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69,
+	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
+	0x28, 0x01, 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f,
+	0x64, 0x65, 0x12, 0x12, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e,
+	0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30,
+	0x01, 0x3a, 0x3b, 0x0a, 0x09, 0x73, 0x69, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d,
+	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x08,
+	0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x69, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0b,
+	0x5a, 0x09, 0x6c, 0x69, 0x62, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x33,
+}
+
+var (
+	file_yunikorn_scheduler_interface_si_proto_rawDescOnce sync.Once
+	file_yunikorn_scheduler_interface_si_proto_rawDescData = file_yunikorn_scheduler_interface_si_proto_rawDesc
+)
 
-var _Scheduler_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "si.v1.Scheduler",
-	HandlerType: (*SchedulerServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "RegisterResourceManager",
-			Handler:    _Scheduler_RegisterResourceManager_Handler,
+func file_yunikorn_scheduler_interface_si_proto_rawDescGZIP() []byte {
+	file_yunikorn_scheduler_interface_si_proto_rawDescOnce.Do(func() {
+		file_yunikorn_scheduler_interface_si_proto_rawDescData = protoimpl.X.CompressGZIP(file_yunikorn_scheduler_interface_si_proto_rawDescData)
+	})
+	return file_yunikorn_scheduler_interface_si_proto_rawDescData
+}
+
+var file_yunikorn_scheduler_interface_si_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
+var file_yunikorn_scheduler_interface_si_proto_msgTypes = make([]protoimpl.MessageInfo, 40)
+var file_yunikorn_scheduler_interface_si_proto_goTypes = []interface{}{
+	(TerminationType)(0),       // 0: si.v1.TerminationType
+	(NodeInfo_ActionFromRM)(0), // 1: si.v1.NodeInfo.ActionFromRM
+	(UpdateContainerSchedulingStateRequest_SchedulingState)(0), // 2: si.v1.UpdateContainerSchedulingStateRequest.SchedulingState
+	(EventRecord_Type)(0),                         // 3: si.v1.EventRecord.Type
+	(EventRecord_ChangeType)(0),                   // 4: si.v1.EventRecord.ChangeType
+	(EventRecord_ChangeDetail)(0),                 // 5: si.v1.EventRecord.ChangeDetail
+	(*RegisterResourceManagerRequest)(nil),        // 6: si.v1.RegisterResourceManagerRequest
+	(*RegisterResourceManagerResponse)(nil),       // 7: si.v1.RegisterResourceManagerResponse
+	(*AllocationRequest)(nil),                     // 8: si.v1.AllocationRequest
+	(*ApplicationRequest)(nil),                    // 9: si.v1.ApplicationRequest
+	(*NodeRequest)(nil),                           // 10: si.v1.NodeRequest
+	(*AllocationResponse)(nil),                    // 11: si.v1.AllocationResponse
+	(*ApplicationResponse)(nil),                   // 12: si.v1.ApplicationResponse
+	(*NodeResponse)(nil),                          // 13: si.v1.NodeResponse
+	(*UpdatedApplication)(nil),                    // 14: si.v1.UpdatedApplication
+	(*RejectedApplication)(nil),                   // 15: si.v1.RejectedApplication
+	(*AcceptedApplication)(nil),                   // 16: si.v1.AcceptedApplication
+	(*RejectedNode)(nil),                          // 17: si.v1.RejectedNode
+	(*AcceptedNode)(nil),                          // 18: si.v1.AcceptedNode
+	(*Resource)(nil),                              // 19: si.v1.Resource
+	(*Quantity)(nil),                              // 20: si.v1.Quantity
+	(*AllocationAsk)(nil),                         // 21: si.v1.AllocationAsk
+	(*PreemptionPolicy)(nil),                      // 22: si.v1.PreemptionPolicy
+	(*AddApplicationRequest)(nil),                 // 23: si.v1.AddApplicationRequest
+	(*RemoveApplicationRequest)(nil),              // 24: si.v1.RemoveApplicationRequest
+	(*UserGroupInformation)(nil),                  // 25: si.v1.UserGroupInformation
+	(*Allocation)(nil),                            // 26: si.v1.Allocation
+	(*AllocationReleasesRequest)(nil),             // 27: si.v1.AllocationReleasesRequest
+	(*AllocationRelease)(nil),                     // 28: si.v1.AllocationRelease
+	(*AllocationAskRelease)(nil),                  // 29: si.v1.AllocationAskRelease
+	(*NodeInfo)(nil),                              // 30: si.v1.NodeInfo
+	(*RejectedAllocationAsk)(nil),                 // 31: si.v1.RejectedAllocationAsk
+	(*PredicatesArgs)(nil),                        // 32: si.v1.PredicatesArgs
+	(*PreemptionPredicatesArgs)(nil),              // 33: si.v1.PreemptionPredicatesArgs
+	(*PreemptionPredicatesResponse)(nil),          // 34: si.v1.PreemptionPredicatesResponse
+	(*UpdateContainerSchedulingStateRequest)(nil), // 35: si.v1.UpdateContainerSchedulingStateRequest
+	(*UpdateConfigurationRequest)(nil),            // 36: si.v1.UpdateConfigurationRequest
+	(*EventRecord)(nil),                           // 37: si.v1.EventRecord
+	nil,                                           // 38: si.v1.RegisterResourceManagerRequest.BuildInfoEntry
+	nil,                                           // 39: si.v1.RegisterResourceManagerRequest.ExtraConfigEntry
+	nil,                                           // 40: si.v1.Resource.ResourcesEntry
+	nil,                                           // 41: si.v1.AllocationAsk.TagsEntry
+	nil,                                           // 42: si.v1.AddApplicationRequest.TagsEntry
+	nil,                                           // 43: si.v1.Allocation.AllocationTagsEntry
+	nil,                                           // 44: si.v1.NodeInfo.AttributesEntry
+	nil,                                           // 45: si.v1.UpdateConfigurationRequest.ExtraConfigEntry
+	(*descriptorpb.FieldOptions)(nil),             // 46: google.protobuf.FieldOptions
+}
+var file_yunikorn_scheduler_interface_si_proto_depIdxs = []int32{
+	38, // 0: si.v1.RegisterResourceManagerRequest.buildInfo:type_name -> si.v1.RegisterResourceManagerRequest.BuildInfoEntry
+	39, // 1: si.v1.RegisterResourceManagerRequest.extraConfig:type_name -> si.v1.RegisterResourceManagerRequest.ExtraConfigEntry
+	21, // 2: si.v1.AllocationRequest.asks:type_name -> si.v1.AllocationAsk
+	27, // 3: si.v1.AllocationRequest.releases:type_name -> si.v1.AllocationReleasesRequest
+	23, // 4: si.v1.ApplicationRequest.new:type_name -> si.v1.AddApplicationRequest
+	24, // 5: si.v1.ApplicationRequest.remove:type_name -> si.v1.RemoveApplicationRequest
+	30, // 6: si.v1.NodeRequest.nodes:type_name -> si.v1.NodeInfo
+	26, // 7: si.v1.AllocationResponse.new:type_name -> si.v1.Allocation
+	28, // 8: si.v1.AllocationResponse.released:type_name -> si.v1.AllocationRelease
+	29, // 9: si.v1.AllocationResponse.releasedAsks:type_name -> si.v1.AllocationAskRelease
+	31, // 10: si.v1.AllocationResponse.rejected:type_name -> si.v1.RejectedAllocationAsk
+	15, // 11: si.v1.ApplicationResponse.rejected:type_name -> si.v1.RejectedApplication
+	16, // 12: si.v1.ApplicationResponse.accepted:type_name -> si.v1.AcceptedApplication
+	14, // 13: si.v1.ApplicationResponse.updated:type_name -> si.v1.UpdatedApplication
+	17, // 14: si.v1.NodeResponse.rejected:type_name -> si.v1.RejectedNode
+	18, // 15: si.v1.NodeResponse.accepted:type_name -> si.v1.AcceptedNode
+	40, // 16: si.v1.Resource.resources:type_name -> si.v1.Resource.ResourcesEntry
+	19, // 17: si.v1.AllocationAsk.resourceAsk:type_name -> si.v1.Resource
+	41, // 18: si.v1.AllocationAsk.tags:type_name -> si.v1.AllocationAsk.TagsEntry
+	22, // 19: si.v1.AllocationAsk.preemptionPolicy:type_name -> si.v1.PreemptionPolicy
+	25, // 20: si.v1.AddApplicationRequest.ugi:type_name -> si.v1.UserGroupInformation
+	42, // 21: si.v1.AddApplicationRequest.tags:type_name -> si.v1.AddApplicationRequest.TagsEntry
+	19, // 22: si.v1.AddApplicationRequest.placeholderAsk:type_name -> si.v1.Resource
+	43, // 23: si.v1.Allocation.allocationTags:type_name -> si.v1.Allocation.AllocationTagsEntry
+	19, // 24: si.v1.Allocation.resourcePerAlloc:type_name -> si.v1.Resource
+	28, // 25: si.v1.AllocationReleasesRequest.allocationsToRelease:type_name -> si.v1.AllocationRelease
+	29, // 26: si.v1.AllocationReleasesRequest.allocationAsksToRelease:type_name -> si.v1.AllocationAskRelease
+	0,  // 27: si.v1.AllocationRelease.terminationType:type_name -> si.v1.TerminationType
+	0,  // 28: si.v1.AllocationAskRelease.terminationType:type_name -> si.v1.TerminationType
+	1,  // 29: si.v1.NodeInfo.action:type_name -> si.v1.NodeInfo.ActionFromRM
+	44, // 30: si.v1.NodeInfo.attributes:type_name -> si.v1.NodeInfo.AttributesEntry
+	19, // 31: si.v1.NodeInfo.schedulableResource:type_name -> si.v1.Resource
+	19, // 32: si.v1.NodeInfo.occupiedResource:type_name -> si.v1.Resource
+	26, // 33: si.v1.NodeInfo.existingAllocations:type_name -> si.v1.Allocation
+	2,  // 34: si.v1.UpdateContainerSchedulingStateRequest.state:type_name -> si.v1.UpdateContainerSchedulingStateRequest.SchedulingState
+	45, // 35: si.v1.UpdateConfigurationRequest.extraConfig:type_name -> si.v1.UpdateConfigurationRequest.ExtraConfigEntry
+	3,  // 36: si.v1.EventRecord.type:type_name -> si.v1.EventRecord.Type
+	4,  // 37: si.v1.EventRecord.eventChangeType:type_name -> si.v1.EventRecord.ChangeType
+	5,  // 38: si.v1.EventRecord.eventChangeDetail:type_name -> si.v1.EventRecord.ChangeDetail
+	19, // 39: si.v1.EventRecord.resource:type_name -> si.v1.Resource
+	20, // 40: si.v1.Resource.ResourcesEntry.value:type_name -> si.v1.Quantity
+	46, // 41: si.v1.si_secret:extendee -> google.protobuf.FieldOptions
+	6,  // 42: si.v1.Scheduler.RegisterResourceManager:input_type -> si.v1.RegisterResourceManagerRequest
+	8,  // 43: si.v1.Scheduler.UpdateAllocation:input_type -> si.v1.AllocationRequest
+	9,  // 44: si.v1.Scheduler.UpdateApplication:input_type -> si.v1.ApplicationRequest
+	10, // 45: si.v1.Scheduler.UpdateNode:input_type -> si.v1.NodeRequest
+	7,  // 46: si.v1.Scheduler.RegisterResourceManager:output_type -> si.v1.RegisterResourceManagerResponse
+	11, // 47: si.v1.Scheduler.UpdateAllocation:output_type -> si.v1.AllocationResponse
+	12, // 48: si.v1.Scheduler.UpdateApplication:output_type -> si.v1.ApplicationResponse
+	13, // 49: si.v1.Scheduler.UpdateNode:output_type -> si.v1.NodeResponse
+	46, // [46:50] is the sub-list for method output_type
+	42, // [42:46] is the sub-list for method input_type
+	42, // [42:42] is the sub-list for extension type_name
+	41, // [41:42] is the sub-list for extension extendee
+	0,  // [0:41] is the sub-list for field type_name
+}
+
+func init() { file_yunikorn_scheduler_interface_si_proto_init() }
+func file_yunikorn_scheduler_interface_si_proto_init() {
+	if File_yunikorn_scheduler_interface_si_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RegisterResourceManagerRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RegisterResourceManagerResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AllocationRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ApplicationRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*NodeRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AllocationResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ApplicationResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*NodeResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UpdatedApplication); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RejectedApplication); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AcceptedApplication); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RejectedNode); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AcceptedNode); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Resource); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Quantity); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AllocationAsk); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PreemptionPolicy); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AddApplicationRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RemoveApplicationRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UserGroupInformation); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Allocation); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AllocationReleasesRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AllocationRelease); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AllocationAskRelease); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*NodeInfo); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RejectedAllocationAsk); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PredicatesArgs); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PreemptionPredicatesArgs); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PreemptionPredicatesResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UpdateContainerSchedulingStateRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UpdateConfigurationRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_yunikorn_scheduler_interface_si_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EventRecord); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_yunikorn_scheduler_interface_si_proto_rawDesc,
+			NumEnums:      6,
+			NumMessages:   40,
+			NumExtensions: 1,
+			NumServices:   1,
 		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "UpdateAllocation",
-			Handler:       _Scheduler_UpdateAllocation_Handler,
-			ServerStreams: true,
-			ClientStreams: true,
-		},
-		{
-			StreamName:    "UpdateApplication",
-			Handler:       _Scheduler_UpdateApplication_Handler,
-			ServerStreams: true,
-			ClientStreams: true,
-		},
-		{
-			StreamName:    "UpdateNode",
-			Handler:       _Scheduler_UpdateNode_Handler,
-			ServerStreams: true,
-			ClientStreams: true,
-		},
-	},
-	Metadata: "yunikorn-scheduler-interface/si.proto",
-}
-
-func init() {
-	proto.RegisterFile("yunikorn-scheduler-interface/si.proto", fileDescriptor_si_73a39e8eef8a796f)
-}
-
-var fileDescriptor_si_73a39e8eef8a796f = []byte{
-	// 2672 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x4b, 0x93, 0xdb, 0xc6,
-	0x11, 0x36, 0x08, 0x72, 0x49, 0x36, 0x77, 0xb9, 0xd8, 0xa1, 0x24, 0xd3, 0x8c, 0x6c, 0x6f, 0x10,
-	0x4b, 0xa5, 0xb2, 0x63, 0xae, 0x2d, 0xab, 0x6c, 0x97, 0xa4, 0xd8, 0x81, 0x40, 0x68, 0x4d, 0x79,
-	0xf9, 0xf0, 0x10, 0xb4, 0xad, 0x5c, 0x58, 0x58, 0x72, 0x96, 0x82, 0x97, 0x0b, 0xd0, 0x00, 0x28,
-	0x6b, 0x2b, 0x95, 0x4b, 0xaa, 0x72, 0x76, 0x9c, 0xe7, 0x25, 0xb7, 0x54, 0xf9, 0x94, 0x38, 0x49,
-	0x55, 0x4e, 0x39, 0xe5, 0xe8, 0xbc, 0x1f, 0x95, 0xe4, 0x17, 0xe4, 0x94, 0x43, 0x4e, 0x71, 0x92,
-	0x63, 0x6a, 0x06, 0x83, 0x17, 0x01, 0x4a, 0x54, 0xe2, 0xdc, 0x30, 0x3d, 0x5f, 0xf7, 0xf4, 0x74,
-	0xf7, 0x74, 0xf7, 0x0c, 0xe0, 0xc2, 0xe9, 0xc2, 0x32, 0x8f, 0x6d, 0xc7, 0x7a, 0xd6, 0x1d, 0xdf,
-	0x21, 0x93, 0xc5, 0x8c, 0x38, 0xcf, 0x9a, 0x96, 0x47, 0x9c, 0x23, 0x63, 0x4c, 0xf6, 0x5c, 0xb3,
-	0x39, 0x77, 0x6c, 0xcf, 0x46, 0x05, 0xd7, 0x6c, 0xde, 0x7d, 0xbe, 0xb1, 0x3b, 0xb5, 0xed, 0xe9,
-	0x8c, 0xec, 0x31, 0xe2, 0xe1, 0xe2, 0x68, 0x6f, 0x42, 0xdc, 0xb1, 0x63, 0xce, 0x3d, 0xdb, 0xf1,
-	0x81, 0xf2, 0x4f, 0x45, 0x78, 0x02, 0x93, 0xa9, 0xe9, 0x7a, 0xc4, 0xc1, 0xc4, 0xb5, 0x17, 0xce,
-	0x98, 0x74, 0x0c, 0xcb, 0x98, 0xd2, 0xe1, 0xbb, 0x0b, 0xe2, 0x7a, 0x08, 0x41, 0xde, 0x39, 0x69,
-	0xb7, 0xea, 0xc2, 0xae, 0x70, 0xa9, 0x8c, 0xd9, 0x37, 0xaa, 0x43, 0xf1, 0x2e, 0x71, 0x5c, 0xd3,
-	0xb6, 0xea, 0x39, 0x46, 0x0e, 0x86, 0x68, 0x17, 0x2a, 0x73, 0x7b, 0x66, 0x8e, 0x4f, 0xf7, 0x1d,
-	0x7b, 0x31, 0xaf, 0x8b, 0x6c, 0x36, 0x4e, 0x42, 0x18, 0xca, 0x87, 0x0b, 0x73, 0x36, 0x69, 0x5b,
-	0x47, 0x76, 0x3d, 0xbf, 0x2b, 0x5e, 0xaa, 0x5c, 0xbe, 0xd2, 0x64, 0xfa, 0x36, 0xef, 0xaf, 0x49,
-	0xf3, 0x46, 0xc0, 0xa6, 0x59, 0x9e, 0x73, 0x8a, 0x23, 0x31, 0xe8, 0x1c, 0x6c, 0x8c, 0x6d, 0xeb,
-	0xc8, 0x9c, 0xd6, 0x0b, 0x6c, 0x41, 0x3e, 0x42, 0x6f, 0x43, 0x85, 0xdc, 0xf3, 0x1c, 0x43, 0xf5,
-	0x27, 0x37, 0xd8, 0x6a, 0x2f, 0xae, 0xb7, 0x9a, 0x16, 0x31, 0xfa, 0xeb, 0xc5, 0x45, 0x35, 0xae,
-	0x43, 0x35, 0xa9, 0x0e, 0x92, 0x40, 0x3c, 0x26, 0xa7, 0xdc, 0x4c, 0xf4, 0x13, 0x9d, 0x81, 0xc2,
-	0x5d, 0x63, 0xb6, 0x20, 0xdc, 0x46, 0xfe, 0xe0, 0x6a, 0xee, 0x65, 0xa1, 0xf1, 0x0a, 0x48, 0xcb,
-	0xe2, 0x1f, 0x86, 0x5f, 0xfe, 0x2c, 0x3c, 0xb9, 0x52, 0x7b, 0x77, 0x6e, 0x5b, 0x2e, 0x91, 0xdf,
-	0x17, 0x60, 0x47, 0x99, 0xcd, 0xec, 0xb1, 0xe1, 0x99, 0xb6, 0x15, 0x38, 0xf3, 0x12, 0xe4, 0x0d,
-	0xf7, 0xd8, 0xad, 0x0b, 0xcc, 0x12, 0x67, 0xb8, 0x25, 0x22, 0x9c, 0xe2, 0x1e, 0x63, 0x86, 0x40,
-	0xd7, 0xa1, 0xe4, 0x90, 0x19, 0x31, 0x5c, 0xe2, 0xb2, 0xf5, 0x2b, 0x97, 0x77, 0x53, 0x68, 0xcc,
-	0x01, 0x5c, 0x3a, 0x0e, 0x39, 0xc2, 0xa0, 0x11, 0xa3, 0xa0, 0x91, 0x3f, 0x10, 0x00, 0x29, 0xf3,
-	0xf9, 0xcc, 0x4c, 0xaa, 0xd4, 0x04, 0xd1, 0x22, 0xef, 0x71, 0x8d, 0xce, 0x07, 0x6b, 0x4c, 0x26,
-	0x69, 0x28, 0xa6, 0x40, 0xf4, 0x12, 0x6c, 0x38, 0xe4, 0xc4, 0xbe, 0x4b, 0xcd, 0x42, 0x59, 0x9e,
-	0x0c, 0xdd, 0x49, 0x89, 0x19, 0x5c, 0x1c, 0x9e, 0xa9, 0xd3, 0x6b, 0x50, 0xe9, 0xda, 0x13, 0x12,
-	0xe8, 0x72, 0x01, 0x0a, 0x96, 0x3d, 0x21, 0x81, 0x7d, 0xb6, 0xb9, 0x68, 0x0a, 0xa1, 0x8e, 0xc6,
-	0xfe, 0x6c, 0x28, 0x29, 0x17, 0x93, 0xf4, 0x37, 0xba, 0xbb, 0x98, 0x65, 0x7c, 0x37, 0xa0, 0xcf,
-	0xc5, 0x77, 0xb7, 0x93, 0xb6, 0x20, 0xdb, 0xd2, 0x95, 0xd0, 0xd6, 0x13, 0xbe, 0xa9, 0xfa, 0x2a,
-	0x5b, 0x87, 0x36, 0x9e, 0xa0, 0x57, 0x61, 0x33, 0xf8, 0x56, 0xa8, 0x4f, 0x45, 0xc6, 0xf9, 0x99,
-	0x4c, 0x9f, 0x72, 0xe6, 0x04, 0x03, 0x7a, 0x99, 0x2e, 0xfb, 0x0e, 0x19, 0x7b, 0x64, 0xc2, 0x0f,
-	0xe2, 0xf9, 0xd0, 0x96, 0x3e, 0x39, 0x29, 0x24, 0x44, 0xcb, 0x3f, 0x13, 0xa0, 0x96, 0xb0, 0x34,
-	0xdf, 0xed, 0x8b, 0x31, 0x89, 0xfe, 0x96, 0x1b, 0xcb, 0x12, 0x63, 0x5c, 0x21, 0x96, 0xf2, 0x19,
-	0xe3, 0x31, 0x99, 0x7b, 0xa1, 0x01, 0x02, 0x3e, 0x85, 0x93, 0x13, 0x7c, 0x01, 0x16, 0xbd, 0x00,
-	0xc5, 0xc5, 0x7c, 0x62, 0x50, 0x36, 0x7f, 0xf7, 0x8f, 0x71, 0xb6, 0xa1, 0x4f, 0x8d, 0x73, 0x05,
-	0x48, 0x79, 0x0e, 0x9b, 0xbe, 0xcf, 0xb9, 0xd2, 0x7b, 0x29, 0xa5, 0x6b, 0x4b, 0x4a, 0x33, 0x78,
-	0xa4, 0xed, 0x5e, 0x4a, 0xdb, 0xda, 0x92, 0xb6, 0x3e, 0x43, 0x00, 0x92, 0x3f, 0x14, 0x00, 0xa5,
-	0x35, 0x42, 0x4f, 0xc1, 0x96, 0x11, 0x0d, 0xc3, 0x14, 0x9b, 0x24, 0xd2, 0x2c, 0xe0, 0x7a, 0x86,
-	0x17, 0x66, 0x01, 0x36, 0x40, 0x57, 0xa1, 0xce, 0x3e, 0x74, 0xc7, 0xb0, 0x5c, 0x93, 0x42, 0x75,
-	0xf3, 0x84, 0xb8, 0x9e, 0x71, 0xe2, 0x27, 0x5d, 0x11, 0xaf, 0x9c, 0xa7, 0xd9, 0xfb, 0x84, 0xb8,
-	0xae, 0x31, 0x25, 0xf5, 0xbc, 0x9f, 0xbd, 0xf9, 0x50, 0x1e, 0x40, 0x2d, 0xc3, 0x51, 0x6b, 0x2a,
-	0x7a, 0x8e, 0x1e, 0x4c, 0xc3, 0x0d, 0x6b, 0x02, 0x1f, 0xc9, 0xd7, 0xa0, 0x96, 0xe1, 0xc5, 0xf5,
-	0x84, 0xca, 0xaf, 0xc0, 0x66, 0xdc, 0x0b, 0x74, 0x11, 0x7a, 0x06, 0x43, 0x38, 0x1f, 0xad, 0x5c,
-	0xfc, 0x22, 0x6c, 0xc6, 0x9d, 0xb2, 0x8a, 0x5f, 0xfe, 0xae, 0x00, 0xa5, 0x20, 0x95, 0xa2, 0xeb,
-	0x50, 0x76, 0xf8, 0x77, 0x90, 0x0a, 0x9e, 0x08, 0x43, 0xc2, 0xa7, 0x87, 0x1f, 0x2e, 0x2f, 0x46,
-	0x21, 0x43, 0xa3, 0x03, 0xd5, 0xe4, 0x64, 0x46, 0x6a, 0xbf, 0x10, 0x4f, 0xed, 0x51, 0xa2, 0x79,
-	0x63, 0x61, 0x58, 0x9e, 0xe9, 0x9d, 0xc6, 0x73, 0xfd, 0x2e, 0x94, 0x02, 0x72, 0x54, 0x11, 0x04,
-	0xe6, 0x62, 0x7f, 0x20, 0xff, 0x25, 0x0f, 0x5b, 0x89, 0x93, 0xca, 0x6c, 0x1b, 0x12, 0x5e, 0x0f,
-	0x97, 0x4e, 0x12, 0xd3, 0x1e, 0xc8, 0x65, 0xb9, 0xf5, 0x29, 0xd8, 0x9a, 0x1b, 0x8e, 0xc7, 0x62,
-	0xa8, 0x6b, 0x9c, 0x10, 0x9e, 0x3f, 0x93, 0x44, 0xf4, 0x3c, 0x54, 0x02, 0x0b, 0x28, 0xee, 0x31,
-	0x8b, 0xab, 0x68, 0x5b, 0x81, 0x39, 0x70, 0x1c, 0x83, 0x2e, 0x42, 0xf5, 0xc4, 0xb8, 0x17, 0x29,
-	0xee, 0xb2, 0xe2, 0x5d, 0xc0, 0x4b, 0x54, 0xd4, 0x80, 0xd2, 0xdc, 0x31, 0x6d, 0xc7, 0xf4, 0x4e,
-	0xeb, 0x1b, 0x0c, 0x11, 0x8e, 0xd1, 0x0d, 0x38, 0x4f, 0xee, 0x91, 0xf1, 0x22, 0x08, 0x70, 0x7b,
-	0xe1, 0x75, 0xcc, 0xd9, 0xcc, 0x1c, 0x90, 0xb1, 0x6d, 0x4d, 0xdc, 0x7a, 0x91, 0xd9, 0xe9, 0xbe,
-	0x18, 0x74, 0x19, 0xf2, 0x9e, 0x31, 0x75, 0xeb, 0xa5, 0x84, 0xa3, 0x13, 0x06, 0x6d, 0xea, 0xc6,
-	0x94, 0x3b, 0x9a, 0x61, 0xa9, 0x51, 0x3c, 0xc3, 0x3d, 0x66, 0x1d, 0x0d, 0x33, 0x4a, 0xd9, 0x37,
-	0x4a, 0x82, 0xc8, 0x9a, 0xa1, 0x99, 0x31, 0x26, 0x77, 0xec, 0xd9, 0x84, 0x38, 0x75, 0xd8, 0x15,
-	0x2e, 0x95, 0x70, 0x9c, 0x84, 0x9e, 0x00, 0xe8, 0x39, 0xe6, 0xd4, 0xb4, 0x0c, 0xcf, 0x76, 0xea,
-	0x15, 0x06, 0x88, 0x51, 0x90, 0x0a, 0xd2, 0xdc, 0x21, 0xe4, 0x64, 0x4e, 0x15, 0xe9, 0xb3, 0x2e,
-	0xaa, 0xbe, 0xc9, 0x6c, 0xfb, 0x28, 0xd7, 0xb3, 0xbf, 0x34, 0x8d, 0x53, 0x0c, 0x8d, 0x97, 0xa0,
-	0x1c, 0xea, 0xff, 0x50, 0x6d, 0xc6, 0x0c, 0xa4, 0x65, 0xf1, 0xe8, 0x69, 0x90, 0x68, 0x14, 0xbd,
-	0xc7, 0x27, 0x06, 0x64, 0x76, 0xc4, 0x84, 0x95, 0x70, 0x8a, 0x8e, 0x3e, 0x0f, 0x3b, 0x71, 0x5a,
-	0xcf, 0xbb, 0x43, 0x1c, 0xb6, 0x4a, 0x09, 0xa7, 0x27, 0xe4, 0x3f, 0x89, 0x70, 0x36, 0xb3, 0xee,
-	0xaf, 0x99, 0x7f, 0xce, 0x43, 0xf9, 0xdd, 0x05, 0x59, 0x10, 0xe6, 0x0f, 0x7f, 0x2f, 0x11, 0x61,
-	0xcd, 0x30, 0x7e, 0x16, 0xc4, 0xc5, 0xd4, 0xe4, 0xe1, 0x1b, 0x94, 0xd2, 0xa1, 0x4b, 0x1c, 0xe6,
-	0x54, 0xda, 0x03, 0x38, 0x27, 0xbc, 0x70, 0x2f, 0xa6, 0x26, 0xba, 0xca, 0x43, 0xa7, 0xc0, 0x42,
-	0xe7, 0xe2, 0xfd, 0x9a, 0x97, 0x54, 0x08, 0x3d, 0x28, 0x74, 0x37, 0xd6, 0x08, 0xdd, 0x97, 0xa0,
-	0x1a, 0x8b, 0x26, 0x7a, 0xf0, 0x8a, 0xd9, 0x07, 0x6f, 0x09, 0x86, 0x9e, 0x83, 0xda, 0xd4, 0xb0,
-	0xa6, 0x03, 0xff, 0x12, 0x61, 0x5a, 0xd3, 0x81, 0x77, 0x3a, 0x23, 0xf5, 0x12, 0xb3, 0x49, 0xd6,
-	0xd4, 0x7f, 0x1f, 0x44, 0x47, 0x50, 0x5f, 0xd5, 0x9a, 0xad, 0xe9, 0xd8, 0x94, 0xeb, 0x72, 0x19,
-	0xae, 0x93, 0x6f, 0xc0, 0x99, 0x2c, 0x47, 0xd1, 0x66, 0x6d, 0xe1, 0x12, 0x27, 0xb8, 0xbf, 0xd0,
-	0x6f, 0x5a, 0x05, 0xa6, 0x14, 0xe7, 0xb2, 0xfa, 0x5d, 0xc6, 0x7c, 0x24, 0xff, 0x5d, 0x04, 0x88,
-	0x0e, 0xfe, 0x9a, 0x69, 0xb4, 0x03, 0xd5, 0x88, 0x40, 0x6d, 0xc4, 0x9b, 0x82, 0x0b, 0xa9, 0x4c,
-	0x12, 0xfb, 0x8c, 0xa2, 0x61, 0x89, 0x99, 0xea, 0x3b, 0x1c, 0x46, 0x6d, 0x2a, 0xfd, 0x46, 0xd7,
-	0x40, 0x0a, 0x32, 0x67, 0x9f, 0x38, 0x4c, 0x0a, 0x4b, 0x96, 0x19, 0x9e, 0x4e, 0x01, 0xef, 0x9b,
-	0x3f, 0xa3, 0x72, 0x58, 0x4a, 0x94, 0xd3, 0x94, 0x63, 0xca, 0x6b, 0x39, 0x06, 0xb2, 0xce, 0x54,
-	0x2a, 0x57, 0x56, 0xd6, 0xc8, 0x95, 0x9b, 0xa9, 0x5c, 0xd9, 0x50, 0xa0, 0x96, 0x61, 0xbf, 0x87,
-	0x89, 0xc5, 0x5b, 0xf9, 0x52, 0x51, 0x2a, 0xc5, 0xb2, 0x82, 0xfc, 0x73, 0x01, 0x1e, 0x5b, 0x79,
-	0x9f, 0x41, 0x07, 0x70, 0x26, 0x72, 0x8e, 0xab, 0xdb, 0x7c, 0x9e, 0xb7, 0x04, 0xab, 0x7b, 0xf4,
-	0x4c, 0x2e, 0x34, 0x84, 0x47, 0x8d, 0x78, 0x51, 0x89, 0x09, 0xcc, 0x3d, 0xb8, 0x75, 0x5f, 0xc5,
-	0x2b, 0x7f, 0xb2, 0x74, 0xd1, 0xf3, 0x17, 0x4b, 0xb9, 0x46, 0x58, 0xe1, 0x9a, 0x35, 0x3a, 0x80,
-	0xac, 0x88, 0xfc, 0x22, 0x6c, 0x7b, 0xc4, 0x39, 0xa1, 0x65, 0x8a, 0x7a, 0xe3, 0x74, 0xee, 0xf7,
-	0x92, 0xd5, 0xcb, 0xe7, 0xf8, 0x26, 0xf4, 0xe4, 0x2c, 0x5e, 0x86, 0xc7, 0xbb, 0xd0, 0x42, 0xa2,
-	0x0b, 0x4d, 0x1f, 0xbb, 0x8d, 0x8c, 0x63, 0x27, 0xff, 0x55, 0x80, 0x33, 0x59, 0x96, 0xfa, 0x54,
-	0xb7, 0x9e, 0x52, 0x45, 0xcc, 0xca, 0x00, 0xff, 0x47, 0x63, 0xc8, 0xdf, 0xcb, 0x43, 0x29, 0xb8,
-	0x7f, 0xae, 0xec, 0x7e, 0xaf, 0xc0, 0x86, 0x31, 0xf6, 0x82, 0xe7, 0x98, 0x6a, 0x78, 0x8f, 0x0b,
-	0x18, 0x9b, 0x0a, 0x9b, 0xbd, 0xe9, 0xd8, 0x27, 0xb8, 0x83, 0x39, 0x16, 0xbd, 0x0a, 0x60, 0x78,
-	0x9e, 0x63, 0x1e, 0x2e, 0x3c, 0x12, 0x5c, 0x1f, 0x9f, 0x4c, 0x71, 0x86, 0x08, 0x3f, 0x5d, 0xc5,
-	0x58, 0x90, 0x02, 0x35, 0xfe, 0x0c, 0x65, 0x1c, 0xce, 0x48, 0x90, 0x82, 0x56, 0x35, 0x7f, 0x59,
-	0x58, 0x9a, 0xd9, 0xec, 0xf1, 0x78, 0x31, 0x37, 0xc9, 0x24, 0xe4, 0x5f, 0x95, 0xd9, 0x96, 0x81,
-	0x48, 0x85, 0x1a, 0xb9, 0x67, 0xba, 0x9e, 0x69, 0x4d, 0xe3, 0x6d, 0xe4, 0xc6, 0xaa, 0xcb, 0x76,
-	0x16, 0xba, 0xf1, 0x05, 0xd8, 0x5e, 0xda, 0xe3, 0x43, 0x95, 0xb7, 0xaf, 0xd0, 0x0b, 0x46, 0x64,
-	0x5c, 0xd4, 0x80, 0x73, 0xc3, 0xee, 0xeb, 0xdd, 0xde, 0x5b, 0xdd, 0x91, 0xa2, 0xea, 0xed, 0x5e,
-	0x77, 0x74, 0x13, 0xf7, 0x3a, 0x23, 0xdc, 0x91, 0x1e, 0x41, 0x00, 0x1b, 0x2a, 0xd6, 0x14, 0x5d,
-	0x93, 0x04, 0xfa, 0x3d, 0xec, 0xb7, 0xe8, 0x77, 0x0e, 0x55, 0x01, 0x5a, 0x58, 0x69, 0x77, 0x47,
-	0xdd, 0x5e, 0x4b, 0x93, 0x44, 0xb4, 0x0d, 0x95, 0x96, 0xa6, 0xf6, 0x3a, 0xed, 0xc1, 0xa0, 0xdd,
-	0xeb, 0x4a, 0x79, 0x54, 0x87, 0x33, 0x3e, 0x40, 0xef, 0x8d, 0x06, 0xea, 0x6b, 0x5a, 0x6b, 0x78,
-	0xa0, 0xdc, 0x38, 0xd0, 0xa4, 0x82, 0xfc, 0x65, 0x38, 0x9b, 0x79, 0x59, 0xff, 0x54, 0xaf, 0x00,
-	0xd1, 0xe5, 0x4a, 0x4c, 0x5c, 0xae, 0xde, 0x81, 0x6a, 0xdf, 0x21, 0x13, 0x0a, 0x24, 0xae, 0xe2,
-	0xf8, 0x7d, 0xf1, 0x1a, 0xab, 0x46, 0x61, 0x9c, 0x4b, 0x84, 0x71, 0x03, 0x4a, 0x1c, 0xe8, 0xb7,
-	0x67, 0x25, 0x1c, 0x8e, 0xe5, 0x8f, 0x04, 0xa8, 0xc7, 0x9a, 0xd1, 0x4f, 0x73, 0xd9, 0x2b, 0x70,
-	0x96, 0xf7, 0xcc, 0x4a, 0x1c, 0xef, 0x1f, 0x89, 0x32, 0xce, 0x9e, 0xa4, 0xad, 0xbb, 0xeb, 0x19,
-	0x8e, 0xd7, 0xb6, 0x26, 0xe4, 0x1e, 0x8b, 0xf9, 0x02, 0x8e, 0x51, 0xe4, 0x2e, 0x9c, 0xcf, 0xd2,
-	0x37, 0x7c, 0x76, 0xa8, 0x43, 0xd1, 0x5d, 0x8c, 0xc7, 0xc4, 0x75, 0x79, 0xff, 0x1c, 0x0c, 0x69,
-	0xb0, 0x99, 0x4c, 0x68, 0x8e, 0x09, 0xf5, 0x07, 0xf2, 0xc7, 0x39, 0xb8, 0xe0, 0x3f, 0x22, 0xa8,
-	0xb6, 0xe5, 0x19, 0xa6, 0x45, 0x9c, 0x78, 0x8f, 0x66, 0x78, 0xe1, 0x2b, 0xd6, 0x45, 0xa8, 0x72,
-	0xff, 0x39, 0x89, 0xb6, 0x6a, 0x89, 0x9a, 0xb6, 0x5a, 0x2e, 0xcb, 0x6a, 0x38, 0x78, 0x7f, 0x10,
-	0x59, 0x6a, 0xb9, 0x9e, 0x78, 0x61, 0x79, 0x80, 0x2a, 0xcd, 0x65, 0x32, 0x7f, 0xbd, 0x88, 0x02,
-	0x2a, 0x9f, 0x08, 0x28, 0x02, 0xdb, 0x4b, 0x1c, 0xe8, 0x3c, 0xd4, 0x83, 0xf3, 0xc4, 0x23, 0xbf,
-	0xdd, 0xdd, 0x1f, 0x0d, 0x74, 0x7a, 0x72, 0x1e, 0x41, 0x15, 0x28, 0x0e, 0x5e, 0x6f, 0xf7, 0xfb,
-	0x5a, 0x4b, 0x12, 0xd0, 0x16, 0x94, 0x39, 0x44, 0x6b, 0x49, 0x39, 0xb4, 0x09, 0x25, 0xac, 0x0d,
-	0x34, 0xfc, 0xa6, 0xd6, 0x92, 0x44, 0x7a, 0xde, 0x6e, 0x2a, 0x6d, 0x3a, 0x93, 0x97, 0xdf, 0xcf,
-	0x41, 0x23, 0xd4, 0xff, 0xc8, 0x9c, 0x2e, 0x9c, 0x44, 0x57, 0x9a, 0xf1, 0xbc, 0xb7, 0xc6, 0xbb,
-	0x76, 0xf4, 0x06, 0x9d, 0x4f, 0xbc, 0x41, 0xeb, 0xc9, 0x37, 0x68, 0xff, 0xaa, 0x70, 0x79, 0xd9,
-	0x8a, 0x29, 0x2d, 0x1e, 0xf0, 0xfe, 0xfc, 0x3f, 0xbe, 0x20, 0xdf, 0xca, 0x97, 0x04, 0x29, 0x87,
-	0x8b, 0xbe, 0x8e, 0xae, 0xfc, 0x61, 0x19, 0x2a, 0xda, 0x5d, 0x62, 0x79, 0x98, 0x8c, 0x6d, 0x67,
-	0x82, 0x9e, 0x81, 0xbc, 0x47, 0xcb, 0x98, 0xc0, 0x7c, 0x1e, 0xdc, 0x35, 0x63, 0x88, 0x26, 0xab,
-	0x63, 0x0c, 0x44, 0x8f, 0xad, 0x7d, 0x48, 0x73, 0x50, 0x68, 0xb3, 0x70, 0x7c, 0xff, 0x2a, 0xef,
-	0x05, 0x4f, 0x52, 0x5d, 0xc3, 0xb2, 0xf9, 0x85, 0x27, 0x49, 0x44, 0xfb, 0xb0, 0x4d, 0xe8, 0xaa,
-	0xea, 0x1d, 0xc3, 0x9a, 0x12, 0x56, 0x5a, 0x8b, 0x4c, 0xa7, 0xc7, 0x33, 0x74, 0x8a, 0x40, 0x78,
-	0x99, 0x0b, 0x75, 0x60, 0x27, 0x46, 0x6a, 0x11, 0xcf, 0x30, 0x67, 0xac, 0xe9, 0xad, 0x86, 0x35,
-	0x2f, 0x2d, 0xca, 0x87, 0xe1, 0x34, 0x27, 0x8d, 0x07, 0x87, 0x1c, 0x11, 0x87, 0x58, 0x63, 0x12,
-	0xb6, 0xc7, 0x71, 0x12, 0x7a, 0x06, 0x4a, 0x41, 0x2b, 0xce, 0xfa, 0xe2, 0x8c, 0x8a, 0x16, 0x02,
-	0xe4, 0x1e, 0xe4, 0x99, 0x96, 0xb1, 0x68, 0xd7, 0xde, 0xd4, 0xba, 0x3a, 0xd6, 0xd4, 0x1e, 0x6e,
-	0x8d, 0xf4, 0xdb, 0x7d, 0x1e, 0xed, 0x58, 0x7b, 0x63, 0xa8, 0x0d, 0x74, 0x49, 0x40, 0x45, 0x10,
-	0x95, 0x7e, 0x5f, 0xca, 0xa1, 0x12, 0xe4, 0x79, 0xdd, 0x28, 0x43, 0xe1, 0x8d, 0xa1, 0x36, 0xd4,
-	0xa4, 0xbc, 0x7c, 0x05, 0x20, 0xb6, 0x79, 0x06, 0xe9, 0x52, 0x11, 0x45, 0x10, 0x07, 0x5a, 0xc0,
-	0xde, 0xa2, 0xc7, 0x04, 0x60, 0x03, 0x6b, 0x9d, 0xde, 0x9b, 0x9a, 0x24, 0xca, 0x5f, 0x2d, 0xc0,
-	0x66, 0x62, 0x9b, 0x12, 0x6c, 0xb6, 0x34, 0x5d, 0x69, 0x1f, 0x0c, 0x46, 0x5c, 0x00, 0x82, 0x2a,
-	0xd7, 0x61, 0xa4, 0x2a, 0x5d, 0x55, 0x3b, 0x90, 0x26, 0x68, 0x07, 0xb6, 0x02, 0x9a, 0x72, 0x70,
-	0xd0, 0x53, 0x25, 0x82, 0x6a, 0xb0, 0x1d, 0x90, 0xf4, 0x76, 0x47, 0xeb, 0x0d, 0x75, 0xe9, 0x08,
-	0x55, 0xa1, 0xac, 0xf4, 0xfb, 0x1c, 0xf3, 0xb1, 0x80, 0x24, 0xa8, 0xd0, 0x71, 0xb0, 0xa7, 0x5f,
-	0x08, 0x68, 0x1b, 0xc0, 0xa7, 0xdc, 0xd2, 0x54, 0x5d, 0xfa, 0xa5, 0x80, 0x36, 0xa1, 0x48, 0x09,
-	0x5d, 0xed, 0x2d, 0xe9, 0x57, 0x02, 0xda, 0x81, 0x4d, 0x26, 0x40, 0x55, 0xb5, 0xbe, 0xae, 0xb5,
-	0xa4, 0x5f, 0x87, 0xa4, 0x81, 0xae, 0x60, 0xbd, 0xdd, 0xdd, 0x97, 0x7e, 0x13, 0x89, 0x1d, 0x76,
-	0xbb, 0x94, 0xf2, 0x5b, 0x01, 0xd5, 0xa0, 0x4a, 0x29, 0x6a, 0xaf, 0xd3, 0x3f, 0xd0, 0x18, 0xec,
-	0x77, 0x02, 0x42, 0xb0, 0x15, 0x23, 0x6a, 0x2d, 0xe9, 0xf7, 0x21, 0x2b, 0xcd, 0x14, 0x14, 0xf5,
-	0x87, 0x50, 0x23, 0x9e, 0x3b, 0xfe, 0x28, 0xa0, 0xb3, 0x20, 0x51, 0x73, 0x8f, 0xe2, 0x15, 0xfa,
-	0x07, 0x39, 0x8a, 0x63, 0x64, 0xac, 0x29, 0xad, 0xdb, 0xd2, 0x0f, 0x73, 0x21, 0x2e, 0x5e, 0xaf,
-	0x3f, 0x8a, 0x70, 0xbe, 0x11, 0x7e, 0x94, 0xa3, 0x6a, 0x30, 0x82, 0xaa, 0xf4, 0x15, 0xb5, 0xad,
-	0xdf, 0x96, 0x7e, 0x1c, 0xd1, 0x7a, 0xaa, 0x3a, 0xec, 0xb7, 0xb5, 0x96, 0xf4, 0x93, 0x1c, 0xdd,
-	0x28, 0x73, 0xee, 0x48, 0xed, 0x75, 0x6f, 0xb6, 0xf7, 0xa5, 0xaf, 0x8b, 0x14, 0xe6, 0x93, 0x5a,
-	0xb7, 0xbb, 0x4a, 0xa7, 0xad, 0x4a, 0x1f, 0xd0, 0xde, 0x01, 0x7c, 0x1a, 0x8b, 0x99, 0x6f, 0x88,
-	0xd4, 0xe8, 0x3e, 0xa1, 0xa3, 0xbc, 0x2d, 0x7d, 0x53, 0xa4, 0x7a, 0xf9, 0xe3, 0xfd, 0xa1, 0x82,
-	0x95, 0xae, 0xae, 0x69, 0x2d, 0xe9, 0x5b, 0x31, 0x18, 0x0d, 0xaa, 0x6f, 0x8b, 0xd4, 0x12, 0x7c,
-	0xcc, 0x14, 0xfd, 0x8e, 0xc8, 0x2c, 0x4d, 0xbf, 0x03, 0xbf, 0xff, 0x83, 0x29, 0xe0, 0x93, 0xfa,
-	0x58, 0xd3, 0x3a, 0x7d, 0x5d, 0xfa, 0x24, 0x46, 0x0b, 0xfc, 0xfe, 0x4f, 0x91, 0xd9, 0x9f, 0xd1,
-	0xb0, 0xd6, 0x3f, 0x50, 0x54, 0xad, 0x25, 0xfd, 0x4b, 0x44, 0xe7, 0x60, 0xc7, 0x27, 0xd2, 0xad,
-	0xfa, 0x21, 0xd8, 0x92, 0xfe, 0x2d, 0xde, 0xca, 0x97, 0x44, 0x29, 0x7f, 0x2b, 0x5f, 0xca, 0x4b,
-	0x05, 0x5c, 0x64, 0x17, 0xf3, 0x76, 0x2b, 0xa8, 0x10, 0x4f, 0x7f, 0x4d, 0x80, 0xed, 0xa5, 0x6e,
-	0x3a, 0x7e, 0x68, 0x74, 0x0d, 0x77, 0xda, 0x5d, 0x85, 0xf5, 0x5d, 0xfc, 0xd0, 0xec, 0xc0, 0xd6,
-	0x40, 0xef, 0xd1, 0x12, 0x31, 0xba, 0x71, 0x9b, 0xf6, 0x61, 0x02, 0x3d, 0x47, 0x81, 0x72, 0x39,
-	0xda, 0xb0, 0x71, 0xed, 0x7d, 0x44, 0x50, 0x42, 0xb0, 0x24, 0xd2, 0xbe, 0x8b, 0xe9, 0xfb, 0x5a,
-	0xef, 0xa0, 0xa5, 0xe1, 0x48, 0xfb, 0xfc, 0xe5, 0x3f, 0xe7, 0xa0, 0x3c, 0x08, 0x7e, 0xc1, 0xa2,
-	0x77, 0xe0, 0xd1, 0x15, 0xff, 0xe3, 0xd0, 0x85, 0xb5, 0xfe, 0x36, 0x36, 0x2e, 0x3e, 0x08, 0xc6,
-	0x7f, 0xeb, 0x3d, 0x82, 0x3a, 0x20, 0xf9, 0x55, 0x23, 0xf6, 0x50, 0x91, 0x75, 0x15, 0xf5, 0xe5,
-	0x3e, 0x96, 0x31, 0x13, 0x88, 0xba, 0x24, 0x3c, 0x27, 0xa0, 0x3e, 0xec, 0x70, 0x71, 0xb1, 0xb7,
-	0xf9, 0x90, 0x2b, 0xf5, 0x64, 0xd3, 0x68, 0x64, 0x4d, 0x25, 0x24, 0x5e, 0x03, 0xf0, 0x25, 0xb2,
-	0x07, 0x77, 0x14, 0xbb, 0x50, 0x04, 0x32, 0x6a, 0x09, 0x5a, 0x9c, 0xf9, 0xea, 0x35, 0x28, 0xbb,
-	0xe6, 0xc8, 0x25, 0x63, 0x87, 0x78, 0xe8, 0xf1, 0xa6, 0xff, 0x03, 0xbb, 0x19, 0xfc, 0xc0, 0x6e,
-	0xde, 0x34, 0xc9, 0x6c, 0xd2, 0x9b, 0xfb, 0x7d, 0xfe, 0xf7, 0x4b, 0x7e, 0x8f, 0xe8, 0x9a, 0x03,
-	0x86, 0xbf, 0x51, 0xf9, 0x52, 0x79, 0x66, 0x1e, 0xee, 0x4d, 0xed, 0x3d, 0xd7, 0x3c, 0xdc, 0x60,
-	0x4c, 0x2f, 0xfc, 0x27, 0x00, 0x00, 0xff, 0xff, 0xee, 0x89, 0x15, 0x82, 0x33, 0x1f, 0x00, 0x00,
+		GoTypes:           file_yunikorn_scheduler_interface_si_proto_goTypes,
+		DependencyIndexes: file_yunikorn_scheduler_interface_si_proto_depIdxs,
+		EnumInfos:         file_yunikorn_scheduler_interface_si_proto_enumTypes,
+		MessageInfos:      file_yunikorn_scheduler_interface_si_proto_msgTypes,
+		ExtensionInfos:    file_yunikorn_scheduler_interface_si_proto_extTypes,
+	}.Build()
+	File_yunikorn_scheduler_interface_si_proto = out.File
+	file_yunikorn_scheduler_interface_si_proto_rawDesc = nil
+	file_yunikorn_scheduler_interface_si_proto_goTypes = nil
+	file_yunikorn_scheduler_interface_si_proto_depIdxs = nil
 }
diff --git a/lib/go/si/si_grpc.pb.go b/lib/go/si/si_grpc.pb.go
new file mode 100644
index 0000000..471be99
--- /dev/null
+++ b/lib/go/si/si_grpc.pb.go
@@ -0,0 +1,349 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//     http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Code generated by make build. DO NOT EDIT
+
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.3.0
+// - protoc             v4.23.2
+// source: yunikorn-scheduler-interface/si.proto
+
+package si
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+const (
+	Scheduler_RegisterResourceManager_FullMethodName = "/si.v1.Scheduler/RegisterResourceManager"
+	Scheduler_UpdateAllocation_FullMethodName        = "/si.v1.Scheduler/UpdateAllocation"
+	Scheduler_UpdateApplication_FullMethodName       = "/si.v1.Scheduler/UpdateApplication"
+	Scheduler_UpdateNode_FullMethodName              = "/si.v1.Scheduler/UpdateNode"
+)
+
+// SchedulerClient is the client API for Scheduler 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 SchedulerClient interface {
+	// Register a RM, if it is a reconnect from previous RM the call will
+	// trigger a cleanup of all in-memory data and resync with RM.
+	RegisterResourceManager(ctx context.Context, in *RegisterResourceManagerRequest, opts ...grpc.CallOption) (*RegisterResourceManagerResponse, error)
+	// Update Scheduler status (this includes node status update, allocation request
+	// updates, etc. And receive updates from scheduler for allocation changes,
+	// any required status changes, etc.
+	// Update allocation request
+	UpdateAllocation(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateAllocationClient, error)
+	// Update application request
+	UpdateApplication(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateApplicationClient, error)
+	// Update node info
+	UpdateNode(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateNodeClient, error)
+}
+
+type schedulerClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewSchedulerClient(cc grpc.ClientConnInterface) SchedulerClient {
+	return &schedulerClient{cc}
+}
+
+func (c *schedulerClient) RegisterResourceManager(ctx context.Context, in *RegisterResourceManagerRequest, opts ...grpc.CallOption) (*RegisterResourceManagerResponse, error) {
+	out := new(RegisterResourceManagerResponse)
+	err := c.cc.Invoke(ctx, Scheduler_RegisterResourceManager_FullMethodName, in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *schedulerClient) UpdateAllocation(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateAllocationClient, error) {
+	stream, err := c.cc.NewStream(ctx, &Scheduler_ServiceDesc.Streams[0], Scheduler_UpdateAllocation_FullMethodName, opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &schedulerUpdateAllocationClient{stream}
+	return x, nil
+}
+
+type Scheduler_UpdateAllocationClient interface {
+	Send(*AllocationRequest) error
+	Recv() (*AllocationResponse, error)
+	grpc.ClientStream
+}
+
+type schedulerUpdateAllocationClient struct {
+	grpc.ClientStream
+}
+
+func (x *schedulerUpdateAllocationClient) Send(m *AllocationRequest) error {
+	return x.ClientStream.SendMsg(m)
+}
+
+func (x *schedulerUpdateAllocationClient) Recv() (*AllocationResponse, error) {
+	m := new(AllocationResponse)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+func (c *schedulerClient) UpdateApplication(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateApplicationClient, error) {
+	stream, err := c.cc.NewStream(ctx, &Scheduler_ServiceDesc.Streams[1], Scheduler_UpdateApplication_FullMethodName, opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &schedulerUpdateApplicationClient{stream}
+	return x, nil
+}
+
+type Scheduler_UpdateApplicationClient interface {
+	Send(*ApplicationRequest) error
+	Recv() (*ApplicationResponse, error)
+	grpc.ClientStream
+}
+
+type schedulerUpdateApplicationClient struct {
+	grpc.ClientStream
+}
+
+func (x *schedulerUpdateApplicationClient) Send(m *ApplicationRequest) error {
+	return x.ClientStream.SendMsg(m)
+}
+
+func (x *schedulerUpdateApplicationClient) Recv() (*ApplicationResponse, error) {
+	m := new(ApplicationResponse)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+func (c *schedulerClient) UpdateNode(ctx context.Context, opts ...grpc.CallOption) (Scheduler_UpdateNodeClient, error) {
+	stream, err := c.cc.NewStream(ctx, &Scheduler_ServiceDesc.Streams[2], Scheduler_UpdateNode_FullMethodName, opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &schedulerUpdateNodeClient{stream}
+	return x, nil
+}
+
+type Scheduler_UpdateNodeClient interface {
+	Send(*NodeRequest) error
+	Recv() (*NodeResponse, error)
+	grpc.ClientStream
+}
+
+type schedulerUpdateNodeClient struct {
+	grpc.ClientStream
+}
+
+func (x *schedulerUpdateNodeClient) Send(m *NodeRequest) error {
+	return x.ClientStream.SendMsg(m)
+}
+
+func (x *schedulerUpdateNodeClient) Recv() (*NodeResponse, error) {
+	m := new(NodeResponse)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+// SchedulerServer is the server API for Scheduler service.
+// All implementations must embed UnimplementedSchedulerServer
+// for forward compatibility
+type SchedulerServer interface {
+	// Register a RM, if it is a reconnect from previous RM the call will
+	// trigger a cleanup of all in-memory data and resync with RM.
+	RegisterResourceManager(context.Context, *RegisterResourceManagerRequest) (*RegisterResourceManagerResponse, error)
+	// Update Scheduler status (this includes node status update, allocation request
+	// updates, etc. And receive updates from scheduler for allocation changes,
+	// any required status changes, etc.
+	// Update allocation request
+	UpdateAllocation(Scheduler_UpdateAllocationServer) error
+	// Update application request
+	UpdateApplication(Scheduler_UpdateApplicationServer) error
+	// Update node info
+	UpdateNode(Scheduler_UpdateNodeServer) error
+	mustEmbedUnimplementedSchedulerServer()
+}
+
+// UnimplementedSchedulerServer must be embedded to have forward compatible implementations.
+type UnimplementedSchedulerServer struct {
+}
+
+func (UnimplementedSchedulerServer) RegisterResourceManager(context.Context, *RegisterResourceManagerRequest) (*RegisterResourceManagerResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method RegisterResourceManager not implemented")
+}
+func (UnimplementedSchedulerServer) UpdateAllocation(Scheduler_UpdateAllocationServer) error {
+	return status.Errorf(codes.Unimplemented, "method UpdateAllocation not implemented")
+}
+func (UnimplementedSchedulerServer) UpdateApplication(Scheduler_UpdateApplicationServer) error {
+	return status.Errorf(codes.Unimplemented, "method UpdateApplication not implemented")
+}
+func (UnimplementedSchedulerServer) UpdateNode(Scheduler_UpdateNodeServer) error {
+	return status.Errorf(codes.Unimplemented, "method UpdateNode not implemented")
+}
+func (UnimplementedSchedulerServer) mustEmbedUnimplementedSchedulerServer() {}
+
+// UnsafeSchedulerServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to SchedulerServer will
+// result in compilation errors.
+type UnsafeSchedulerServer interface {
+	mustEmbedUnimplementedSchedulerServer()
+}
+
+func RegisterSchedulerServer(s grpc.ServiceRegistrar, srv SchedulerServer) {
+	s.RegisterService(&Scheduler_ServiceDesc, srv)
+}
+
+func _Scheduler_RegisterResourceManager_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(RegisterResourceManagerRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SchedulerServer).RegisterResourceManager(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Scheduler_RegisterResourceManager_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SchedulerServer).RegisterResourceManager(ctx, req.(*RegisterResourceManagerRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Scheduler_UpdateAllocation_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(SchedulerServer).UpdateAllocation(&schedulerUpdateAllocationServer{stream})
+}
+
+type Scheduler_UpdateAllocationServer interface {
+	Send(*AllocationResponse) error
+	Recv() (*AllocationRequest, error)
+	grpc.ServerStream
+}
+
+type schedulerUpdateAllocationServer struct {
+	grpc.ServerStream
+}
+
+func (x *schedulerUpdateAllocationServer) Send(m *AllocationResponse) error {
+	return x.ServerStream.SendMsg(m)
+}
+
+func (x *schedulerUpdateAllocationServer) Recv() (*AllocationRequest, error) {
+	m := new(AllocationRequest)
+	if err := x.ServerStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+func _Scheduler_UpdateApplication_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(SchedulerServer).UpdateApplication(&schedulerUpdateApplicationServer{stream})
+}
+
+type Scheduler_UpdateApplicationServer interface {
+	Send(*ApplicationResponse) error
+	Recv() (*ApplicationRequest, error)
+	grpc.ServerStream
+}
+
+type schedulerUpdateApplicationServer struct {
+	grpc.ServerStream
+}
+
+func (x *schedulerUpdateApplicationServer) Send(m *ApplicationResponse) error {
+	return x.ServerStream.SendMsg(m)
+}
+
+func (x *schedulerUpdateApplicationServer) Recv() (*ApplicationRequest, error) {
+	m := new(ApplicationRequest)
+	if err := x.ServerStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+func _Scheduler_UpdateNode_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(SchedulerServer).UpdateNode(&schedulerUpdateNodeServer{stream})
+}
+
+type Scheduler_UpdateNodeServer interface {
+	Send(*NodeResponse) error
+	Recv() (*NodeRequest, error)
+	grpc.ServerStream
+}
+
+type schedulerUpdateNodeServer struct {
+	grpc.ServerStream
+}
+
+func (x *schedulerUpdateNodeServer) Send(m *NodeResponse) error {
+	return x.ServerStream.SendMsg(m)
+}
+
+func (x *schedulerUpdateNodeServer) Recv() (*NodeRequest, error) {
+	m := new(NodeRequest)
+	if err := x.ServerStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+// Scheduler_ServiceDesc is the grpc.ServiceDesc for Scheduler service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Scheduler_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "si.v1.Scheduler",
+	HandlerType: (*SchedulerServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "RegisterResourceManager",
+			Handler:    _Scheduler_RegisterResourceManager_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "UpdateAllocation",
+			Handler:       _Scheduler_UpdateAllocation_Handler,
+			ServerStreams: true,
+			ClientStreams: true,
+		},
+		{
+			StreamName:    "UpdateApplication",
+			Handler:       _Scheduler_UpdateApplication_Handler,
+			ServerStreams: true,
+			ClientStreams: true,
+		},
+		{
+			StreamName:    "UpdateNode",
+			Handler:       _Scheduler_UpdateNode_Handler,
+			ServerStreams: true,
+			ClientStreams: true,
+		},
+	},
+	Metadata: "yunikorn-scheduler-interface/si.proto",
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@yunikorn.apache.org
For additional commands, e-mail: issues-help@yunikorn.apache.org