diff --git a/Cargo.lock b/Cargo.lock index 1033336..019a27e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "dragonfly-api" -version = "2.3.4" +version = "2.3.5" dependencies = [ "prost", "prost-types", diff --git a/Cargo.toml b/Cargo.toml index 6313165..60aa4bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dragonfly-api" -version = "2.3.4" +version = "2.3.5" authors = ["Gaius "] edition = "2021" license = "Apache-2.0" diff --git a/pkg/apis/common/v2/common.pb.go b/pkg/apis/common/v2/common.pb.go index 3798d53..6fa0549 100644 --- a/pkg/apis/common/v2/common.pb.go +++ b/pkg/apis/common/v2/common.pb.go @@ -304,6 +304,59 @@ func (Priority) EnumDescriptor() ([]byte, []int) { return file_pkg_apis_common_v2_common_proto_rawDescGZIP(), []int{3} } +// SchedulingPolicy represents how the download interacts with the scheduler. +type SchedulingPolicy int32 + +const ( + // AUTO downloads through the scheduler unless the content length is smaller + // than the minimum piece length, in which case it downloads from the source + // directly, skipping the scheduler. + SchedulingPolicy_AUTO SchedulingPolicy = 0 + // ALWAYS downloads through the scheduler even if the content length is smaller + // than the minimum piece length, so that the peer announces the task to the + // scheduler and other peers can discover it as a parent. + SchedulingPolicy_ALWAYS SchedulingPolicy = 1 +) + +// Enum value maps for SchedulingPolicy. +var ( + SchedulingPolicy_name = map[int32]string{ + 0: "AUTO", + 1: "ALWAYS", + } + SchedulingPolicy_value = map[string]int32{ + "AUTO": 0, + "ALWAYS": 1, + } +) + +func (x SchedulingPolicy) Enum() *SchedulingPolicy { + p := new(SchedulingPolicy) + *p = x + return p +} + +func (x SchedulingPolicy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SchedulingPolicy) Descriptor() protoreflect.EnumDescriptor { + return file_pkg_apis_common_v2_common_proto_enumTypes[4].Descriptor() +} + +func (SchedulingPolicy) Type() protoreflect.EnumType { + return &file_pkg_apis_common_v2_common_proto_enumTypes[4] +} + +func (x SchedulingPolicy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SchedulingPolicy.Descriptor instead. +func (SchedulingPolicy) EnumDescriptor() ([]byte, []int) { + return file_pkg_apis_common_v2_common_proto_rawDescGZIP(), []int{4} +} + // Peer metadata. type Peer struct { state protoimpl.MessageState @@ -2721,11 +2774,9 @@ type Download struct { MetadataOnly bool `protobuf:"varint,33,opt,name=metadata_only,json=metadataOnly,proto3" json:"metadata_only,omitempty"` // OpenCSG protocol information. OpenCsg *OpenCSG `protobuf:"bytes,34,opt,name=open_csg,json=openCsg,proto3,oneof" json:"open_csg,omitempty"` - // Need scheduling is the flag to indicate whether the download needs to be scheduled - // by the scheduler even if the content length is smaller than the minimum piece length, - // so that the peer announces the task to the scheduler and other peers can discover - // it as a parent. - NeedScheduling bool `protobuf:"varint,35,opt,name=need_scheduling,json=needScheduling,proto3" json:"need_scheduling,omitempty"` + // Scheduling policy represents how the download interacts with the scheduler, + // default is AUTO. + SchedulingPolicy SchedulingPolicy `protobuf:"varint,35,opt,name=scheduling_policy,json=schedulingPolicy,proto3,enum=common.v2.SchedulingPolicy" json:"scheduling_policy,omitempty"` } func (x *Download) Reset() { @@ -2991,11 +3042,11 @@ func (x *Download) GetOpenCsg() *OpenCSG { return nil } -func (x *Download) GetNeedScheduling() bool { +func (x *Download) GetSchedulingPolicy() SchedulingPolicy { if x != nil { - return x.NeedScheduling + return x.SchedulingPolicy } - return false + return SchedulingPolicy_AUTO } // Object Storage related information. @@ -4105,7 +4156,7 @@ var file_pkg_apis_common_v2_common_proto_rawDesc = []byte{ 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x6f, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x75, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xba, 0x11, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xe5, 0x11, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0xb0, 0x01, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x92, @@ -4217,102 +4268,85 @@ var file_pkg_apis_common_v2_common_proto_rawDesc = []byte{ 0x6e, 0x6c, 0x79, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x63, 0x73, 0x67, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x53, 0x47, 0x48, 0x11, 0x52, 0x07, 0x6f, 0x70, 0x65, - 0x6e, 0x43, 0x73, 0x67, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x65, 0x65, 0x64, 0x5f, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0e, 0x6e, 0x65, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, - 0x1a, 0x40, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 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, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, - 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x68, 0x64, 0x66, 0x73, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, - 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x63, - 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, - 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x18, 0x0a, - 0x16, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x75, - 0x61, 0x6c, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x68, 0x75, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x63, 0x73, 0x67, 0x4a, 0x04, 0x08, 0x15, - 0x10, 0x16, 0x52, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x22, 0x8d, 0x05, 0x0a, 0x0d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, - 0x00, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x08, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, - 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x08, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x02, 0x52, 0x0b, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, - 0x03, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, - 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x04, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0f, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, - 0x48, 0x05, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x50, 0x61, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, - 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, - 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x06, 0x52, 0x0d, 0x70, 0x72, 0x65, - 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, - 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, - 0x01, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, - 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, - 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x69, 0x6e, 0x73, - 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x22, 0x57, 0x0a, 0x04, 0x48, 0x44, 0x46, 0x53, 0x12, 0x3a, 0x0a, 0x10, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, - 0x00, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9d, 0x01, 0x0a, 0x0b, 0x48, - 0x75, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, - 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x23, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, - 0x01, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, - 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x9c, 0x01, 0x0a, 0x0a, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, - 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, - 0x12, 0x23, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, - 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x88, - 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x99, 0x01, 0x0a, 0x07, 0x4f, 0x70, - 0x65, 0x6e, 0x43, 0x53, 0x47, 0x12, 0x25, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, + 0x6e, 0x43, 0x73, 0x67, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x23, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x40, 0x0a, 0x12, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, + 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x68, + 0x64, 0x66, 0x73, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, + 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x5f, 0x69, 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x70, 0x69, 0x65, 0x63, + 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, + 0x75, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x70, 0x69, + 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x68, 0x75, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, + 0x70, 0x65, 0x6e, 0x5f, 0x63, 0x73, 0x67, 0x4a, 0x04, 0x08, 0x15, 0x10, 0x16, 0x52, 0x0d, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x22, 0x8d, 0x05, 0x0a, + 0x0d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x27, + 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, + 0x67, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, + 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x48, 0x02, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, + 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x03, 0x52, 0x0f, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x34, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, + 0xd0, 0x01, 0x01, 0x48, 0x04, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x05, 0x52, 0x0e, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, + 0x12, 0x36, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, + 0x63, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, + 0x01, 0xd0, 0x01, 0x01, 0x48, 0x06, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x64, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x07, 0x52, 0x0d, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x35, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, + 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, + 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x67, 0x69, + 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, + 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x6c, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, + 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x22, 0x57, 0x0a, 0x04, + 0x48, 0x44, 0x46, 0x53, 0x12, 0x3a, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9d, 0x01, 0x0a, 0x0b, 0x48, 0x75, 0x67, 0x67, 0x69, 0x6e, + 0x67, 0x46, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, @@ -4321,69 +4355,91 @@ var file_pkg_apis_common_v2_common_proto_rawDesc = []byte{ 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x61, 0x73, - 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x35, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbe, 0x04, 0x0a, - 0x05, 0x50, 0x69, 0x65, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, - 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, - 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0xab, 0x01, 0x0a, - 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x92, 0x01, - 0xfa, 0x42, 0x8e, 0x01, 0x72, 0x8b, 0x01, 0x32, 0x85, 0x01, 0x5e, 0x28, 0x6d, 0x64, 0x35, 0x3a, - 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x33, 0x32, 0x7d, 0x7c, - 0x73, 0x68, 0x61, 0x31, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, - 0x7b, 0x34, 0x30, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x3a, 0x5b, 0x61, 0x2d, 0x66, - 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x35, - 0x31, 0x32, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, - 0x32, 0x38, 0x7d, 0x7c, 0x62, 0x6c, 0x61, 0x6b, 0x65, 0x33, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, - 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x63, 0x72, 0x63, 0x33, 0x32, - 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x24, 0xd0, - 0x01, 0x01, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xfa, 0x42, 0x06, - 0x7a, 0x04, 0x10, 0x01, 0x70, 0x01, 0x48, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, - 0x70, 0x65, 0x48, 0x02, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x43, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x43, 0x0a, - 0x09, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, - 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x10, - 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x49, 0x4e, 0x59, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, - 0x4d, 0x50, 0x54, 0x59, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x10, 0x04, 0x2a, 0x49, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, - 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, - 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, - 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, - 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0x03, 0x2a, 0x42, 0x0a, - 0x0b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, - 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x00, - 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, - 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, - 0x02, 0x2a, 0x5e, 0x0a, 0x08, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0a, 0x0a, - 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x30, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, - 0x45, 0x4c, 0x31, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x32, 0x10, - 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x33, 0x10, 0x03, 0x12, 0x0a, 0x0a, - 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, - 0x45, 0x4c, 0x35, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x36, 0x10, - 0x06, 0x42, 0x29, 0x5a, 0x27, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x9c, 0x01, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, + 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x08, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x2b, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x48, + 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x61, 0x73, 0x65, + 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x99, 0x01, 0x0a, 0x07, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x53, 0x47, + 0x12, 0x25, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x08, + 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, + 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x01, 0x52, 0x07, 0x62, + 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, + 0x22, 0x35, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbe, 0x04, 0x0a, 0x05, 0x50, 0x69, 0x65, 0x63, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x09, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, + 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0xab, 0x01, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, + 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x92, 0x01, 0xfa, 0x42, 0x8e, 0x01, 0x72, + 0x8b, 0x01, 0x32, 0x85, 0x01, 0x5e, 0x28, 0x6d, 0x64, 0x35, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, + 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x33, 0x32, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x31, 0x3a, + 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x34, 0x30, 0x7d, 0x7c, + 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, + 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x35, 0x31, 0x32, 0x3a, 0x5b, 0x61, + 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x32, 0x38, 0x7d, 0x7c, 0x62, + 0x6c, 0x61, 0x6b, 0x65, 0x33, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, + 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x63, 0x72, 0x63, 0x33, 0x32, 0x3a, 0x5b, 0x61, 0x2d, 0x66, + 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x29, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x06, 0x64, + 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x10, 0x01, 0x70, + 0x01, 0x48, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x3e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x32, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x48, 0x02, 0x52, + 0x0b, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, + 0x08, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, + 0x08, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x43, 0x0a, 0x09, 0x53, 0x69, 0x7a, 0x65, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, + 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, + 0x54, 0x49, 0x4e, 0x59, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, + 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x10, 0x04, 0x2a, 0x49, 0x0a, + 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, + 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x45, 0x52, 0x53, 0x49, + 0x53, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x45, 0x52, 0x53, 0x49, + 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0x02, 0x12, 0x09, 0x0a, + 0x05, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0x03, 0x2a, 0x42, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x43, 0x4b, 0x5f, + 0x54, 0x4f, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, + 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, + 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, 0x02, 0x2a, 0x5e, 0x0a, 0x08, + 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, + 0x4c, 0x30, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x31, 0x10, 0x01, + 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x32, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, + 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x33, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, + 0x4c, 0x34, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x35, 0x10, 0x05, + 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x36, 0x10, 0x06, 0x2a, 0x28, 0x0a, 0x10, + 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, + 0x57, 0x41, 0x59, 0x53, 0x10, 0x01, 0x42, 0x29, 0x5a, 0x27, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4398,117 +4454,119 @@ func file_pkg_apis_common_v2_common_proto_rawDescGZIP() []byte { return file_pkg_apis_common_v2_common_proto_rawDescData } -var file_pkg_apis_common_v2_common_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_pkg_apis_common_v2_common_proto_enumTypes = make([]protoimpl.EnumInfo, 5) var file_pkg_apis_common_v2_common_proto_msgTypes = make([]protoimpl.MessageInfo, 29) var file_pkg_apis_common_v2_common_proto_goTypes = []interface{}{ (SizeScope)(0), // 0: common.v2.SizeScope (TaskType)(0), // 1: common.v2.TaskType (TrafficType)(0), // 2: common.v2.TrafficType (Priority)(0), // 3: common.v2.Priority - (*Peer)(nil), // 4: common.v2.Peer - (*CachePeer)(nil), // 5: common.v2.CachePeer - (*PersistentPeer)(nil), // 6: common.v2.PersistentPeer - (*PersistentCachePeer)(nil), // 7: common.v2.PersistentCachePeer - (*Task)(nil), // 8: common.v2.Task - (*CacheTask)(nil), // 9: common.v2.CacheTask - (*PersistentTask)(nil), // 10: common.v2.PersistentTask - (*PersistentCacheTask)(nil), // 11: common.v2.PersistentCacheTask - (*Host)(nil), // 12: common.v2.Host - (*CPU)(nil), // 13: common.v2.CPU - (*CgroupCPU)(nil), // 14: common.v2.CgroupCPU - (*CPUTimes)(nil), // 15: common.v2.CPUTimes - (*Memory)(nil), // 16: common.v2.Memory - (*CgroupMemory)(nil), // 17: common.v2.CgroupMemory - (*Network)(nil), // 18: common.v2.Network - (*Disk)(nil), // 19: common.v2.Disk - (*CgroupDisk)(nil), // 20: common.v2.CgroupDisk - (*Build)(nil), // 21: common.v2.Build - (*Download)(nil), // 22: common.v2.Download - (*ObjectStorage)(nil), // 23: common.v2.ObjectStorage - (*HDFS)(nil), // 24: common.v2.HDFS - (*HuggingFace)(nil), // 25: common.v2.HuggingFace - (*ModelScope)(nil), // 26: common.v2.ModelScope - (*OpenCSG)(nil), // 27: common.v2.OpenCSG - (*Range)(nil), // 28: common.v2.Range - (*Piece)(nil), // 29: common.v2.Piece - nil, // 30: common.v2.Task.RequestHeaderEntry - nil, // 31: common.v2.CacheTask.RequestHeaderEntry - nil, // 32: common.v2.Download.RequestHeaderEntry - (*durationpb.Duration)(nil), // 33: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp + (SchedulingPolicy)(0), // 4: common.v2.SchedulingPolicy + (*Peer)(nil), // 5: common.v2.Peer + (*CachePeer)(nil), // 6: common.v2.CachePeer + (*PersistentPeer)(nil), // 7: common.v2.PersistentPeer + (*PersistentCachePeer)(nil), // 8: common.v2.PersistentCachePeer + (*Task)(nil), // 9: common.v2.Task + (*CacheTask)(nil), // 10: common.v2.CacheTask + (*PersistentTask)(nil), // 11: common.v2.PersistentTask + (*PersistentCacheTask)(nil), // 12: common.v2.PersistentCacheTask + (*Host)(nil), // 13: common.v2.Host + (*CPU)(nil), // 14: common.v2.CPU + (*CgroupCPU)(nil), // 15: common.v2.CgroupCPU + (*CPUTimes)(nil), // 16: common.v2.CPUTimes + (*Memory)(nil), // 17: common.v2.Memory + (*CgroupMemory)(nil), // 18: common.v2.CgroupMemory + (*Network)(nil), // 19: common.v2.Network + (*Disk)(nil), // 20: common.v2.Disk + (*CgroupDisk)(nil), // 21: common.v2.CgroupDisk + (*Build)(nil), // 22: common.v2.Build + (*Download)(nil), // 23: common.v2.Download + (*ObjectStorage)(nil), // 24: common.v2.ObjectStorage + (*HDFS)(nil), // 25: common.v2.HDFS + (*HuggingFace)(nil), // 26: common.v2.HuggingFace + (*ModelScope)(nil), // 27: common.v2.ModelScope + (*OpenCSG)(nil), // 28: common.v2.OpenCSG + (*Range)(nil), // 29: common.v2.Range + (*Piece)(nil), // 30: common.v2.Piece + nil, // 31: common.v2.Task.RequestHeaderEntry + nil, // 32: common.v2.CacheTask.RequestHeaderEntry + nil, // 33: common.v2.Download.RequestHeaderEntry + (*durationpb.Duration)(nil), // 34: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 35: google.protobuf.Timestamp } var file_pkg_apis_common_v2_common_proto_depIdxs = []int32{ - 28, // 0: common.v2.Peer.range:type_name -> common.v2.Range + 29, // 0: common.v2.Peer.range:type_name -> common.v2.Range 3, // 1: common.v2.Peer.priority:type_name -> common.v2.Priority - 29, // 2: common.v2.Peer.pieces:type_name -> common.v2.Piece - 33, // 3: common.v2.Peer.cost:type_name -> google.protobuf.Duration - 8, // 4: common.v2.Peer.task:type_name -> common.v2.Task - 12, // 5: common.v2.Peer.host:type_name -> common.v2.Host - 34, // 6: common.v2.Peer.created_at:type_name -> google.protobuf.Timestamp - 34, // 7: common.v2.Peer.updated_at:type_name -> google.protobuf.Timestamp - 28, // 8: common.v2.CachePeer.range:type_name -> common.v2.Range + 30, // 2: common.v2.Peer.pieces:type_name -> common.v2.Piece + 34, // 3: common.v2.Peer.cost:type_name -> google.protobuf.Duration + 9, // 4: common.v2.Peer.task:type_name -> common.v2.Task + 13, // 5: common.v2.Peer.host:type_name -> common.v2.Host + 35, // 6: common.v2.Peer.created_at:type_name -> google.protobuf.Timestamp + 35, // 7: common.v2.Peer.updated_at:type_name -> google.protobuf.Timestamp + 29, // 8: common.v2.CachePeer.range:type_name -> common.v2.Range 3, // 9: common.v2.CachePeer.priority:type_name -> common.v2.Priority - 29, // 10: common.v2.CachePeer.pieces:type_name -> common.v2.Piece - 33, // 11: common.v2.CachePeer.cost:type_name -> google.protobuf.Duration - 9, // 12: common.v2.CachePeer.task:type_name -> common.v2.CacheTask - 12, // 13: common.v2.CachePeer.host:type_name -> common.v2.Host - 34, // 14: common.v2.CachePeer.created_at:type_name -> google.protobuf.Timestamp - 34, // 15: common.v2.CachePeer.updated_at:type_name -> google.protobuf.Timestamp - 33, // 16: common.v2.PersistentPeer.cost:type_name -> google.protobuf.Duration - 10, // 17: common.v2.PersistentPeer.task:type_name -> common.v2.PersistentTask - 12, // 18: common.v2.PersistentPeer.host:type_name -> common.v2.Host - 34, // 19: common.v2.PersistentPeer.created_at:type_name -> google.protobuf.Timestamp - 34, // 20: common.v2.PersistentPeer.updated_at:type_name -> google.protobuf.Timestamp - 33, // 21: common.v2.PersistentCachePeer.cost:type_name -> google.protobuf.Duration - 11, // 22: common.v2.PersistentCachePeer.task:type_name -> common.v2.PersistentCacheTask - 12, // 23: common.v2.PersistentCachePeer.host:type_name -> common.v2.Host - 34, // 24: common.v2.PersistentCachePeer.created_at:type_name -> google.protobuf.Timestamp - 34, // 25: common.v2.PersistentCachePeer.updated_at:type_name -> google.protobuf.Timestamp + 30, // 10: common.v2.CachePeer.pieces:type_name -> common.v2.Piece + 34, // 11: common.v2.CachePeer.cost:type_name -> google.protobuf.Duration + 10, // 12: common.v2.CachePeer.task:type_name -> common.v2.CacheTask + 13, // 13: common.v2.CachePeer.host:type_name -> common.v2.Host + 35, // 14: common.v2.CachePeer.created_at:type_name -> google.protobuf.Timestamp + 35, // 15: common.v2.CachePeer.updated_at:type_name -> google.protobuf.Timestamp + 34, // 16: common.v2.PersistentPeer.cost:type_name -> google.protobuf.Duration + 11, // 17: common.v2.PersistentPeer.task:type_name -> common.v2.PersistentTask + 13, // 18: common.v2.PersistentPeer.host:type_name -> common.v2.Host + 35, // 19: common.v2.PersistentPeer.created_at:type_name -> google.protobuf.Timestamp + 35, // 20: common.v2.PersistentPeer.updated_at:type_name -> google.protobuf.Timestamp + 34, // 21: common.v2.PersistentCachePeer.cost:type_name -> google.protobuf.Duration + 12, // 22: common.v2.PersistentCachePeer.task:type_name -> common.v2.PersistentCacheTask + 13, // 23: common.v2.PersistentCachePeer.host:type_name -> common.v2.Host + 35, // 24: common.v2.PersistentCachePeer.created_at:type_name -> google.protobuf.Timestamp + 35, // 25: common.v2.PersistentCachePeer.updated_at:type_name -> google.protobuf.Timestamp 1, // 26: common.v2.Task.type:type_name -> common.v2.TaskType - 30, // 27: common.v2.Task.request_header:type_name -> common.v2.Task.RequestHeaderEntry + 31, // 27: common.v2.Task.request_header:type_name -> common.v2.Task.RequestHeaderEntry 0, // 28: common.v2.Task.size_scope:type_name -> common.v2.SizeScope - 29, // 29: common.v2.Task.pieces:type_name -> common.v2.Piece - 34, // 30: common.v2.Task.created_at:type_name -> google.protobuf.Timestamp - 34, // 31: common.v2.Task.updated_at:type_name -> google.protobuf.Timestamp + 30, // 29: common.v2.Task.pieces:type_name -> common.v2.Piece + 35, // 30: common.v2.Task.created_at:type_name -> google.protobuf.Timestamp + 35, // 31: common.v2.Task.updated_at:type_name -> google.protobuf.Timestamp 1, // 32: common.v2.CacheTask.type:type_name -> common.v2.TaskType - 31, // 33: common.v2.CacheTask.request_header:type_name -> common.v2.CacheTask.RequestHeaderEntry + 32, // 33: common.v2.CacheTask.request_header:type_name -> common.v2.CacheTask.RequestHeaderEntry 0, // 34: common.v2.CacheTask.size_scope:type_name -> common.v2.SizeScope - 29, // 35: common.v2.CacheTask.pieces:type_name -> common.v2.Piece - 34, // 36: common.v2.CacheTask.created_at:type_name -> google.protobuf.Timestamp - 34, // 37: common.v2.CacheTask.updated_at:type_name -> google.protobuf.Timestamp - 33, // 38: common.v2.PersistentTask.ttl:type_name -> google.protobuf.Duration - 34, // 39: common.v2.PersistentTask.created_at:type_name -> google.protobuf.Timestamp - 34, // 40: common.v2.PersistentTask.updated_at:type_name -> google.protobuf.Timestamp - 33, // 41: common.v2.PersistentCacheTask.ttl:type_name -> google.protobuf.Duration - 34, // 42: common.v2.PersistentCacheTask.created_at:type_name -> google.protobuf.Timestamp - 34, // 43: common.v2.PersistentCacheTask.updated_at:type_name -> google.protobuf.Timestamp - 13, // 44: common.v2.Host.cpu:type_name -> common.v2.CPU - 16, // 45: common.v2.Host.memory:type_name -> common.v2.Memory - 18, // 46: common.v2.Host.network:type_name -> common.v2.Network - 19, // 47: common.v2.Host.disk:type_name -> common.v2.Disk - 21, // 48: common.v2.Host.build:type_name -> common.v2.Build - 15, // 49: common.v2.CPU.times:type_name -> common.v2.CPUTimes - 14, // 50: common.v2.CPU.cgroup:type_name -> common.v2.CgroupCPU - 17, // 51: common.v2.Memory.cgroup:type_name -> common.v2.CgroupMemory - 20, // 52: common.v2.Disk.cgroup:type_name -> common.v2.CgroupDisk - 28, // 53: common.v2.Download.range:type_name -> common.v2.Range + 30, // 35: common.v2.CacheTask.pieces:type_name -> common.v2.Piece + 35, // 36: common.v2.CacheTask.created_at:type_name -> google.protobuf.Timestamp + 35, // 37: common.v2.CacheTask.updated_at:type_name -> google.protobuf.Timestamp + 34, // 38: common.v2.PersistentTask.ttl:type_name -> google.protobuf.Duration + 35, // 39: common.v2.PersistentTask.created_at:type_name -> google.protobuf.Timestamp + 35, // 40: common.v2.PersistentTask.updated_at:type_name -> google.protobuf.Timestamp + 34, // 41: common.v2.PersistentCacheTask.ttl:type_name -> google.protobuf.Duration + 35, // 42: common.v2.PersistentCacheTask.created_at:type_name -> google.protobuf.Timestamp + 35, // 43: common.v2.PersistentCacheTask.updated_at:type_name -> google.protobuf.Timestamp + 14, // 44: common.v2.Host.cpu:type_name -> common.v2.CPU + 17, // 45: common.v2.Host.memory:type_name -> common.v2.Memory + 19, // 46: common.v2.Host.network:type_name -> common.v2.Network + 20, // 47: common.v2.Host.disk:type_name -> common.v2.Disk + 22, // 48: common.v2.Host.build:type_name -> common.v2.Build + 16, // 49: common.v2.CPU.times:type_name -> common.v2.CPUTimes + 15, // 50: common.v2.CPU.cgroup:type_name -> common.v2.CgroupCPU + 18, // 51: common.v2.Memory.cgroup:type_name -> common.v2.CgroupMemory + 21, // 52: common.v2.Disk.cgroup:type_name -> common.v2.CgroupDisk + 29, // 53: common.v2.Download.range:type_name -> common.v2.Range 1, // 54: common.v2.Download.type:type_name -> common.v2.TaskType 3, // 55: common.v2.Download.priority:type_name -> common.v2.Priority - 32, // 56: common.v2.Download.request_header:type_name -> common.v2.Download.RequestHeaderEntry - 33, // 57: common.v2.Download.timeout:type_name -> google.protobuf.Duration - 23, // 58: common.v2.Download.object_storage:type_name -> common.v2.ObjectStorage - 24, // 59: common.v2.Download.hdfs:type_name -> common.v2.HDFS - 25, // 60: common.v2.Download.hugging_face:type_name -> common.v2.HuggingFace - 26, // 61: common.v2.Download.model_scope:type_name -> common.v2.ModelScope - 27, // 62: common.v2.Download.open_csg:type_name -> common.v2.OpenCSG - 2, // 63: common.v2.Piece.traffic_type:type_name -> common.v2.TrafficType - 33, // 64: common.v2.Piece.cost:type_name -> google.protobuf.Duration - 34, // 65: common.v2.Piece.created_at:type_name -> google.protobuf.Timestamp - 66, // [66:66] is the sub-list for method output_type - 66, // [66:66] is the sub-list for method input_type - 66, // [66:66] is the sub-list for extension type_name - 66, // [66:66] is the sub-list for extension extendee - 0, // [0:66] is the sub-list for field type_name + 33, // 56: common.v2.Download.request_header:type_name -> common.v2.Download.RequestHeaderEntry + 34, // 57: common.v2.Download.timeout:type_name -> google.protobuf.Duration + 24, // 58: common.v2.Download.object_storage:type_name -> common.v2.ObjectStorage + 25, // 59: common.v2.Download.hdfs:type_name -> common.v2.HDFS + 26, // 60: common.v2.Download.hugging_face:type_name -> common.v2.HuggingFace + 27, // 61: common.v2.Download.model_scope:type_name -> common.v2.ModelScope + 28, // 62: common.v2.Download.open_csg:type_name -> common.v2.OpenCSG + 4, // 63: common.v2.Download.scheduling_policy:type_name -> common.v2.SchedulingPolicy + 2, // 64: common.v2.Piece.traffic_type:type_name -> common.v2.TrafficType + 34, // 65: common.v2.Piece.cost:type_name -> google.protobuf.Duration + 35, // 66: common.v2.Piece.created_at:type_name -> google.protobuf.Timestamp + 67, // [67:67] is the sub-list for method output_type + 67, // [67:67] is the sub-list for method input_type + 67, // [67:67] is the sub-list for extension type_name + 67, // [67:67] is the sub-list for extension extendee + 0, // [0:67] is the sub-list for field type_name } func init() { file_pkg_apis_common_v2_common_proto_init() } @@ -4853,7 +4911,7 @@ func file_pkg_apis_common_v2_common_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_apis_common_v2_common_proto_rawDesc, - NumEnums: 4, + NumEnums: 5, NumMessages: 29, NumExtensions: 0, NumServices: 0, diff --git a/pkg/apis/common/v2/common.pb.validate.go b/pkg/apis/common/v2/common.pb.validate.go index e216804..d0e4d08 100644 --- a/pkg/apis/common/v2/common.pb.validate.go +++ b/pkg/apis/common/v2/common.pb.validate.go @@ -3786,7 +3786,16 @@ func (m *Download) validate(all bool) error { // no validation rules for MetadataOnly - // no validation rules for NeedScheduling + if _, ok := SchedulingPolicy_name[int32(m.GetSchedulingPolicy())]; !ok { + err := DownloadValidationError{ + field: "SchedulingPolicy", + reason: "value must be one of the defined enum values", + } + if !all { + return err + } + errors = append(errors, err) + } if m.Digest != nil { diff --git a/pkg/apis/common/v2/common.proto b/pkg/apis/common/v2/common.proto index 23ab100..17223e1 100644 --- a/pkg/apis/common/v2/common.proto +++ b/pkg/apis/common/v2/common.proto @@ -119,6 +119,19 @@ enum Priority { LEVEL6 = 6; } +// SchedulingPolicy represents how the download interacts with the scheduler. +enum SchedulingPolicy { + // AUTO downloads through the scheduler unless the content length is smaller + // than the minimum piece length, in which case it downloads from the source + // directly, skipping the scheduler. + AUTO = 0; + + // ALWAYS downloads through the scheduler even if the content length is smaller + // than the minimum piece length, so that the peer announces the task to the + // scheduler and other peers can discover it as a parent. + ALWAYS = 1; +} + // Peer metadata. message Peer { // Peer id. @@ -727,11 +740,9 @@ message Download { bool metadata_only = 33; // OpenCSG protocol information. optional OpenCSG open_csg = 34; - // Need scheduling is the flag to indicate whether the download needs to be scheduled - // by the scheduler even if the content length is smaller than the minimum piece length, - // so that the peer announces the task to the scheduler and other peers can discover - // it as a parent. - bool need_scheduling = 35; + // Scheduling policy represents how the download interacts with the scheduler, + // default is AUTO. + SchedulingPolicy scheduling_policy = 35 [(validate.rules).enum.defined_only = true]; reserved 21; reserved "load_to_cache"; diff --git a/proto/common.proto b/proto/common.proto index db1f0cf..b8ea303 100644 --- a/proto/common.proto +++ b/proto/common.proto @@ -113,6 +113,19 @@ enum Priority { LEVEL6 = 6; } +// SchedulingPolicy represents how the download interacts with the scheduler. +enum SchedulingPolicy { + // AUTO downloads through the scheduler unless the content length is smaller + // than the minimum piece length, in which case it downloads from the source + // directly, skipping the scheduler. + AUTO = 0; + + // ALWAYS downloads through the scheduler even if the content length is smaller + // than the minimum piece length, so that the peer announces the task to the + // scheduler and other peers can discover it as a parent. + ALWAYS = 1; +} + // Peer metadata. message Peer { // Peer id. @@ -669,11 +682,9 @@ message Download { bool metadata_only = 33; // OpenCSG protocol information. optional OpenCSG open_csg = 34; - // Need scheduling is the flag to indicate whether the download needs to be scheduled - // by the scheduler even if the content length is smaller than the minimum piece length, - // so that the peer announces the task to the scheduler and other peers can discover - // it as a parent. - bool need_scheduling = 35; + // Scheduling policy represents how the download interacts with the scheduler, + // default is AUTO. + SchedulingPolicy scheduling_policy = 35; reserved 21; reserved "load_to_cache"; diff --git a/python/dragonfly_api/common_pb2.py b/python/dragonfly_api/common_pb2.py index c1d3a0c..69393bb 100644 --- a/python/dragonfly_api/common_pb2.py +++ b/python/dragonfly_api/common_pb2.py @@ -26,7 +26,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x63ommon.proto\x12\tcommon.v2\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xbe\x03\n\x04Peer\x12\n\n\x02id\x18\x01 \x01(\t\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12%\n\x08priority\x18\x03 \x01(\x0e\x32\x13.common.v2.Priority\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\'\n\x04\x63ost\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x06 \x01(\t\x12\x1d\n\x04task\x18\x07 \x01(\x0b\x32\x0f.common.v2.Task\x12\x1d\n\x04host\x18\x08 \x01(\x0b\x32\x0f.common.v2.Host\x12\x1b\n\x13need_back_to_source\x18\t \x01(\x08\x12.\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x16\x63oncurrent_piece_count\x18\x0c \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_rangeB\x19\n\x17_concurrent_piece_count\"\xc8\x03\n\tCachePeer\x12\n\n\x02id\x18\x01 \x01(\t\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12%\n\x08priority\x18\x03 \x01(\x0e\x32\x13.common.v2.Priority\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\'\n\x04\x63ost\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x06 \x01(\t\x12\"\n\x04task\x18\x07 \x01(\x0b\x32\x14.common.v2.CacheTask\x12\x1d\n\x04host\x18\x08 \x01(\x0b\x32\x0f.common.v2.Host\x12\x1b\n\x13need_back_to_source\x18\t \x01(\x08\x12.\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x16\x63oncurrent_piece_count\x18\x0c \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_rangeB\x19\n\x17_concurrent_piece_count\"\xb0\x02\n\x0ePersistentPeer\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\'\n\x04\x63ost\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x04 \x01(\t\x12\'\n\x04task\x18\x05 \x01(\x0b\x32\x19.common.v2.PersistentTask\x12\x1d\n\x04host\x18\x06 \x01(\x0b\x32\x0f.common.v2.Host\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1e\n\x16\x63oncurrent_piece_count\x18\t \x01(\r\"\xba\x02\n\x13PersistentCachePeer\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\'\n\x04\x63ost\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x04 \x01(\t\x12,\n\x04task\x18\x05 \x01(\x0b\x32\x1e.common.v2.PersistentCacheTask\x12\x1d\n\x04host\x18\x06 \x01(\x0b\x32\x0f.common.v2.Host\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1e\n\x16\x63oncurrent_piece_count\x18\t \x01(\r\"\xcf\x04\n\x04Task\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x04type\x18\x02 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x13\n\x06\x64igest\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x07 \x03(\t\x12:\n\x0erequest_header\x18\x08 \x03(\x0b\x32\".common.v2.Task.RequestHeaderEntry\x12\x16\n\x0e\x63ontent_length\x18\t \x01(\x04\x12\x13\n\x0bpiece_count\x18\n \x01(\r\x12(\n\nsize_scope\x18\x0b \x01(\x0e\x32\x14.common.v2.SizeScope\x12 \n\x06pieces\x18\x0c \x03(\x0b\x32\x10.common.v2.Piece\x12\r\n\x05state\x18\r \x01(\t\x12\x12\n\npeer_count\x18\x0e \x01(\r\x12\x1a\n\x12has_available_peer\x18\x0f \x01(\x08\x12.\n\ncreated_at\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x06\n\x04_tagB\x0e\n\x0c_application\"\xd9\x04\n\tCacheTask\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x04type\x18\x02 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x13\n\x06\x64igest\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x07 \x03(\t\x12?\n\x0erequest_header\x18\x08 \x03(\x0b\x32\'.common.v2.CacheTask.RequestHeaderEntry\x12\x16\n\x0e\x63ontent_length\x18\t \x01(\x04\x12\x13\n\x0bpiece_count\x18\n \x01(\r\x12(\n\nsize_scope\x18\x0b \x01(\x0e\x32\x14.common.v2.SizeScope\x12 \n\x06pieces\x18\x0c \x03(\x0b\x32\x10.common.v2.Piece\x12\r\n\x05state\x18\r \x01(\t\x12\x12\n\npeer_count\x18\x0e \x01(\r\x12\x1a\n\x12has_available_peer\x18\x0f \x01(\x08\x12.\n\ncreated_at\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x06\n\x04_tagB\x0e\n\x0c_application\"\xcb\x02\n\x0ePersistentTask\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x18persistent_replica_count\x18\x02 \x01(\x04\x12(\n current_persistent_replica_count\x18\x03 \x01(\x04\x12\x1d\n\x15\x63urrent_replica_count\x18\x04 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x05 \x01(\x04\x12\x13\n\x0bpiece_count\x18\x06 \x01(\r\x12\r\n\x05state\x18\x07 \x01(\t\x12&\n\x03ttl\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xaa\x03\n\x13PersistentCacheTask\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x18persistent_replica_count\x18\x02 \x01(\x04\x12(\n current_persistent_replica_count\x18\x03 \x01(\x04\x12\x1d\n\x15\x63urrent_replica_count\x18\x04 \x01(\x04\x12\x10\n\x03tag\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x07 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x08 \x01(\x04\x12\x13\n\x0bpiece_count\x18\t \x01(\r\x12\r\n\x05state\x18\n \x01(\t\x12&\n\x03ttl\x18\x0b \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\n\x04_tagB\x0e\n\x0c_application\"\x94\x04\n\x04Host\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x10\n\x08hostname\x18\x03 \x01(\t\x12\n\n\x02ip\x18\x04 \x01(\t\x12\x0c\n\x04port\x18\x05 \x01(\x05\x12\x15\n\rdownload_port\x18\x06 \x01(\x05\x12\n\n\x02os\x18\x07 \x01(\t\x12\x10\n\x08platform\x18\x08 \x01(\t\x12\x17\n\x0fplatform_family\x18\t \x01(\t\x12\x18\n\x10platform_version\x18\n \x01(\t\x12\x16\n\x0ekernel_version\x18\x0b \x01(\t\x12 \n\x03\x63pu\x18\x0c \x01(\x0b\x32\x0e.common.v2.CPUH\x00\x88\x01\x01\x12&\n\x06memory\x18\r \x01(\x0b\x32\x11.common.v2.MemoryH\x01\x88\x01\x01\x12(\n\x07network\x18\x0e \x01(\x0b\x32\x12.common.v2.NetworkH\x02\x88\x01\x01\x12\"\n\x04\x64isk\x18\x0f \x01(\x0b\x32\x0f.common.v2.DiskH\x03\x88\x01\x01\x12$\n\x05\x62uild\x18\x10 \x01(\x0b\x32\x10.common.v2.BuildH\x04\x88\x01\x01\x12\x1c\n\x14scheduler_cluster_id\x18\x11 \x01(\x04\x12\x16\n\x0e\x64isable_shared\x18\x12 \x01(\x08\x12\x12\n\nproxy_port\x18\x13 \x01(\x05\x12\x0c\n\x04name\x18\x14 \x01(\tB\x06\n\x04_cpuB\t\n\x07_memoryB\n\n\x08_networkB\x07\n\x05_diskB\x08\n\x06_build\"\xc7\x01\n\x03\x43PU\x12\x15\n\rlogical_count\x18\x01 \x01(\r\x12\x16\n\x0ephysical_count\x18\x02 \x01(\r\x12\x0f\n\x07percent\x18\x03 \x01(\x01\x12\x17\n\x0fprocess_percent\x18\x04 \x01(\x01\x12\'\n\x05times\x18\x05 \x01(\x0b\x32\x13.common.v2.CPUTimesH\x00\x88\x01\x01\x12)\n\x06\x63group\x18\x06 \x01(\x0b\x32\x14.common.v2.CgroupCPUH\x01\x88\x01\x01\x42\x08\n\x06_timesB\t\n\x07_cgroup\"@\n\tCgroupCPU\x12\x0e\n\x06period\x18\x01 \x01(\x04\x12\r\n\x05quota\x18\x02 \x01(\x03\x12\x14\n\x0cused_percent\x18\x03 \x01(\x01\"\xa4\x01\n\x08\x43PUTimes\x12\x0c\n\x04user\x18\x01 \x01(\x01\x12\x0e\n\x06system\x18\x02 \x01(\x01\x12\x0c\n\x04idle\x18\x03 \x01(\x01\x12\x0c\n\x04nice\x18\x04 \x01(\x01\x12\x0e\n\x06iowait\x18\x05 \x01(\x01\x12\x0b\n\x03irq\x18\x06 \x01(\x01\x12\x0f\n\x07softirq\x18\x07 \x01(\x01\x12\r\n\x05steal\x18\x08 \x01(\x01\x12\r\n\x05guest\x18\t \x01(\x01\x12\x12\n\nguest_nice\x18\n \x01(\x01\"\xb3\x01\n\x06Memory\x12\r\n\x05total\x18\x01 \x01(\x04\x12\x11\n\tavailable\x18\x02 \x01(\x04\x12\x0c\n\x04used\x18\x03 \x01(\x04\x12\x14\n\x0cused_percent\x18\x04 \x01(\x01\x12\x1c\n\x14process_used_percent\x18\x05 \x01(\x01\x12\x0c\n\x04\x66ree\x18\x06 \x01(\x04\x12,\n\x06\x63group\x18\x07 \x01(\x0b\x32\x17.common.v2.CgroupMemoryH\x00\x88\x01\x01\x42\t\n\x07_cgroup\"B\n\x0c\x43groupMemory\x12\r\n\x05limit\x18\x01 \x01(\x03\x12\r\n\x05usage\x18\x02 \x01(\x04\x12\x14\n\x0cused_percent\x18\x03 \x01(\x01\"\xf2\x02\n\x07Network\x12\x1c\n\x14tcp_connection_count\x18\x01 \x01(\r\x12#\n\x1bupload_tcp_connection_count\x18\x02 \x01(\r\x12\x15\n\x08location\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03idc\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x10max_rx_bandwidth\x18\t \x01(\x04\x12\x19\n\x0crx_bandwidth\x18\n \x01(\x04H\x02\x88\x01\x01\x12\x18\n\x10max_tx_bandwidth\x18\x0b \x01(\x04\x12\x19\n\x0ctx_bandwidth\x18\x0c \x01(\x04H\x03\x88\x01\x01\x42\x0b\n\t_locationB\x06\n\x04_idcB\x0f\n\r_rx_bandwidthB\x0f\n\r_tx_bandwidthJ\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tR\rdownload_rateR\x13\x64ownload_rate_limitR\x0bupload_rateR\x11upload_rate_limit\"\x8c\x02\n\x04\x44isk\x12\r\n\x05total\x18\x01 \x01(\x04\x12\x0c\n\x04\x66ree\x18\x02 \x01(\x04\x12\x0c\n\x04used\x18\x03 \x01(\x04\x12\x14\n\x0cused_percent\x18\x04 \x01(\x01\x12\x14\n\x0cinodes_total\x18\x05 \x01(\x04\x12\x13\n\x0binodes_used\x18\x06 \x01(\x04\x12\x13\n\x0binodes_free\x18\x07 \x01(\x04\x12\x1b\n\x13inodes_used_percent\x18\x08 \x01(\x01\x12\x16\n\x0eread_bandwidth\x18\t \x01(\x04\x12\x17\n\x0fwrite_bandwidth\x18\n \x01(\x04\x12*\n\x06\x63group\x18\x0b \x01(\x0b\x32\x15.common.v2.CgroupDiskH\x00\x88\x01\x01\x42\t\n\x07_cgroup\"=\n\nCgroupDisk\x12\x16\n\x0eread_bandwidth\x18\x01 \x01(\x04\x12\x17\n\x0fwrite_bandwidth\x18\x02 \x01(\x04\"\xbc\x01\n\x05\x42uild\x12\x13\n\x0bgit_version\x18\x01 \x01(\t\x12\x17\n\ngit_commit\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ngo_version\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0crust_version\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x15\n\x08platform\x18\x05 \x01(\tH\x03\x88\x01\x01\x42\r\n\x0b_git_commitB\r\n\x0b_go_versionB\x0f\n\r_rust_versionB\x0b\n\t_platform\"\xef\x0b\n\x08\x44ownload\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x12$\n\x05range\x18\x03 \x01(\x0b\x32\x10.common.v2.RangeH\x01\x88\x01\x01\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x10\n\x03tag\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x08priority\x18\x07 \x01(\x0e\x32\x13.common.v2.Priority\x12\x1d\n\x15\x66iltered_query_params\x18\x08 \x03(\t\x12>\n\x0erequest_header\x18\t \x03(\x0b\x32&.common.v2.Download.RequestHeaderEntry\x12\x19\n\x0cpiece_length\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x0b \x01(\tH\x05\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x06\x88\x01\x01\x12\x1e\n\x16\x64isable_back_to_source\x18\r \x01(\x08\x12\x1b\n\x13need_back_to_source\x18\x0e \x01(\x08\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x10\n\x08prefetch\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x07\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\x08\x88\x01\x01\x12\x13\n\x0bis_prefetch\x18\x13 \x01(\x08\x12\x1a\n\x12need_piece_content\x18\x14 \x01(\x08\x12\x17\n\x0f\x66orce_hard_link\x18\x16 \x01(\x08\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x17 \x01(\tH\t\x88\x01\x01\x12\x16\n\tremote_ip\x18\x18 \x01(\tH\n\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x19 \x01(\rH\x0b\x88\x01\x01\x12\x11\n\toverwrite\x18\x1a \x01(\x08\x12 \n\x13\x61\x63tual_piece_length\x18\x1b \x01(\x04H\x0c\x88\x01\x01\x12\"\n\x15\x61\x63tual_content_length\x18\x1c \x01(\x04H\r\x88\x01\x01\x12\x1f\n\x12\x61\x63tual_piece_count\x18\x1d \x01(\x04H\x0e\x88\x01\x01\x12(\n enable_task_id_based_blob_digest\x18\x1e \x01(\x08\x12\x31\n\x0chugging_face\x18\x1f \x01(\x0b\x32\x16.common.v2.HuggingFaceH\x0f\x88\x01\x01\x12/\n\x0bmodel_scope\x18 \x01(\x0b\x32\x15.common.v2.ModelScopeH\x10\x88\x01\x01\x12\x15\n\rmetadata_only\x18! \x01(\x08\x12)\n\x08open_csg\x18\" \x01(\x0b\x32\x12.common.v2.OpenCSGH\x11\x88\x01\x01\x12\x17\n\x0fneed_scheduling\x18# \x01(\x08\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x08\n\x06_rangeB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\"\n _content_for_calculating_task_idB\x0c\n\n_remote_ipB\x19\n\x17_concurrent_piece_countB\x16\n\x14_actual_piece_lengthB\x18\n\x16_actual_content_lengthB\x15\n\x13_actual_piece_countB\x0f\n\r_hugging_faceB\x0e\n\x0c_model_scopeB\x0b\n\t_open_csgJ\x04\x08\x15\x10\x16R\rload_to_cache\"\xb3\x03\n\rObjectStorage\x12\x13\n\x06region\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08\x65ndpoint\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\raccess_key_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1e\n\x11\x61\x63\x63\x65ss_key_secret\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rsession_token\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x1c\n\x0f\x63redential_path\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x1b\n\x0epredefined_acl\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\x1b\n\x0esecurity_token\x18\x08 \x01(\tH\x07\x88\x01\x01\x12!\n\x14insecure_skip_verify\x18\t \x01(\x08H\x08\x88\x01\x01\x42\t\n\x07_regionB\x0b\n\t_endpointB\x10\n\x0e_access_key_idB\x14\n\x12_access_key_secretB\x10\n\x0e_session_tokenB\x12\n\x10_credential_pathB\x11\n\x0f_predefined_aclB\x11\n\x0f_security_tokenB\x17\n\x15_insecure_skip_verify\":\n\x04HDFS\x12\x1d\n\x10\x64\x65legation_token\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_delegation_token\"a\n\x0bHuggingFace\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\"`\n\nModelScope\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\"]\n\x07OpenCSG\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\"&\n\x05Range\x12\r\n\x05start\x18\x01 \x01(\x04\x12\x0e\n\x06length\x18\x02 \x01(\x04\"\xac\x02\n\x05Piece\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x16\n\tparent_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x0e\n\x06length\x18\x04 \x01(\x04\x12\x0e\n\x06\x64igest\x18\x05 \x01(\t\x12\x14\n\x07\x63ontent\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12\x31\n\x0ctraffic_type\x18\x07 \x01(\x0e\x32\x16.common.v2.TrafficTypeH\x02\x88\x01\x01\x12\'\n\x04\x63ost\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x0c\n\n_parent_idB\n\n\x08_contentB\x0f\n\r_traffic_type*7\n\tSizeScope\x12\n\n\x06NORMAL\x10\x00\x12\t\n\x05SMALL\x10\x01\x12\x08\n\x04TINY\x10\x02\x12\t\n\x05\x45MPTY\x10\x03*I\n\x08TaskType\x12\x0c\n\x08STANDARD\x10\x00\x12\x0e\n\nPERSISTENT\x10\x01\x12\x14\n\x10PERSISTENT_CACHE\x10\x02\x12\t\n\x05\x43\x41\x43HE\x10\x03*B\n\x0bTrafficType\x12\x12\n\x0e\x42\x41\x43K_TO_SOURCE\x10\x00\x12\x0f\n\x0bREMOTE_PEER\x10\x01\x12\x0e\n\nLOCAL_PEER\x10\x02*^\n\x08Priority\x12\n\n\x06LEVEL0\x10\x00\x12\n\n\x06LEVEL1\x10\x01\x12\n\n\x06LEVEL2\x10\x02\x12\n\n\x06LEVEL3\x10\x03\x12\n\n\x06LEVEL4\x10\x04\x12\n\n\x06LEVEL5\x10\x05\x12\n\n\x06LEVEL6\x10\x06\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x63ommon.proto\x12\tcommon.v2\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xbe\x03\n\x04Peer\x12\n\n\x02id\x18\x01 \x01(\t\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12%\n\x08priority\x18\x03 \x01(\x0e\x32\x13.common.v2.Priority\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\'\n\x04\x63ost\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x06 \x01(\t\x12\x1d\n\x04task\x18\x07 \x01(\x0b\x32\x0f.common.v2.Task\x12\x1d\n\x04host\x18\x08 \x01(\x0b\x32\x0f.common.v2.Host\x12\x1b\n\x13need_back_to_source\x18\t \x01(\x08\x12.\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x16\x63oncurrent_piece_count\x18\x0c \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_rangeB\x19\n\x17_concurrent_piece_count\"\xc8\x03\n\tCachePeer\x12\n\n\x02id\x18\x01 \x01(\t\x12$\n\x05range\x18\x02 \x01(\x0b\x32\x10.common.v2.RangeH\x00\x88\x01\x01\x12%\n\x08priority\x18\x03 \x01(\x0e\x32\x13.common.v2.Priority\x12 \n\x06pieces\x18\x04 \x03(\x0b\x32\x10.common.v2.Piece\x12\'\n\x04\x63ost\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x06 \x01(\t\x12\"\n\x04task\x18\x07 \x01(\x0b\x32\x14.common.v2.CacheTask\x12\x1d\n\x04host\x18\x08 \x01(\x0b\x32\x0f.common.v2.Host\x12\x1b\n\x13need_back_to_source\x18\t \x01(\x08\x12.\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x16\x63oncurrent_piece_count\x18\x0c \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_rangeB\x19\n\x17_concurrent_piece_count\"\xb0\x02\n\x0ePersistentPeer\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\'\n\x04\x63ost\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x04 \x01(\t\x12\'\n\x04task\x18\x05 \x01(\x0b\x32\x19.common.v2.PersistentTask\x12\x1d\n\x04host\x18\x06 \x01(\x0b\x32\x0f.common.v2.Host\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1e\n\x16\x63oncurrent_piece_count\x18\t \x01(\r\"\xba\x02\n\x13PersistentCachePeer\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\npersistent\x18\x02 \x01(\x08\x12\'\n\x04\x63ost\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05state\x18\x04 \x01(\t\x12,\n\x04task\x18\x05 \x01(\x0b\x32\x1e.common.v2.PersistentCacheTask\x12\x1d\n\x04host\x18\x06 \x01(\x0b\x32\x0f.common.v2.Host\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1e\n\x16\x63oncurrent_piece_count\x18\t \x01(\r\"\xcf\x04\n\x04Task\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x04type\x18\x02 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x13\n\x06\x64igest\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x07 \x03(\t\x12:\n\x0erequest_header\x18\x08 \x03(\x0b\x32\".common.v2.Task.RequestHeaderEntry\x12\x16\n\x0e\x63ontent_length\x18\t \x01(\x04\x12\x13\n\x0bpiece_count\x18\n \x01(\r\x12(\n\nsize_scope\x18\x0b \x01(\x0e\x32\x14.common.v2.SizeScope\x12 \n\x06pieces\x18\x0c \x03(\x0b\x32\x10.common.v2.Piece\x12\r\n\x05state\x18\r \x01(\t\x12\x12\n\npeer_count\x18\x0e \x01(\r\x12\x1a\n\x12has_available_peer\x18\x0f \x01(\x08\x12.\n\ncreated_at\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x06\n\x04_tagB\x0e\n\x0c_application\"\xd9\x04\n\tCacheTask\x12\n\n\x02id\x18\x01 \x01(\t\x12!\n\x04type\x18\x02 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x13\n\x06\x64igest\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x07 \x03(\t\x12?\n\x0erequest_header\x18\x08 \x03(\x0b\x32\'.common.v2.CacheTask.RequestHeaderEntry\x12\x16\n\x0e\x63ontent_length\x18\t \x01(\x04\x12\x13\n\x0bpiece_count\x18\n \x01(\r\x12(\n\nsize_scope\x18\x0b \x01(\x0e\x32\x14.common.v2.SizeScope\x12 \n\x06pieces\x18\x0c \x03(\x0b\x32\x10.common.v2.Piece\x12\r\n\x05state\x18\r \x01(\t\x12\x12\n\npeer_count\x18\x0e \x01(\r\x12\x1a\n\x12has_available_peer\x18\x0f \x01(\x08\x12.\n\ncreated_at\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x06\n\x04_tagB\x0e\n\x0c_application\"\xcb\x02\n\x0ePersistentTask\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x18persistent_replica_count\x18\x02 \x01(\x04\x12(\n current_persistent_replica_count\x18\x03 \x01(\x04\x12\x1d\n\x15\x63urrent_replica_count\x18\x04 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x05 \x01(\x04\x12\x13\n\x0bpiece_count\x18\x06 \x01(\r\x12\r\n\x05state\x18\x07 \x01(\t\x12&\n\x03ttl\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xaa\x03\n\x13PersistentCacheTask\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x18persistent_replica_count\x18\x02 \x01(\x04\x12(\n current_persistent_replica_count\x18\x03 \x01(\x04\x12\x1d\n\x15\x63urrent_replica_count\x18\x04 \x01(\x04\x12\x10\n\x03tag\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x07 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x08 \x01(\x04\x12\x13\n\x0bpiece_count\x18\t \x01(\r\x12\r\n\x05state\x18\n \x01(\t\x12&\n\x03ttl\x18\x0b \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\n\x04_tagB\x0e\n\x0c_application\"\x94\x04\n\x04Host\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x10\n\x08hostname\x18\x03 \x01(\t\x12\n\n\x02ip\x18\x04 \x01(\t\x12\x0c\n\x04port\x18\x05 \x01(\x05\x12\x15\n\rdownload_port\x18\x06 \x01(\x05\x12\n\n\x02os\x18\x07 \x01(\t\x12\x10\n\x08platform\x18\x08 \x01(\t\x12\x17\n\x0fplatform_family\x18\t \x01(\t\x12\x18\n\x10platform_version\x18\n \x01(\t\x12\x16\n\x0ekernel_version\x18\x0b \x01(\t\x12 \n\x03\x63pu\x18\x0c \x01(\x0b\x32\x0e.common.v2.CPUH\x00\x88\x01\x01\x12&\n\x06memory\x18\r \x01(\x0b\x32\x11.common.v2.MemoryH\x01\x88\x01\x01\x12(\n\x07network\x18\x0e \x01(\x0b\x32\x12.common.v2.NetworkH\x02\x88\x01\x01\x12\"\n\x04\x64isk\x18\x0f \x01(\x0b\x32\x0f.common.v2.DiskH\x03\x88\x01\x01\x12$\n\x05\x62uild\x18\x10 \x01(\x0b\x32\x10.common.v2.BuildH\x04\x88\x01\x01\x12\x1c\n\x14scheduler_cluster_id\x18\x11 \x01(\x04\x12\x16\n\x0e\x64isable_shared\x18\x12 \x01(\x08\x12\x12\n\nproxy_port\x18\x13 \x01(\x05\x12\x0c\n\x04name\x18\x14 \x01(\tB\x06\n\x04_cpuB\t\n\x07_memoryB\n\n\x08_networkB\x07\n\x05_diskB\x08\n\x06_build\"\xc7\x01\n\x03\x43PU\x12\x15\n\rlogical_count\x18\x01 \x01(\r\x12\x16\n\x0ephysical_count\x18\x02 \x01(\r\x12\x0f\n\x07percent\x18\x03 \x01(\x01\x12\x17\n\x0fprocess_percent\x18\x04 \x01(\x01\x12\'\n\x05times\x18\x05 \x01(\x0b\x32\x13.common.v2.CPUTimesH\x00\x88\x01\x01\x12)\n\x06\x63group\x18\x06 \x01(\x0b\x32\x14.common.v2.CgroupCPUH\x01\x88\x01\x01\x42\x08\n\x06_timesB\t\n\x07_cgroup\"@\n\tCgroupCPU\x12\x0e\n\x06period\x18\x01 \x01(\x04\x12\r\n\x05quota\x18\x02 \x01(\x03\x12\x14\n\x0cused_percent\x18\x03 \x01(\x01\"\xa4\x01\n\x08\x43PUTimes\x12\x0c\n\x04user\x18\x01 \x01(\x01\x12\x0e\n\x06system\x18\x02 \x01(\x01\x12\x0c\n\x04idle\x18\x03 \x01(\x01\x12\x0c\n\x04nice\x18\x04 \x01(\x01\x12\x0e\n\x06iowait\x18\x05 \x01(\x01\x12\x0b\n\x03irq\x18\x06 \x01(\x01\x12\x0f\n\x07softirq\x18\x07 \x01(\x01\x12\r\n\x05steal\x18\x08 \x01(\x01\x12\r\n\x05guest\x18\t \x01(\x01\x12\x12\n\nguest_nice\x18\n \x01(\x01\"\xb3\x01\n\x06Memory\x12\r\n\x05total\x18\x01 \x01(\x04\x12\x11\n\tavailable\x18\x02 \x01(\x04\x12\x0c\n\x04used\x18\x03 \x01(\x04\x12\x14\n\x0cused_percent\x18\x04 \x01(\x01\x12\x1c\n\x14process_used_percent\x18\x05 \x01(\x01\x12\x0c\n\x04\x66ree\x18\x06 \x01(\x04\x12,\n\x06\x63group\x18\x07 \x01(\x0b\x32\x17.common.v2.CgroupMemoryH\x00\x88\x01\x01\x42\t\n\x07_cgroup\"B\n\x0c\x43groupMemory\x12\r\n\x05limit\x18\x01 \x01(\x03\x12\r\n\x05usage\x18\x02 \x01(\x04\x12\x14\n\x0cused_percent\x18\x03 \x01(\x01\"\xf2\x02\n\x07Network\x12\x1c\n\x14tcp_connection_count\x18\x01 \x01(\r\x12#\n\x1bupload_tcp_connection_count\x18\x02 \x01(\r\x12\x15\n\x08location\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03idc\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x10max_rx_bandwidth\x18\t \x01(\x04\x12\x19\n\x0crx_bandwidth\x18\n \x01(\x04H\x02\x88\x01\x01\x12\x18\n\x10max_tx_bandwidth\x18\x0b \x01(\x04\x12\x19\n\x0ctx_bandwidth\x18\x0c \x01(\x04H\x03\x88\x01\x01\x42\x0b\n\t_locationB\x06\n\x04_idcB\x0f\n\r_rx_bandwidthB\x0f\n\r_tx_bandwidthJ\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tR\rdownload_rateR\x13\x64ownload_rate_limitR\x0bupload_rateR\x11upload_rate_limit\"\x8c\x02\n\x04\x44isk\x12\r\n\x05total\x18\x01 \x01(\x04\x12\x0c\n\x04\x66ree\x18\x02 \x01(\x04\x12\x0c\n\x04used\x18\x03 \x01(\x04\x12\x14\n\x0cused_percent\x18\x04 \x01(\x01\x12\x14\n\x0cinodes_total\x18\x05 \x01(\x04\x12\x13\n\x0binodes_used\x18\x06 \x01(\x04\x12\x13\n\x0binodes_free\x18\x07 \x01(\x04\x12\x1b\n\x13inodes_used_percent\x18\x08 \x01(\x01\x12\x16\n\x0eread_bandwidth\x18\t \x01(\x04\x12\x17\n\x0fwrite_bandwidth\x18\n \x01(\x04\x12*\n\x06\x63group\x18\x0b \x01(\x0b\x32\x15.common.v2.CgroupDiskH\x00\x88\x01\x01\x42\t\n\x07_cgroup\"=\n\nCgroupDisk\x12\x16\n\x0eread_bandwidth\x18\x01 \x01(\x04\x12\x17\n\x0fwrite_bandwidth\x18\x02 \x01(\x04\"\xbc\x01\n\x05\x42uild\x12\x13\n\x0bgit_version\x18\x01 \x01(\t\x12\x17\n\ngit_commit\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ngo_version\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0crust_version\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x15\n\x08platform\x18\x05 \x01(\tH\x03\x88\x01\x01\x42\r\n\x0b_git_commitB\r\n\x0b_go_versionB\x0f\n\r_rust_versionB\x0b\n\t_platform\"\x8e\x0c\n\x08\x44ownload\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x12$\n\x05range\x18\x03 \x01(\x0b\x32\x10.common.v2.RangeH\x01\x88\x01\x01\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x10\n\x03tag\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x08priority\x18\x07 \x01(\x0e\x32\x13.common.v2.Priority\x12\x1d\n\x15\x66iltered_query_params\x18\x08 \x03(\t\x12>\n\x0erequest_header\x18\t \x03(\x0b\x32&.common.v2.Download.RequestHeaderEntry\x12\x19\n\x0cpiece_length\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x0b \x01(\tH\x05\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x06\x88\x01\x01\x12\x1e\n\x16\x64isable_back_to_source\x18\r \x01(\x08\x12\x1b\n\x13need_back_to_source\x18\x0e \x01(\x08\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x10\n\x08prefetch\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x07\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\x08\x88\x01\x01\x12\x13\n\x0bis_prefetch\x18\x13 \x01(\x08\x12\x1a\n\x12need_piece_content\x18\x14 \x01(\x08\x12\x17\n\x0f\x66orce_hard_link\x18\x16 \x01(\x08\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x17 \x01(\tH\t\x88\x01\x01\x12\x16\n\tremote_ip\x18\x18 \x01(\tH\n\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x19 \x01(\rH\x0b\x88\x01\x01\x12\x11\n\toverwrite\x18\x1a \x01(\x08\x12 \n\x13\x61\x63tual_piece_length\x18\x1b \x01(\x04H\x0c\x88\x01\x01\x12\"\n\x15\x61\x63tual_content_length\x18\x1c \x01(\x04H\r\x88\x01\x01\x12\x1f\n\x12\x61\x63tual_piece_count\x18\x1d \x01(\x04H\x0e\x88\x01\x01\x12(\n enable_task_id_based_blob_digest\x18\x1e \x01(\x08\x12\x31\n\x0chugging_face\x18\x1f \x01(\x0b\x32\x16.common.v2.HuggingFaceH\x0f\x88\x01\x01\x12/\n\x0bmodel_scope\x18 \x01(\x0b\x32\x15.common.v2.ModelScopeH\x10\x88\x01\x01\x12\x15\n\rmetadata_only\x18! \x01(\x08\x12)\n\x08open_csg\x18\" \x01(\x0b\x32\x12.common.v2.OpenCSGH\x11\x88\x01\x01\x12\x36\n\x11scheduling_policy\x18# \x01(\x0e\x32\x1b.common.v2.SchedulingPolicy\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x08\n\x06_rangeB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\"\n _content_for_calculating_task_idB\x0c\n\n_remote_ipB\x19\n\x17_concurrent_piece_countB\x16\n\x14_actual_piece_lengthB\x18\n\x16_actual_content_lengthB\x15\n\x13_actual_piece_countB\x0f\n\r_hugging_faceB\x0e\n\x0c_model_scopeB\x0b\n\t_open_csgJ\x04\x08\x15\x10\x16R\rload_to_cache\"\xb3\x03\n\rObjectStorage\x12\x13\n\x06region\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08\x65ndpoint\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\raccess_key_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1e\n\x11\x61\x63\x63\x65ss_key_secret\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rsession_token\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x1c\n\x0f\x63redential_path\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x1b\n\x0epredefined_acl\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\x1b\n\x0esecurity_token\x18\x08 \x01(\tH\x07\x88\x01\x01\x12!\n\x14insecure_skip_verify\x18\t \x01(\x08H\x08\x88\x01\x01\x42\t\n\x07_regionB\x0b\n\t_endpointB\x10\n\x0e_access_key_idB\x14\n\x12_access_key_secretB\x10\n\x0e_session_tokenB\x12\n\x10_credential_pathB\x11\n\x0f_predefined_aclB\x11\n\x0f_security_tokenB\x17\n\x15_insecure_skip_verify\":\n\x04HDFS\x12\x1d\n\x10\x64\x65legation_token\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x13\n\x11_delegation_token\"a\n\x0bHuggingFace\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\"`\n\nModelScope\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\"]\n\x07OpenCSG\x12\x12\n\x05token\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08revision\x18\x02 \x01(\t\x12\x15\n\x08\x62\x61se_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_tokenB\x0b\n\t_base_url\"&\n\x05Range\x12\r\n\x05start\x18\x01 \x01(\x04\x12\x0e\n\x06length\x18\x02 \x01(\x04\"\xac\x02\n\x05Piece\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x16\n\tparent_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x0e\n\x06length\x18\x04 \x01(\x04\x12\x0e\n\x06\x64igest\x18\x05 \x01(\t\x12\x14\n\x07\x63ontent\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12\x31\n\x0ctraffic_type\x18\x07 \x01(\x0e\x32\x16.common.v2.TrafficTypeH\x02\x88\x01\x01\x12\'\n\x04\x63ost\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x0c\n\n_parent_idB\n\n\x08_contentB\x0f\n\r_traffic_type*7\n\tSizeScope\x12\n\n\x06NORMAL\x10\x00\x12\t\n\x05SMALL\x10\x01\x12\x08\n\x04TINY\x10\x02\x12\t\n\x05\x45MPTY\x10\x03*I\n\x08TaskType\x12\x0c\n\x08STANDARD\x10\x00\x12\x0e\n\nPERSISTENT\x10\x01\x12\x14\n\x10PERSISTENT_CACHE\x10\x02\x12\t\n\x05\x43\x41\x43HE\x10\x03*B\n\x0bTrafficType\x12\x12\n\x0e\x42\x41\x43K_TO_SOURCE\x10\x00\x12\x0f\n\x0bREMOTE_PEER\x10\x01\x12\x0e\n\nLOCAL_PEER\x10\x02*^\n\x08Priority\x12\n\n\x06LEVEL0\x10\x00\x12\n\n\x06LEVEL1\x10\x01\x12\n\n\x06LEVEL2\x10\x02\x12\n\n\x06LEVEL3\x10\x03\x12\n\n\x06LEVEL4\x10\x04\x12\n\n\x06LEVEL5\x10\x05\x12\n\n\x06LEVEL6\x10\x06*(\n\x10SchedulingPolicy\x12\x08\n\x04\x41UTO\x10\x00\x12\n\n\x06\x41LWAYS\x10\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -39,14 +39,16 @@ _globals['_CACHETASK_REQUESTHEADERENTRY']._serialized_options = b'8\001' _globals['_DOWNLOAD_REQUESTHEADERENTRY']._loaded_options = None _globals['_DOWNLOAD_REQUESTHEADERENTRY']._serialized_options = b'8\001' - _globals['_SIZESCOPE']._serialized_start=8358 - _globals['_SIZESCOPE']._serialized_end=8413 - _globals['_TASKTYPE']._serialized_start=8415 - _globals['_TASKTYPE']._serialized_end=8488 - _globals['_TRAFFICTYPE']._serialized_start=8490 - _globals['_TRAFFICTYPE']._serialized_end=8556 - _globals['_PRIORITY']._serialized_start=8558 - _globals['_PRIORITY']._serialized_end=8652 + _globals['_SIZESCOPE']._serialized_start=8389 + _globals['_SIZESCOPE']._serialized_end=8444 + _globals['_TASKTYPE']._serialized_start=8446 + _globals['_TASKTYPE']._serialized_end=8519 + _globals['_TRAFFICTYPE']._serialized_start=8521 + _globals['_TRAFFICTYPE']._serialized_end=8587 + _globals['_PRIORITY']._serialized_start=8589 + _globals['_PRIORITY']._serialized_end=8683 + _globals['_SCHEDULINGPOLICY']._serialized_start=8685 + _globals['_SCHEDULINGPOLICY']._serialized_end=8725 _globals['_PEER']._serialized_start=93 _globals['_PEER']._serialized_end=539 _globals['_CACHEPEER']._serialized_start=542 @@ -88,21 +90,21 @@ _globals['_BUILD']._serialized_start=5513 _globals['_BUILD']._serialized_end=5701 _globals['_DOWNLOAD']._serialized_start=5704 - _globals['_DOWNLOAD']._serialized_end=7223 + _globals['_DOWNLOAD']._serialized_end=7254 _globals['_DOWNLOAD_REQUESTHEADERENTRY']._serialized_start=2129 _globals['_DOWNLOAD_REQUESTHEADERENTRY']._serialized_end=2181 - _globals['_OBJECTSTORAGE']._serialized_start=7226 - _globals['_OBJECTSTORAGE']._serialized_end=7661 - _globals['_HDFS']._serialized_start=7663 - _globals['_HDFS']._serialized_end=7721 - _globals['_HUGGINGFACE']._serialized_start=7723 - _globals['_HUGGINGFACE']._serialized_end=7820 - _globals['_MODELSCOPE']._serialized_start=7822 - _globals['_MODELSCOPE']._serialized_end=7918 - _globals['_OPENCSG']._serialized_start=7920 - _globals['_OPENCSG']._serialized_end=8013 - _globals['_RANGE']._serialized_start=8015 - _globals['_RANGE']._serialized_end=8053 - _globals['_PIECE']._serialized_start=8056 - _globals['_PIECE']._serialized_end=8356 + _globals['_OBJECTSTORAGE']._serialized_start=7257 + _globals['_OBJECTSTORAGE']._serialized_end=7692 + _globals['_HDFS']._serialized_start=7694 + _globals['_HDFS']._serialized_end=7752 + _globals['_HUGGINGFACE']._serialized_start=7754 + _globals['_HUGGINGFACE']._serialized_end=7851 + _globals['_MODELSCOPE']._serialized_start=7853 + _globals['_MODELSCOPE']._serialized_end=7949 + _globals['_OPENCSG']._serialized_start=7951 + _globals['_OPENCSG']._serialized_end=8044 + _globals['_RANGE']._serialized_start=8046 + _globals['_RANGE']._serialized_end=8084 + _globals['_PIECE']._serialized_start=8087 + _globals['_PIECE']._serialized_end=8387 # @@protoc_insertion_point(module_scope) diff --git a/python/dragonfly_api/common_pb2.pyi b/python/dragonfly_api/common_pb2.pyi index 95f2aeb..ce8843a 100644 --- a/python/dragonfly_api/common_pb2.pyi +++ b/python/dragonfly_api/common_pb2.pyi @@ -40,6 +40,11 @@ class Priority(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): LEVEL4: _ClassVar[Priority] LEVEL5: _ClassVar[Priority] LEVEL6: _ClassVar[Priority] + +class SchedulingPolicy(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + AUTO: _ClassVar[SchedulingPolicy] + ALWAYS: _ClassVar[SchedulingPolicy] NORMAL: SizeScope SMALL: SizeScope TINY: SizeScope @@ -58,6 +63,8 @@ LEVEL3: Priority LEVEL4: Priority LEVEL5: Priority LEVEL6: Priority +AUTO: SchedulingPolicy +ALWAYS: SchedulingPolicy class Peer(_message.Message): __slots__ = ("id", "range", "priority", "pieces", "cost", "state", "task", "host", "need_back_to_source", "created_at", "updated_at", "concurrent_piece_count") @@ -494,7 +501,7 @@ class Build(_message.Message): def __init__(self, git_version: _Optional[str] = ..., git_commit: _Optional[str] = ..., go_version: _Optional[str] = ..., rust_version: _Optional[str] = ..., platform: _Optional[str] = ...) -> None: ... class Download(_message.Message): - __slots__ = ("url", "digest", "range", "type", "tag", "application", "priority", "filtered_query_params", "request_header", "piece_length", "output_path", "timeout", "disable_back_to_source", "need_back_to_source", "certificate_chain", "prefetch", "object_storage", "hdfs", "is_prefetch", "need_piece_content", "force_hard_link", "content_for_calculating_task_id", "remote_ip", "concurrent_piece_count", "overwrite", "actual_piece_length", "actual_content_length", "actual_piece_count", "enable_task_id_based_blob_digest", "hugging_face", "model_scope", "metadata_only", "open_csg", "need_scheduling") + __slots__ = ("url", "digest", "range", "type", "tag", "application", "priority", "filtered_query_params", "request_header", "piece_length", "output_path", "timeout", "disable_back_to_source", "need_back_to_source", "certificate_chain", "prefetch", "object_storage", "hdfs", "is_prefetch", "need_piece_content", "force_hard_link", "content_for_calculating_task_id", "remote_ip", "concurrent_piece_count", "overwrite", "actual_piece_length", "actual_content_length", "actual_piece_count", "enable_task_id_based_blob_digest", "hugging_face", "model_scope", "metadata_only", "open_csg", "scheduling_policy") class RequestHeaderEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -535,7 +542,7 @@ class Download(_message.Message): MODEL_SCOPE_FIELD_NUMBER: _ClassVar[int] METADATA_ONLY_FIELD_NUMBER: _ClassVar[int] OPEN_CSG_FIELD_NUMBER: _ClassVar[int] - NEED_SCHEDULING_FIELD_NUMBER: _ClassVar[int] + SCHEDULING_POLICY_FIELD_NUMBER: _ClassVar[int] url: str digest: str range: Range @@ -569,8 +576,8 @@ class Download(_message.Message): model_scope: ModelScope metadata_only: bool open_csg: OpenCSG - need_scheduling: bool - def __init__(self, url: _Optional[str] = ..., digest: _Optional[str] = ..., range: _Optional[_Union[Range, _Mapping]] = ..., type: _Optional[_Union[TaskType, str]] = ..., tag: _Optional[str] = ..., application: _Optional[str] = ..., priority: _Optional[_Union[Priority, str]] = ..., filtered_query_params: _Optional[_Iterable[str]] = ..., request_header: _Optional[_Mapping[str, str]] = ..., piece_length: _Optional[int] = ..., output_path: _Optional[str] = ..., timeout: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., disable_back_to_source: bool = ..., need_back_to_source: bool = ..., certificate_chain: _Optional[_Iterable[bytes]] = ..., prefetch: bool = ..., object_storage: _Optional[_Union[ObjectStorage, _Mapping]] = ..., hdfs: _Optional[_Union[HDFS, _Mapping]] = ..., is_prefetch: bool = ..., need_piece_content: bool = ..., force_hard_link: bool = ..., content_for_calculating_task_id: _Optional[str] = ..., remote_ip: _Optional[str] = ..., concurrent_piece_count: _Optional[int] = ..., overwrite: bool = ..., actual_piece_length: _Optional[int] = ..., actual_content_length: _Optional[int] = ..., actual_piece_count: _Optional[int] = ..., enable_task_id_based_blob_digest: bool = ..., hugging_face: _Optional[_Union[HuggingFace, _Mapping]] = ..., model_scope: _Optional[_Union[ModelScope, _Mapping]] = ..., metadata_only: bool = ..., open_csg: _Optional[_Union[OpenCSG, _Mapping]] = ..., need_scheduling: bool = ...) -> None: ... + scheduling_policy: SchedulingPolicy + def __init__(self, url: _Optional[str] = ..., digest: _Optional[str] = ..., range: _Optional[_Union[Range, _Mapping]] = ..., type: _Optional[_Union[TaskType, str]] = ..., tag: _Optional[str] = ..., application: _Optional[str] = ..., priority: _Optional[_Union[Priority, str]] = ..., filtered_query_params: _Optional[_Iterable[str]] = ..., request_header: _Optional[_Mapping[str, str]] = ..., piece_length: _Optional[int] = ..., output_path: _Optional[str] = ..., timeout: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., disable_back_to_source: bool = ..., need_back_to_source: bool = ..., certificate_chain: _Optional[_Iterable[bytes]] = ..., prefetch: bool = ..., object_storage: _Optional[_Union[ObjectStorage, _Mapping]] = ..., hdfs: _Optional[_Union[HDFS, _Mapping]] = ..., is_prefetch: bool = ..., need_piece_content: bool = ..., force_hard_link: bool = ..., content_for_calculating_task_id: _Optional[str] = ..., remote_ip: _Optional[str] = ..., concurrent_piece_count: _Optional[int] = ..., overwrite: bool = ..., actual_piece_length: _Optional[int] = ..., actual_content_length: _Optional[int] = ..., actual_piece_count: _Optional[int] = ..., enable_task_id_based_blob_digest: bool = ..., hugging_face: _Optional[_Union[HuggingFace, _Mapping]] = ..., model_scope: _Optional[_Union[ModelScope, _Mapping]] = ..., metadata_only: bool = ..., open_csg: _Optional[_Union[OpenCSG, _Mapping]] = ..., scheduling_policy: _Optional[_Union[SchedulingPolicy, str]] = ...) -> None: ... class ObjectStorage(_message.Message): __slots__ = ("region", "endpoint", "access_key_id", "access_key_secret", "session_token", "credential_path", "predefined_acl", "security_token", "insecure_skip_verify") diff --git a/src/common.v2.rs b/src/common.v2.rs index a1cdbd9..489a3e1 100644 --- a/src/common.v2.rs +++ b/src/common.v2.rs @@ -784,12 +784,10 @@ pub struct Download { /// OpenCSG protocol information. #[prost(message, optional, tag = "34")] pub open_csg: ::core::option::Option, - /// Need scheduling is the flag to indicate whether the download needs to be scheduled - /// by the scheduler even if the content length is smaller than the minimum piece length, - /// so that the peer announces the task to the scheduler and other peers can discover - /// it as a parent. - #[prost(bool, tag = "35")] - pub need_scheduling: bool, + /// Scheduling policy represents how the download interacts with the scheduler, + /// default is AUTO. + #[prost(enumeration = "SchedulingPolicy", tag = "35")] + pub scheduling_policy: i32, } /// Object Storage related information. #[derive(serde::Serialize, serde::Deserialize)] @@ -1105,3 +1103,37 @@ impl Priority { } } } +/// SchedulingPolicy represents how the download interacts with the scheduler. +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum SchedulingPolicy { + /// AUTO downloads through the scheduler unless the content length is smaller + /// than the minimum piece length, in which case it downloads from the source + /// directly, skipping the scheduler. + Auto = 0, + /// ALWAYS downloads through the scheduler even if the content length is smaller + /// than the minimum piece length, so that the peer announces the task to the + /// scheduler and other peers can discover it as a parent. + Always = 1, +} +impl SchedulingPolicy { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Auto => "AUTO", + Self::Always => "ALWAYS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AUTO" => Some(Self::Auto), + "ALWAYS" => Some(Self::Always), + _ => None, + } + } +} diff --git a/src/descriptor.bin b/src/descriptor.bin index bd99bc0..de434f3 100644 Binary files a/src/descriptor.bin and b/src/descriptor.bin differ