lib/go/si/si.pb.go (2,562 lines of code) (raw):

// 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.36.5 // protoc v4.23.2 // source: yunikorn-scheduler-interface/si.proto package si import ( 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" unsafe "unsafe" ) 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 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) ) // 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 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 file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{0} } // Action from RM type NodeInfo_ActionFromRM int32 const ( // ActionFromRM not set NodeInfo_UNKNOWN_ACTION_FROM_RM NodeInfo_ActionFromRM = 0 // Create Node as initially schedulable. NodeInfo_CREATE NodeInfo_ActionFromRM = 1 // Update node resources, attributes. NodeInfo_UPDATE NodeInfo_ActionFromRM = 2 // Do not allocate new allocations on the node. NodeInfo_DRAIN_NODE NodeInfo_ActionFromRM = 3 // Decomission node, it will immediately stop allocations on the node and // remove the node from schedulable lists. NodeInfo_DECOMISSION NodeInfo_ActionFromRM = 4 // From Draining state to SCHEDULABLE state. // If node is not in draining state, error will be thrown NodeInfo_DRAIN_TO_SCHEDULABLE NodeInfo_ActionFromRM = 5 // Create Node as initially draining (i.e. unschedulable). Before scheduling can proceed, // DRAIN_TO_SCHEDULABLE must be called. NodeInfo_CREATE_DRAIN NodeInfo_ActionFromRM = 6 ) // 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", 6: "CREATE_DRAIN", } NodeInfo_ActionFromRM_value = map[string]int32{ "UNKNOWN_ACTION_FROM_RM": 0, "CREATE": 1, "UPDATE": 2, "DRAIN_NODE": 3, "DECOMISSION": 4, "DRAIN_TO_SCHEDULABLE": 5, "CREATE_DRAIN": 6, } ) func (x NodeInfo_ActionFromRM) Enum() *NodeInfo_ActionFromRM { p := new(NodeInfo_ActionFromRM) *p = x return p } func (x NodeInfo_ActionFromRM) String() string { 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 file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{22, 0} } // container scheduling states type UpdateContainerSchedulingStateRequest_SchedulingState int32 const ( // SchedulingState not set UpdateContainerSchedulingStateRequest_UNKNOWN_SCHEDULING_STATE UpdateContainerSchedulingStateRequest_SchedulingState = 0 // the container is being skipped by the scheduler UpdateContainerSchedulingStateRequest_SKIPPED UpdateContainerSchedulingStateRequest_SchedulingState = 1 // the container is scheduled and it has been assigned to a node UpdateContainerSchedulingStateRequest_SCHEDULED UpdateContainerSchedulingStateRequest_SchedulingState = 2 // the container is reserved on some node, but not yet assigned UpdateContainerSchedulingStateRequest_RESERVED UpdateContainerSchedulingStateRequest_SchedulingState = 3 // scheduler has visited all candidate nodes for this container // but non of them could satisfy this container's requirement UpdateContainerSchedulingStateRequest_FAILED UpdateContainerSchedulingStateRequest_SchedulingState = 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 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 file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{27, 0} } type EventRecord_Type int32 const ( // EventRecord Type not set EventRecord_UNKNOWN_EVENTRECORD_TYPE EventRecord_Type = 0 EventRecord_REQUEST EventRecord_Type = 1 EventRecord_APP EventRecord_Type = 2 EventRecord_NODE EventRecord_Type = 3 EventRecord_QUEUE EventRecord_Type = 4 EventRecord_USERGROUP EventRecord_Type = 5 ) // 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", 5: "USERGROUP", } EventRecord_Type_value = map[string]int32{ "UNKNOWN_EVENTRECORD_TYPE": 0, "REQUEST": 1, "APP": 2, "NODE": 3, "QUEUE": 4, "USERGROUP": 5, } ) func (x EventRecord_Type) Enum() *EventRecord_Type { p := new(EventRecord_Type) *p = x return p } func (x EventRecord_Type) String() string { 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 file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{29, 0} } type EventRecord_ChangeType int32 const ( EventRecord_NONE EventRecord_ChangeType = 0 EventRecord_SET EventRecord_ChangeType = 1 EventRecord_ADD EventRecord_ChangeType = 2 EventRecord_REMOVE EventRecord_ChangeType = 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 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 file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{29, 1} } type EventRecord_ChangeDetail int32 const ( EventRecord_DETAILS_NONE EventRecord_ChangeDetail = 0 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_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_APP_RESUMING EventRecord_ChangeDetail = 211 // State change to resuming EventRecord_APP_EXPIRED EventRecord_ChangeDetail = 212 // State change to expired EventRecord_APP_CANNOTRUN_QUEUE EventRecord_ChangeDetail = 213 // Application cannot run in the queue (maxApplications hit) EventRecord_APP_RUNNABLE_QUEUE EventRecord_ChangeDetail = 214 // Application is allowed to run (after maxApplications limit hit) EventRecord_APP_CANNOTRUN_QUOTA EventRecord_ChangeDetail = 215 // Application cannot run due to user/group quota (maxApplications hit) EventRecord_APP_RUNNABLE_QUOTA EventRecord_ChangeDetail = 216 // Application is allowed to run based on user/group quota (after maxApplications limit hit) EventRecord_NODE_DECOMISSION EventRecord_ChangeDetail = 300 // Node removal 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_NODE_RESERVATION EventRecord_ChangeDetail = 306 // Reservation/unreservation occurred 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 EventRecord_UG_USER_LIMIT EventRecord_ChangeDetail = 600 // Limit is changed (set/unset) for a given user EventRecord_UG_GROUP_LIMIT EventRecord_ChangeDetail = 601 // Limit is changed (set/unset) for a given group EventRecord_UG_APP_LINK EventRecord_ChangeDetail = 602 // Linkage is changed (created/removed) between an application and a group EventRecord_UG_USER_RESOURCE EventRecord_ChangeDetail = 603 // Resource usage updated for a user EventRecord_UG_GROUP_RESOURCE EventRecord_ChangeDetail = 604 // Resource usage updated for a group ) // 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", 206: "APP_RUNNING", 207: "APP_COMPLETING", 208: "APP_COMPLETED", 209: "APP_FAILING", 210: "APP_FAILED", 211: "APP_RESUMING", 212: "APP_EXPIRED", 213: "APP_CANNOTRUN_QUEUE", 214: "APP_RUNNABLE_QUEUE", 215: "APP_CANNOTRUN_QUOTA", 216: "APP_RUNNABLE_QUOTA", 300: "NODE_DECOMISSION", 302: "NODE_SCHEDULABLE", 303: "NODE_ALLOC", 304: "NODE_CAPACITY", 305: "NODE_OCCUPIED", 306: "NODE_RESERVATION", 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", 600: "UG_USER_LIMIT", 601: "UG_GROUP_LIMIT", 602: "UG_APP_LINK", 603: "UG_USER_RESOURCE", 604: "UG_GROUP_RESOURCE", } 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_RUNNING": 206, "APP_COMPLETING": 207, "APP_COMPLETED": 208, "APP_FAILING": 209, "APP_FAILED": 210, "APP_RESUMING": 211, "APP_EXPIRED": 212, "APP_CANNOTRUN_QUEUE": 213, "APP_RUNNABLE_QUEUE": 214, "APP_CANNOTRUN_QUOTA": 215, "APP_RUNNABLE_QUOTA": 216, "NODE_DECOMISSION": 300, "NODE_SCHEDULABLE": 302, "NODE_ALLOC": 303, "NODE_CAPACITY": 304, "NODE_OCCUPIED": 305, "NODE_RESERVATION": 306, "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, "UG_USER_LIMIT": 600, "UG_GROUP_LIMIT": 601, "UG_APP_LINK": 602, "UG_USER_RESOURCE": 603, "UG_GROUP_RESOURCE": 604, } ) func (x EventRecord_ChangeDetail) Enum() *EventRecord_ChangeDetail { p := new(EventRecord_ChangeDetail) *p = x return p } func (x EventRecord_ChangeDetail) String() string { 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 file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{29, 2} } type RegisterResourceManagerRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` // Version of RM scheduler interface client. Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // Policy group name: // This defines which policy to use. Policy should be statically configured. (Think about network security group concept of ec2). // Different RMs can refer to the same policyGroup if their static configuration is identical. PolicyGroup string `protobuf:"bytes,3,opt,name=policyGroup,proto3" json:"policyGroup,omitempty"` // Pass the build information of k8shim to core. BuildInfo map[string]string `protobuf:"bytes,4,rep,name=buildInfo,proto3" json:"buildInfo,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // 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" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RegisterResourceManagerRequest) Reset() { *x = RegisterResourceManagerRequest{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RegisterResourceManagerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegisterResourceManagerRequest) ProtoMessage() {} func (x *RegisterResourceManagerRequest) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegisterResourceManagerRequest.ProtoReflect.Descriptor instead. func (*RegisterResourceManagerRequest) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{0} } func (x *RegisterResourceManagerRequest) GetRmID() string { if x != nil { return x.RmID } return "" } func (x *RegisterResourceManagerRequest) GetVersion() string { if x != nil { return x.Version } return "" } func (x *RegisterResourceManagerRequest) GetPolicyGroup() string { if x != nil { return x.PolicyGroup } return "" } func (x *RegisterResourceManagerRequest) GetBuildInfo() map[string]string { if x != nil { return x.BuildInfo } return nil } func (x *RegisterResourceManagerRequest) GetConfig() string { if x != nil { return x.Config } return "" } 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 { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RegisterResourceManagerResponse) Reset() { *x = RegisterResourceManagerResponse{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RegisterResourceManagerResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegisterResourceManagerResponse) ProtoMessage() {} func (x *RegisterResourceManagerResponse) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // 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 `protogen:"open.v1"` // 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"` // Allocation to add or update. Allocations []*Allocation `protobuf:"bytes,4,rep,name=allocations,proto3" json:"allocations,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AllocationRequest) Reset() { *x = AllocationRequest{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AllocationRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AllocationRequest) ProtoMessage() {} func (x *AllocationRequest) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AllocationRequest.ProtoReflect.Descriptor instead. func (*AllocationRequest) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{2} } func (x *AllocationRequest) GetReleases() *AllocationReleasesRequest { if x != nil { return x.Releases } return nil } func (x *AllocationRequest) GetRmID() string { if x != nil { return x.RmID } return "" } func (x *AllocationRequest) GetAllocations() []*Allocation { if x != nil { return x.Allocations } return nil } type ApplicationRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ApplicationRequest) Reset() { *x = ApplicationRequest{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ApplicationRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ApplicationRequest) ProtoMessage() {} func (x *ApplicationRequest) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ApplicationRequest.ProtoReflect.Descriptor instead. func (*ApplicationRequest) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{3} } func (x *ApplicationRequest) GetNew() []*AddApplicationRequest { if x != nil { return x.New } return nil } func (x *ApplicationRequest) GetRemove() []*RemoveApplicationRequest { if x != nil { return x.Remove } return nil } func (x *ApplicationRequest) GetRmID() string { if x != nil { return x.RmID } return "" } type NodeRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *NodeRequest) Reset() { *x = NodeRequest{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *NodeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*NodeRequest) ProtoMessage() {} func (x *NodeRequest) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use NodeRequest.ProtoReflect.Descriptor instead. func (*NodeRequest) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{4} } func (x *NodeRequest) GetNodes() []*NodeInfo { if x != nil { return x.Nodes } return nil } func (x *NodeRequest) GetRmID() string { if x != nil { return x.RmID } return "" } type AllocationResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // 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. // Or it could be decision made by scheduler (such as preemption or timeout). Released []*AllocationRelease `protobuf:"bytes,2,rep,name=released,proto3" json:"released,omitempty"` // Rejected allocations RejectedAllocations []*RejectedAllocation `protobuf:"bytes,5,rep,name=rejectedAllocations,proto3" json:"rejectedAllocations,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AllocationResponse) Reset() { *x = AllocationResponse{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AllocationResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*AllocationResponse) ProtoMessage() {} func (x *AllocationResponse) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AllocationResponse.ProtoReflect.Descriptor instead. func (*AllocationResponse) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{5} } func (x *AllocationResponse) GetNew() []*Allocation { if x != nil { return x.New } return nil } func (x *AllocationResponse) GetReleased() []*AllocationRelease { if x != nil { return x.Released } return nil } func (x *AllocationResponse) GetRejectedAllocations() []*RejectedAllocation { if x != nil { return x.RejectedAllocations } return nil } type ApplicationResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ApplicationResponse) Reset() { *x = ApplicationResponse{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ApplicationResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ApplicationResponse) ProtoMessage() {} func (x *ApplicationResponse) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ApplicationResponse.ProtoReflect.Descriptor instead. func (*ApplicationResponse) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{6} } func (x *ApplicationResponse) GetRejected() []*RejectedApplication { if x != nil { return x.Rejected } return nil } func (x *ApplicationResponse) GetAccepted() []*AcceptedApplication { if x != nil { return x.Accepted } return nil } func (x *ApplicationResponse) GetUpdated() []*UpdatedApplication { if x != nil { return x.Updated } return nil } type NodeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *NodeResponse) Reset() { *x = NodeResponse{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *NodeResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*NodeResponse) ProtoMessage() {} func (x *NodeResponse) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use NodeResponse.ProtoReflect.Descriptor instead. func (*NodeResponse) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{7} } func (x *NodeResponse) GetRejected() []*RejectedNode { if x != nil { return x.Rejected } return nil } func (x *NodeResponse) GetAccepted() []*AcceptedNode { if x != nil { return x.Accepted } return nil } type UpdatedApplication struct { state protoimpl.MessageState `protogen:"open.v1"` // The application ID that was updated ApplicationID string `protobuf:"bytes,1,opt,name=applicationID,proto3" json:"applicationID,omitempty"` // State of the application State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *UpdatedApplication) Reset() { *x = UpdatedApplication{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpdatedApplication) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdatedApplication) ProtoMessage() {} func (x *UpdatedApplication) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdatedApplication.ProtoReflect.Descriptor instead. func (*UpdatedApplication) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{8} } func (x *UpdatedApplication) GetApplicationID() string { if x != nil { return x.ApplicationID } return "" } func (x *UpdatedApplication) GetState() string { if x != nil { return x.State } return "" } func (x *UpdatedApplication) GetStateTransitionTimestamp() int64 { if x != nil { return x.StateTransitionTimestamp } return 0 } func (x *UpdatedApplication) GetMessage() string { if x != nil { return x.Message } return "" } type RejectedApplication struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RejectedApplication) Reset() { *x = RejectedApplication{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RejectedApplication) String() string { return protoimpl.X.MessageStringOf(x) } func (*RejectedApplication) ProtoMessage() {} func (x *RejectedApplication) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RejectedApplication.ProtoReflect.Descriptor instead. func (*RejectedApplication) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{9} } func (x *RejectedApplication) GetApplicationID() string { if x != nil { return x.ApplicationID } return "" } func (x *RejectedApplication) GetReason() string { if x != nil { return x.Reason } return "" } type AcceptedApplication struct { state protoimpl.MessageState `protogen:"open.v1"` // The application ID that was accepted ApplicationID string `protobuf:"bytes,1,opt,name=applicationID,proto3" json:"applicationID,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AcceptedApplication) Reset() { *x = AcceptedApplication{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AcceptedApplication) String() string { return protoimpl.X.MessageStringOf(x) } func (*AcceptedApplication) ProtoMessage() {} func (x *AcceptedApplication) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AcceptedApplication.ProtoReflect.Descriptor instead. func (*AcceptedApplication) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{10} } func (x *AcceptedApplication) GetApplicationID() string { if x != nil { return x.ApplicationID } return "" } type RejectedNode struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RejectedNode) Reset() { *x = RejectedNode{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RejectedNode) String() string { return protoimpl.X.MessageStringOf(x) } func (*RejectedNode) ProtoMessage() {} func (x *RejectedNode) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RejectedNode.ProtoReflect.Descriptor instead. func (*RejectedNode) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{11} } func (x *RejectedNode) GetNodeID() string { if x != nil { return x.NodeID } return "" } func (x *RejectedNode) GetReason() string { if x != nil { return x.Reason } return "" } type AcceptedNode struct { state protoimpl.MessageState `protogen:"open.v1"` // The node ID that was accepted NodeID string `protobuf:"bytes,1,opt,name=nodeID,proto3" json:"nodeID,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AcceptedNode) Reset() { *x = AcceptedNode{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AcceptedNode) String() string { return protoimpl.X.MessageStringOf(x) } func (*AcceptedNode) ProtoMessage() {} func (x *AcceptedNode) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AcceptedNode.ProtoReflect.Descriptor instead. func (*AcceptedNode) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{12} } func (x *AcceptedNode) GetNodeID() string { if x != nil { return x.NodeID } return "" } // A sparse map of resource to Quantity. type Resource struct { state protoimpl.MessageState `protogen:"open.v1"` Resources map[string]*Quantity `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Resource) Reset() { *x = Resource{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Resource) String() string { return protoimpl.X.MessageStringOf(x) } func (*Resource) ProtoMessage() {} func (x *Resource) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Resource.ProtoReflect.Descriptor instead. func (*Resource) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{13} } func (x *Resource) GetResources() map[string]*Quantity { if x != nil { return x.Resources } return nil } // Quantity includes a single int64 value type Quantity struct { state protoimpl.MessageState `protogen:"open.v1"` Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Quantity) Reset() { *x = Quantity{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Quantity) String() string { return protoimpl.X.MessageStringOf(x) } func (*Quantity) ProtoMessage() {} func (x *Quantity) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Quantity.ProtoReflect.Descriptor instead. func (*Quantity) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{14} } func (x *Quantity) GetValue() int64 { if x != nil { return x.Value } return 0 } type PreemptionPolicy struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PreemptionPolicy) Reset() { *x = PreemptionPolicy{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PreemptionPolicy) String() string { return protoimpl.X.MessageStringOf(x) } func (*PreemptionPolicy) ProtoMessage() {} func (x *PreemptionPolicy) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PreemptionPolicy.ProtoReflect.Descriptor instead. func (*PreemptionPolicy) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{15} } func (x *PreemptionPolicy) GetAllowPreemptSelf() bool { if x != nil { return x.AllowPreemptSelf } return false } func (x *PreemptionPolicy) GetAllowPreemptOther() bool { if x != nil { return x.AllowPreemptOther } return false } type AddApplicationRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // 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 // queue according to policy, taking into account the requested queue as per the policy. QueueName string `protobuf:"bytes,2,opt,name=queueName,proto3" json:"queueName,omitempty"` // The partition the application belongs to PartitionName string `protobuf:"bytes,3,opt,name=partitionName,proto3" json:"partitionName,omitempty"` // The user group information of the application owner Ugi *UserGroupInformation `protobuf:"bytes,4,opt,name=ugi,proto3" json:"ugi,omitempty"` // A set of tags for the application. These tags provide application level generic information. // The tags are optional and are used in placing an application or scheduling. Tags map[string]string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Execution timeout: How long this application can be in a running state // 0 or negative value means never expire. ExecutionTimeoutMilliSeconds int64 `protobuf:"varint,6,opt,name=executionTimeoutMilliSeconds,proto3" json:"executionTimeoutMilliSeconds,omitempty"` // The total amount of resources gang placeholders will request 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AddApplicationRequest) Reset() { *x = AddApplicationRequest{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AddApplicationRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddApplicationRequest) ProtoMessage() {} func (x *AddApplicationRequest) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddApplicationRequest.ProtoReflect.Descriptor instead. func (*AddApplicationRequest) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{16} } func (x *AddApplicationRequest) GetApplicationID() string { if x != nil { return x.ApplicationID } return "" } func (x *AddApplicationRequest) GetQueueName() string { if x != nil { return x.QueueName } return "" } func (x *AddApplicationRequest) GetPartitionName() string { if x != nil { return x.PartitionName } return "" } func (x *AddApplicationRequest) GetUgi() *UserGroupInformation { if x != nil { return x.Ugi } return nil } func (x *AddApplicationRequest) GetTags() map[string]string { if x != nil { return x.Tags } return nil } func (x *AddApplicationRequest) GetExecutionTimeoutMilliSeconds() int64 { if x != nil { return x.ExecutionTimeoutMilliSeconds } return 0 } func (x *AddApplicationRequest) GetPlaceholderAsk() *Resource { if x != nil { return x.PlaceholderAsk } return nil } func (x *AddApplicationRequest) GetGangSchedulingStyle() string { if x != nil { return x.GangSchedulingStyle } return "" } type RemoveApplicationRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RemoveApplicationRequest) Reset() { *x = RemoveApplicationRequest{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RemoveApplicationRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemoveApplicationRequest) ProtoMessage() {} func (x *RemoveApplicationRequest) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RemoveApplicationRequest.ProtoReflect.Descriptor instead. func (*RemoveApplicationRequest) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{17} } func (x *RemoveApplicationRequest) GetApplicationID() string { if x != nil { return x.ApplicationID } return "" } func (x *RemoveApplicationRequest) GetPartitionName() string { if x != nil { return x.PartitionName } return "" } type UserGroupInformation struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *UserGroupInformation) Reset() { *x = UserGroupInformation{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UserGroupInformation) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserGroupInformation) ProtoMessage() {} func (x *UserGroupInformation) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UserGroupInformation.ProtoReflect.Descriptor instead. func (*UserGroupInformation) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{18} } func (x *UserGroupInformation) GetUser() string { if x != nil { return x.User } return "" } func (x *UserGroupInformation) GetGroups() []string { if x != nil { return x.Groups } return nil } type Allocation struct { state protoimpl.MessageState `protogen:"open.v1"` // Allocation key AllocationKey string `protobuf:"bytes,1,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"` // Allocation tags AllocationTags map[string]string `protobuf:"bytes,2,rep,name=allocationTags,proto3" json:"allocationTags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Resource for each allocation ResourcePerAlloc *Resource `protobuf:"bytes,5,opt,name=resourcePerAlloc,proto3" json:"resourcePerAlloc,omitempty"` // Priority of allocation Priority int32 `protobuf:"varint,6,opt,name=priority,proto3" json:"priority,omitempty"` // Node which the allocation belongs to NodeID string `protobuf:"bytes,8,opt,name=nodeID,proto3" json:"nodeID,omitempty"` // The ID of the application ApplicationID string `protobuf:"bytes,9,opt,name=applicationID,proto3" json:"applicationID,omitempty"` // Partition of the allocation PartitionName string `protobuf:"bytes,10,opt,name=partitionName,proto3" json:"partitionName,omitempty"` // The name of the TaskGroup this allocation belongs to 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"` // Whether this allocation was the originator of this app Originator bool `protobuf:"varint,14,opt,name=originator,proto3" json:"originator,omitempty"` // The preemption policy for this allocation PreemptionPolicy *PreemptionPolicy `protobuf:"bytes,15,opt,name=preemptionPolicy,proto3" json:"preemptionPolicy,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Allocation) Reset() { *x = Allocation{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Allocation) String() string { return protoimpl.X.MessageStringOf(x) } func (*Allocation) ProtoMessage() {} func (x *Allocation) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Allocation.ProtoReflect.Descriptor instead. func (*Allocation) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{19} } func (x *Allocation) GetAllocationKey() string { if x != nil { return x.AllocationKey } return "" } func (x *Allocation) GetAllocationTags() map[string]string { if x != nil { return x.AllocationTags } return nil } func (x *Allocation) GetResourcePerAlloc() *Resource { if x != nil { return x.ResourcePerAlloc } return nil } func (x *Allocation) GetPriority() int32 { if x != nil { return x.Priority } return 0 } func (x *Allocation) GetNodeID() string { if x != nil { return x.NodeID } return "" } func (x *Allocation) GetApplicationID() string { if x != nil { return x.ApplicationID } return "" } func (x *Allocation) GetPartitionName() string { if x != nil { return x.PartitionName } return "" } func (x *Allocation) GetTaskGroupName() string { if x != nil { return x.TaskGroupName } return "" } func (x *Allocation) GetPlaceholder() bool { if x != nil { return x.Placeholder } return false } func (x *Allocation) GetOriginator() bool { if x != nil { return x.Originator } return false } func (x *Allocation) GetPreemptionPolicy() *PreemptionPolicy { if x != nil { return x.PreemptionPolicy } return nil } type AllocationReleasesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // The allocations to release AllocationsToRelease []*AllocationRelease `protobuf:"bytes,1,rep,name=allocationsToRelease,proto3" json:"allocationsToRelease,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AllocationReleasesRequest) Reset() { *x = AllocationReleasesRequest{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AllocationReleasesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AllocationReleasesRequest) ProtoMessage() {} func (x *AllocationReleasesRequest) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AllocationReleasesRequest.ProtoReflect.Descriptor instead. func (*AllocationReleasesRequest) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{20} } func (x *AllocationReleasesRequest) GetAllocationsToRelease() []*AllocationRelease { if x != nil { return x.AllocationsToRelease } return nil } // Release allocation: this is a bidirectional message. The Terminationtype defines the origin, or creator, // 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 `protogen:"open.v1"` // 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 ApplicationID string `protobuf:"bytes,2,opt,name=applicationID,proto3" json:"applicationID,omitempty"` // Termination type of the released allocation TerminationType TerminationType `protobuf:"varint,4,opt,name=terminationType,proto3,enum=si.v1.TerminationType" json:"terminationType,omitempty"` // human-readable message Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` // AllocationKey of the allocation to release, if not set all allocations are released for the applicationID AllocationKey string `protobuf:"bytes,6,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AllocationRelease) Reset() { *x = AllocationRelease{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AllocationRelease) String() string { return protoimpl.X.MessageStringOf(x) } func (*AllocationRelease) ProtoMessage() {} func (x *AllocationRelease) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AllocationRelease.ProtoReflect.Descriptor instead. func (*AllocationRelease) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{21} } func (x *AllocationRelease) GetPartitionName() string { if x != nil { return x.PartitionName } return "" } func (x *AllocationRelease) GetApplicationID() string { if x != nil { return x.ApplicationID } return "" } func (x *AllocationRelease) GetTerminationType() TerminationType { if x != nil { return x.TerminationType } return TerminationType_UNKNOWN_TERMINATION_TYPE } func (x *AllocationRelease) GetMessage() string { if x != nil { return x.Message } return "" } func (x *AllocationRelease) GetAllocationKey() string { if x != nil { return x.AllocationKey } return "" } type NodeInfo struct { state protoimpl.MessageState `protogen:"open.v1"` // 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 Action NodeInfo_ActionFromRM `protobuf:"varint,2,opt,name=action,proto3,enum=si.v1.NodeInfo_ActionFromRM" json:"action,omitempty"` // New attributes of node, which will replace previously reported attribute. Attributes map[string]string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // new schedulable resource, scheduler may preempt allocations on the // node or schedule more allocations accordingly. SchedulableResource *Resource `protobuf:"bytes,4,opt,name=schedulableResource,proto3" json:"schedulableResource,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *NodeInfo) Reset() { *x = NodeInfo{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *NodeInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*NodeInfo) ProtoMessage() {} func (x *NodeInfo) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use NodeInfo.ProtoReflect.Descriptor instead. func (*NodeInfo) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{22} } func (x *NodeInfo) GetNodeID() string { if x != nil { return x.NodeID } return "" } func (x *NodeInfo) GetAction() NodeInfo_ActionFromRM { if x != nil { return x.Action } return NodeInfo_UNKNOWN_ACTION_FROM_RM } func (x *NodeInfo) GetAttributes() map[string]string { if x != nil { return x.Attributes } return nil } func (x *NodeInfo) GetSchedulableResource() *Resource { if x != nil { return x.SchedulableResource } return nil } type RejectedAllocation struct { state protoimpl.MessageState `protogen:"open.v1"` // the ID of the allocation 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RejectedAllocation) Reset() { *x = RejectedAllocation{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RejectedAllocation) String() string { return protoimpl.X.MessageStringOf(x) } func (*RejectedAllocation) ProtoMessage() {} func (x *RejectedAllocation) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RejectedAllocation.ProtoReflect.Descriptor instead. func (*RejectedAllocation) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{23} } func (x *RejectedAllocation) GetAllocationKey() string { if x != nil { return x.AllocationKey } return "" } func (x *RejectedAllocation) GetApplicationID() string { if x != nil { return x.ApplicationID } return "" } func (x *RejectedAllocation) GetReason() string { if x != nil { return x.Reason } return "" } type PredicatesArgs struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PredicatesArgs) Reset() { *x = PredicatesArgs{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PredicatesArgs) String() string { return protoimpl.X.MessageStringOf(x) } func (*PredicatesArgs) ProtoMessage() {} func (x *PredicatesArgs) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PredicatesArgs.ProtoReflect.Descriptor instead. func (*PredicatesArgs) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{24} } func (x *PredicatesArgs) GetAllocationKey() string { if x != nil { return x.AllocationKey } return "" } func (x *PredicatesArgs) GetNodeID() string { if x != nil { return x.NodeID } return "" } func (x *PredicatesArgs) GetAllocate() bool { if x != nil { return x.Allocate } return false } type PreemptionPredicatesArgs struct { state protoimpl.MessageState `protogen:"open.v1"` // 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 NodeID string `protobuf:"bytes,2,opt,name=nodeID,proto3" json:"nodeID,omitempty"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PreemptionPredicatesArgs) Reset() { *x = PreemptionPredicatesArgs{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PreemptionPredicatesArgs) String() string { return protoimpl.X.MessageStringOf(x) } func (*PreemptionPredicatesArgs) ProtoMessage() {} func (x *PreemptionPredicatesArgs) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PreemptionPredicatesArgs.ProtoReflect.Descriptor instead. func (*PreemptionPredicatesArgs) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{25} } func (x *PreemptionPredicatesArgs) GetAllocationKey() string { if x != nil { return x.AllocationKey } return "" } func (x *PreemptionPredicatesArgs) GetNodeID() string { if x != nil { return x.NodeID } return "" } func (x *PreemptionPredicatesArgs) GetPreemptAllocationKeys() []string { if x != nil { return x.PreemptAllocationKeys } return nil } func (x *PreemptionPredicatesArgs) GetStartIndex() int32 { if x != nil { return x.StartIndex } return 0 } type PreemptionPredicatesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PreemptionPredicatesResponse) Reset() { *x = PreemptionPredicatesResponse{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PreemptionPredicatesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PreemptionPredicatesResponse) ProtoMessage() {} func (x *PreemptionPredicatesResponse) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PreemptionPredicatesResponse.ProtoReflect.Descriptor instead. func (*PreemptionPredicatesResponse) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{26} } func (x *PreemptionPredicatesResponse) GetSuccess() bool { if x != nil { return x.Success } return false } func (x *PreemptionPredicatesResponse) GetIndex() int32 { if x != nil { return x.Index } return 0 } type UpdateContainerSchedulingStateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // application ID ApplicationID string `protobuf:"bytes,1,opt,name=applicationID,proto3" json:"applicationID,omitempty"` // allocation key used to identify a container. AllocationKey string `protobuf:"bytes,2,opt,name=allocationKey,proto3" json:"allocationKey,omitempty"` // 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *UpdateContainerSchedulingStateRequest) Reset() { *x = UpdateContainerSchedulingStateRequest{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpdateContainerSchedulingStateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateContainerSchedulingStateRequest) ProtoMessage() {} func (x *UpdateContainerSchedulingStateRequest) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateContainerSchedulingStateRequest.ProtoReflect.Descriptor instead. func (*UpdateContainerSchedulingStateRequest) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{27} } func (x *UpdateContainerSchedulingStateRequest) GetApplicationID() string { if x != nil { return x.ApplicationID } return "" } func (x *UpdateContainerSchedulingStateRequest) GetAllocationKey() string { if x != nil { return x.AllocationKey } return "" } func (x *UpdateContainerSchedulingStateRequest) GetState() UpdateContainerSchedulingStateRequest_SchedulingState { if x != nil { return x.State } return UpdateContainerSchedulingStateRequest_UNKNOWN_SCHEDULING_STATE } func (x *UpdateContainerSchedulingStateRequest) GetReason() string { if x != nil { return x.Reason } return "" } type UpdateConfigurationRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // RM ID to update RmID string `protobuf:"bytes,2,opt,name=rmID,proto3" json:"rmID,omitempty"` // PolicyGroup to update PolicyGroup string `protobuf:"bytes,3,opt,name=policyGroup,proto3" json:"policyGroup,omitempty"` // 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" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *UpdateConfigurationRequest) Reset() { *x = UpdateConfigurationRequest{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *UpdateConfigurationRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateConfigurationRequest) ProtoMessage() {} func (x *UpdateConfigurationRequest) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateConfigurationRequest.ProtoReflect.Descriptor instead. func (*UpdateConfigurationRequest) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{28} } func (x *UpdateConfigurationRequest) GetRmID() string { if x != nil { return x.RmID } return "" } func (x *UpdateConfigurationRequest) GetPolicyGroup() string { if x != nil { return x.PolicyGroup } return "" } func (x *UpdateConfigurationRequest) GetConfig() string { if x != nil { return x.Config } return "" } func (x *UpdateConfigurationRequest) GetExtraConfig() map[string]string { if x != nil { return x.ExtraConfig } return nil } type EventRecord struct { state protoimpl.MessageState `protogen:"open.v1"` // 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 ObjectID string `protobuf:"bytes,2,opt,name=objectID,proto3" json:"objectID,omitempty"` // the detailed message as string Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` // timestamp of the event TimestampNano int64 `protobuf:"varint,6,opt,name=timestampNano,proto3" json:"timestampNano,omitempty"` // the type of the change EventChangeType EventRecord_ChangeType `protobuf:"varint,7,opt,name=eventChangeType,proto3,enum=si.v1.EventRecord_ChangeType" json:"eventChangeType,omitempty"` // details about the change EventChangeDetail EventRecord_ChangeDetail `protobuf:"varint,8,opt,name=eventChangeDetail,proto3,enum=si.v1.EventRecord_ChangeDetail" json:"eventChangeDetail,omitempty"` // the secondary object in the event (eg. allocation ID, 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *EventRecord) Reset() { *x = EventRecord{} mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *EventRecord) String() string { return protoimpl.X.MessageStringOf(x) } func (*EventRecord) ProtoMessage() {} func (x *EventRecord) ProtoReflect() protoreflect.Message { mi := &file_yunikorn_scheduler_interface_si_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use EventRecord.ProtoReflect.Descriptor instead. func (*EventRecord) Descriptor() ([]byte, []int) { return file_yunikorn_scheduler_interface_si_proto_rawDescGZIP(), []int{29} } func (x *EventRecord) GetType() EventRecord_Type { if x != nil { return x.Type } return EventRecord_UNKNOWN_EVENTRECORD_TYPE } func (x *EventRecord) GetObjectID() string { if x != nil { return x.ObjectID } return "" } func (x *EventRecord) GetMessage() string { if x != nil { return x.Message } return "" } func (x *EventRecord) GetTimestampNano() int64 { if x != nil { return x.TimestampNano } return 0 } func (x *EventRecord) GetEventChangeType() EventRecord_ChangeType { if x != nil { return x.EventChangeType } return EventRecord_NONE } func (x *EventRecord) GetEventChangeDetail() EventRecord_ChangeDetail { if x != nil { return x.EventChangeDetail } return EventRecord_DETAILS_NONE } func (x *EventRecord) GetReferenceID() string { if x != nil { return x.ReferenceID } return "" } func (x *EventRecord) GetResource() *Resource { if x != nil { return x.Resource } return nil } 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", }, } // 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] ) var File_yunikorn_scheduler_interface_si_proto protoreflect.FileDescriptor var file_yunikorn_scheduler_interface_si_proto_rawDesc = string([]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, 0xa6, 0x01, 0x0a, 0x11, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x12, 0x33, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x04, 0x61, 0x73, 0x6b, 0x73, 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, 0xe0, 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, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 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, 0x52, 0x13, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x73, 0x6b, 0x73, 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, 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, 0xdf, 0x04, 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, 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, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 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, 0x0f, 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, 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, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x55, 0x55, 0x49, 0x44, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x88, 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, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 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, 0x81, 0x02, 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, 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, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x52, 0x04, 0x55, 0x55, 0x49, 0x44, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0xe0, 0x03, 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, 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, 0x8f, 0x01, 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, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x52, 0x13, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x10, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x78, 0x0a, 0x12, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 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, 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, 0xc6, 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, 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, 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, 0xc7, 0x0b, 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, 0x5e, 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, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x53, 0x45, 0x52, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x05, 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, 0x94, 0x07, 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, 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, 0x11, 0x0a, 0x0c, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0xd3, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x41, 0x50, 0x50, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0xd4, 0x01, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x52, 0x55, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xd5, 0x01, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xd6, 0x01, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x52, 0x55, 0x4e, 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0xd7, 0x01, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0xd8, 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, 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, 0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0xb2, 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, 0x12, 0x12, 0x0a, 0x0d, 0x55, 0x47, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0xd8, 0x04, 0x12, 0x13, 0x0a, 0x0e, 0x55, 0x47, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0xd9, 0x04, 0x12, 0x10, 0x0a, 0x0b, 0x55, 0x47, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0xda, 0x04, 0x12, 0x15, 0x0a, 0x10, 0x55, 0x47, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0xdb, 0x04, 0x12, 0x16, 0x0a, 0x11, 0x55, 0x47, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0xdc, 0x04, 0x22, 0x06, 0x08, 0xcd, 0x01, 0x10, 0xcd, 0x01, 0x22, 0x06, 0x08, 0xad, 0x02, 0x10, 0xad, 0x02, 0x2a, 0x0c, 0x41, 0x50, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x2a, 0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 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 []byte ) 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(unsafe.Slice(unsafe.StringData(file_yunikorn_scheduler_interface_si_proto_rawDesc), len(file_yunikorn_scheduler_interface_si_proto_rawDesc))) }) 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, 37) var file_yunikorn_scheduler_interface_si_proto_goTypes = []any{ (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 (*PreemptionPolicy)(nil), // 21: si.v1.PreemptionPolicy (*AddApplicationRequest)(nil), // 22: si.v1.AddApplicationRequest (*RemoveApplicationRequest)(nil), // 23: si.v1.RemoveApplicationRequest (*UserGroupInformation)(nil), // 24: si.v1.UserGroupInformation (*Allocation)(nil), // 25: si.v1.Allocation (*AllocationReleasesRequest)(nil), // 26: si.v1.AllocationReleasesRequest (*AllocationRelease)(nil), // 27: si.v1.AllocationRelease (*NodeInfo)(nil), // 28: si.v1.NodeInfo (*RejectedAllocation)(nil), // 29: si.v1.RejectedAllocation (*PredicatesArgs)(nil), // 30: si.v1.PredicatesArgs (*PreemptionPredicatesArgs)(nil), // 31: si.v1.PreemptionPredicatesArgs (*PreemptionPredicatesResponse)(nil), // 32: si.v1.PreemptionPredicatesResponse (*UpdateContainerSchedulingStateRequest)(nil), // 33: si.v1.UpdateContainerSchedulingStateRequest (*UpdateConfigurationRequest)(nil), // 34: si.v1.UpdateConfigurationRequest (*EventRecord)(nil), // 35: si.v1.EventRecord nil, // 36: si.v1.RegisterResourceManagerRequest.BuildInfoEntry nil, // 37: si.v1.RegisterResourceManagerRequest.ExtraConfigEntry nil, // 38: si.v1.Resource.ResourcesEntry nil, // 39: si.v1.AddApplicationRequest.TagsEntry nil, // 40: si.v1.Allocation.AllocationTagsEntry nil, // 41: si.v1.NodeInfo.AttributesEntry nil, // 42: si.v1.UpdateConfigurationRequest.ExtraConfigEntry (*descriptorpb.FieldOptions)(nil), // 43: google.protobuf.FieldOptions } var file_yunikorn_scheduler_interface_si_proto_depIdxs = []int32{ 36, // 0: si.v1.RegisterResourceManagerRequest.buildInfo:type_name -> si.v1.RegisterResourceManagerRequest.BuildInfoEntry 37, // 1: si.v1.RegisterResourceManagerRequest.extraConfig:type_name -> si.v1.RegisterResourceManagerRequest.ExtraConfigEntry 26, // 2: si.v1.AllocationRequest.releases:type_name -> si.v1.AllocationReleasesRequest 25, // 3: si.v1.AllocationRequest.allocations:type_name -> si.v1.Allocation 22, // 4: si.v1.ApplicationRequest.new:type_name -> si.v1.AddApplicationRequest 23, // 5: si.v1.ApplicationRequest.remove:type_name -> si.v1.RemoveApplicationRequest 28, // 6: si.v1.NodeRequest.nodes:type_name -> si.v1.NodeInfo 25, // 7: si.v1.AllocationResponse.new:type_name -> si.v1.Allocation 27, // 8: si.v1.AllocationResponse.released:type_name -> si.v1.AllocationRelease 29, // 9: si.v1.AllocationResponse.rejectedAllocations:type_name -> si.v1.RejectedAllocation 15, // 10: si.v1.ApplicationResponse.rejected:type_name -> si.v1.RejectedApplication 16, // 11: si.v1.ApplicationResponse.accepted:type_name -> si.v1.AcceptedApplication 14, // 12: si.v1.ApplicationResponse.updated:type_name -> si.v1.UpdatedApplication 17, // 13: si.v1.NodeResponse.rejected:type_name -> si.v1.RejectedNode 18, // 14: si.v1.NodeResponse.accepted:type_name -> si.v1.AcceptedNode 38, // 15: si.v1.Resource.resources:type_name -> si.v1.Resource.ResourcesEntry 24, // 16: si.v1.AddApplicationRequest.ugi:type_name -> si.v1.UserGroupInformation 39, // 17: si.v1.AddApplicationRequest.tags:type_name -> si.v1.AddApplicationRequest.TagsEntry 19, // 18: si.v1.AddApplicationRequest.placeholderAsk:type_name -> si.v1.Resource 40, // 19: si.v1.Allocation.allocationTags:type_name -> si.v1.Allocation.AllocationTagsEntry 19, // 20: si.v1.Allocation.resourcePerAlloc:type_name -> si.v1.Resource 21, // 21: si.v1.Allocation.preemptionPolicy:type_name -> si.v1.PreemptionPolicy 27, // 22: si.v1.AllocationReleasesRequest.allocationsToRelease:type_name -> si.v1.AllocationRelease 0, // 23: si.v1.AllocationRelease.terminationType:type_name -> si.v1.TerminationType 1, // 24: si.v1.NodeInfo.action:type_name -> si.v1.NodeInfo.ActionFromRM 41, // 25: si.v1.NodeInfo.attributes:type_name -> si.v1.NodeInfo.AttributesEntry 19, // 26: si.v1.NodeInfo.schedulableResource:type_name -> si.v1.Resource 2, // 27: si.v1.UpdateContainerSchedulingStateRequest.state:type_name -> si.v1.UpdateContainerSchedulingStateRequest.SchedulingState 42, // 28: si.v1.UpdateConfigurationRequest.extraConfig:type_name -> si.v1.UpdateConfigurationRequest.ExtraConfigEntry 3, // 29: si.v1.EventRecord.type:type_name -> si.v1.EventRecord.Type 4, // 30: si.v1.EventRecord.eventChangeType:type_name -> si.v1.EventRecord.ChangeType 5, // 31: si.v1.EventRecord.eventChangeDetail:type_name -> si.v1.EventRecord.ChangeDetail 19, // 32: si.v1.EventRecord.resource:type_name -> si.v1.Resource 20, // 33: si.v1.Resource.ResourcesEntry.value:type_name -> si.v1.Quantity 43, // 34: si.v1.si_secret:extendee -> google.protobuf.FieldOptions 6, // 35: si.v1.Scheduler.RegisterResourceManager:input_type -> si.v1.RegisterResourceManagerRequest 8, // 36: si.v1.Scheduler.UpdateAllocation:input_type -> si.v1.AllocationRequest 9, // 37: si.v1.Scheduler.UpdateApplication:input_type -> si.v1.ApplicationRequest 10, // 38: si.v1.Scheduler.UpdateNode:input_type -> si.v1.NodeRequest 7, // 39: si.v1.Scheduler.RegisterResourceManager:output_type -> si.v1.RegisterResourceManagerResponse 11, // 40: si.v1.Scheduler.UpdateAllocation:output_type -> si.v1.AllocationResponse 12, // 41: si.v1.Scheduler.UpdateApplication:output_type -> si.v1.ApplicationResponse 13, // 42: si.v1.Scheduler.UpdateNode:output_type -> si.v1.NodeResponse 39, // [39:43] is the sub-list for method output_type 35, // [35:39] is the sub-list for method input_type 35, // [35:35] is the sub-list for extension type_name 34, // [34:35] is the sub-list for extension extendee 0, // [0:34] 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 } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_yunikorn_scheduler_interface_si_proto_rawDesc), len(file_yunikorn_scheduler_interface_si_proto_rawDesc)), NumEnums: 6, NumMessages: 37, NumExtensions: 1, NumServices: 1, }, 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_goTypes = nil file_yunikorn_scheduler_interface_si_proto_depIdxs = nil }