go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/swarming/proto/config/pools.pb.go (about)

     1  // Copyright 2017 The LUCI Authors. All rights reserved.
     2  // Use of this source code is governed under the Apache License, Version 2.0
     3  // that can be found in the LICENSE file.
     4  
     5  // Code generated by protoc-gen-go. DO NOT EDIT.
     6  // versions:
     7  // 	protoc-gen-go v1.31.0
     8  // 	protoc        v3.21.7
     9  // source: go.chromium.org/luci/swarming/proto/config/pools.proto
    10  
    11  package configpb
    12  
    13  import (
    14  	_ "go.chromium.org/luci/common/proto"
    15  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    16  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    17  	reflect "reflect"
    18  	sync "sync"
    19  )
    20  
    21  const (
    22  	// Verify that this generated code is sufficiently up-to-date.
    23  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    24  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    25  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    26  )
    27  
    28  // Controls the scheduling algorithm used by Swarming to schedule tasks.
    29  // _gen_queue_number() in server/task_to_run.py uses this to control the
    30  // queue_number of a task, which the ordering of tasks to run is based on.
    31  type Pool_SchedulingAlgorithm int32
    32  
    33  const (
    34  	// Unknown or unspecified scheduling algorithm.
    35  	Pool_SCHEDULING_ALGORITHM_UNKNOWN Pool_SchedulingAlgorithm = 0
    36  	// First in first out (FIFO) scheduling algorithm.
    37  	//
    38  	// First task that comes in is scheduled first.
    39  	Pool_SCHEDULING_ALGORITHM_FIFO Pool_SchedulingAlgorithm = 1
    40  	// Last in first out (LIFO) scheduling algorithm.
    41  	//
    42  	// Last task that comes in is scheduled first.
    43  	Pool_SCHEDULING_ALGORITHM_LIFO Pool_SchedulingAlgorithm = 2
    44  )
    45  
    46  // Enum value maps for Pool_SchedulingAlgorithm.
    47  var (
    48  	Pool_SchedulingAlgorithm_name = map[int32]string{
    49  		0: "SCHEDULING_ALGORITHM_UNKNOWN",
    50  		1: "SCHEDULING_ALGORITHM_FIFO",
    51  		2: "SCHEDULING_ALGORITHM_LIFO",
    52  	}
    53  	Pool_SchedulingAlgorithm_value = map[string]int32{
    54  		"SCHEDULING_ALGORITHM_UNKNOWN": 0,
    55  		"SCHEDULING_ALGORITHM_FIFO":    1,
    56  		"SCHEDULING_ALGORITHM_LIFO":    2,
    57  	}
    58  )
    59  
    60  func (x Pool_SchedulingAlgorithm) Enum() *Pool_SchedulingAlgorithm {
    61  	p := new(Pool_SchedulingAlgorithm)
    62  	*p = x
    63  	return p
    64  }
    65  
    66  func (x Pool_SchedulingAlgorithm) String() string {
    67  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    68  }
    69  
    70  func (Pool_SchedulingAlgorithm) Descriptor() protoreflect.EnumDescriptor {
    71  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_enumTypes[0].Descriptor()
    72  }
    73  
    74  func (Pool_SchedulingAlgorithm) Type() protoreflect.EnumType {
    75  	return &file_go_chromium_org_luci_swarming_proto_config_pools_proto_enumTypes[0]
    76  }
    77  
    78  func (x Pool_SchedulingAlgorithm) Number() protoreflect.EnumNumber {
    79  	return protoreflect.EnumNumber(x)
    80  }
    81  
    82  // Deprecated: Use Pool_SchedulingAlgorithm.Descriptor instead.
    83  func (Pool_SchedulingAlgorithm) EnumDescriptor() ([]byte, []int) {
    84  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{1, 0}
    85  }
    86  
    87  type Pool_RBEMigration_BotModeAllocation_BotMode int32
    88  
    89  const (
    90  	Pool_RBEMigration_BotModeAllocation_UNKNOWN  Pool_RBEMigration_BotModeAllocation_BotMode = 0
    91  	Pool_RBEMigration_BotModeAllocation_SWARMING Pool_RBEMigration_BotModeAllocation_BotMode = 1
    92  	Pool_RBEMigration_BotModeAllocation_HYBRID   Pool_RBEMigration_BotModeAllocation_BotMode = 2
    93  	Pool_RBEMigration_BotModeAllocation_RBE      Pool_RBEMigration_BotModeAllocation_BotMode = 3
    94  )
    95  
    96  // Enum value maps for Pool_RBEMigration_BotModeAllocation_BotMode.
    97  var (
    98  	Pool_RBEMigration_BotModeAllocation_BotMode_name = map[int32]string{
    99  		0: "UNKNOWN",
   100  		1: "SWARMING",
   101  		2: "HYBRID",
   102  		3: "RBE",
   103  	}
   104  	Pool_RBEMigration_BotModeAllocation_BotMode_value = map[string]int32{
   105  		"UNKNOWN":  0,
   106  		"SWARMING": 1,
   107  		"HYBRID":   2,
   108  		"RBE":      3,
   109  	}
   110  )
   111  
   112  func (x Pool_RBEMigration_BotModeAllocation_BotMode) Enum() *Pool_RBEMigration_BotModeAllocation_BotMode {
   113  	p := new(Pool_RBEMigration_BotModeAllocation_BotMode)
   114  	*p = x
   115  	return p
   116  }
   117  
   118  func (x Pool_RBEMigration_BotModeAllocation_BotMode) String() string {
   119  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   120  }
   121  
   122  func (Pool_RBEMigration_BotModeAllocation_BotMode) Descriptor() protoreflect.EnumDescriptor {
   123  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_enumTypes[1].Descriptor()
   124  }
   125  
   126  func (Pool_RBEMigration_BotModeAllocation_BotMode) Type() protoreflect.EnumType {
   127  	return &file_go_chromium_org_luci_swarming_proto_config_pools_proto_enumTypes[1]
   128  }
   129  
   130  func (x Pool_RBEMigration_BotModeAllocation_BotMode) Number() protoreflect.EnumNumber {
   131  	return protoreflect.EnumNumber(x)
   132  }
   133  
   134  // Deprecated: Use Pool_RBEMigration_BotModeAllocation_BotMode.Descriptor instead.
   135  func (Pool_RBEMigration_BotModeAllocation_BotMode) EnumDescriptor() ([]byte, []int) {
   136  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{1, 0, 0, 0}
   137  }
   138  
   139  // Schema for pools.cfg service config file in luci-config.
   140  //
   141  // It defined a set of Pool objects, each one corresponding to a single Swarming
   142  // pool dimension. Each Swarming task resided in some pool, and each Swarming
   143  // bot belongs to at least one pool.
   144  //
   145  // Pools are used to isolate groups of tasks/bots from each other for security
   146  // and capacity reasons. Two different pools should not interfere with each
   147  // other at all (unless explicitly configured to share bots or accounts).
   148  type PoolsCfg struct {
   149  	state         protoimpl.MessageState
   150  	sizeCache     protoimpl.SizeCache
   151  	unknownFields protoimpl.UnknownFields
   152  
   153  	// List of all defined pools.
   154  	Pool []*Pool `protobuf:"bytes,1,rep,name=pool,proto3" json:"pool,omitempty"`
   155  	// Configures the default isolate and CIPD services to use for all pools on
   156  	// this server.
   157  	DefaultExternalServices *ExternalServices `protobuf:"bytes,6,opt,name=default_external_services,json=defaultExternalServices,proto3" json:"default_external_services,omitempty"`
   158  	// This is the "shared namespace" of task templates.
   159  	//
   160  	// Task templates allow pools to specify some property defaults (particularly
   161  	// around caches, CIPD packages and Environment variables) for tasks created
   162  	// within the pool. These templates can have 'include' statements, and those
   163  	// include statements draw from this namespace.
   164  	//
   165  	// Swarming will do a 2-pass parse of these so order doesn't matter (i.e. If
   166  	// A includes B, but is defined B-then-A, it's not an error).
   167  	TaskTemplate []*TaskTemplate `protobuf:"bytes,3,rep,name=task_template,json=taskTemplate,proto3" json:"task_template,omitempty"`
   168  	// This is the "shared namespace" of deployments.
   169  	//
   170  	// When pools specify a task_template_deployment, it draws from this
   171  	// namespace.
   172  	TaskTemplateDeployment []*TaskTemplateDeployment `protobuf:"bytes,4,rep,name=task_template_deployment,json=taskTemplateDeployment,proto3" json:"task_template_deployment,omitempty"`
   173  	// Defines about how to monitor bots in a pool. Each pool above may refer to
   174  	// one of the BotMonitoring message by name, which permits reusing
   175  	// BotMonitoring definitions.
   176  	BotMonitoring []*BotMonitoring `protobuf:"bytes,5,rep,name=bot_monitoring,json=botMonitoring,proto3" json:"bot_monitoring,omitempty"`
   177  }
   178  
   179  func (x *PoolsCfg) Reset() {
   180  	*x = PoolsCfg{}
   181  	if protoimpl.UnsafeEnabled {
   182  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[0]
   183  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   184  		ms.StoreMessageInfo(mi)
   185  	}
   186  }
   187  
   188  func (x *PoolsCfg) String() string {
   189  	return protoimpl.X.MessageStringOf(x)
   190  }
   191  
   192  func (*PoolsCfg) ProtoMessage() {}
   193  
   194  func (x *PoolsCfg) ProtoReflect() protoreflect.Message {
   195  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[0]
   196  	if protoimpl.UnsafeEnabled && x != nil {
   197  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   198  		if ms.LoadMessageInfo() == nil {
   199  			ms.StoreMessageInfo(mi)
   200  		}
   201  		return ms
   202  	}
   203  	return mi.MessageOf(x)
   204  }
   205  
   206  // Deprecated: Use PoolsCfg.ProtoReflect.Descriptor instead.
   207  func (*PoolsCfg) Descriptor() ([]byte, []int) {
   208  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{0}
   209  }
   210  
   211  func (x *PoolsCfg) GetPool() []*Pool {
   212  	if x != nil {
   213  		return x.Pool
   214  	}
   215  	return nil
   216  }
   217  
   218  func (x *PoolsCfg) GetDefaultExternalServices() *ExternalServices {
   219  	if x != nil {
   220  		return x.DefaultExternalServices
   221  	}
   222  	return nil
   223  }
   224  
   225  func (x *PoolsCfg) GetTaskTemplate() []*TaskTemplate {
   226  	if x != nil {
   227  		return x.TaskTemplate
   228  	}
   229  	return nil
   230  }
   231  
   232  func (x *PoolsCfg) GetTaskTemplateDeployment() []*TaskTemplateDeployment {
   233  	if x != nil {
   234  		return x.TaskTemplateDeployment
   235  	}
   236  	return nil
   237  }
   238  
   239  func (x *PoolsCfg) GetBotMonitoring() []*BotMonitoring {
   240  	if x != nil {
   241  		return x.BotMonitoring
   242  	}
   243  	return nil
   244  }
   245  
   246  // Properties of a single pool or a bunch of identically configured pools.
   247  //
   248  // In particular contains authorization configuration.
   249  type Pool struct {
   250  	state         protoimpl.MessageState
   251  	sizeCache     protoimpl.SizeCache
   252  	unknownFields protoimpl.UnknownFields
   253  
   254  	// Names of the pools this config applies to.
   255  	//
   256  	// Tasks target the pool by specifying its name as 'pool' dimension, thus
   257  	// names here should be valid dimension value.
   258  	Name []string `protobuf:"bytes,1,rep,name=name,proto3" json:"name,omitempty"`
   259  	// Contact information for people that own this pool.
   260  	//
   261  	// Not used in any ACLs, just informational field.
   262  	Owners []string `protobuf:"bytes,2,rep,name=owners,proto3" json:"owners,omitempty"`
   263  	// Defines who can schedule tasks in this pool.
   264  	//
   265  	// The checks here act as a second authorization layer, consulted after the
   266  	// first server-global one (defined based on groups set in settings.cfg, see
   267  	// AuthSettings in config.proto).
   268  	Schedulers *Schedulers `protobuf:"bytes,3,opt,name=schedulers,proto3" json:"schedulers,omitempty"`
   269  	// Types that are assignable to TaskDeploymentScheme:
   270  	//
   271  	//	*Pool_TaskTemplateDeployment
   272  	//	*Pool_TaskTemplateDeploymentInline
   273  	TaskDeploymentScheme isPool_TaskDeploymentScheme `protobuf_oneof:"task_deployment_scheme"`
   274  	// Refer to one bot_monitoring at the file level by name.
   275  	BotMonitoring string `protobuf:"bytes,8,opt,name=bot_monitoring,json=botMonitoring,proto3" json:"bot_monitoring,omitempty"`
   276  	// If specified, this is the description of the external schedulers to be used
   277  	// for tasks and bots for this pool that match the dimension set of a scheduler.
   278  	// For a given task or bot, the first entry in this list that matches based on
   279  	// dimension eligibility will be used.
   280  	ExternalSchedulers []*ExternalSchedulerConfig `protobuf:"bytes,9,rep,name=external_schedulers,json=externalSchedulers,proto3" json:"external_schedulers,omitempty"`
   281  	// Realm name that the pool is associated with.
   282  	//
   283  	// e.g.
   284  	// 'infra:pool/flex/try' for 'luci.flex.try' pool
   285  	//
   286  	// See also
   287  	// https://chromium.googlesource.com/infra/luci/luci-go/+/HEAD/server/auth/service/protocol/components/auth/proto/realms.proto
   288  	Realm string `protobuf:"bytes,10,opt,name=realm,proto3" json:"realm,omitempty"`
   289  	// Enforcements of permissions can be controlled by pool during migration
   290  	// from legacy ACLs configs to Realms configs.
   291  	//
   292  	// When scheduling tasks:
   293  	//   - If a task doesn't have a realm (i.e. it is a legacy task), it will be
   294  	//     assigned `default_task_realm` and only permissions listed here will be
   295  	//     enforced. If some permission is not enforced, Swarming will use a
   296  	//     legacy ACL check for it instead.
   297  	//   - If a task has a realm (i.e. it is a modern task aware of realms), all
   298  	//     permissions will always be enforced for it. Legacy ACLs will not be
   299  	//     used at all.
   300  	//
   301  	// This field is not used for permissions not related to task scheduling.
   302  	//
   303  	// This field will be deprecated after migration. All scheduling permissions
   304  	// will be enforced at all times.
   305  	EnforcedRealmPermissions []RealmPermission `protobuf:"varint,11,rep,packed,name=enforced_realm_permissions,json=enforcedRealmPermissions,proto3,enum=swarming.config.RealmPermission" json:"enforced_realm_permissions,omitempty"`
   306  	// Realm name to use for tasks if they don't have a realm associated.
   307  	DefaultTaskRealm    string                   `protobuf:"bytes,12,opt,name=default_task_realm,json=defaultTaskRealm,proto3" json:"default_task_realm,omitempty"`
   308  	RbeMigration        *Pool_RBEMigration       `protobuf:"bytes,13,opt,name=rbe_migration,json=rbeMigration,proto3" json:"rbe_migration,omitempty"`
   309  	SchedulingAlgorithm Pool_SchedulingAlgorithm `protobuf:"varint,14,opt,name=scheduling_algorithm,json=schedulingAlgorithm,proto3,enum=swarming.config.Pool_SchedulingAlgorithm" json:"scheduling_algorithm,omitempty"`
   310  }
   311  
   312  func (x *Pool) Reset() {
   313  	*x = Pool{}
   314  	if protoimpl.UnsafeEnabled {
   315  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[1]
   316  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   317  		ms.StoreMessageInfo(mi)
   318  	}
   319  }
   320  
   321  func (x *Pool) String() string {
   322  	return protoimpl.X.MessageStringOf(x)
   323  }
   324  
   325  func (*Pool) ProtoMessage() {}
   326  
   327  func (x *Pool) ProtoReflect() protoreflect.Message {
   328  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[1]
   329  	if protoimpl.UnsafeEnabled && x != nil {
   330  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   331  		if ms.LoadMessageInfo() == nil {
   332  			ms.StoreMessageInfo(mi)
   333  		}
   334  		return ms
   335  	}
   336  	return mi.MessageOf(x)
   337  }
   338  
   339  // Deprecated: Use Pool.ProtoReflect.Descriptor instead.
   340  func (*Pool) Descriptor() ([]byte, []int) {
   341  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{1}
   342  }
   343  
   344  func (x *Pool) GetName() []string {
   345  	if x != nil {
   346  		return x.Name
   347  	}
   348  	return nil
   349  }
   350  
   351  func (x *Pool) GetOwners() []string {
   352  	if x != nil {
   353  		return x.Owners
   354  	}
   355  	return nil
   356  }
   357  
   358  func (x *Pool) GetSchedulers() *Schedulers {
   359  	if x != nil {
   360  		return x.Schedulers
   361  	}
   362  	return nil
   363  }
   364  
   365  func (m *Pool) GetTaskDeploymentScheme() isPool_TaskDeploymentScheme {
   366  	if m != nil {
   367  		return m.TaskDeploymentScheme
   368  	}
   369  	return nil
   370  }
   371  
   372  func (x *Pool) GetTaskTemplateDeployment() string {
   373  	if x, ok := x.GetTaskDeploymentScheme().(*Pool_TaskTemplateDeployment); ok {
   374  		return x.TaskTemplateDeployment
   375  	}
   376  	return ""
   377  }
   378  
   379  func (x *Pool) GetTaskTemplateDeploymentInline() *TaskTemplateDeployment {
   380  	if x, ok := x.GetTaskDeploymentScheme().(*Pool_TaskTemplateDeploymentInline); ok {
   381  		return x.TaskTemplateDeploymentInline
   382  	}
   383  	return nil
   384  }
   385  
   386  func (x *Pool) GetBotMonitoring() string {
   387  	if x != nil {
   388  		return x.BotMonitoring
   389  	}
   390  	return ""
   391  }
   392  
   393  func (x *Pool) GetExternalSchedulers() []*ExternalSchedulerConfig {
   394  	if x != nil {
   395  		return x.ExternalSchedulers
   396  	}
   397  	return nil
   398  }
   399  
   400  func (x *Pool) GetRealm() string {
   401  	if x != nil {
   402  		return x.Realm
   403  	}
   404  	return ""
   405  }
   406  
   407  func (x *Pool) GetEnforcedRealmPermissions() []RealmPermission {
   408  	if x != nil {
   409  		return x.EnforcedRealmPermissions
   410  	}
   411  	return nil
   412  }
   413  
   414  func (x *Pool) GetDefaultTaskRealm() string {
   415  	if x != nil {
   416  		return x.DefaultTaskRealm
   417  	}
   418  	return ""
   419  }
   420  
   421  func (x *Pool) GetRbeMigration() *Pool_RBEMigration {
   422  	if x != nil {
   423  		return x.RbeMigration
   424  	}
   425  	return nil
   426  }
   427  
   428  func (x *Pool) GetSchedulingAlgorithm() Pool_SchedulingAlgorithm {
   429  	if x != nil {
   430  		return x.SchedulingAlgorithm
   431  	}
   432  	return Pool_SCHEDULING_ALGORITHM_UNKNOWN
   433  }
   434  
   435  type isPool_TaskDeploymentScheme interface {
   436  	isPool_TaskDeploymentScheme()
   437  }
   438  
   439  type Pool_TaskTemplateDeployment struct {
   440  	// Most Pools will include a task_template_deployment by name.
   441  	TaskTemplateDeployment string `protobuf:"bytes,6,opt,name=task_template_deployment,json=taskTemplateDeployment,proto3,oneof"`
   442  }
   443  
   444  type Pool_TaskTemplateDeploymentInline struct {
   445  	// However, pools which substantially differ from other ones can define an
   446  	// entire deployment inline without putting it in the shared namespace.
   447  	//
   448  	// The name fields in this deployment and any embedded task_templates must
   449  	// not be specified.
   450  	TaskTemplateDeploymentInline *TaskTemplateDeployment `protobuf:"bytes,7,opt,name=task_template_deployment_inline,json=taskTemplateDeploymentInline,proto3,oneof"`
   451  }
   452  
   453  func (*Pool_TaskTemplateDeployment) isPool_TaskDeploymentScheme() {}
   454  
   455  func (*Pool_TaskTemplateDeploymentInline) isPool_TaskDeploymentScheme() {}
   456  
   457  // Defines who can schedule tasks in a pool.
   458  type Schedulers struct {
   459  	state         protoimpl.MessageState
   460  	sizeCache     protoimpl.SizeCache
   461  	unknownFields protoimpl.UnknownFields
   462  
   463  	// Emails of individual end-users.
   464  	//
   465  	// Useful to avoid creating one-person groups.
   466  	User []string `protobuf:"bytes,1,rep,name=user,proto3" json:"user,omitempty"`
   467  	// List of groups with end-users.
   468  	Group []string `protobuf:"bytes,2,rep,name=group,proto3" json:"group,omitempty"`
   469  	// See TrustedDelegation comment.
   470  	TrustedDelegation []*TrustedDelegation `protobuf:"bytes,3,rep,name=trusted_delegation,json=trustedDelegation,proto3" json:"trusted_delegation,omitempty"`
   471  }
   472  
   473  func (x *Schedulers) Reset() {
   474  	*x = Schedulers{}
   475  	if protoimpl.UnsafeEnabled {
   476  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[2]
   477  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   478  		ms.StoreMessageInfo(mi)
   479  	}
   480  }
   481  
   482  func (x *Schedulers) String() string {
   483  	return protoimpl.X.MessageStringOf(x)
   484  }
   485  
   486  func (*Schedulers) ProtoMessage() {}
   487  
   488  func (x *Schedulers) ProtoReflect() protoreflect.Message {
   489  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[2]
   490  	if protoimpl.UnsafeEnabled && x != nil {
   491  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   492  		if ms.LoadMessageInfo() == nil {
   493  			ms.StoreMessageInfo(mi)
   494  		}
   495  		return ms
   496  	}
   497  	return mi.MessageOf(x)
   498  }
   499  
   500  // Deprecated: Use Schedulers.ProtoReflect.Descriptor instead.
   501  func (*Schedulers) Descriptor() ([]byte, []int) {
   502  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{2}
   503  }
   504  
   505  func (x *Schedulers) GetUser() []string {
   506  	if x != nil {
   507  		return x.User
   508  	}
   509  	return nil
   510  }
   511  
   512  func (x *Schedulers) GetGroup() []string {
   513  	if x != nil {
   514  		return x.Group
   515  	}
   516  	return nil
   517  }
   518  
   519  func (x *Schedulers) GetTrustedDelegation() []*TrustedDelegation {
   520  	if x != nil {
   521  		return x.TrustedDelegation
   522  	}
   523  	return nil
   524  }
   525  
   526  // Defines a delegatee trusted to make authorization decisions for who can use
   527  // a pool.
   528  //
   529  // This is based on LUCI delegation protocol. Imagine an end user U calling
   530  // Swarming through an intermediary service X. In this case U is a delegator and
   531  // X is a delegatee. When X calls Swarming, it makes an RPC to the token server
   532  // to make a delegation token that says "<X can call Swarming on behalf of U>".
   533  //
   534  // This token is then sent to the Swarming with the RPC. Swarming sees that
   535  // the direct peer it's talking to is X, but the call should be performed under
   536  // the authority of U.
   537  //
   538  // We extend this to also allow X make authorization decisions about whether U
   539  // can use particular Swarming resource or not. The result of this decision is
   540  // encoded in the delegation token as a set of "key:value" tags. Swarming then
   541  // can treat presence of such tags as a signal that the particular call is
   542  // allowed.
   543  //
   544  // In this scenario we totally trust X to make the correct decision.
   545  type TrustedDelegation struct {
   546  	state         protoimpl.MessageState
   547  	sizeCache     protoimpl.SizeCache
   548  	unknownFields protoimpl.UnknownFields
   549  
   550  	// Email of a trusted delegatee (the one who's minting the delegation token).
   551  	PeerId string `protobuf:"bytes,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"`
   552  	// A list of tags to expected in the delegation token to allow the usage of
   553  	// a pool.
   554  	//
   555  	// Presence of any of the specified tags are enough. The format of these tags
   556  	// generally depends on what service is doing the delegation.
   557  	RequireAnyOf *TrustedDelegation_TagList `protobuf:"bytes,2,opt,name=require_any_of,json=requireAnyOf,proto3" json:"require_any_of,omitempty"`
   558  }
   559  
   560  func (x *TrustedDelegation) Reset() {
   561  	*x = TrustedDelegation{}
   562  	if protoimpl.UnsafeEnabled {
   563  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[3]
   564  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   565  		ms.StoreMessageInfo(mi)
   566  	}
   567  }
   568  
   569  func (x *TrustedDelegation) String() string {
   570  	return protoimpl.X.MessageStringOf(x)
   571  }
   572  
   573  func (*TrustedDelegation) ProtoMessage() {}
   574  
   575  func (x *TrustedDelegation) ProtoReflect() protoreflect.Message {
   576  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[3]
   577  	if protoimpl.UnsafeEnabled && x != nil {
   578  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   579  		if ms.LoadMessageInfo() == nil {
   580  			ms.StoreMessageInfo(mi)
   581  		}
   582  		return ms
   583  	}
   584  	return mi.MessageOf(x)
   585  }
   586  
   587  // Deprecated: Use TrustedDelegation.ProtoReflect.Descriptor instead.
   588  func (*TrustedDelegation) Descriptor() ([]byte, []int) {
   589  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{3}
   590  }
   591  
   592  func (x *TrustedDelegation) GetPeerId() string {
   593  	if x != nil {
   594  		return x.PeerId
   595  	}
   596  	return ""
   597  }
   598  
   599  func (x *TrustedDelegation) GetRequireAnyOf() *TrustedDelegation_TagList {
   600  	if x != nil {
   601  		return x.RequireAnyOf
   602  	}
   603  	return nil
   604  }
   605  
   606  // A TaskTemplate describes a set of properties (caches, CIPD packages and
   607  // envvars) which apply to tasks created within a swarming pool.
   608  //
   609  // TaskTemplates may either be defined inline inside of
   610  // a TaskTemplateDeployment, or in "shared namespace" of the
   611  // PoolsCfg.task_template field.
   612  //
   613  // TaskTemplates may also include other TaskTemplates by name from the "shared
   614  // namespace" in PoolsCfg. Swarming calculates the final value for a given
   615  // TaskTemplate by applying all of its `include` fields depth-first, and then by
   616  // applying the properties in the body of the TaskTemplate. Includes may never
   617  // be repeated, including transitively. This means that "diamond shaped
   618  // dependencies" are forbidden (i.e. A<-B<-D and A<-C<-D would be forbidden
   619  // because `A` is included in `D` twice (via both C and B)).
   620  type TaskTemplate struct {
   621  	state         protoimpl.MessageState
   622  	sizeCache     protoimpl.SizeCache
   623  	unknownFields protoimpl.UnknownFields
   624  
   625  	// This gives the template a name for the 'include' field below. This only
   626  	// applies to templates defined within the PoolsCfg message (i.e. the
   627  	// top-level message), not to templates inlined into a TaskTemplateDeployment.
   628  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   629  	// Includes properties from the named other TaskTemplate. This can only
   630  	// include templates defined in the top-level PoolsCfg message.
   631  	Include []string `protobuf:"bytes,2,rep,name=include,proto3" json:"include,omitempty"`
   632  	// CacheEntries are keyed by `name`, and `path` is overridden wholesale.
   633  	//
   634  	// It is illegal to have any TaskTemplate with multiple cache entries mapping
   635  	// to the same path. It is illegal to have any cache paths overlap with cipd
   636  	// package paths.
   637  	Cache []*TaskTemplate_CacheEntry `protobuf:"bytes,3,rep,name=cache,proto3" json:"cache,omitempty"`
   638  	// CipdPackages are keyed by (path, name), and `version` is overridden
   639  	// wholesale.
   640  	//
   641  	// It is illegal to have any cipd paths overlap with cache entry paths.
   642  	CipdPackage []*TaskTemplate_CipdPackage `protobuf:"bytes,4,rep,name=cipd_package,json=cipdPackage,proto3" json:"cipd_package,omitempty"`
   643  	// Env vars are keyed by the `var` field,
   644  	//
   645  	// `value` fields overwrite included values.
   646  	// `soft` fields overwrite included values.
   647  	// `prefix` fields append to included values. For example, Doing:
   648  	//
   649  	//	   {name: "1" env { var: "PATH" prefix: "a" }}
   650  	//	   {name: "2" env { var: "PATH" prefix: "b" }}
   651  	//	   {name: "3" include: "1" include: "2" }
   652  	//
   653  	//	Is equivalent to:
   654  	//
   655  	//	   {name: "3" env { var: "PATH" prefix: "a" prefix: "b" }}
   656  	//
   657  	// Full Example:
   658  	//
   659  	//	env {
   660  	//	  var: "PATH"
   661  	//	  value: "/disable_system_path"
   662  	//	  prefix: "a"
   663  	//	  prefix: "b"
   664  	//	  prefix: "c"
   665  	//	  soft: true
   666  	//	}
   667  	//	env {
   668  	//	  var: "OTHER"
   669  	//	  value: "1"
   670  	//	}
   671  	//	env {
   672  	//	  var: "PYTHONPATH"
   673  	//	  prefix: "a"
   674  	//	}
   675  	//
   676  	// Results in, essentially:
   677  	//
   678  	//	$PATH=/path/to/a:/path/to/b:/path/to/c:/disable_system_path
   679  	//	$OTHER=1
   680  	//	$PYTHONPATH=/path/to/a:$PYTHONPATH
   681  	Env []*TaskTemplate_Env `protobuf:"bytes,5,rep,name=env,proto3" json:"env,omitempty"`
   682  }
   683  
   684  func (x *TaskTemplate) Reset() {
   685  	*x = TaskTemplate{}
   686  	if protoimpl.UnsafeEnabled {
   687  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[4]
   688  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   689  		ms.StoreMessageInfo(mi)
   690  	}
   691  }
   692  
   693  func (x *TaskTemplate) String() string {
   694  	return protoimpl.X.MessageStringOf(x)
   695  }
   696  
   697  func (*TaskTemplate) ProtoMessage() {}
   698  
   699  func (x *TaskTemplate) ProtoReflect() protoreflect.Message {
   700  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[4]
   701  	if protoimpl.UnsafeEnabled && x != nil {
   702  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   703  		if ms.LoadMessageInfo() == nil {
   704  			ms.StoreMessageInfo(mi)
   705  		}
   706  		return ms
   707  	}
   708  	return mi.MessageOf(x)
   709  }
   710  
   711  // Deprecated: Use TaskTemplate.ProtoReflect.Descriptor instead.
   712  func (*TaskTemplate) Descriptor() ([]byte, []int) {
   713  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{4}
   714  }
   715  
   716  func (x *TaskTemplate) GetName() string {
   717  	if x != nil {
   718  		return x.Name
   719  	}
   720  	return ""
   721  }
   722  
   723  func (x *TaskTemplate) GetInclude() []string {
   724  	if x != nil {
   725  		return x.Include
   726  	}
   727  	return nil
   728  }
   729  
   730  func (x *TaskTemplate) GetCache() []*TaskTemplate_CacheEntry {
   731  	if x != nil {
   732  		return x.Cache
   733  	}
   734  	return nil
   735  }
   736  
   737  func (x *TaskTemplate) GetCipdPackage() []*TaskTemplate_CipdPackage {
   738  	if x != nil {
   739  		return x.CipdPackage
   740  	}
   741  	return nil
   742  }
   743  
   744  func (x *TaskTemplate) GetEnv() []*TaskTemplate_Env {
   745  	if x != nil {
   746  		return x.Env
   747  	}
   748  	return nil
   749  }
   750  
   751  // This is a tuple of (prod template, canary template, canary_chance), so that it
   752  // can be referenced from multiple pools simultaneously as a single unit.
   753  type TaskTemplateDeployment struct {
   754  	state         protoimpl.MessageState
   755  	sizeCache     protoimpl.SizeCache
   756  	unknownFields protoimpl.UnknownFields
   757  
   758  	// This gives the deployment a name for the 'task_template_deployment' field
   759  	// in PoolCfg.
   760  	//
   761  	// When this TaskTemplateDeployment is inlined into another message (e.g.
   762  	// `TaskTemplate.task_template_deployment_inline`), the name field must not be
   763  	// specified.
   764  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   765  	// Most Deployments will have a TaskTemplate with just a single include
   766  	// directive.
   767  	//
   768  	// However, pools which substantially differ from other ones could define an
   769  	// entire template inline without being forced to put it in the shared
   770  	// namespace.
   771  	//
   772  	// The name field in this template (and the canary template) must not be
   773  	// specified.
   774  	Prod *TaskTemplate `protobuf:"bytes,2,opt,name=prod,proto3" json:"prod,omitempty"`
   775  	// The canary template can be defined like the `prod` field above. If this is
   776  	// defined and `canary_chance` is greater than 0, then this template will be
   777  	// selected instead of `prod`.
   778  	Canary *TaskTemplate `protobuf:"bytes,3,opt,name=canary,proto3" json:"canary,omitempty"`
   779  	// range [0, 9999] where each tick corresponds to %0.01 chance of selecting
   780  	// the template. Exactly 0 means 'canary is disabled', meaning that tasks
   781  	// in this pool will always get the prod template.
   782  	//
   783  	// Examples:
   784  	//   - 1     ".01% chance of picking canary"
   785  	//   - 10    ".1% chance of picking canary"
   786  	//   - 100   "1% chance of picking canary"
   787  	//   - 1000  "10% chance of picking canary"
   788  	//   - 5000  "50% chance of picking canary"
   789  	//   - 7500  "75% chance of picking canary"
   790  	//   - 9999  "99.99% chance of picking canary"
   791  	CanaryChance int32 `protobuf:"varint,4,opt,name=canary_chance,json=canaryChance,proto3" json:"canary_chance,omitempty"`
   792  }
   793  
   794  func (x *TaskTemplateDeployment) Reset() {
   795  	*x = TaskTemplateDeployment{}
   796  	if protoimpl.UnsafeEnabled {
   797  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[5]
   798  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   799  		ms.StoreMessageInfo(mi)
   800  	}
   801  }
   802  
   803  func (x *TaskTemplateDeployment) String() string {
   804  	return protoimpl.X.MessageStringOf(x)
   805  }
   806  
   807  func (*TaskTemplateDeployment) ProtoMessage() {}
   808  
   809  func (x *TaskTemplateDeployment) ProtoReflect() protoreflect.Message {
   810  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[5]
   811  	if protoimpl.UnsafeEnabled && x != nil {
   812  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   813  		if ms.LoadMessageInfo() == nil {
   814  			ms.StoreMessageInfo(mi)
   815  		}
   816  		return ms
   817  	}
   818  	return mi.MessageOf(x)
   819  }
   820  
   821  // Deprecated: Use TaskTemplateDeployment.ProtoReflect.Descriptor instead.
   822  func (*TaskTemplateDeployment) Descriptor() ([]byte, []int) {
   823  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{5}
   824  }
   825  
   826  func (x *TaskTemplateDeployment) GetName() string {
   827  	if x != nil {
   828  		return x.Name
   829  	}
   830  	return ""
   831  }
   832  
   833  func (x *TaskTemplateDeployment) GetProd() *TaskTemplate {
   834  	if x != nil {
   835  		return x.Prod
   836  	}
   837  	return nil
   838  }
   839  
   840  func (x *TaskTemplateDeployment) GetCanary() *TaskTemplate {
   841  	if x != nil {
   842  		return x.Canary
   843  	}
   844  	return nil
   845  }
   846  
   847  func (x *TaskTemplateDeployment) GetCanaryChance() int32 {
   848  	if x != nil {
   849  		return x.CanaryChance
   850  	}
   851  	return 0
   852  }
   853  
   854  // Defines about how to monitor bots.
   855  type BotMonitoring struct {
   856  	state         protoimpl.MessageState
   857  	sizeCache     protoimpl.SizeCache
   858  	unknownFields protoimpl.UnknownFields
   859  
   860  	// Name is used by Pool to describe how to monitor bots in this pool.
   861  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   862  	// Dimension keys to be used to bucket the bots.
   863  	//
   864  	// The algorithm for a key with multiple values is:
   865  	//
   866  	//	def simplify(values):
   867  	//	  values = sorted(values)
   868  	//	  return '|'.join(
   869  	//	      v for i, v in enumerate(values)
   870  	//	      if not any(v.startswith(value) for v in values[i+1:]))
   871  	//
   872  	// For example, if 'os' is specified and a bot has the values
   873  	// ['Linux', 'Ubuntu', 'Ubuntu-16.04'], the bucket value used for this bot
   874  	// will be 'Linux|Ubuntu-16.04'.
   875  	//
   876  	// Then whole algorithm then works for each key:
   877  	//
   878  	//	def bucket(keys, bot_dimensions):
   879  	//	  return ';'.join(
   880  	//	      '%s:%s' % (key, simplify(bot_dimensions.get(values, []))
   881  	//	      for key in keys)
   882  	//
   883  	// so the end result may look like: 'os:Linux|Ubuntu-16.04;pool:Testers'.
   884  	//
   885  	// More precisely, when this is used, the other bot dimensions are ignored.
   886  	// 'pool' is always implicit.
   887  	DimensionKey []string `protobuf:"bytes,2,rep,name=dimension_key,json=dimensionKey,proto3" json:"dimension_key,omitempty"`
   888  }
   889  
   890  func (x *BotMonitoring) Reset() {
   891  	*x = BotMonitoring{}
   892  	if protoimpl.UnsafeEnabled {
   893  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[6]
   894  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   895  		ms.StoreMessageInfo(mi)
   896  	}
   897  }
   898  
   899  func (x *BotMonitoring) String() string {
   900  	return protoimpl.X.MessageStringOf(x)
   901  }
   902  
   903  func (*BotMonitoring) ProtoMessage() {}
   904  
   905  func (x *BotMonitoring) ProtoReflect() protoreflect.Message {
   906  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[6]
   907  	if protoimpl.UnsafeEnabled && x != nil {
   908  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   909  		if ms.LoadMessageInfo() == nil {
   910  			ms.StoreMessageInfo(mi)
   911  		}
   912  		return ms
   913  	}
   914  	return mi.MessageOf(x)
   915  }
   916  
   917  // Deprecated: Use BotMonitoring.ProtoReflect.Descriptor instead.
   918  func (*BotMonitoring) Descriptor() ([]byte, []int) {
   919  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{6}
   920  }
   921  
   922  func (x *BotMonitoring) GetName() string {
   923  	if x != nil {
   924  		return x.Name
   925  	}
   926  	return ""
   927  }
   928  
   929  func (x *BotMonitoring) GetDimensionKey() []string {
   930  	if x != nil {
   931  		return x.DimensionKey
   932  	}
   933  	return nil
   934  }
   935  
   936  // Describes an external scheduler used by a particular swarming pool and
   937  // dimension set, via the external scheduler API.
   938  type ExternalSchedulerConfig struct {
   939  	state         protoimpl.MessageState
   940  	sizeCache     protoimpl.SizeCache
   941  	unknownFields protoimpl.UnknownFields
   942  
   943  	// Service address of external scheduler.
   944  	Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
   945  	// Scheduler id within the external scheduler service to use. This value
   946  	// is opaque to swarming.
   947  	Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
   948  	// Dimensions is a list of dimension strings in "key:value" format (e.g.
   949  	// ["os:foo", "featureX:bar"]) that determines eligibility for a bot or task
   950  	// to use this external scheduler. In particular:
   951  	// - a bot will be eligible if it contains all of these dimensions.
   952  	// - a task will be eligible if all its slices contain all these dimensions.
   953  	//
   954  	// Note of care: if this list is empty, that means all requests in the pool
   955  	// are eligible to be forwarded to it.
   956  	//
   957  	// Note: To be deprecated, in favor of: any_dimensions and all_dimensions.
   958  	Dimensions []string `protobuf:"bytes,3,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
   959  	// If not enabled, this external scheduler config will be ignored. This
   960  	// makes it safer to add new configs (the naive approach of adding a config
   961  	// with empty dimentions list would cause all requests to be routed to
   962  	// that config).
   963  	Enabled bool `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"`
   964  	// Deprecated: Marked as deprecated in go.chromium.org/luci/swarming/proto/config/pools.proto.
   965  	FallbackWhenEmpty bool `protobuf:"varint,5,opt,name=fallback_when_empty,json=fallbackWhenEmpty,proto3" json:"fallback_when_empty,omitempty"`
   966  	// A task or bot must have all of these dimensions in order to match this
   967  	// dimension set.
   968  	//
   969  	// Note: Support not yet implemented.
   970  	AllDimensions []string `protobuf:"bytes,6,rep,name=all_dimensions,json=allDimensions,proto3" json:"all_dimensions,omitempty"`
   971  	// If any_dimensions is defined, a task or bot must have any of these
   972  	// dimensions in order to match this dimension set.
   973  	//
   974  	// Note: Support not yet implemented.
   975  	AnyDimensions []string `protobuf:"bytes,7,rep,name=any_dimensions,json=anyDimensions,proto3" json:"any_dimensions,omitempty"`
   976  	// If true, allows the swarming native scheduler to reap tasks that would
   977  	// otherwise be owned by this external scheduler, if the external scheduler
   978  	// returns no results.
   979  	//
   980  	// This field should be enabled temporarily when first turning on a new
   981  	// external scheduler config, to allow tasks that existing prior to that time
   982  	// to still have a chance to run. After prior tasks have aged out of the
   983  	// system, this flag should be disabled, to get stricter consistency between
   984  	// swarming's state and external scheduler's state.
   985  	AllowEsFallback bool `protobuf:"varint,8,opt,name=allow_es_fallback,json=allowEsFallback,proto3" json:"allow_es_fallback,omitempty"`
   986  }
   987  
   988  func (x *ExternalSchedulerConfig) Reset() {
   989  	*x = ExternalSchedulerConfig{}
   990  	if protoimpl.UnsafeEnabled {
   991  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[7]
   992  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   993  		ms.StoreMessageInfo(mi)
   994  	}
   995  }
   996  
   997  func (x *ExternalSchedulerConfig) String() string {
   998  	return protoimpl.X.MessageStringOf(x)
   999  }
  1000  
  1001  func (*ExternalSchedulerConfig) ProtoMessage() {}
  1002  
  1003  func (x *ExternalSchedulerConfig) ProtoReflect() protoreflect.Message {
  1004  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[7]
  1005  	if protoimpl.UnsafeEnabled && x != nil {
  1006  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1007  		if ms.LoadMessageInfo() == nil {
  1008  			ms.StoreMessageInfo(mi)
  1009  		}
  1010  		return ms
  1011  	}
  1012  	return mi.MessageOf(x)
  1013  }
  1014  
  1015  // Deprecated: Use ExternalSchedulerConfig.ProtoReflect.Descriptor instead.
  1016  func (*ExternalSchedulerConfig) Descriptor() ([]byte, []int) {
  1017  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{7}
  1018  }
  1019  
  1020  func (x *ExternalSchedulerConfig) GetAddress() string {
  1021  	if x != nil {
  1022  		return x.Address
  1023  	}
  1024  	return ""
  1025  }
  1026  
  1027  func (x *ExternalSchedulerConfig) GetId() string {
  1028  	if x != nil {
  1029  		return x.Id
  1030  	}
  1031  	return ""
  1032  }
  1033  
  1034  func (x *ExternalSchedulerConfig) GetDimensions() []string {
  1035  	if x != nil {
  1036  		return x.Dimensions
  1037  	}
  1038  	return nil
  1039  }
  1040  
  1041  func (x *ExternalSchedulerConfig) GetEnabled() bool {
  1042  	if x != nil {
  1043  		return x.Enabled
  1044  	}
  1045  	return false
  1046  }
  1047  
  1048  // Deprecated: Marked as deprecated in go.chromium.org/luci/swarming/proto/config/pools.proto.
  1049  func (x *ExternalSchedulerConfig) GetFallbackWhenEmpty() bool {
  1050  	if x != nil {
  1051  		return x.FallbackWhenEmpty
  1052  	}
  1053  	return false
  1054  }
  1055  
  1056  func (x *ExternalSchedulerConfig) GetAllDimensions() []string {
  1057  	if x != nil {
  1058  		return x.AllDimensions
  1059  	}
  1060  	return nil
  1061  }
  1062  
  1063  func (x *ExternalSchedulerConfig) GetAnyDimensions() []string {
  1064  	if x != nil {
  1065  		return x.AnyDimensions
  1066  	}
  1067  	return nil
  1068  }
  1069  
  1070  func (x *ExternalSchedulerConfig) GetAllowEsFallback() bool {
  1071  	if x != nil {
  1072  		return x.AllowEsFallback
  1073  	}
  1074  	return false
  1075  }
  1076  
  1077  type ExternalServices struct {
  1078  	state         protoimpl.MessageState
  1079  	sizeCache     protoimpl.SizeCache
  1080  	unknownFields protoimpl.UnknownFields
  1081  
  1082  	Cipd *ExternalServices_CIPD `protobuf:"bytes,2,opt,name=cipd,proto3" json:"cipd,omitempty"`
  1083  }
  1084  
  1085  func (x *ExternalServices) Reset() {
  1086  	*x = ExternalServices{}
  1087  	if protoimpl.UnsafeEnabled {
  1088  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[8]
  1089  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1090  		ms.StoreMessageInfo(mi)
  1091  	}
  1092  }
  1093  
  1094  func (x *ExternalServices) String() string {
  1095  	return protoimpl.X.MessageStringOf(x)
  1096  }
  1097  
  1098  func (*ExternalServices) ProtoMessage() {}
  1099  
  1100  func (x *ExternalServices) ProtoReflect() protoreflect.Message {
  1101  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[8]
  1102  	if protoimpl.UnsafeEnabled && x != nil {
  1103  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1104  		if ms.LoadMessageInfo() == nil {
  1105  			ms.StoreMessageInfo(mi)
  1106  		}
  1107  		return ms
  1108  	}
  1109  	return mi.MessageOf(x)
  1110  }
  1111  
  1112  // Deprecated: Use ExternalServices.ProtoReflect.Descriptor instead.
  1113  func (*ExternalServices) Descriptor() ([]byte, []int) {
  1114  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{8}
  1115  }
  1116  
  1117  func (x *ExternalServices) GetCipd() *ExternalServices_CIPD {
  1118  	if x != nil {
  1119  		return x.Cipd
  1120  	}
  1121  	return nil
  1122  }
  1123  
  1124  // Settings controlling migration to the RBE Scheduler.
  1125  type Pool_RBEMigration struct {
  1126  	state         protoimpl.MessageState
  1127  	sizeCache     protoimpl.SizeCache
  1128  	unknownFields protoimpl.UnknownFields
  1129  
  1130  	// An RBE instance to send tasks to.
  1131  	RbeInstance string `protobuf:"bytes,1,opt,name=rbe_instance,json=rbeInstance,proto3" json:"rbe_instance,omitempty"`
  1132  	// Approximate percent of tasks targeting this pool to send to RBE.
  1133  	//
  1134  	// The decision is done randomly when the task is scheduled.
  1135  	//
  1136  	// Additionally tasks that have `rbe:require` tag will always use RBE and
  1137  	// tasks that have `rbe:prevent` tag will never use RBE. If both tags are
  1138  	// set, `rbe:prevent` takes precedence.
  1139  	RbeModePercent    int32                                  `protobuf:"varint,2,opt,name=rbe_mode_percent,json=rbeModePercent,proto3" json:"rbe_mode_percent,omitempty"`
  1140  	BotModeAllocation []*Pool_RBEMigration_BotModeAllocation `protobuf:"bytes,3,rep,name=bot_mode_allocation,json=botModeAllocation,proto3" json:"bot_mode_allocation,omitempty"`
  1141  }
  1142  
  1143  func (x *Pool_RBEMigration) Reset() {
  1144  	*x = Pool_RBEMigration{}
  1145  	if protoimpl.UnsafeEnabled {
  1146  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[9]
  1147  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1148  		ms.StoreMessageInfo(mi)
  1149  	}
  1150  }
  1151  
  1152  func (x *Pool_RBEMigration) String() string {
  1153  	return protoimpl.X.MessageStringOf(x)
  1154  }
  1155  
  1156  func (*Pool_RBEMigration) ProtoMessage() {}
  1157  
  1158  func (x *Pool_RBEMigration) ProtoReflect() protoreflect.Message {
  1159  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[9]
  1160  	if protoimpl.UnsafeEnabled && x != nil {
  1161  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1162  		if ms.LoadMessageInfo() == nil {
  1163  			ms.StoreMessageInfo(mi)
  1164  		}
  1165  		return ms
  1166  	}
  1167  	return mi.MessageOf(x)
  1168  }
  1169  
  1170  // Deprecated: Use Pool_RBEMigration.ProtoReflect.Descriptor instead.
  1171  func (*Pool_RBEMigration) Descriptor() ([]byte, []int) {
  1172  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{1, 0}
  1173  }
  1174  
  1175  func (x *Pool_RBEMigration) GetRbeInstance() string {
  1176  	if x != nil {
  1177  		return x.RbeInstance
  1178  	}
  1179  	return ""
  1180  }
  1181  
  1182  func (x *Pool_RBEMigration) GetRbeModePercent() int32 {
  1183  	if x != nil {
  1184  		return x.RbeModePercent
  1185  	}
  1186  	return 0
  1187  }
  1188  
  1189  func (x *Pool_RBEMigration) GetBotModeAllocation() []*Pool_RBEMigration_BotModeAllocation {
  1190  	if x != nil {
  1191  		return x.BotModeAllocation
  1192  	}
  1193  	return nil
  1194  }
  1195  
  1196  // Distribution of bots in this pool across migration modes. Percents must
  1197  // sum up to 100.
  1198  //
  1199  // Bots are assigned the corresponding mode based on hash of their ID modulo
  1200  // 100. The full space of such IDs always looks like this:
  1201  //
  1202  //	[---SWARMING---|---HYBRID---|---RBE---]
  1203  //
  1204  // Where width of sections are defined by `percent` below. In other words,
  1205  // there are two boundaries that can be moved:
  1206  //  1. SWARMING <-> HYBRID.
  1207  //  2. HYBRID <-> RBE.
  1208  //
  1209  // Migration starts with all bots being SWARMING, then SWARMING <-> HYBRID
  1210  // boundary is moved until all bots are HYBRID. Then HYBRID <-> RBE boundary
  1211  // is moved until all bots are RBE.
  1212  //
  1213  // If a bot belongs to multiple pools (should be rare), the mode is derived
  1214  // to be compatible across all bot's pools:
  1215  //  1. All pools indicate the bot should be in SWARMING => use SWARMING.
  1216  //  2. All pools indicate the bot should be in RBE => use RBE.
  1217  //  3. Otherwise use HYBRID.
  1218  type Pool_RBEMigration_BotModeAllocation struct {
  1219  	state         protoimpl.MessageState
  1220  	sizeCache     protoimpl.SizeCache
  1221  	unknownFields protoimpl.UnknownFields
  1222  
  1223  	Mode    Pool_RBEMigration_BotModeAllocation_BotMode `protobuf:"varint,1,opt,name=mode,proto3,enum=swarming.config.Pool_RBEMigration_BotModeAllocation_BotMode" json:"mode,omitempty"`
  1224  	Percent int32                                       `protobuf:"varint,2,opt,name=percent,proto3" json:"percent,omitempty"`
  1225  }
  1226  
  1227  func (x *Pool_RBEMigration_BotModeAllocation) Reset() {
  1228  	*x = Pool_RBEMigration_BotModeAllocation{}
  1229  	if protoimpl.UnsafeEnabled {
  1230  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[10]
  1231  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1232  		ms.StoreMessageInfo(mi)
  1233  	}
  1234  }
  1235  
  1236  func (x *Pool_RBEMigration_BotModeAllocation) String() string {
  1237  	return protoimpl.X.MessageStringOf(x)
  1238  }
  1239  
  1240  func (*Pool_RBEMigration_BotModeAllocation) ProtoMessage() {}
  1241  
  1242  func (x *Pool_RBEMigration_BotModeAllocation) ProtoReflect() protoreflect.Message {
  1243  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[10]
  1244  	if protoimpl.UnsafeEnabled && x != nil {
  1245  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1246  		if ms.LoadMessageInfo() == nil {
  1247  			ms.StoreMessageInfo(mi)
  1248  		}
  1249  		return ms
  1250  	}
  1251  	return mi.MessageOf(x)
  1252  }
  1253  
  1254  // Deprecated: Use Pool_RBEMigration_BotModeAllocation.ProtoReflect.Descriptor instead.
  1255  func (*Pool_RBEMigration_BotModeAllocation) Descriptor() ([]byte, []int) {
  1256  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{1, 0, 0}
  1257  }
  1258  
  1259  func (x *Pool_RBEMigration_BotModeAllocation) GetMode() Pool_RBEMigration_BotModeAllocation_BotMode {
  1260  	if x != nil {
  1261  		return x.Mode
  1262  	}
  1263  	return Pool_RBEMigration_BotModeAllocation_UNKNOWN
  1264  }
  1265  
  1266  func (x *Pool_RBEMigration_BotModeAllocation) GetPercent() int32 {
  1267  	if x != nil {
  1268  		return x.Percent
  1269  	}
  1270  	return 0
  1271  }
  1272  
  1273  type TrustedDelegation_TagList struct {
  1274  	state         protoimpl.MessageState
  1275  	sizeCache     protoimpl.SizeCache
  1276  	unknownFields protoimpl.UnknownFields
  1277  
  1278  	Tag []string `protobuf:"bytes,1,rep,name=tag,proto3" json:"tag,omitempty"`
  1279  }
  1280  
  1281  func (x *TrustedDelegation_TagList) Reset() {
  1282  	*x = TrustedDelegation_TagList{}
  1283  	if protoimpl.UnsafeEnabled {
  1284  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[11]
  1285  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1286  		ms.StoreMessageInfo(mi)
  1287  	}
  1288  }
  1289  
  1290  func (x *TrustedDelegation_TagList) String() string {
  1291  	return protoimpl.X.MessageStringOf(x)
  1292  }
  1293  
  1294  func (*TrustedDelegation_TagList) ProtoMessage() {}
  1295  
  1296  func (x *TrustedDelegation_TagList) ProtoReflect() protoreflect.Message {
  1297  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[11]
  1298  	if protoimpl.UnsafeEnabled && x != nil {
  1299  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1300  		if ms.LoadMessageInfo() == nil {
  1301  			ms.StoreMessageInfo(mi)
  1302  		}
  1303  		return ms
  1304  	}
  1305  	return mi.MessageOf(x)
  1306  }
  1307  
  1308  // Deprecated: Use TrustedDelegation_TagList.ProtoReflect.Descriptor instead.
  1309  func (*TrustedDelegation_TagList) Descriptor() ([]byte, []int) {
  1310  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{3, 0}
  1311  }
  1312  
  1313  func (x *TrustedDelegation_TagList) GetTag() []string {
  1314  	if x != nil {
  1315  		return x.Tag
  1316  	}
  1317  	return nil
  1318  }
  1319  
  1320  type TaskTemplate_CacheEntry struct {
  1321  	state         protoimpl.MessageState
  1322  	sizeCache     protoimpl.SizeCache
  1323  	unknownFields protoimpl.UnknownFields
  1324  
  1325  	// The name of the cache (required).
  1326  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1327  	// The path relative to the task root to mount the cache (required).
  1328  	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
  1329  }
  1330  
  1331  func (x *TaskTemplate_CacheEntry) Reset() {
  1332  	*x = TaskTemplate_CacheEntry{}
  1333  	if protoimpl.UnsafeEnabled {
  1334  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[12]
  1335  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1336  		ms.StoreMessageInfo(mi)
  1337  	}
  1338  }
  1339  
  1340  func (x *TaskTemplate_CacheEntry) String() string {
  1341  	return protoimpl.X.MessageStringOf(x)
  1342  }
  1343  
  1344  func (*TaskTemplate_CacheEntry) ProtoMessage() {}
  1345  
  1346  func (x *TaskTemplate_CacheEntry) ProtoReflect() protoreflect.Message {
  1347  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[12]
  1348  	if protoimpl.UnsafeEnabled && x != nil {
  1349  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1350  		if ms.LoadMessageInfo() == nil {
  1351  			ms.StoreMessageInfo(mi)
  1352  		}
  1353  		return ms
  1354  	}
  1355  	return mi.MessageOf(x)
  1356  }
  1357  
  1358  // Deprecated: Use TaskTemplate_CacheEntry.ProtoReflect.Descriptor instead.
  1359  func (*TaskTemplate_CacheEntry) Descriptor() ([]byte, []int) {
  1360  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{4, 0}
  1361  }
  1362  
  1363  func (x *TaskTemplate_CacheEntry) GetName() string {
  1364  	if x != nil {
  1365  		return x.Name
  1366  	}
  1367  	return ""
  1368  }
  1369  
  1370  func (x *TaskTemplate_CacheEntry) GetPath() string {
  1371  	if x != nil {
  1372  		return x.Path
  1373  	}
  1374  	return ""
  1375  }
  1376  
  1377  type TaskTemplate_CipdPackage struct {
  1378  	state         protoimpl.MessageState
  1379  	sizeCache     protoimpl.SizeCache
  1380  	unknownFields protoimpl.UnknownFields
  1381  
  1382  	// The relative to the task root to unpack the CIPD package. A blank value
  1383  	// is permitted and means 'the root directory of the task'.
  1384  	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
  1385  	// The CIPD package name template to use (required).
  1386  	Pkg string `protobuf:"bytes,2,opt,name=pkg,proto3" json:"pkg,omitempty"`
  1387  	// The version of the CIPD package to use (required).
  1388  	Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
  1389  }
  1390  
  1391  func (x *TaskTemplate_CipdPackage) Reset() {
  1392  	*x = TaskTemplate_CipdPackage{}
  1393  	if protoimpl.UnsafeEnabled {
  1394  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[13]
  1395  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1396  		ms.StoreMessageInfo(mi)
  1397  	}
  1398  }
  1399  
  1400  func (x *TaskTemplate_CipdPackage) String() string {
  1401  	return protoimpl.X.MessageStringOf(x)
  1402  }
  1403  
  1404  func (*TaskTemplate_CipdPackage) ProtoMessage() {}
  1405  
  1406  func (x *TaskTemplate_CipdPackage) ProtoReflect() protoreflect.Message {
  1407  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[13]
  1408  	if protoimpl.UnsafeEnabled && x != nil {
  1409  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1410  		if ms.LoadMessageInfo() == nil {
  1411  			ms.StoreMessageInfo(mi)
  1412  		}
  1413  		return ms
  1414  	}
  1415  	return mi.MessageOf(x)
  1416  }
  1417  
  1418  // Deprecated: Use TaskTemplate_CipdPackage.ProtoReflect.Descriptor instead.
  1419  func (*TaskTemplate_CipdPackage) Descriptor() ([]byte, []int) {
  1420  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{4, 1}
  1421  }
  1422  
  1423  func (x *TaskTemplate_CipdPackage) GetPath() string {
  1424  	if x != nil {
  1425  		return x.Path
  1426  	}
  1427  	return ""
  1428  }
  1429  
  1430  func (x *TaskTemplate_CipdPackage) GetPkg() string {
  1431  	if x != nil {
  1432  		return x.Pkg
  1433  	}
  1434  	return ""
  1435  }
  1436  
  1437  func (x *TaskTemplate_CipdPackage) GetVersion() string {
  1438  	if x != nil {
  1439  		return x.Version
  1440  	}
  1441  	return ""
  1442  }
  1443  
  1444  type TaskTemplate_Env struct {
  1445  	state         protoimpl.MessageState
  1446  	sizeCache     protoimpl.SizeCache
  1447  	unknownFields protoimpl.UnknownFields
  1448  
  1449  	// The envvar you want to set (required).
  1450  	Var string `protobuf:"bytes,1,opt,name=var,proto3" json:"var,omitempty"`
  1451  	// The envvar value you want to set. Any prefixes are prepended to this
  1452  	// value. If the value is unset, prefixes will be prepended to the bot's
  1453  	// current value of this envvar (see examples)
  1454  	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
  1455  	// Paths relative to the task root to prepend to this envvar on the bot.
  1456  	// These will be resolved to absolute paths on the bot.
  1457  	Prefix []string `protobuf:"bytes,3,rep,name=prefix,proto3" json:"prefix,omitempty"`
  1458  	// If true, tasks setting this EnvVar can overwrite the value and/or the
  1459  	// prefix. Otherwise, tasks will not be permitted to to set any env var or
  1460  	// env_prefix for this var.
  1461  	//
  1462  	// This should be True for envvars you expect tasks to extend, like $PATH.
  1463  	// Note that this only affects envvar manipulation at the Swarming API
  1464  	// level; once the task is running it can (of course) manipulate the env
  1465  	// however it wants.
  1466  	Soft bool `protobuf:"varint,4,opt,name=soft,proto3" json:"soft,omitempty"`
  1467  }
  1468  
  1469  func (x *TaskTemplate_Env) Reset() {
  1470  	*x = TaskTemplate_Env{}
  1471  	if protoimpl.UnsafeEnabled {
  1472  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[14]
  1473  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1474  		ms.StoreMessageInfo(mi)
  1475  	}
  1476  }
  1477  
  1478  func (x *TaskTemplate_Env) String() string {
  1479  	return protoimpl.X.MessageStringOf(x)
  1480  }
  1481  
  1482  func (*TaskTemplate_Env) ProtoMessage() {}
  1483  
  1484  func (x *TaskTemplate_Env) ProtoReflect() protoreflect.Message {
  1485  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[14]
  1486  	if protoimpl.UnsafeEnabled && x != nil {
  1487  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1488  		if ms.LoadMessageInfo() == nil {
  1489  			ms.StoreMessageInfo(mi)
  1490  		}
  1491  		return ms
  1492  	}
  1493  	return mi.MessageOf(x)
  1494  }
  1495  
  1496  // Deprecated: Use TaskTemplate_Env.ProtoReflect.Descriptor instead.
  1497  func (*TaskTemplate_Env) Descriptor() ([]byte, []int) {
  1498  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{4, 2}
  1499  }
  1500  
  1501  func (x *TaskTemplate_Env) GetVar() string {
  1502  	if x != nil {
  1503  		return x.Var
  1504  	}
  1505  	return ""
  1506  }
  1507  
  1508  func (x *TaskTemplate_Env) GetValue() string {
  1509  	if x != nil {
  1510  		return x.Value
  1511  	}
  1512  	return ""
  1513  }
  1514  
  1515  func (x *TaskTemplate_Env) GetPrefix() []string {
  1516  	if x != nil {
  1517  		return x.Prefix
  1518  	}
  1519  	return nil
  1520  }
  1521  
  1522  func (x *TaskTemplate_Env) GetSoft() bool {
  1523  	if x != nil {
  1524  		return x.Soft
  1525  	}
  1526  	return false
  1527  }
  1528  
  1529  type ExternalServices_CIPD struct {
  1530  	state         protoimpl.MessageState
  1531  	sizeCache     protoimpl.SizeCache
  1532  	unknownFields protoimpl.UnknownFields
  1533  
  1534  	// (required) URL of the default CIPD server to use, if it is not specified
  1535  	// in the task.
  1536  	//
  1537  	// Must start with "https://" or "http://".
  1538  	//
  1539  	// e.g. "https://chrome-infra-packages.appspot.com"
  1540  	Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
  1541  	// (required) The version of the cipd client to use. This is likely the
  1542  	// 'infra/tools/cipd/${platform}' package, but because it's part of the
  1543  	// bootstrap needs special logic to handle its installation.
  1544  	ClientPackage *CipdPackage `protobuf:"bytes,3,opt,name=client_package,json=clientPackage,proto3" json:"client_package,omitempty"`
  1545  }
  1546  
  1547  func (x *ExternalServices_CIPD) Reset() {
  1548  	*x = ExternalServices_CIPD{}
  1549  	if protoimpl.UnsafeEnabled {
  1550  		mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[15]
  1551  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1552  		ms.StoreMessageInfo(mi)
  1553  	}
  1554  }
  1555  
  1556  func (x *ExternalServices_CIPD) String() string {
  1557  	return protoimpl.X.MessageStringOf(x)
  1558  }
  1559  
  1560  func (*ExternalServices_CIPD) ProtoMessage() {}
  1561  
  1562  func (x *ExternalServices_CIPD) ProtoReflect() protoreflect.Message {
  1563  	mi := &file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[15]
  1564  	if protoimpl.UnsafeEnabled && x != nil {
  1565  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1566  		if ms.LoadMessageInfo() == nil {
  1567  			ms.StoreMessageInfo(mi)
  1568  		}
  1569  		return ms
  1570  	}
  1571  	return mi.MessageOf(x)
  1572  }
  1573  
  1574  // Deprecated: Use ExternalServices_CIPD.ProtoReflect.Descriptor instead.
  1575  func (*ExternalServices_CIPD) Descriptor() ([]byte, []int) {
  1576  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP(), []int{8, 0}
  1577  }
  1578  
  1579  func (x *ExternalServices_CIPD) GetServer() string {
  1580  	if x != nil {
  1581  		return x.Server
  1582  	}
  1583  	return ""
  1584  }
  1585  
  1586  func (x *ExternalServices_CIPD) GetClientPackage() *CipdPackage {
  1587  	if x != nil {
  1588  		return x.ClientPackage
  1589  	}
  1590  	return nil
  1591  }
  1592  
  1593  var File_go_chromium_org_luci_swarming_proto_config_pools_proto protoreflect.FileDescriptor
  1594  
  1595  var file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDesc = []byte{
  1596  	0x0a, 0x36, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
  1597  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2f,
  1598  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x70, 0x6f, 0x6f,
  1599  	0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69,
  1600  	0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x37, 0x67, 0x6f, 0x2e, 0x63, 0x68,
  1601  	0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f,
  1602  	0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63,
  1603  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f,
  1604  	0x74, 0x6f, 0x1a, 0x37, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e,
  1605  	0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e,
  1606  	0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x72,
  1607  	0x65, 0x61, 0x6c, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x67, 0x6f, 0x2e,
  1608  	0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63,
  1609  	0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6f,
  1610  	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x88, 0x03, 0x0a,
  1611  	0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x43, 0x66, 0x67, 0x12, 0x29, 0x0a, 0x04, 0x70, 0x6f, 0x6f,
  1612  	0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69,
  1613  	0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04,
  1614  	0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x5d, 0x0a, 0x19, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
  1615  	0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
  1616  	0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69,
  1617  	0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e,
  1618  	0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x17, 0x64, 0x65, 0x66, 0x61,
  1619  	0x75, 0x6c, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69,
  1620  	0x63, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x65, 0x6d, 0x70,
  1621  	0x6c, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x77, 0x61,
  1622  	0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x73,
  1623  	0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x54,
  1624  	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x61, 0x0a, 0x18, 0x74, 0x61, 0x73, 0x6b, 0x5f,
  1625  	0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d,
  1626  	0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x77, 0x61, 0x72,
  1627  	0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x73, 0x6b,
  1628  	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65,
  1629  	0x6e, 0x74, 0x52, 0x16, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
  1630  	0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0e, 0x62, 0x6f,
  1631  	0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x03,
  1632  	0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f,
  1633  	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69,
  1634  	0x6e, 0x67, 0x52, 0x0d, 0x62, 0x6f, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e,
  1635  	0x67, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0xc0, 0x0a, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c,
  1636  	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
  1637  	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02,
  1638  	0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x0a,
  1639  	0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
  1640  	0x32, 0x1b, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66,
  1641  	0x69, 0x67, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x73,
  1642  	0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x74, 0x61, 0x73,
  1643  	0x6b, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f,
  1644  	0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x16, 0x74,
  1645  	0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f,
  1646  	0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x70, 0x0a, 0x1f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x65,
  1647  	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
  1648  	0x74, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
  1649  	0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  1650  	0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70,
  1651  	0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x74, 0x61, 0x73, 0x6b, 0x54,
  1652  	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
  1653  	0x74, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x6f, 0x74, 0x5f, 0x6d,
  1654  	0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
  1655  	0x0d, 0x62, 0x6f, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x59,
  1656  	0x0a, 0x13, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64,
  1657  	0x75, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x77,
  1658  	0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78,
  1659  	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x43,
  1660  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53,
  1661  	0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61,
  1662  	0x6c, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x12,
  1663  	0x5e, 0x0a, 0x1a, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x6c,
  1664  	0x6d, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20,
  1665  	0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63,
  1666  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69,
  1667  	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x52,
  1668  	0x65, 0x61, 0x6c, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12,
  1669  	0x2c, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f,
  1670  	0x72, 0x65, 0x61, 0x6c, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x66,
  1671  	0x61, 0x75, 0x6c, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x47, 0x0a,
  1672  	0x0d, 0x72, 0x62, 0x65, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d,
  1673  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e,
  1674  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x52, 0x42, 0x45, 0x4d,
  1675  	0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x72, 0x62, 0x65, 0x4d, 0x69, 0x67,
  1676  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
  1677  	0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x0e,
  1678  	0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e,
  1679  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x53, 0x63, 0x68, 0x65,
  1680  	0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52,
  1681  	0x13, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x6c, 0x67, 0x6f, 0x72,
  1682  	0x69, 0x74, 0x68, 0x6d, 0x1a, 0xfe, 0x02, 0x0a, 0x0c, 0x52, 0x42, 0x45, 0x4d, 0x69, 0x67, 0x72,
  1683  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x62, 0x65, 0x5f, 0x69, 0x6e, 0x73,
  1684  	0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x62, 0x65,
  1685  	0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x62, 0x65, 0x5f,
  1686  	0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
  1687  	0x28, 0x05, 0x52, 0x0e, 0x72, 0x62, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65,
  1688  	0x6e, 0x74, 0x12, 0x64, 0x0a, 0x13, 0x62, 0x6f, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x61,
  1689  	0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
  1690  	0x34, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69,
  1691  	0x67, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x52, 0x42, 0x45, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74,
  1692  	0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x63,
  1693  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x62, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x41, 0x6c,
  1694  	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xba, 0x01, 0x0a, 0x11, 0x42, 0x6f, 0x74,
  1695  	0x4d, 0x6f, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50,
  1696  	0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x73,
  1697  	0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50,
  1698  	0x6f, 0x6f, 0x6c, 0x2e, 0x52, 0x42, 0x45, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  1699  	0x2e, 0x42, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
  1700  	0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65,
  1701  	0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
  1702  	0x05, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0x39, 0x0a, 0x07, 0x42, 0x6f,
  1703  	0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
  1704  	0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x57, 0x41, 0x52, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x01,
  1705  	0x12, 0x0a, 0x0a, 0x06, 0x48, 0x59, 0x42, 0x52, 0x49, 0x44, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03,
  1706  	0x52, 0x42, 0x45, 0x10, 0x03, 0x22, 0x75, 0x0a, 0x13, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
  1707  	0x69, 0x6e, 0x67, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x20, 0x0a, 0x1c,
  1708  	0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52,
  1709  	0x49, 0x54, 0x48, 0x4d, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1d,
  1710  	0x0a, 0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x4c, 0x47,
  1711  	0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x46, 0x49, 0x46, 0x4f, 0x10, 0x01, 0x12, 0x1d, 0x0a,
  1712  	0x19, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x4c, 0x47, 0x4f,
  1713  	0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x4c, 0x49, 0x46, 0x4f, 0x10, 0x02, 0x42, 0x18, 0x0a, 0x16,
  1714  	0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f,
  1715  	0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05,
  1716  	0x10, 0x06, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76,
  1717  	0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x1d, 0x61, 0x6c, 0x6c,
  1718  	0x6f, 0x77, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63,
  1719  	0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x53,
  1720  	0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65,
  1721  	0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a,
  1722  	0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72,
  1723  	0x6f, 0x75, 0x70, 0x12, 0x51, 0x0a, 0x12, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x64,
  1724  	0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
  1725  	0x22, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69,
  1726  	0x67, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,
  1727  	0x69, 0x6f, 0x6e, 0x52, 0x11, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x44, 0x65, 0x6c, 0x65,
  1728  	0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x54, 0x72, 0x75, 0x73, 0x74,
  1729  	0x65, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07,
  1730  	0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70,
  1731  	0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x50, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
  1732  	0x5f, 0x61, 0x6e, 0x79, 0x5f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
  1733  	0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
  1734  	0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f,
  1735  	0x6e, 0x2e, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69,
  1736  	0x72, 0x65, 0x41, 0x6e, 0x79, 0x4f, 0x66, 0x1a, 0x1b, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4c, 0x69,
  1737  	0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
  1738  	0x03, 0x74, 0x61, 0x67, 0x22, 0xdf, 0x03, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d,
  1739  	0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
  1740  	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x63,
  1741  	0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c,
  1742  	0x75, 0x64, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x03, 0x20, 0x03,
  1743  	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f,
  1744  	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
  1745  	0x65, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x63, 0x61,
  1746  	0x63, 0x68, 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x63, 0x69, 0x70, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b,
  1747  	0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x77, 0x61, 0x72,
  1748  	0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x73, 0x6b,
  1749  	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x69, 0x70, 0x64, 0x50, 0x61, 0x63,
  1750  	0x6b, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x63, 0x69, 0x70, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
  1751  	0x65, 0x12, 0x33, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
  1752  	0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  1753  	0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e,
  1754  	0x76, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x1a, 0x34, 0x0a, 0x0a, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45,
  1755  	0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
  1756  	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68,
  1757  	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x4d, 0x0a, 0x0b,
  1758  	0x43, 0x69, 0x70, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70,
  1759  	0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12,
  1760  	0x10, 0x0a, 0x03, 0x70, 0x6b, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x6b,
  1761  	0x67, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
  1762  	0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x59, 0x0a, 0x03, 0x45,
  1763  	0x6e, 0x76, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
  1764  	0x03, 0x76, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
  1765  	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72,
  1766  	0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66,
  1767  	0x69, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x66, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
  1768  	0x52, 0x04, 0x73, 0x6f, 0x66, 0x74, 0x22, 0xbb, 0x01, 0x0a, 0x16, 0x54, 0x61, 0x73, 0x6b, 0x54,
  1769  	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
  1770  	0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
  1771  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x70, 0x72, 0x6f, 0x64, 0x18, 0x02, 0x20,
  1772  	0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63,
  1773  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
  1774  	0x74, 0x65, 0x52, 0x04, 0x70, 0x72, 0x6f, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x61, 0x6e, 0x61,
  1775  	0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d,
  1776  	0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54,
  1777  	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x12,
  1778  	0x23, 0x0a, 0x0d, 0x63, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65,
  1779  	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x68,
  1780  	0x61, 0x6e, 0x63, 0x65, 0x22, 0x48, 0x0a, 0x0d, 0x42, 0x6f, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74,
  1781  	0x6f, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
  1782  	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x69, 0x6d,
  1783  	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
  1784  	0x52, 0x0c, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x22, 0xab,
  1785  	0x02, 0x0a, 0x17, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64,
  1786  	0x75, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64,
  1787  	0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64,
  1788  	0x72, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
  1789  	0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f,
  1790  	0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73,
  1791  	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18,
  1792  	0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x32,
  1793  	0x0a, 0x13, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x77, 0x68, 0x65, 0x6e, 0x5f,
  1794  	0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52,
  1795  	0x11, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x57, 0x68, 0x65, 0x6e, 0x45, 0x6d, 0x70,
  1796  	0x74, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73,
  1797  	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x44,
  1798  	0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6e, 0x79,
  1799  	0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28,
  1800  	0x09, 0x52, 0x0d, 0x61, 0x6e, 0x79, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
  1801  	0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x73, 0x5f, 0x66, 0x61, 0x6c,
  1802  	0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x6c,
  1803  	0x6f, 0x77, 0x45, 0x73, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x22, 0xcf, 0x01, 0x0a,
  1804  	0x10, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
  1805  	0x73, 0x12, 0x3a, 0x0a, 0x04, 0x63, 0x69, 0x70, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
  1806  	0x26, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69,
  1807  	0x67, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
  1808  	0x65, 0x73, 0x2e, 0x43, 0x49, 0x50, 0x44, 0x52, 0x04, 0x63, 0x69, 0x70, 0x64, 0x1a, 0x79, 0x0a,
  1809  	0x04, 0x43, 0x49, 0x50, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18,
  1810  	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x43, 0x0a,
  1811  	0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18,
  1812  	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67,
  1813  	0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x69, 0x70, 0x64, 0x50, 0x61, 0x63, 0x6b,
  1814  	0x61, 0x67, 0x65, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61,
  1815  	0x67, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
  1816  	0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x42, 0x76,
  1817  	0xa2, 0xfe, 0x23, 0x3d, 0x0a, 0x3b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x6f,
  1818  	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x73, 0x63,
  1819  	0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x73,
  1820  	0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x3a, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x63, 0x66,
  1821  	0x67, 0x5a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f,
  1822  	0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67,
  1823  	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3b, 0x63, 0x6f,
  1824  	0x6e, 0x66, 0x69, 0x67, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  1825  }
  1826  
  1827  var (
  1828  	file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescOnce sync.Once
  1829  	file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescData = file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDesc
  1830  )
  1831  
  1832  func file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescGZIP() []byte {
  1833  	file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescOnce.Do(func() {
  1834  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescData)
  1835  	})
  1836  	return file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDescData
  1837  }
  1838  
  1839  var file_go_chromium_org_luci_swarming_proto_config_pools_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
  1840  var file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
  1841  var file_go_chromium_org_luci_swarming_proto_config_pools_proto_goTypes = []interface{}{
  1842  	(Pool_SchedulingAlgorithm)(0),                    // 0: swarming.config.Pool.SchedulingAlgorithm
  1843  	(Pool_RBEMigration_BotModeAllocation_BotMode)(0), // 1: swarming.config.Pool.RBEMigration.BotModeAllocation.BotMode
  1844  	(*PoolsCfg)(nil),                                 // 2: swarming.config.PoolsCfg
  1845  	(*Pool)(nil),                                     // 3: swarming.config.Pool
  1846  	(*Schedulers)(nil),                               // 4: swarming.config.Schedulers
  1847  	(*TrustedDelegation)(nil),                        // 5: swarming.config.TrustedDelegation
  1848  	(*TaskTemplate)(nil),                             // 6: swarming.config.TaskTemplate
  1849  	(*TaskTemplateDeployment)(nil),                   // 7: swarming.config.TaskTemplateDeployment
  1850  	(*BotMonitoring)(nil),                            // 8: swarming.config.BotMonitoring
  1851  	(*ExternalSchedulerConfig)(nil),                  // 9: swarming.config.ExternalSchedulerConfig
  1852  	(*ExternalServices)(nil),                         // 10: swarming.config.ExternalServices
  1853  	(*Pool_RBEMigration)(nil),                        // 11: swarming.config.Pool.RBEMigration
  1854  	(*Pool_RBEMigration_BotModeAllocation)(nil),      // 12: swarming.config.Pool.RBEMigration.BotModeAllocation
  1855  	(*TrustedDelegation_TagList)(nil),                // 13: swarming.config.TrustedDelegation.TagList
  1856  	(*TaskTemplate_CacheEntry)(nil),                  // 14: swarming.config.TaskTemplate.CacheEntry
  1857  	(*TaskTemplate_CipdPackage)(nil),                 // 15: swarming.config.TaskTemplate.CipdPackage
  1858  	(*TaskTemplate_Env)(nil),                         // 16: swarming.config.TaskTemplate.Env
  1859  	(*ExternalServices_CIPD)(nil),                    // 17: swarming.config.ExternalServices.CIPD
  1860  	(RealmPermission)(0),                             // 18: swarming.config.RealmPermission
  1861  	(*CipdPackage)(nil),                              // 19: swarming.config.CipdPackage
  1862  }
  1863  var file_go_chromium_org_luci_swarming_proto_config_pools_proto_depIdxs = []int32{
  1864  	3,  // 0: swarming.config.PoolsCfg.pool:type_name -> swarming.config.Pool
  1865  	10, // 1: swarming.config.PoolsCfg.default_external_services:type_name -> swarming.config.ExternalServices
  1866  	6,  // 2: swarming.config.PoolsCfg.task_template:type_name -> swarming.config.TaskTemplate
  1867  	7,  // 3: swarming.config.PoolsCfg.task_template_deployment:type_name -> swarming.config.TaskTemplateDeployment
  1868  	8,  // 4: swarming.config.PoolsCfg.bot_monitoring:type_name -> swarming.config.BotMonitoring
  1869  	4,  // 5: swarming.config.Pool.schedulers:type_name -> swarming.config.Schedulers
  1870  	7,  // 6: swarming.config.Pool.task_template_deployment_inline:type_name -> swarming.config.TaskTemplateDeployment
  1871  	9,  // 7: swarming.config.Pool.external_schedulers:type_name -> swarming.config.ExternalSchedulerConfig
  1872  	18, // 8: swarming.config.Pool.enforced_realm_permissions:type_name -> swarming.config.RealmPermission
  1873  	11, // 9: swarming.config.Pool.rbe_migration:type_name -> swarming.config.Pool.RBEMigration
  1874  	0,  // 10: swarming.config.Pool.scheduling_algorithm:type_name -> swarming.config.Pool.SchedulingAlgorithm
  1875  	5,  // 11: swarming.config.Schedulers.trusted_delegation:type_name -> swarming.config.TrustedDelegation
  1876  	13, // 12: swarming.config.TrustedDelegation.require_any_of:type_name -> swarming.config.TrustedDelegation.TagList
  1877  	14, // 13: swarming.config.TaskTemplate.cache:type_name -> swarming.config.TaskTemplate.CacheEntry
  1878  	15, // 14: swarming.config.TaskTemplate.cipd_package:type_name -> swarming.config.TaskTemplate.CipdPackage
  1879  	16, // 15: swarming.config.TaskTemplate.env:type_name -> swarming.config.TaskTemplate.Env
  1880  	6,  // 16: swarming.config.TaskTemplateDeployment.prod:type_name -> swarming.config.TaskTemplate
  1881  	6,  // 17: swarming.config.TaskTemplateDeployment.canary:type_name -> swarming.config.TaskTemplate
  1882  	17, // 18: swarming.config.ExternalServices.cipd:type_name -> swarming.config.ExternalServices.CIPD
  1883  	12, // 19: swarming.config.Pool.RBEMigration.bot_mode_allocation:type_name -> swarming.config.Pool.RBEMigration.BotModeAllocation
  1884  	1,  // 20: swarming.config.Pool.RBEMigration.BotModeAllocation.mode:type_name -> swarming.config.Pool.RBEMigration.BotModeAllocation.BotMode
  1885  	19, // 21: swarming.config.ExternalServices.CIPD.client_package:type_name -> swarming.config.CipdPackage
  1886  	22, // [22:22] is the sub-list for method output_type
  1887  	22, // [22:22] is the sub-list for method input_type
  1888  	22, // [22:22] is the sub-list for extension type_name
  1889  	22, // [22:22] is the sub-list for extension extendee
  1890  	0,  // [0:22] is the sub-list for field type_name
  1891  }
  1892  
  1893  func init() { file_go_chromium_org_luci_swarming_proto_config_pools_proto_init() }
  1894  func file_go_chromium_org_luci_swarming_proto_config_pools_proto_init() {
  1895  	if File_go_chromium_org_luci_swarming_proto_config_pools_proto != nil {
  1896  		return
  1897  	}
  1898  	file_go_chromium_org_luci_swarming_proto_config_config_proto_init()
  1899  	file_go_chromium_org_luci_swarming_proto_config_realms_proto_init()
  1900  	if !protoimpl.UnsafeEnabled {
  1901  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  1902  			switch v := v.(*PoolsCfg); i {
  1903  			case 0:
  1904  				return &v.state
  1905  			case 1:
  1906  				return &v.sizeCache
  1907  			case 2:
  1908  				return &v.unknownFields
  1909  			default:
  1910  				return nil
  1911  			}
  1912  		}
  1913  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  1914  			switch v := v.(*Pool); i {
  1915  			case 0:
  1916  				return &v.state
  1917  			case 1:
  1918  				return &v.sizeCache
  1919  			case 2:
  1920  				return &v.unknownFields
  1921  			default:
  1922  				return nil
  1923  			}
  1924  		}
  1925  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  1926  			switch v := v.(*Schedulers); i {
  1927  			case 0:
  1928  				return &v.state
  1929  			case 1:
  1930  				return &v.sizeCache
  1931  			case 2:
  1932  				return &v.unknownFields
  1933  			default:
  1934  				return nil
  1935  			}
  1936  		}
  1937  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  1938  			switch v := v.(*TrustedDelegation); i {
  1939  			case 0:
  1940  				return &v.state
  1941  			case 1:
  1942  				return &v.sizeCache
  1943  			case 2:
  1944  				return &v.unknownFields
  1945  			default:
  1946  				return nil
  1947  			}
  1948  		}
  1949  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  1950  			switch v := v.(*TaskTemplate); i {
  1951  			case 0:
  1952  				return &v.state
  1953  			case 1:
  1954  				return &v.sizeCache
  1955  			case 2:
  1956  				return &v.unknownFields
  1957  			default:
  1958  				return nil
  1959  			}
  1960  		}
  1961  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  1962  			switch v := v.(*TaskTemplateDeployment); i {
  1963  			case 0:
  1964  				return &v.state
  1965  			case 1:
  1966  				return &v.sizeCache
  1967  			case 2:
  1968  				return &v.unknownFields
  1969  			default:
  1970  				return nil
  1971  			}
  1972  		}
  1973  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  1974  			switch v := v.(*BotMonitoring); i {
  1975  			case 0:
  1976  				return &v.state
  1977  			case 1:
  1978  				return &v.sizeCache
  1979  			case 2:
  1980  				return &v.unknownFields
  1981  			default:
  1982  				return nil
  1983  			}
  1984  		}
  1985  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  1986  			switch v := v.(*ExternalSchedulerConfig); i {
  1987  			case 0:
  1988  				return &v.state
  1989  			case 1:
  1990  				return &v.sizeCache
  1991  			case 2:
  1992  				return &v.unknownFields
  1993  			default:
  1994  				return nil
  1995  			}
  1996  		}
  1997  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  1998  			switch v := v.(*ExternalServices); i {
  1999  			case 0:
  2000  				return &v.state
  2001  			case 1:
  2002  				return &v.sizeCache
  2003  			case 2:
  2004  				return &v.unknownFields
  2005  			default:
  2006  				return nil
  2007  			}
  2008  		}
  2009  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  2010  			switch v := v.(*Pool_RBEMigration); i {
  2011  			case 0:
  2012  				return &v.state
  2013  			case 1:
  2014  				return &v.sizeCache
  2015  			case 2:
  2016  				return &v.unknownFields
  2017  			default:
  2018  				return nil
  2019  			}
  2020  		}
  2021  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  2022  			switch v := v.(*Pool_RBEMigration_BotModeAllocation); i {
  2023  			case 0:
  2024  				return &v.state
  2025  			case 1:
  2026  				return &v.sizeCache
  2027  			case 2:
  2028  				return &v.unknownFields
  2029  			default:
  2030  				return nil
  2031  			}
  2032  		}
  2033  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  2034  			switch v := v.(*TrustedDelegation_TagList); i {
  2035  			case 0:
  2036  				return &v.state
  2037  			case 1:
  2038  				return &v.sizeCache
  2039  			case 2:
  2040  				return &v.unknownFields
  2041  			default:
  2042  				return nil
  2043  			}
  2044  		}
  2045  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  2046  			switch v := v.(*TaskTemplate_CacheEntry); i {
  2047  			case 0:
  2048  				return &v.state
  2049  			case 1:
  2050  				return &v.sizeCache
  2051  			case 2:
  2052  				return &v.unknownFields
  2053  			default:
  2054  				return nil
  2055  			}
  2056  		}
  2057  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  2058  			switch v := v.(*TaskTemplate_CipdPackage); i {
  2059  			case 0:
  2060  				return &v.state
  2061  			case 1:
  2062  				return &v.sizeCache
  2063  			case 2:
  2064  				return &v.unknownFields
  2065  			default:
  2066  				return nil
  2067  			}
  2068  		}
  2069  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  2070  			switch v := v.(*TaskTemplate_Env); i {
  2071  			case 0:
  2072  				return &v.state
  2073  			case 1:
  2074  				return &v.sizeCache
  2075  			case 2:
  2076  				return &v.unknownFields
  2077  			default:
  2078  				return nil
  2079  			}
  2080  		}
  2081  		file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  2082  			switch v := v.(*ExternalServices_CIPD); i {
  2083  			case 0:
  2084  				return &v.state
  2085  			case 1:
  2086  				return &v.sizeCache
  2087  			case 2:
  2088  				return &v.unknownFields
  2089  			default:
  2090  				return nil
  2091  			}
  2092  		}
  2093  	}
  2094  	file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes[1].OneofWrappers = []interface{}{
  2095  		(*Pool_TaskTemplateDeployment)(nil),
  2096  		(*Pool_TaskTemplateDeploymentInline)(nil),
  2097  	}
  2098  	type x struct{}
  2099  	out := protoimpl.TypeBuilder{
  2100  		File: protoimpl.DescBuilder{
  2101  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  2102  			RawDescriptor: file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDesc,
  2103  			NumEnums:      2,
  2104  			NumMessages:   16,
  2105  			NumExtensions: 0,
  2106  			NumServices:   0,
  2107  		},
  2108  		GoTypes:           file_go_chromium_org_luci_swarming_proto_config_pools_proto_goTypes,
  2109  		DependencyIndexes: file_go_chromium_org_luci_swarming_proto_config_pools_proto_depIdxs,
  2110  		EnumInfos:         file_go_chromium_org_luci_swarming_proto_config_pools_proto_enumTypes,
  2111  		MessageInfos:      file_go_chromium_org_luci_swarming_proto_config_pools_proto_msgTypes,
  2112  	}.Build()
  2113  	File_go_chromium_org_luci_swarming_proto_config_pools_proto = out.File
  2114  	file_go_chromium_org_luci_swarming_proto_config_pools_proto_rawDesc = nil
  2115  	file_go_chromium_org_luci_swarming_proto_config_pools_proto_goTypes = nil
  2116  	file_go_chromium_org_luci_swarming_proto_config_pools_proto_depIdxs = nil
  2117  }