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 }