go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/swarming/proto/config/bots.pb.go (about) 1 // Copyright 2016 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/bots.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 // Schema for bots.cfg service config file in luci-config. 29 // 30 // It defines a function bot_id => (required credentials, trusted_dimensions, 31 // config), where 32 // - "bot_id" is identifier of a bot as sent by the bot itself (usually 33 // machine hostname, short one, not FQDN) 34 // - "required credentials" describes how server should authenticate calls 35 // from the bot. 36 // - "trusted_dimensions" is a set of dimension set by the server itself. 37 // Such dimensions can't be spoofed by the bot. 38 // - "config" is any additional bot configuration. 39 // 40 // Connections from bots that do not appear in this config are rejected. 41 // 42 // The default config (used if bots.cfg is missing) represents IP-whitelist only 43 // authentication, as was used before bots.cfg was implemented: 44 // 45 // bot_group { 46 // auth { 47 // ip_whitelist: "<swarming-app-id>-bots" 48 // } 49 // } 50 type BotsCfg struct { 51 state protoimpl.MessageState 52 sizeCache protoimpl.SizeCache 53 unknownFields protoimpl.UnknownFields 54 55 // List of dimension names that are provided by the server. 56 // 57 // If bot attempts to set such dimension, it'll be ignored. Trusted dimensions 58 // are defined through bot_group configs below. Swarming users can trust such 59 // dimensions, since they are set by the server based on validated credentials 60 // (unlike other dimensions that can be arbitrary defined by the bot itself). 61 TrustedDimensions []string `protobuf:"bytes,1,rep,name=trusted_dimensions,json=trustedDimensions,proto3" json:"trusted_dimensions,omitempty"` 62 // A list of groups of bots. Each group defines a bunch of bots that all 63 // have same dimensions and authenticate in the same way. 64 // 65 // The order of entries here is irrelevant. The server uses the following 66 // search algorithm when trying to pick a group for a bot with some bot_id: 67 // 1. First it tries to find a direct match: a group that lists the bot in 68 // bot_id field. 69 // 2. Next it tries to find a group with matching bot_id_prefix. The config 70 // validation process makes sure prefixes do not "intersect", so there 71 // will be at most one matching group. 72 // 3. Finally, if there's a group with no defined bot_id or bot_id_prefix 73 // fields (the "default" group), the bot is categorized to that group. 74 // If there's no such group, the connection from the bot is rejected. 75 // Config validation process ensures there can be only one such group. 76 BotGroup []*BotGroup `protobuf:"bytes,2,rep,name=bot_group,json=botGroup,proto3" json:"bot_group,omitempty"` 77 } 78 79 func (x *BotsCfg) Reset() { 80 *x = BotsCfg{} 81 if protoimpl.UnsafeEnabled { 82 mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[0] 83 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 84 ms.StoreMessageInfo(mi) 85 } 86 } 87 88 func (x *BotsCfg) String() string { 89 return protoimpl.X.MessageStringOf(x) 90 } 91 92 func (*BotsCfg) ProtoMessage() {} 93 94 func (x *BotsCfg) ProtoReflect() protoreflect.Message { 95 mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[0] 96 if protoimpl.UnsafeEnabled && x != nil { 97 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 98 if ms.LoadMessageInfo() == nil { 99 ms.StoreMessageInfo(mi) 100 } 101 return ms 102 } 103 return mi.MessageOf(x) 104 } 105 106 // Deprecated: Use BotsCfg.ProtoReflect.Descriptor instead. 107 func (*BotsCfg) Descriptor() ([]byte, []int) { 108 return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP(), []int{0} 109 } 110 111 func (x *BotsCfg) GetTrustedDimensions() []string { 112 if x != nil { 113 return x.TrustedDimensions 114 } 115 return nil 116 } 117 118 func (x *BotsCfg) GetBotGroup() []*BotGroup { 119 if x != nil { 120 return x.BotGroup 121 } 122 return nil 123 } 124 125 // A group of bots that share authentication method, dimensions and owners. 126 // 127 // Union of bot_id and bot_id_prefix define a set of bots that belong to this 128 // group. The rest of the fields define properties of this group. 129 // 130 // If bot_id and bot_id_prefix are both missing, the group defines all bots that 131 // didn't fit into other groups. There can be only one such "default" group. 132 // 133 // NOTE: Swarming allows 'derivative' bots where multiple bots run on the same 134 // host machine in some sort of container (such as Docker containers) and SHARE 135 // A SINGLE CREDENTIAL. These bots have hostnames such as 'hostmachine--001', 136 // where the "--001" suffix indicates which of the contained bots on 137 // 'hostmachine' it is. When Swarming checks the bot affiliation for this 138 // contained machine, it checks ONLY the 'hostmachine' portion. This means that 139 // if your contained bot is 'vm10-vlan2--001', it would match: 140 // 141 // `bot_id: "vm10-vlan2` 142 // `bot_id: "vm{0...100}-vlan2` 143 // `bot_id_prefix: "vm10-vlan` 144 // 145 // but would NOT match: 146 // 147 // `bot_id: "vm10-vlan2--001` 148 // `bot_id_prefix: "vm10-vlan2-` 149 // `bot_id_prefix: "vm10-vlan2--` 150 // 151 // TODO(vadimsh): Introduce explicit field "use_as_default" instead. 152 type BotGroup struct { 153 state protoimpl.MessageState 154 sizeCache protoimpl.SizeCache 155 unknownFields protoimpl.UnknownFields 156 157 // Explicit enumeration of bot IDs belonging to this group. 158 // 159 // It supports subset of bash brace expansion syntax, in particular ranges 160 // and lists. For example: 161 // - vm{1..3}-m1 will expand into vm1-m1, vm2-m1 and vm3-m1. 162 // - vm{100,150,200}-m1 will expand into vm100-m1, vm150-m1 and vm200-m1. 163 // 164 // There can be only one "{...}" section in the string. 165 BotId []string `protobuf:"bytes,1,rep,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"` 166 // A prefix to match against bot ID string. 167 BotIdPrefix []string `protobuf:"bytes,2,rep,name=bot_id_prefix,json=botIdPrefix,proto3" json:"bot_id_prefix,omitempty"` 168 // Defines authentication methods for bots from this group. 169 // 170 // Evaluated sequentially until first match. 171 Auth []*BotAuth `protobuf:"bytes,20,rep,name=auth,proto3" json:"auth,omitempty"` 172 // Emails of owners of these bots. Optional. 173 Owners []string `protobuf:"bytes,21,rep,name=owners,proto3" json:"owners,omitempty"` 174 // List of dimensions to assign to these bots. 175 // 176 // Each dimension is a "<key>:<value>" pair. 177 Dimensions []string `protobuf:"bytes,22,rep,name=dimensions,proto3" json:"dimensions,omitempty"` 178 // Path to an additional config script to inject into the swarming bot upon 179 // handshake. 180 // 181 // The path is relative to 'scripts/' directory in the service config repo. 182 BotConfigScript string `protobuf:"bytes,23,opt,name=bot_config_script,json=botConfigScript,proto3" json:"bot_config_script,omitempty"` 183 // The revision of the config script to inject into the swarming bot upon 184 // handshake. 185 // 186 // The field is filled when the bots.cfg gets loaded. 187 BotConfigScriptRev string `protobuf:"bytes,26,opt,name=bot_config_script_rev,json=botConfigScriptRev,proto3" json:"bot_config_script_rev,omitempty"` 188 // The actual body of the config script to inject into the swarming bot upon 189 // handshake (in whatever encoding it happened to be in the config repo). 190 // 191 // For internal use (unless you fancy writing python scripts as single line 192 // escaped text proto string). If present, overrides 'bot_config_script'. 193 BotConfigScriptContent []byte `protobuf:"bytes,25,opt,name=bot_config_script_content,json=botConfigScriptContent,proto3" json:"bot_config_script_content,omitempty"` 194 // A service account to use on bots when authenticating calls to various 195 // system-level services (like Isolate and CIPD), required for correct 196 // operation of the bot. 197 // 198 // Tasks will be able to access this account too, but it is not recommended 199 // and should be used extremely rare. 200 // 201 // If set to a service account email (*@*.iam.gserviceaccount.com), bots will 202 // use this account, generating access token through Swarming server. For this 203 // to work, the server account (<app-id>@appspot.gserviceaccount.com) must 204 // have "serviceAccountActor" IAM role set on the account. 205 // 206 // If set to a special string "bot", bots will use exact same token they use 207 // when authenticating calls to Swarming server itself. This works only if 208 // bots use OAuth for authentication (see 'require_service_account' in 209 // BotAuth). This mode exists for cases when proliferation of various service 210 // accounts is undesirable. Note that in this mode Swarming processes won't be 211 // able to request a system account token with some new scopes: they get exact 212 // same token as returned by get_authentication_headers bot_config.py hook. 213 // 214 // If not set, bots will not use authentication at all. 215 SystemServiceAccount string `protobuf:"bytes,24,opt,name=system_service_account,json=systemServiceAccount,proto3" json:"system_service_account,omitempty"` 216 // The cloud project id where the bot saves its logs. 217 // For GCE bots, it is the same cloud project where the bots reside. 218 // For non-GCE bots, it is the cloud project where the logs are being sent to. 219 LogsCloudProject string `protobuf:"bytes,27,opt,name=logs_cloud_project,json=logsCloudProject,proto3" json:"logs_cloud_project,omitempty"` 220 RbeMigration *BotGroup_RBEMigration `protobuf:"bytes,28,opt,name=rbe_migration,json=rbeMigration,proto3" json:"rbe_migration,omitempty"` 221 } 222 223 func (x *BotGroup) Reset() { 224 *x = BotGroup{} 225 if protoimpl.UnsafeEnabled { 226 mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[1] 227 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 228 ms.StoreMessageInfo(mi) 229 } 230 } 231 232 func (x *BotGroup) String() string { 233 return protoimpl.X.MessageStringOf(x) 234 } 235 236 func (*BotGroup) ProtoMessage() {} 237 238 func (x *BotGroup) ProtoReflect() protoreflect.Message { 239 mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[1] 240 if protoimpl.UnsafeEnabled && x != nil { 241 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 242 if ms.LoadMessageInfo() == nil { 243 ms.StoreMessageInfo(mi) 244 } 245 return ms 246 } 247 return mi.MessageOf(x) 248 } 249 250 // Deprecated: Use BotGroup.ProtoReflect.Descriptor instead. 251 func (*BotGroup) Descriptor() ([]byte, []int) { 252 return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP(), []int{1} 253 } 254 255 func (x *BotGroup) GetBotId() []string { 256 if x != nil { 257 return x.BotId 258 } 259 return nil 260 } 261 262 func (x *BotGroup) GetBotIdPrefix() []string { 263 if x != nil { 264 return x.BotIdPrefix 265 } 266 return nil 267 } 268 269 func (x *BotGroup) GetAuth() []*BotAuth { 270 if x != nil { 271 return x.Auth 272 } 273 return nil 274 } 275 276 func (x *BotGroup) GetOwners() []string { 277 if x != nil { 278 return x.Owners 279 } 280 return nil 281 } 282 283 func (x *BotGroup) GetDimensions() []string { 284 if x != nil { 285 return x.Dimensions 286 } 287 return nil 288 } 289 290 func (x *BotGroup) GetBotConfigScript() string { 291 if x != nil { 292 return x.BotConfigScript 293 } 294 return "" 295 } 296 297 func (x *BotGroup) GetBotConfigScriptRev() string { 298 if x != nil { 299 return x.BotConfigScriptRev 300 } 301 return "" 302 } 303 304 func (x *BotGroup) GetBotConfigScriptContent() []byte { 305 if x != nil { 306 return x.BotConfigScriptContent 307 } 308 return nil 309 } 310 311 func (x *BotGroup) GetSystemServiceAccount() string { 312 if x != nil { 313 return x.SystemServiceAccount 314 } 315 return "" 316 } 317 318 func (x *BotGroup) GetLogsCloudProject() string { 319 if x != nil { 320 return x.LogsCloudProject 321 } 322 return "" 323 } 324 325 func (x *BotGroup) GetRbeMigration() *BotGroup_RBEMigration { 326 if x != nil { 327 return x.RbeMigration 328 } 329 return nil 330 } 331 332 // Defines what kind of authentication to perform when handling requests from 333 // bots belonging to some bot group. 334 // 335 // The following combinations are valid: 336 // - Either one of require_* alone. 337 // - IP whitelist alone. 338 // - IP + require_luci_machine_token: requires both to pass. 339 // - IP + require_service_account: requires both to pass. 340 // - IP + require_gce_vm_token: requires both to pass. 341 // 342 // Next ID: 6. 343 type BotAuth struct { 344 state protoimpl.MessageState 345 sizeCache protoimpl.SizeCache 346 unknownFields protoimpl.UnknownFields 347 348 // If true, log an error (but proceed) if this method didn't succeed. 349 // 350 // This field is totally optional and makes sense only when there are more 351 // than one auth method. Affects only logging levels. 352 // 353 // Doesn't apply to methods that were skipped because some method before them 354 // succeeded. Thus methods that have 'log_if_failed' should be in front of 355 // BotGroup.auth list. 356 // 357 // This is useful when migrating from one auth method to another to verify 358 // the new method is used in 100% of cases, while still keeping a fallback 359 // to an old method. 360 LogIfFailed bool `protobuf:"varint,5,opt,name=log_if_failed,json=logIfFailed,proto3" json:"log_if_failed,omitempty"` 361 // If true, the bot should provide valid X-Luci-Machine-Token header. 362 // 363 // The machine FQDN embedded in the token should have hostname equal to the 364 // bot_id. 365 RequireLuciMachineToken bool `protobuf:"varint,1,opt,name=require_luci_machine_token,json=requireLuciMachineToken,proto3" json:"require_luci_machine_token,omitempty"` 366 // If set, the bot should use OAuth access token belonging to any of these 367 // service accounts. 368 // 369 // The token should have "https://www.googleapis.com/auth/userinfo.email" 370 // scope. 371 RequireServiceAccount []string `protobuf:"bytes,2,rep,name=require_service_account,json=requireServiceAccount,proto3" json:"require_service_account,omitempty"` 372 // If set, the bot should provide valid X-Luci-Gce-Vm-Token header. 373 // 374 // This header should contain JWT with signed VM metadata with the following 375 // expectations: 376 // - Audience matches https://[*-dot-]<app>.appspot.com 377 // - google.compute_engine.project_id field matches the value of 'project'. 378 // - instance_name matches bot_id reported by the bot (case insensitive). 379 RequireGceVmToken *BotAuth_GCE `protobuf:"bytes,4,opt,name=require_gce_vm_token,json=requireGceVmToken,proto3" json:"require_gce_vm_token,omitempty"` 380 // If set, defines an IP whitelist name (in auth_service database) with a set 381 // of IPs allowed to be used by the bots in this group. 382 // 383 // Works in conjunction with other checks, e.g. if require_luci_machine_token 384 // is true, both valid X-Luci-Machine-Token and a whitelisted IP are needed to 385 // successfully authenticate. 386 // 387 // Can also be used on its own (when all other fields are empty). In that case 388 // the IP whitelist is the primary authentication mechanism. Note that in this 389 // case all bots that share the IP whitelist are effectively in a single trust 390 // domain (any bot can pretend to be some other bot). 391 IpWhitelist string `protobuf:"bytes,3,opt,name=ip_whitelist,json=ipWhitelist,proto3" json:"ip_whitelist,omitempty"` 392 } 393 394 func (x *BotAuth) Reset() { 395 *x = BotAuth{} 396 if protoimpl.UnsafeEnabled { 397 mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[2] 398 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 399 ms.StoreMessageInfo(mi) 400 } 401 } 402 403 func (x *BotAuth) String() string { 404 return protoimpl.X.MessageStringOf(x) 405 } 406 407 func (*BotAuth) ProtoMessage() {} 408 409 func (x *BotAuth) ProtoReflect() protoreflect.Message { 410 mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[2] 411 if protoimpl.UnsafeEnabled && x != nil { 412 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 413 if ms.LoadMessageInfo() == nil { 414 ms.StoreMessageInfo(mi) 415 } 416 return ms 417 } 418 return mi.MessageOf(x) 419 } 420 421 // Deprecated: Use BotAuth.ProtoReflect.Descriptor instead. 422 func (*BotAuth) Descriptor() ([]byte, []int) { 423 return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP(), []int{2} 424 } 425 426 func (x *BotAuth) GetLogIfFailed() bool { 427 if x != nil { 428 return x.LogIfFailed 429 } 430 return false 431 } 432 433 func (x *BotAuth) GetRequireLuciMachineToken() bool { 434 if x != nil { 435 return x.RequireLuciMachineToken 436 } 437 return false 438 } 439 440 func (x *BotAuth) GetRequireServiceAccount() []string { 441 if x != nil { 442 return x.RequireServiceAccount 443 } 444 return nil 445 } 446 447 func (x *BotAuth) GetRequireGceVmToken() *BotAuth_GCE { 448 if x != nil { 449 return x.RequireGceVmToken 450 } 451 return nil 452 } 453 454 func (x *BotAuth) GetIpWhitelist() string { 455 if x != nil { 456 return x.IpWhitelist 457 } 458 return "" 459 } 460 461 // Settings controlling migration to the RBE Scheduler. 462 // 463 // They are used only if all pools the bot belongs to are associated with an 464 // RBE instance, and it is the same instance for all pools. 465 // 466 // TODO(vadimsh): Remove when no longer used. Replace by BotModeAllocation in 467 // Pool.RBEMigration. 468 type BotGroup_RBEMigration struct { 469 state protoimpl.MessageState 470 sizeCache protoimpl.SizeCache 471 unknownFields protoimpl.UnknownFields 472 473 // Approximate percent of bots in this bot group to switch to the RBE mode. 474 // 475 // A bot is in the RBE mode if `hash(bot_id) % 100 <= rbe_mode_percent`. 476 RbeModePercent int32 `protobuf:"varint,1,opt,name=rbe_mode_percent,json=rbeModePercent,proto3" json:"rbe_mode_percent,omitempty"` 477 // Bots to put into the RBE mode regardless of `rbe_mode_percent`. 478 // 479 // Useful to force the RBE mode on a particular bot. 480 EnableRbeOn []string `protobuf:"bytes,2,rep,name=enable_rbe_on,json=enableRbeOn,proto3" json:"enable_rbe_on,omitempty"` 481 // Bots to exclude from the RBE mode regardless of `rbe_mode_percent`. 482 // 483 // Useful to exclude problematic bots from the RBE mode. 484 DisableRbeOn []string `protobuf:"bytes,3,rep,name=disable_rbe_on,json=disableRbeOn,proto3" json:"disable_rbe_on,omitempty"` 485 // If true consume tasks from both Swarming and RBE schedulers at the same 486 // time (in an interleaved kind of way). 487 // 488 // Useful when migrating small bot pools. In this mode task ordering and 489 // priority may not be respected (if tasks end up in different schedulers) 490 // and there may be higher scheduling delays. 491 HybridMode bool `protobuf:"varint,4,opt,name=hybrid_mode,json=hybridMode,proto3" json:"hybrid_mode,omitempty"` 492 } 493 494 func (x *BotGroup_RBEMigration) Reset() { 495 *x = BotGroup_RBEMigration{} 496 if protoimpl.UnsafeEnabled { 497 mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[3] 498 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 499 ms.StoreMessageInfo(mi) 500 } 501 } 502 503 func (x *BotGroup_RBEMigration) String() string { 504 return protoimpl.X.MessageStringOf(x) 505 } 506 507 func (*BotGroup_RBEMigration) ProtoMessage() {} 508 509 func (x *BotGroup_RBEMigration) ProtoReflect() protoreflect.Message { 510 mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[3] 511 if protoimpl.UnsafeEnabled && x != nil { 512 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 513 if ms.LoadMessageInfo() == nil { 514 ms.StoreMessageInfo(mi) 515 } 516 return ms 517 } 518 return mi.MessageOf(x) 519 } 520 521 // Deprecated: Use BotGroup_RBEMigration.ProtoReflect.Descriptor instead. 522 func (*BotGroup_RBEMigration) Descriptor() ([]byte, []int) { 523 return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP(), []int{1, 0} 524 } 525 526 func (x *BotGroup_RBEMigration) GetRbeModePercent() int32 { 527 if x != nil { 528 return x.RbeModePercent 529 } 530 return 0 531 } 532 533 func (x *BotGroup_RBEMigration) GetEnableRbeOn() []string { 534 if x != nil { 535 return x.EnableRbeOn 536 } 537 return nil 538 } 539 540 func (x *BotGroup_RBEMigration) GetDisableRbeOn() []string { 541 if x != nil { 542 return x.DisableRbeOn 543 } 544 return nil 545 } 546 547 func (x *BotGroup_RBEMigration) GetHybridMode() bool { 548 if x != nil { 549 return x.HybridMode 550 } 551 return false 552 } 553 554 // See require_gce_vm_token below. 555 type BotAuth_GCE struct { 556 state protoimpl.MessageState 557 sizeCache protoimpl.SizeCache 558 unknownFields protoimpl.UnknownFields 559 560 Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` 561 } 562 563 func (x *BotAuth_GCE) Reset() { 564 *x = BotAuth_GCE{} 565 if protoimpl.UnsafeEnabled { 566 mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[4] 567 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 568 ms.StoreMessageInfo(mi) 569 } 570 } 571 572 func (x *BotAuth_GCE) String() string { 573 return protoimpl.X.MessageStringOf(x) 574 } 575 576 func (*BotAuth_GCE) ProtoMessage() {} 577 578 func (x *BotAuth_GCE) ProtoReflect() protoreflect.Message { 579 mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[4] 580 if protoimpl.UnsafeEnabled && x != nil { 581 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 582 if ms.LoadMessageInfo() == nil { 583 ms.StoreMessageInfo(mi) 584 } 585 return ms 586 } 587 return mi.MessageOf(x) 588 } 589 590 // Deprecated: Use BotAuth_GCE.ProtoReflect.Descriptor instead. 591 func (*BotAuth_GCE) Descriptor() ([]byte, []int) { 592 return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP(), []int{2, 0} 593 } 594 595 func (x *BotAuth_GCE) GetProject() string { 596 if x != nil { 597 return x.Project 598 } 599 return "" 600 } 601 602 var File_go_chromium_org_luci_swarming_proto_config_bots_proto protoreflect.FileDescriptor 603 604 var file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDesc = []byte{ 605 0x0a, 0x35, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 606 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 607 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x6f, 0x74, 608 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 609 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 610 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 611 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6f, 0x70, 0x74, 0x69, 612 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x70, 0x0a, 0x07, 0x42, 0x6f, 0x74, 613 0x73, 0x43, 0x66, 0x67, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 614 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 615 0x52, 0x11, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 616 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 617 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 618 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 619 0x70, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xa2, 0x05, 0x0a, 0x08, 620 0x42, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x6f, 0x74, 0x5f, 621 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6f, 0x74, 0x49, 0x64, 0x12, 622 0x22, 0x0a, 0x0d, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 623 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x49, 0x64, 0x50, 0x72, 0x65, 624 0x66, 0x69, 0x78, 0x12, 0x2c, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x14, 0x20, 0x03, 0x28, 625 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 626 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x74, 0x41, 0x75, 0x74, 0x68, 0x52, 0x04, 0x61, 0x75, 0x74, 627 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 628 0x09, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x6d, 629 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 630 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x6f, 0x74, 631 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x17, 632 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 633 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x62, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 634 0x66, 0x69, 0x67, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x18, 0x1a, 635 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x62, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 636 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x76, 0x12, 0x39, 0x0a, 0x19, 0x62, 0x6f, 0x74, 0x5f, 637 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x63, 0x6f, 638 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x62, 0x6f, 0x74, 639 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x74, 640 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x65, 641 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x18, 0x20, 642 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 643 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x6f, 0x67, 644 0x73, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 645 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x67, 0x73, 0x43, 0x6c, 0x6f, 0x75, 0x64, 646 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x4b, 0x0a, 0x0d, 0x72, 0x62, 0x65, 0x5f, 0x6d, 647 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 648 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 649 0x2e, 0x42, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x52, 0x42, 0x45, 0x4d, 0x69, 0x67, 650 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x72, 0x62, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 651 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xa3, 0x01, 0x0a, 0x0c, 0x52, 0x42, 0x45, 0x4d, 0x69, 0x67, 0x72, 652 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x62, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 653 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 654 0x0e, 0x72, 0x62, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 655 0x22, 0x0a, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x62, 0x65, 0x5f, 0x6f, 0x6e, 656 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x62, 657 0x65, 0x4f, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 658 0x62, 0x65, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x69, 0x73, 659 0x61, 0x62, 0x6c, 0x65, 0x52, 0x62, 0x65, 0x4f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x79, 0x62, 660 0x72, 0x69, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 661 0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 662 0x22, 0xb5, 0x02, 0x0a, 0x07, 0x42, 0x6f, 0x74, 0x41, 0x75, 0x74, 0x68, 0x12, 0x22, 0x0a, 0x0d, 663 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x66, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 664 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6c, 0x6f, 0x67, 0x49, 0x66, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 665 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x6c, 0x75, 0x63, 0x69, 666 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 667 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x4c, 0x75, 0x63, 668 0x69, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x36, 0x0a, 669 0x17, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 670 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 671 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 672 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x14, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 673 0x5f, 0x67, 0x63, 0x65, 0x5f, 0x76, 0x6d, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 674 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 675 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x74, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x47, 0x43, 676 0x45, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x47, 0x63, 0x65, 0x56, 0x6d, 0x54, 677 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x70, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 678 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x70, 0x57, 0x68, 679 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x1f, 0x0a, 0x03, 0x47, 0x43, 0x45, 0x12, 0x18, 680 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 681 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x75, 0xa2, 0xfe, 0x23, 0x3c, 0x0a, 0x3a, 682 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6c, 683 0x75, 0x63, 0x69, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, 684 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 685 0x67, 0x3a, 0x62, 0x6f, 0x74, 0x73, 0x2e, 0x63, 0x66, 0x67, 0x5a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 686 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 687 0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 688 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x70, 0x62, 0x62, 689 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 690 } 691 692 var ( 693 file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescOnce sync.Once 694 file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescData = file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDesc 695 ) 696 697 func file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP() []byte { 698 file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescOnce.Do(func() { 699 file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescData) 700 }) 701 return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescData 702 } 703 704 var file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes = make([]protoimpl.MessageInfo, 5) 705 var file_go_chromium_org_luci_swarming_proto_config_bots_proto_goTypes = []interface{}{ 706 (*BotsCfg)(nil), // 0: swarming.config.BotsCfg 707 (*BotGroup)(nil), // 1: swarming.config.BotGroup 708 (*BotAuth)(nil), // 2: swarming.config.BotAuth 709 (*BotGroup_RBEMigration)(nil), // 3: swarming.config.BotGroup.RBEMigration 710 (*BotAuth_GCE)(nil), // 4: swarming.config.BotAuth.GCE 711 } 712 var file_go_chromium_org_luci_swarming_proto_config_bots_proto_depIdxs = []int32{ 713 1, // 0: swarming.config.BotsCfg.bot_group:type_name -> swarming.config.BotGroup 714 2, // 1: swarming.config.BotGroup.auth:type_name -> swarming.config.BotAuth 715 3, // 2: swarming.config.BotGroup.rbe_migration:type_name -> swarming.config.BotGroup.RBEMigration 716 4, // 3: swarming.config.BotAuth.require_gce_vm_token:type_name -> swarming.config.BotAuth.GCE 717 4, // [4:4] is the sub-list for method output_type 718 4, // [4:4] is the sub-list for method input_type 719 4, // [4:4] is the sub-list for extension type_name 720 4, // [4:4] is the sub-list for extension extendee 721 0, // [0:4] is the sub-list for field type_name 722 } 723 724 func init() { file_go_chromium_org_luci_swarming_proto_config_bots_proto_init() } 725 func file_go_chromium_org_luci_swarming_proto_config_bots_proto_init() { 726 if File_go_chromium_org_luci_swarming_proto_config_bots_proto != nil { 727 return 728 } 729 if !protoimpl.UnsafeEnabled { 730 file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 731 switch v := v.(*BotsCfg); i { 732 case 0: 733 return &v.state 734 case 1: 735 return &v.sizeCache 736 case 2: 737 return &v.unknownFields 738 default: 739 return nil 740 } 741 } 742 file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 743 switch v := v.(*BotGroup); i { 744 case 0: 745 return &v.state 746 case 1: 747 return &v.sizeCache 748 case 2: 749 return &v.unknownFields 750 default: 751 return nil 752 } 753 } 754 file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 755 switch v := v.(*BotAuth); i { 756 case 0: 757 return &v.state 758 case 1: 759 return &v.sizeCache 760 case 2: 761 return &v.unknownFields 762 default: 763 return nil 764 } 765 } 766 file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 767 switch v := v.(*BotGroup_RBEMigration); i { 768 case 0: 769 return &v.state 770 case 1: 771 return &v.sizeCache 772 case 2: 773 return &v.unknownFields 774 default: 775 return nil 776 } 777 } 778 file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 779 switch v := v.(*BotAuth_GCE); i { 780 case 0: 781 return &v.state 782 case 1: 783 return &v.sizeCache 784 case 2: 785 return &v.unknownFields 786 default: 787 return nil 788 } 789 } 790 } 791 type x struct{} 792 out := protoimpl.TypeBuilder{ 793 File: protoimpl.DescBuilder{ 794 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 795 RawDescriptor: file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDesc, 796 NumEnums: 0, 797 NumMessages: 5, 798 NumExtensions: 0, 799 NumServices: 0, 800 }, 801 GoTypes: file_go_chromium_org_luci_swarming_proto_config_bots_proto_goTypes, 802 DependencyIndexes: file_go_chromium_org_luci_swarming_proto_config_bots_proto_depIdxs, 803 MessageInfos: file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes, 804 }.Build() 805 File_go_chromium_org_luci_swarming_proto_config_bots_proto = out.File 806 file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDesc = nil 807 file_go_chromium_org_luci_swarming_proto_config_bots_proto_goTypes = nil 808 file_go_chromium_org_luci_swarming_proto_config_bots_proto_depIdxs = nil 809 }