blob: 90102cb14a1b3b895ff01d7baaca70766aa4b390 [file] [log] [blame]
// Copyright 2015 The LUCI Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.17.0
// source: go.chromium.org/luci/scheduler/appengine/messages/config.proto
package messages
import (
_ "go.chromium.org/luci/common/proto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type Acl_Role int32
const (
// Can do read-only operations, such as listing invocations of a Job.
Acl_READER Acl_Role = 0
// Can emit triggers for a Job.
//
// Being TRIGGERER implicitly grants READER permission.
Acl_TRIGGERER Acl_Role = 2
// Same as READER + TRIGGERER + can modify state of a Job or Invocation such
// as aborting them.
// LUCI scheduler (this service) is an OWNER of each `Job` and `Trigger`,
// thus `Trigger`s are allowed to trigger all `Job`s defined in the same
// project, regardless of their respective ACLs.
Acl_OWNER Acl_Role = 1
)
// Enum value maps for Acl_Role.
var (
Acl_Role_name = map[int32]string{
0: "READER",
2: "TRIGGERER",
1: "OWNER",
}
Acl_Role_value = map[string]int32{
"READER": 0,
"TRIGGERER": 2,
"OWNER": 1,
}
)
func (x Acl_Role) Enum() *Acl_Role {
p := new(Acl_Role)
*p = x
return p
}
func (x Acl_Role) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Acl_Role) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_enumTypes[0].Descriptor()
}
func (Acl_Role) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_enumTypes[0]
}
func (x Acl_Role) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Acl_Role.Descriptor instead.
func (Acl_Role) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{1, 0}
}
type TriggeringPolicy_Kind int32
const (
// A placeholder for unrecognized policy kind.
TriggeringPolicy_UNDEFINED TriggeringPolicy_Kind = 0
// A greedy triggering function that takes all pending triggers (up to
// max_batch_size limit) and collapses them into one new invocation,
// deriving its properties from the most recent trigger alone. It doesn't
// wait for a full batch, nor tries to batch evenly.
TriggeringPolicy_GREEDY_BATCHING TriggeringPolicy_Kind = 1
// A logarithmic triggering function that takes log_k N pending triggers (up
// to max_batch_size limit) and collapses them into one new incovation,
// deriving its properties from the most recent trigger alone, where N is
// the total number of pending triggers and k is specified by the log_base
// field below.
TriggeringPolicy_LOGARITHMIC_BATCHING TriggeringPolicy_Kind = 2
)
// Enum value maps for TriggeringPolicy_Kind.
var (
TriggeringPolicy_Kind_name = map[int32]string{
0: "UNDEFINED",
1: "GREEDY_BATCHING",
2: "LOGARITHMIC_BATCHING",
}
TriggeringPolicy_Kind_value = map[string]int32{
"UNDEFINED": 0,
"GREEDY_BATCHING": 1,
"LOGARITHMIC_BATCHING": 2,
}
)
func (x TriggeringPolicy_Kind) Enum() *TriggeringPolicy_Kind {
p := new(TriggeringPolicy_Kind)
*p = x
return p
}
func (x TriggeringPolicy_Kind) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TriggeringPolicy_Kind) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_enumTypes[1].Descriptor()
}
func (TriggeringPolicy_Kind) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_enumTypes[1]
}
func (x TriggeringPolicy_Kind) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use TriggeringPolicy_Kind.Descriptor instead.
func (TriggeringPolicy_Kind) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{3, 0}
}
// ProjectConfig defines a schema for a config file that describe jobs belonging
// to some project.
type ProjectConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Job is a set of jobs defined in the project.
Job []*Job `protobuf:"bytes,1,rep,name=job,proto3" json:"job,omitempty"`
// Trigger is a set of triggering jobs defined in the project.
Trigger []*Trigger `protobuf:"bytes,2,rep,name=trigger,proto3" json:"trigger,omitempty"`
// A list of ACL sets. Names must be unique.
//
// Deprecated: Do not use.
AclSets []*AclSet `protobuf:"bytes,3,rep,name=acl_sets,json=aclSets,proto3" json:"acl_sets,omitempty"`
}
func (x *ProjectConfig) Reset() {
*x = ProjectConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ProjectConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ProjectConfig) ProtoMessage() {}
func (x *ProjectConfig) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ProjectConfig.ProtoReflect.Descriptor instead.
func (*ProjectConfig) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{0}
}
func (x *ProjectConfig) GetJob() []*Job {
if x != nil {
return x.Job
}
return nil
}
func (x *ProjectConfig) GetTrigger() []*Trigger {
if x != nil {
return x.Trigger
}
return nil
}
// Deprecated: Do not use.
func (x *ProjectConfig) GetAclSets() []*AclSet {
if x != nil {
return x.AclSets
}
return nil
}
// A single access control rule.
//
// Deprecated in favor of LUCI Realms.
type Acl struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Role denotes a list of actions that an identity can perform.
Role Acl_Role `protobuf:"varint,1,opt,name=role,proto3,enum=scheduler.config.Acl_Role" json:"role,omitempty"`
// Either email or "group:xyz" or auth service identity string "kind:name".
GrantedTo string `protobuf:"bytes,2,opt,name=granted_to,json=grantedTo,proto3" json:"granted_to,omitempty"`
}
func (x *Acl) Reset() {
*x = Acl{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Acl) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Acl) ProtoMessage() {}
func (x *Acl) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Acl.ProtoReflect.Descriptor instead.
func (*Acl) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{1}
}
func (x *Acl) GetRole() Acl_Role {
if x != nil {
return x.Role
}
return Acl_READER
}
func (x *Acl) GetGrantedTo() string {
if x != nil {
return x.GrantedTo
}
return ""
}
// A set of Acl messages. Can be referenced in a Job or Trigger by name.
//
// Deprecated in favor of LUCI Realms.
type AclSet struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A name of the ACL set, unique for a project.
// Required. Must match regex '^[0-9A-Za-z_\-\.]{1,100}$'.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// List of access control rules.
// The order does not matter.
Acls []*Acl `protobuf:"bytes,2,rep,name=acls,proto3" json:"acls,omitempty"`
}
func (x *AclSet) Reset() {
*x = AclSet{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AclSet) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AclSet) ProtoMessage() {}
func (x *AclSet) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AclSet.ProtoReflect.Descriptor instead.
func (*AclSet) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{2}
}
func (x *AclSet) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *AclSet) GetAcls() []*Acl {
if x != nil {
return x.Acls
}
return nil
}
// TriggeringPolicy defines a function that decides when and how to launch a
// job invocation, given the job's current state and a set of pending triggers.
type TriggeringPolicy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Defines an algorithm to use for the triggering decisions.
//
// See comments for Kind enum field.
//
// Default is GREEDY_BATCHING.
Kind TriggeringPolicy_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=scheduler.config.TriggeringPolicy_Kind" json:"kind,omitempty"`
// Limits number of job invocations running at the same time.
//
// If the number of current active invocations is more or equal to this
// setting, the triggering function will be skipped completely, since it isn't
// allowed to trigger anything anyway.
//
// Default is 1.
MaxConcurrentInvocations int64 `protobuf:"varint,2,opt,name=max_concurrent_invocations,json=maxConcurrentInvocations,proto3" json:"max_concurrent_invocations,omitempty"`
// Limits how many triggers can be put into one invocation request.
//
// For example, setting this to 1 will make each trigger launch its own
// invocation.
//
// Default is 1000 (which is ~= unlimited).
MaxBatchSize int64 `protobuf:"varint,3,opt,name=max_batch_size,json=maxBatchSize,proto3" json:"max_batch_size,omitempty"`
// Base of the logarithm operation during logarithmic batching.
//
// For example, setting this to 2, will cause 3 out of 8 pending triggers to
// be combined into a single invocation with LOGARITHMIC_BATCHING kind. This
// value is ignored by other policy kinds. Must be larger or equal to 1.0001
// for numerical stability reasons.
//
// Required.
LogBase float32 `protobuf:"fixed32,4,opt,name=log_base,json=logBase,proto3" json:"log_base,omitempty"`
}
func (x *TriggeringPolicy) Reset() {
*x = TriggeringPolicy{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TriggeringPolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TriggeringPolicy) ProtoMessage() {}
func (x *TriggeringPolicy) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TriggeringPolicy.ProtoReflect.Descriptor instead.
func (*TriggeringPolicy) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{3}
}
func (x *TriggeringPolicy) GetKind() TriggeringPolicy_Kind {
if x != nil {
return x.Kind
}
return TriggeringPolicy_UNDEFINED
}
func (x *TriggeringPolicy) GetMaxConcurrentInvocations() int64 {
if x != nil {
return x.MaxConcurrentInvocations
}
return 0
}
func (x *TriggeringPolicy) GetMaxBatchSize() int64 {
if x != nil {
return x.MaxBatchSize
}
return 0
}
func (x *TriggeringPolicy) GetLogBase() float32 {
if x != nil {
return x.LogBase
}
return 0
}
// Job specifies a single regular job belonging to a project.
//
// Such jobs runs on a schedule or can be triggered by some trigger.
type Job struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Id is a name of the job (unique for the project).
//
// Must match '^[0-9A-Za-z_\-\. \)\(]{1,100}$'.
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// Realm is a name of a LUCI realm within the project to use for ACLs.
//
// Must match `^[a-z0-9_\.\-/]{1,400}$` or be literals "@root" or "@legacy".
// If not set, defaults to "@legacy".
//
// ACLs associated with a realm are defined separately in realms.cfg file.
// That way they can be shared by multiple services.
Realm string `protobuf:"bytes,8,opt,name=realm,proto3" json:"realm,omitempty"`
// Schedule describes when to run the job.
//
// A job with a schedule can still be triggered by other triggering jobs
// and via "Trigger" button in UI.
//
// Supported kinds of schedules (illustrated by examples):
// - "* 0 * * * *": cron-like expression, in a syntax supported by
// https://github.com/gorhill/cronexpr (see its docs for full reference).
// The cron engine will attempt to start a job at specified moments in
// time (based on UTC clock). If when triggering a job, previous
// invocation is still running, an overrun will be recorded (and next
// attempt to start a job happens based on the schedule, not when the
// previous invocation finishes). Some examples:
// "0 */3 * * * *" - each 3 hours: at 12:00 AM UTC, 3:00 AM UTC, ...
// "0 */3 * * *" - exact same thing (last field is optional)
// "0 1/3 * * *" - each 3 hours but starting 1:00 AM UTC
// "0 2,10,18 * * *" - at 2 AM UTC, 10 AM UTC, 6 PM UTC
// "0 7 * * *" - at 7 AM UTC, once a day.
// - "with 10s interval": runs invocations in a loop, waiting 10s after
// finishing invocation before starting a new one. Overruns are not
// possible.
// - "continuously" is alias for "with 0s interval", meaning the job will
// run in a loop without any pauses.
// - "triggered" schedule indicates that job is only started via a trigger.
//
// Default is "triggered".
Schedule string `protobuf:"bytes,2,opt,name=schedule,proto3" json:"schedule,omitempty"`
// Disabled is true to disable this job.
//
// Disabled job is equivalent to a deleted job: it can't be triggered, it
// can't be referenced by other jobs and it doesn't show up in UI or API.
//
// Use this instead of commenting out the definition in case you want to
// temporarily git rid of the job.
Disabled bool `protobuf:"varint,3,opt,name=disabled,proto3" json:"disabled,omitempty"`
// List of access control rules for the Job.
// The order does not matter.
// There can be at most 32 different acls for a Job, including those from
// acl_sets.
//
// Deprecated: Do not use.
Acls []*Acl `protobuf:"bytes,5,rep,name=acls,proto3" json:"acls,omitempty"`
// A list of ACL set names. Each ACL in each referenced ACL set will be
// included in this Job.
// The order does not matter.
//
// Deprecated: Do not use.
AclSets []string `protobuf:"bytes,6,rep,name=acl_sets,json=aclSets,proto3" json:"acl_sets,omitempty"`
// TriggeringPolicy defines how job handles incoming triggering events.
//
// If not specified defaults to GREEDY_BATCHING with 1 max concurrent
// invocation. See comments in TriggeringPolicy for more details.
TriggeringPolicy *TriggeringPolicy `protobuf:"bytes,7,opt,name=triggering_policy,json=triggeringPolicy,proto3" json:"triggering_policy,omitempty"`
// Noop is used for testing. It is "do nothing" task.
Noop *NoopTask `protobuf:"bytes,100,opt,name=noop,proto3" json:"noop,omitempty"`
// UrlFetch can be used to make a simple HTTP call.
UrlFetch *UrlFetchTask `protobuf:"bytes,101,opt,name=url_fetch,json=urlFetch,proto3" json:"url_fetch,omitempty"`
// BuildbucketTask can be used to schedule buildbucket job.
Buildbucket *BuildbucketTask `protobuf:"bytes,103,opt,name=buildbucket,proto3" json:"buildbucket,omitempty"`
}
func (x *Job) Reset() {
*x = Job{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Job) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Job) ProtoMessage() {}
func (x *Job) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Job.ProtoReflect.Descriptor instead.
func (*Job) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{4}
}
func (x *Job) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *Job) GetRealm() string {
if x != nil {
return x.Realm
}
return ""
}
func (x *Job) GetSchedule() string {
if x != nil {
return x.Schedule
}
return ""
}
func (x *Job) GetDisabled() bool {
if x != nil {
return x.Disabled
}
return false
}
// Deprecated: Do not use.
func (x *Job) GetAcls() []*Acl {
if x != nil {
return x.Acls
}
return nil
}
// Deprecated: Do not use.
func (x *Job) GetAclSets() []string {
if x != nil {
return x.AclSets
}
return nil
}
func (x *Job) GetTriggeringPolicy() *TriggeringPolicy {
if x != nil {
return x.TriggeringPolicy
}
return nil
}
func (x *Job) GetNoop() *NoopTask {
if x != nil {
return x.Noop
}
return nil
}
func (x *Job) GetUrlFetch() *UrlFetchTask {
if x != nil {
return x.UrlFetch
}
return nil
}
func (x *Job) GetBuildbucket() *BuildbucketTask {
if x != nil {
return x.Buildbucket
}
return nil
}
// Trigger specifies a job that triggers other jobs.
//
// It is a special kind of a job that periodically checks the state of the world
// and triggers other jobs.
type Trigger struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Id is a name of the job (unique for the project).
//
// Must match '^[0-9A-Za-z_\-\. \)\(]{1,100}$'. It's in the same namespace as
// regular jobs.
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// Realm is a name of a LUCI realm within the project to use for ACLs.
//
// Must match `^[a-z0-9_\.\-/]{1,400}$` or be literals "@root" or "@legacy".
// If not set, defaults to "@legacy".
//
// ACLs associated with a realm are defined separately in realms.cfg file.
// That way they can be shared by multiple services.
Realm string `protobuf:"bytes,7,opt,name=realm,proto3" json:"realm,omitempty"`
// Schedule describes when to run this triggering job.
//
// See Job.schedule for more info. Default is "with 30s interval".
Schedule string `protobuf:"bytes,2,opt,name=schedule,proto3" json:"schedule,omitempty"`
// Disabled is true to disable this job.
//
// Se Job.disabled for more info.
Disabled bool `protobuf:"varint,3,opt,name=disabled,proto3" json:"disabled,omitempty"`
// ACLs, see Job.acls and Job.acl_sets.
//
// Deprecated: Do not use.
Acls []*Acl `protobuf:"bytes,4,rep,name=acls,proto3" json:"acls,omitempty"`
// Deprecated: Do not use.
AclSets []string `protobuf:"bytes,5,rep,name=acl_sets,json=aclSets,proto3" json:"acl_sets,omitempty"`
// TriggeringPolicy defines how job handles incoming triggering events.
//
// It is rare for a trigger itself to have a non-default triggering policy,
// so most likely you should not touch this field.
TriggeringPolicy *TriggeringPolicy `protobuf:"bytes,6,opt,name=triggering_policy,json=triggeringPolicy,proto3" json:"triggering_policy,omitempty"`
// Triggers are IDs of jobs triggered by this trigger.
Triggers []string `protobuf:"bytes,200,rep,name=triggers,proto3" json:"triggers,omitempty"`
// Noop is used for testing. It is "do nothing" trigger.
Noop *NoopTask `protobuf:"bytes,100,opt,name=noop,proto3" json:"noop,omitempty"`
// Gitiles is used to trigger jobs for new commits on Gitiles.
Gitiles *GitilesTask `protobuf:"bytes,101,opt,name=gitiles,proto3" json:"gitiles,omitempty"`
}
func (x *Trigger) Reset() {
*x = Trigger{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Trigger) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Trigger) ProtoMessage() {}
func (x *Trigger) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Trigger.ProtoReflect.Descriptor instead.
func (*Trigger) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{5}
}
func (x *Trigger) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *Trigger) GetRealm() string {
if x != nil {
return x.Realm
}
return ""
}
func (x *Trigger) GetSchedule() string {
if x != nil {
return x.Schedule
}
return ""
}
func (x *Trigger) GetDisabled() bool {
if x != nil {
return x.Disabled
}
return false
}
// Deprecated: Do not use.
func (x *Trigger) GetAcls() []*Acl {
if x != nil {
return x.Acls
}
return nil
}
// Deprecated: Do not use.
func (x *Trigger) GetAclSets() []string {
if x != nil {
return x.AclSets
}
return nil
}
func (x *Trigger) GetTriggeringPolicy() *TriggeringPolicy {
if x != nil {
return x.TriggeringPolicy
}
return nil
}
func (x *Trigger) GetTriggers() []string {
if x != nil {
return x.Triggers
}
return nil
}
func (x *Trigger) GetNoop() *NoopTask {
if x != nil {
return x.Noop
}
return nil
}
func (x *Trigger) GetGitiles() *GitilesTask {
if x != nil {
return x.Gitiles
}
return nil
}
// NoopTask is used for testing. It is a "do nothing" task that can emit fake
// triggers.
type NoopTask struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SleepMs int64 `protobuf:"varint,1,opt,name=sleep_ms,json=sleepMs,proto3" json:"sleep_ms,omitempty"`
TriggersCount int64 `protobuf:"varint,2,opt,name=triggers_count,json=triggersCount,proto3" json:"triggers_count,omitempty"`
}
func (x *NoopTask) Reset() {
*x = NoopTask{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *NoopTask) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*NoopTask) ProtoMessage() {}
func (x *NoopTask) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use NoopTask.ProtoReflect.Descriptor instead.
func (*NoopTask) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{6}
}
func (x *NoopTask) GetSleepMs() int64 {
if x != nil {
return x.SleepMs
}
return 0
}
func (x *NoopTask) GetTriggersCount() int64 {
if x != nil {
return x.TriggersCount
}
return 0
}
// GitilesTask specifies parameters of what repo and which refs to watch for new
// commits.
//
// GitilesTask will trigger other jobs if either:
// * ref's tip has changed (e.g. new commit landed on a ref),
// * a ref has just been created.
//
// LIMITATIONS:
//
// 1. Per each fast-forward ref's tip change as observed by scheduler,
// no more than 50 latest (according to gitiles default ordering) commits
// will result in emitted triggers.
// This is a safeguard against mistaken or deliberate but unusual git push
// actions, which typically don't have intent of triggering a build for each
// such commit.
// If you absolutely need to act on every new commit even in such cases,
// you will need to roll your own implementation, though you may still find
// Scheduler GitilesTask useful to trigger your code on new changes.
//
// 2. No hard latency guarantee. A single invocation of GitilesTask may not be
// able to process all the backlog. This is particularly true after a config
// change changes the set of watched ref. However, GitilesTask is designed
// to make continuous progress with each invocation.
type GitilesTask struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Repo is the URL of the Gitiles repository.
Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
// Refs is a list of Git references to track.
//
// Each ref can be either:
// * a fully qualified ref like "refs/heads/master" or "refs/tags/v1.2.3"
// * a regular expression with "regexp:" prefix to match multiple refs, e.g.
// "regexp:refs/heads/[^/]+" or "regexp:refs/branch-heads/\d+\.\d+", but
// the regular expression should have a literal prefix with at least two
// slashes present, e.g. "refs/release-\d+/foobar" is not allowed, because
// the literal prefix "refs/release-" contains only one slash. The regexp
// should not start with ^ or end with $ as they will be added
// automatically.
//
// Each tracked ref, either fully qualified or regexp, must match at least 1
// ref in gitiles output.
Refs []string `protobuf:"bytes,2,rep,name=refs,proto3" json:"refs,omitempty"`
// Optional path_regexps and path_regexps_exclude are lists of regular
// expressions limiting emitted triggers only to commits whose tree diff
// touches relevant files.
//
// If neither path_regexps nor path_regexps_exclude is specified (default),
// emits triggers for any commit.
// Specifying just path_regexps_exclude is not allowed.
//
// path_regexps and path_regexps_exclude rules apply on each individual commit
// independently. For each commit, a set of all filepaths referenced in Git
// commit diff is used for matching. On top of simple file additions and file
// modifications, this also includes: file removals, file moves (old and new
// path is considered), and changing of file metadata (e.g., chmod +x). This
// doesn't include directories (git doesn't track them explicitly).
//
// Triggers are emitted for a commit if only if at least 1 touched filepath
// 1. is not matched by any path_regexps_exclude,
// 2. AND is matched at least 1 path_regexps
// **subject to caveats below** for exceptional cases.
//
// Each path_regexps and path_regexps_exclude is a regular expression
// "a/b/c/.+". It should not start with ^ or end with $ as they will be added
// automatically.
//
// CAVEATS:
// 1. path_regexps: ".+"
// will NOT match commits which modify no files (aka empty commits) and
// as such differs from default case of not specifying any `path_regexps`.
// 2. Per GitilesTask doc, if a ref fast-forwards >=50 commits, only the last
// 50 commits are checked. If none of them matches any path specified here,
// no trigger is emitted, even if there is an unexamined commit which
// matches the path.
// TODO(tandrii): it's possible to improve this by examining diff
// between ref's last and new tips, but one has to worry about gitiles
// taking potentially very long time to compute it.
PathRegexps []string `protobuf:"bytes,3,rep,name=path_regexps,json=pathRegexps,proto3" json:"path_regexps,omitempty"`
PathRegexpsExclude []string `protobuf:"bytes,4,rep,name=path_regexps_exclude,json=pathRegexpsExclude,proto3" json:"path_regexps_exclude,omitempty"`
}
func (x *GitilesTask) Reset() {
*x = GitilesTask{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GitilesTask) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GitilesTask) ProtoMessage() {}
func (x *GitilesTask) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GitilesTask.ProtoReflect.Descriptor instead.
func (*GitilesTask) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{7}
}
func (x *GitilesTask) GetRepo() string {
if x != nil {
return x.Repo
}
return ""
}
func (x *GitilesTask) GetRefs() []string {
if x != nil {
return x.Refs
}
return nil
}
func (x *GitilesTask) GetPathRegexps() []string {
if x != nil {
return x.PathRegexps
}
return nil
}
func (x *GitilesTask) GetPathRegexpsExclude() []string {
if x != nil {
return x.PathRegexpsExclude
}
return nil
}
// UrlFetchTask specifies parameters for simple HTTP call.
type UrlFetchTask struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Method is HTTP method to use, such as "GET" or "POST". Default is "GET".
Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"`
// Url to send the request to.
Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
// Timeout is how long to wait for request to complete. Default is 60 sec.
TimeoutSec int32 `protobuf:"varint,3,opt,name=timeout_sec,json=timeoutSec,proto3" json:"timeout_sec,omitempty"` // TODO: add more.
}
func (x *UrlFetchTask) Reset() {
*x = UrlFetchTask{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UrlFetchTask) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UrlFetchTask) ProtoMessage() {}
func (x *UrlFetchTask) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UrlFetchTask.ProtoReflect.Descriptor instead.
func (*UrlFetchTask) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{8}
}
func (x *UrlFetchTask) GetMethod() string {
if x != nil {
return x.Method
}
return ""
}
func (x *UrlFetchTask) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
func (x *UrlFetchTask) GetTimeoutSec() int32 {
if x != nil {
return x.TimeoutSec
}
return 0
}
// BuildbucketTask specifies parameters of Buildbucket-based jobs.
type BuildbucketTask struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Server is hostname of the buildbucket service to use.
//
// Typically, "cr-buildbucket.appspot.com".
Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
// Bucket defines what bucket to add the task to.
//
// Supported formats are:
// * "<bucket>" - for a bucket in the current project.
// * "<project>:<bucket>" - for a bucket in another project.
// * "luci.<project>.<bucket>" - legacy v1 bucket name.
//
// If empty, defaults to `realm` field in the parent Job message.
Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"`
// Builder defines what builder within the bucket to launch.
Builder string `protobuf:"bytes,3,opt,name=builder,proto3" json:"builder,omitempty"`
// Properties is arbitrary "key:value" pairs describing the task.
// TODO(tandrii): which properties will be overridden if triggered?
Properties []string `protobuf:"bytes,4,rep,name=properties,proto3" json:"properties,omitempty"`
// Tags is a list of tags (as "key:value" pairs) to assign to the task.
Tags []string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty"`
}
func (x *BuildbucketTask) Reset() {
*x = BuildbucketTask{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BuildbucketTask) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BuildbucketTask) ProtoMessage() {}
func (x *BuildbucketTask) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BuildbucketTask.ProtoReflect.Descriptor instead.
func (*BuildbucketTask) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{9}
}
func (x *BuildbucketTask) GetServer() string {
if x != nil {
return x.Server
}
return ""
}
func (x *BuildbucketTask) GetBucket() string {
if x != nil {
return x.Bucket
}
return ""
}
func (x *BuildbucketTask) GetBuilder() string {
if x != nil {
return x.Builder
}
return ""
}
func (x *BuildbucketTask) GetProperties() []string {
if x != nil {
return x.Properties
}
return nil
}
func (x *BuildbucketTask) GetTags() []string {
if x != nil {
return x.Tags
}
return nil
}
// TaskDefWrapper is a union type of all possible tasks known to the scheduler.
//
// It is used internally when storing jobs in the datastore.
type TaskDefWrapper struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Noop *NoopTask `protobuf:"bytes,1,opt,name=noop,proto3" json:"noop,omitempty"`
UrlFetch *UrlFetchTask `protobuf:"bytes,2,opt,name=url_fetch,json=urlFetch,proto3" json:"url_fetch,omitempty"`
Buildbucket *BuildbucketTask `protobuf:"bytes,4,opt,name=buildbucket,proto3" json:"buildbucket,omitempty"`
Gitiles *GitilesTask `protobuf:"bytes,5,opt,name=gitiles,proto3" json:"gitiles,omitempty"`
}
func (x *TaskDefWrapper) Reset() {
*x = TaskDefWrapper{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TaskDefWrapper) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TaskDefWrapper) ProtoMessage() {}
func (x *TaskDefWrapper) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TaskDefWrapper.ProtoReflect.Descriptor instead.
func (*TaskDefWrapper) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP(), []int{10}
}
func (x *TaskDefWrapper) GetNoop() *NoopTask {
if x != nil {
return x.Noop
}
return nil
}
func (x *TaskDefWrapper) GetUrlFetch() *UrlFetchTask {
if x != nil {
return x.UrlFetch
}
return nil
}
func (x *TaskDefWrapper) GetBuildbucket() *BuildbucketTask {
if x != nil {
return x.Buildbucket
}
return nil
}
func (x *TaskDefWrapper) GetGitiles() *GitilesTask {
if x != nil {
return x.Gitiles
}
return nil
}
var File_go_chromium_org_luci_scheduler_appengine_messages_config_proto protoreflect.FileDescriptor
var file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDesc = []byte{
0x0a, 0x3e, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61,
0x67, 0x65, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x12, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x1a, 0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e,
0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x22, 0xbe, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x12, 0x33,
0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x19, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67,
0x67, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18,
0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x6c, 0x53, 0x65, 0x74, 0x42,
0x02, 0x18, 0x01, 0x52, 0x07, 0x61, 0x63, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4a, 0x04, 0x08, 0x04,
0x10, 0x05, 0x52, 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x03, 0x41, 0x63, 0x6c, 0x12, 0x2e, 0x0a, 0x04,
0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x73, 0x63, 0x68,
0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63,
0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x09, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x22, 0x2c, 0x0a, 0x04, 0x52,
0x6f, 0x6c, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x00, 0x12,
0x0d, 0x0a, 0x09, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x45, 0x52, 0x10, 0x02, 0x12, 0x09,
0x0a, 0x05, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x22, 0x47, 0x0a, 0x06, 0x41, 0x63, 0x6c,
0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x18,
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x6c, 0x52, 0x04, 0x61, 0x63,
0x6c, 0x73, 0x22, 0x94, 0x02, 0x0a, 0x10, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e,
0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3b, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04,
0x6b, 0x69, 0x6e, 0x64, 0x12, 0x3c, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x63,
0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e,
0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f,
0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x42,
0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x5f,
0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x42,
0x61, 0x73, 0x65, 0x22, 0x44, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0d, 0x0a, 0x09, 0x55,
0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x47, 0x52,
0x45, 0x45, 0x44, 0x59, 0x5f, 0x42, 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12,
0x18, 0x0a, 0x14, 0x4c, 0x4f, 0x47, 0x41, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x49, 0x43, 0x5f, 0x42,
0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0xc0, 0x03, 0x0a, 0x03, 0x4a, 0x6f,
0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
0x52, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64,
0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64,
0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18,
0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12,
0x2d, 0x0a, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e,
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
0x2e, 0x41, 0x63, 0x6c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x12, 0x1d,
0x0a, 0x08, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09,
0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x61, 0x63, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x4f, 0x0a,
0x11, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64,
0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x72, 0x69, 0x67,
0x67, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x10, 0x74, 0x72,
0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2e,
0x0a, 0x04, 0x6e, 0x6f, 0x6f, 0x70, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73,
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
0x4e, 0x6f, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x04, 0x6e, 0x6f, 0x6f, 0x70, 0x12, 0x3b,
0x0a, 0x09, 0x75, 0x72, 0x6c, 0x5f, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x65, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x72, 0x6c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x54, 0x61, 0x73,
0x6b, 0x52, 0x08, 0x75, 0x72, 0x6c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x12, 0x43, 0x0a, 0x0b, 0x62,
0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54,
0x61, 0x73, 0x6b, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x66, 0x10, 0x67, 0x22, 0x8c, 0x03, 0x0a,
0x07, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x6c,
0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x1a,
0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69,
0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69,
0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x18, 0x04,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x6c, 0x42, 0x02, 0x18, 0x01, 0x52,
0x04, 0x61, 0x63, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x08, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x65, 0x74,
0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x61, 0x63, 0x6c,
0x53, 0x65, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x69,
0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x52, 0x10, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
0x73, 0x18, 0xc8, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
0x72, 0x73, 0x12, 0x2e, 0x0a, 0x04, 0x6e, 0x6f, 0x6f, 0x70, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x2e, 0x4e, 0x6f, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x04, 0x6e, 0x6f,
0x6f, 0x70, 0x12, 0x37, 0x0a, 0x07, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x65, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x54, 0x61,
0x73, 0x6b, 0x52, 0x07, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x4c, 0x0a, 0x08, 0x4e,
0x6f, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x6c, 0x65, 0x65, 0x70,
0x5f, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x6c, 0x65, 0x65, 0x70,
0x4d, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x5f, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x72, 0x69, 0x67,
0x67, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x0b, 0x47, 0x69,
0x74, 0x69, 0x6c, 0x65, 0x73, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70,
0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x12, 0x0a,
0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x66,
0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70,
0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x67,
0x65, 0x78, 0x70, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x67,
0x65, 0x78, 0x70, 0x73, 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x04, 0x20, 0x03,
0x28, 0x09, 0x52, 0x12, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x73, 0x45,
0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x22, 0x59, 0x0a, 0x0c, 0x55, 0x72, 0x6c, 0x46, 0x65, 0x74,
0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x10,
0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x18,
0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65,
0x63, 0x22, 0x8f, 0x01, 0x0a, 0x0f, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65,
0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a,
0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62,
0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12,
0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20,
0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12,
0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74,
0x61, 0x67, 0x73, 0x22, 0x81, 0x02, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x66, 0x57,
0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x04, 0x6e, 0x6f, 0x6f, 0x70, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4e, 0x6f, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b,
0x52, 0x04, 0x6e, 0x6f, 0x6f, 0x70, 0x12, 0x3b, 0x0a, 0x09, 0x75, 0x72, 0x6c, 0x5f, 0x66, 0x65,
0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65,
0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x55, 0x72, 0x6c,
0x46, 0x65, 0x74, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x08, 0x75, 0x72, 0x6c, 0x46, 0x65,
0x74, 0x63, 0x68, 0x12, 0x43, 0x0a, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b,
0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64,
0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x75, 0x69, 0x6c,
0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0b, 0x62, 0x75, 0x69,
0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x67, 0x69, 0x74, 0x69,
0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65,
0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x69, 0x74,
0x69, 0x6c, 0x65, 0x73, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x07, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65,
0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x42, 0x7c, 0x5a, 0x31, 0x67, 0x6f, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f,
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
0x69, 0x6e, 0x65, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0xa2, 0xfe, 0x23, 0x45,
0x0a, 0x43, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2d, 0x63,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
0x74, 0x73, 0x3a, 0x6c, 0x75, 0x63, 0x69, 0x2d, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
0x72, 0x2e, 0x63, 0x66, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescOnce sync.Once
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescData = file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDesc
)
func file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescGZIP() []byte {
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescOnce.Do(func() {
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescData)
})
return file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDescData
}
var file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
var file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_goTypes = []interface{}{
(Acl_Role)(0), // 0: scheduler.config.Acl.Role
(TriggeringPolicy_Kind)(0), // 1: scheduler.config.TriggeringPolicy.Kind
(*ProjectConfig)(nil), // 2: scheduler.config.ProjectConfig
(*Acl)(nil), // 3: scheduler.config.Acl
(*AclSet)(nil), // 4: scheduler.config.AclSet
(*TriggeringPolicy)(nil), // 5: scheduler.config.TriggeringPolicy
(*Job)(nil), // 6: scheduler.config.Job
(*Trigger)(nil), // 7: scheduler.config.Trigger
(*NoopTask)(nil), // 8: scheduler.config.NoopTask
(*GitilesTask)(nil), // 9: scheduler.config.GitilesTask
(*UrlFetchTask)(nil), // 10: scheduler.config.UrlFetchTask
(*BuildbucketTask)(nil), // 11: scheduler.config.BuildbucketTask
(*TaskDefWrapper)(nil), // 12: scheduler.config.TaskDefWrapper
}
var file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_depIdxs = []int32{
6, // 0: scheduler.config.ProjectConfig.job:type_name -> scheduler.config.Job
7, // 1: scheduler.config.ProjectConfig.trigger:type_name -> scheduler.config.Trigger
4, // 2: scheduler.config.ProjectConfig.acl_sets:type_name -> scheduler.config.AclSet
0, // 3: scheduler.config.Acl.role:type_name -> scheduler.config.Acl.Role
3, // 4: scheduler.config.AclSet.acls:type_name -> scheduler.config.Acl
1, // 5: scheduler.config.TriggeringPolicy.kind:type_name -> scheduler.config.TriggeringPolicy.Kind
3, // 6: scheduler.config.Job.acls:type_name -> scheduler.config.Acl
5, // 7: scheduler.config.Job.triggering_policy:type_name -> scheduler.config.TriggeringPolicy
8, // 8: scheduler.config.Job.noop:type_name -> scheduler.config.NoopTask
10, // 9: scheduler.config.Job.url_fetch:type_name -> scheduler.config.UrlFetchTask
11, // 10: scheduler.config.Job.buildbucket:type_name -> scheduler.config.BuildbucketTask
3, // 11: scheduler.config.Trigger.acls:type_name -> scheduler.config.Acl
5, // 12: scheduler.config.Trigger.triggering_policy:type_name -> scheduler.config.TriggeringPolicy
8, // 13: scheduler.config.Trigger.noop:type_name -> scheduler.config.NoopTask
9, // 14: scheduler.config.Trigger.gitiles:type_name -> scheduler.config.GitilesTask
8, // 15: scheduler.config.TaskDefWrapper.noop:type_name -> scheduler.config.NoopTask
10, // 16: scheduler.config.TaskDefWrapper.url_fetch:type_name -> scheduler.config.UrlFetchTask
11, // 17: scheduler.config.TaskDefWrapper.buildbucket:type_name -> scheduler.config.BuildbucketTask
9, // 18: scheduler.config.TaskDefWrapper.gitiles:type_name -> scheduler.config.GitilesTask
19, // [19:19] is the sub-list for method output_type
19, // [19:19] is the sub-list for method input_type
19, // [19:19] is the sub-list for extension type_name
19, // [19:19] is the sub-list for extension extendee
0, // [0:19] is the sub-list for field type_name
}
func init() { file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_init() }
func file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_init() {
if File_go_chromium_org_luci_scheduler_appengine_messages_config_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ProjectConfig); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Acl); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AclSet); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TriggeringPolicy); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Job); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Trigger); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NoopTask); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GitilesTask); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UrlFetchTask); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BuildbucketTask); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TaskDefWrapper); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDesc,
NumEnums: 2,
NumMessages: 11,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_goTypes,
DependencyIndexes: file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_depIdxs,
EnumInfos: file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_enumTypes,
MessageInfos: file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_msgTypes,
}.Build()
File_go_chromium_org_luci_scheduler_appengine_messages_config_proto = out.File
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_rawDesc = nil
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_goTypes = nil
file_go_chromium_org_luci_scheduler_appengine_messages_config_proto_depIdxs = nil
}