blob: 36619ec5b41b118f0d2291cca1a3a91914963db3 [file] [log] [blame]
// Copyright 2016 The LUCI Authors. All rights reserved.
// Use of this source code is governed under the Apache License, Version 2.0
// that can be found in the LICENSE file.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc v3.21.7
// source: go.chromium.org/luci/swarming/proto/config/bots.proto
package configpb
import (
_ "go.chromium.org/luci/common/proto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Schema for bots.cfg service config file in luci-config.
//
// It defines a function bot_id => (required credentials, trusted_dimensions,
// config), where
// - "bot_id" is identifier of a bot as sent by the bot itself (usually
// machine hostname, short one, not FQDN)
// - "required credentials" describes how server should authenticate calls
// from the bot.
// - "trusted_dimensions" is a set of dimension set by the server itself.
// Such dimensions can't be spoofed by the bot.
// - "config" is any additional bot configuration.
//
// Connections from bots that do not appear in this config are rejected.
//
// The default config (used if bots.cfg is missing) represents IP-whitelist only
// authentication, as was used before bots.cfg was implemented:
//
// bot_group {
// auth {
// ip_whitelist: "<swarming-app-id>-bots"
// }
// }
type BotsCfg struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// List of dimension names that are provided by the server.
//
// If bot attempts to set such dimension, it'll be ignored. Trusted dimensions
// are defined through bot_group configs below. Swarming users can trust such
// dimensions, since they are set by the server based on validated credentials
// (unlike other dimensions that can be arbitrary defined by the bot itself).
TrustedDimensions []string `protobuf:"bytes,1,rep,name=trusted_dimensions,json=trustedDimensions,proto3" json:"trusted_dimensions,omitempty"`
// A list of groups of bots. Each group defines a bunch of bots that all
// have same dimensions and authenticate in the same way.
//
// The order of entries here is irrelevant. The server uses the following
// search algorithm when trying to pick a group for a bot with some bot_id:
// 1. First it tries to find a direct match: a group that lists the bot in
// bot_id field.
// 2. Next it tries to find a group with matching bot_id_prefix. The config
// validation process makes sure prefixes do not "intersect", so there
// will be at most one matching group.
// 3. Finally, if there's a group with no defined bot_id or bot_id_prefix
// fields (the "default" group), the bot is categorized to that group.
// If there's no such group, the connection from the bot is rejected.
// Config validation process ensures there can be only one such group.
BotGroup []*BotGroup `protobuf:"bytes,2,rep,name=bot_group,json=botGroup,proto3" json:"bot_group,omitempty"`
}
func (x *BotsCfg) Reset() {
*x = BotsCfg{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BotsCfg) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BotsCfg) ProtoMessage() {}
func (x *BotsCfg) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BotsCfg.ProtoReflect.Descriptor instead.
func (*BotsCfg) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP(), []int{0}
}
func (x *BotsCfg) GetTrustedDimensions() []string {
if x != nil {
return x.TrustedDimensions
}
return nil
}
func (x *BotsCfg) GetBotGroup() []*BotGroup {
if x != nil {
return x.BotGroup
}
return nil
}
// A group of bots that share authentication method, dimensions and owners.
//
// Union of bot_id and bot_id_prefix define a set of bots that belong to this
// group. The rest of the fields define properties of this group.
//
// If bot_id and bot_id_prefix are both missing, the group defines all bots that
// didn't fit into other groups. There can be only one such "default" group.
//
// NOTE: Swarming allows 'derivative' bots where multiple bots run on the same
// host machine in some sort of container (such as Docker containers) and SHARE
// A SINGLE CREDENTIAL. These bots have hostnames such as 'hostmachine--001',
// where the "--001" suffix indicates which of the contained bots on
// 'hostmachine' it is. When Swarming checks the bot affiliation for this
// contained machine, it checks ONLY the 'hostmachine' portion. This means that
// if your contained bot is 'vm10-vlan2--001', it would match:
//
// `bot_id: "vm10-vlan2`
// `bot_id: "vm{0...100}-vlan2`
// `bot_id_prefix: "vm10-vlan`
//
// but would NOT match:
//
// `bot_id: "vm10-vlan2--001`
// `bot_id_prefix: "vm10-vlan2-`
// `bot_id_prefix: "vm10-vlan2--`
//
// TODO(vadimsh): Introduce explicit field "use_as_default" instead.
type BotGroup struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Explicit enumeration of bot IDs belonging to this group.
//
// It supports subset of bash brace expansion syntax, in particular ranges
// and lists. For example:
// - vm{1..3}-m1 will expand into vm1-m1, vm2-m1 and vm3-m1.
// - vm{100,150,200}-m1 will expand into vm100-m1, vm150-m1 and vm200-m1.
//
// There can be only one "{...}" section in the string.
BotId []string `protobuf:"bytes,1,rep,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
// A prefix to match against bot ID string.
BotIdPrefix []string `protobuf:"bytes,2,rep,name=bot_id_prefix,json=botIdPrefix,proto3" json:"bot_id_prefix,omitempty"`
// Defines authentication methods for bots from this group.
//
// Evaluated sequentially until first match.
Auth []*BotAuth `protobuf:"bytes,20,rep,name=auth,proto3" json:"auth,omitempty"`
// Emails of owners of these bots. Optional.
Owners []string `protobuf:"bytes,21,rep,name=owners,proto3" json:"owners,omitempty"`
// List of dimensions to assign to these bots.
//
// Each dimension is a "<key>:<value>" pair.
Dimensions []string `protobuf:"bytes,22,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
// Path to an additional config script to inject into the swarming bot upon
// handshake.
//
// The path is relative to 'scripts/' directory in the service config repo.
BotConfigScript string `protobuf:"bytes,23,opt,name=bot_config_script,json=botConfigScript,proto3" json:"bot_config_script,omitempty"`
// The revision of the config script to inject into the swarming bot upon
// handshake.
//
// The field is filled when the bots.cfg gets loaded.
BotConfigScriptRev string `protobuf:"bytes,26,opt,name=bot_config_script_rev,json=botConfigScriptRev,proto3" json:"bot_config_script_rev,omitempty"`
// The actual body of the config script to inject into the swarming bot upon
// handshake (in whatever encoding it happened to be in the config repo).
//
// For internal use (unless you fancy writing python scripts as single line
// escaped text proto string). If present, overrides 'bot_config_script'.
BotConfigScriptContent []byte `protobuf:"bytes,25,opt,name=bot_config_script_content,json=botConfigScriptContent,proto3" json:"bot_config_script_content,omitempty"`
// A service account to use on bots when authenticating calls to various
// system-level services (like Isolate and CIPD), required for correct
// operation of the bot.
//
// Tasks will be able to access this account too, but it is not recommended
// and should be used extremely rare.
//
// If set to a service account email (*@*.iam.gserviceaccount.com), bots will
// use this account, generating access token through Swarming server. For this
// to work, the server account (<app-id>@appspot.gserviceaccount.com) must
// have "serviceAccountActor" IAM role set on the account.
//
// If set to a special string "bot", bots will use exact same token they use
// when authenticating calls to Swarming server itself. This works only if
// bots use OAuth for authentication (see 'require_service_account' in
// BotAuth). This mode exists for cases when proliferation of various service
// accounts is undesirable. Note that in this mode Swarming processes won't be
// able to request a system account token with some new scopes: they get exact
// same token as returned by get_authentication_headers bot_config.py hook.
//
// If not set, bots will not use authentication at all.
SystemServiceAccount string `protobuf:"bytes,24,opt,name=system_service_account,json=systemServiceAccount,proto3" json:"system_service_account,omitempty"`
// The cloud project id where the bot saves its logs.
// For GCE bots, it is the same cloud project where the bots reside.
// For non-GCE bots, it is the cloud project where the logs are being sent to.
LogsCloudProject string `protobuf:"bytes,27,opt,name=logs_cloud_project,json=logsCloudProject,proto3" json:"logs_cloud_project,omitempty"`
RbeMigration *BotGroup_RBEMigration `protobuf:"bytes,28,opt,name=rbe_migration,json=rbeMigration,proto3" json:"rbe_migration,omitempty"`
}
func (x *BotGroup) Reset() {
*x = BotGroup{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BotGroup) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BotGroup) ProtoMessage() {}
func (x *BotGroup) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BotGroup.ProtoReflect.Descriptor instead.
func (*BotGroup) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP(), []int{1}
}
func (x *BotGroup) GetBotId() []string {
if x != nil {
return x.BotId
}
return nil
}
func (x *BotGroup) GetBotIdPrefix() []string {
if x != nil {
return x.BotIdPrefix
}
return nil
}
func (x *BotGroup) GetAuth() []*BotAuth {
if x != nil {
return x.Auth
}
return nil
}
func (x *BotGroup) GetOwners() []string {
if x != nil {
return x.Owners
}
return nil
}
func (x *BotGroup) GetDimensions() []string {
if x != nil {
return x.Dimensions
}
return nil
}
func (x *BotGroup) GetBotConfigScript() string {
if x != nil {
return x.BotConfigScript
}
return ""
}
func (x *BotGroup) GetBotConfigScriptRev() string {
if x != nil {
return x.BotConfigScriptRev
}
return ""
}
func (x *BotGroup) GetBotConfigScriptContent() []byte {
if x != nil {
return x.BotConfigScriptContent
}
return nil
}
func (x *BotGroup) GetSystemServiceAccount() string {
if x != nil {
return x.SystemServiceAccount
}
return ""
}
func (x *BotGroup) GetLogsCloudProject() string {
if x != nil {
return x.LogsCloudProject
}
return ""
}
func (x *BotGroup) GetRbeMigration() *BotGroup_RBEMigration {
if x != nil {
return x.RbeMigration
}
return nil
}
// Defines what kind of authentication to perform when handling requests from
// bots belonging to some bot group.
//
// The following combinations are valid:
// - Either one of require_* alone.
// - IP whitelist alone.
// - IP + require_luci_machine_token: requires both to pass.
// - IP + require_service_account: requires both to pass.
// - IP + require_gce_vm_token: requires both to pass.
//
// Next ID: 6.
type BotAuth struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// If true, log an error (but proceed) if this method didn't succeed.
//
// This field is totally optional and makes sense only when there are more
// than one auth method. Affects only logging levels.
//
// Doesn't apply to methods that were skipped because some method before them
// succeeded. Thus methods that have 'log_if_failed' should be in front of
// BotGroup.auth list.
//
// This is useful when migrating from one auth method to another to verify
// the new method is used in 100% of cases, while still keeping a fallback
// to an old method.
LogIfFailed bool `protobuf:"varint,5,opt,name=log_if_failed,json=logIfFailed,proto3" json:"log_if_failed,omitempty"`
// If true, the bot should provide valid X-Luci-Machine-Token header.
//
// The machine FQDN embedded in the token should have hostname equal to the
// bot_id.
RequireLuciMachineToken bool `protobuf:"varint,1,opt,name=require_luci_machine_token,json=requireLuciMachineToken,proto3" json:"require_luci_machine_token,omitempty"`
// If set, the bot should use OAuth access token belonging to any of these
// service accounts.
//
// The token should have "https://www.googleapis.com/auth/userinfo.email"
// scope.
RequireServiceAccount []string `protobuf:"bytes,2,rep,name=require_service_account,json=requireServiceAccount,proto3" json:"require_service_account,omitempty"`
// If set, the bot should provide valid X-Luci-Gce-Vm-Token header.
//
// This header should contain JWT with signed VM metadata with the following
// expectations:
// - Audience matches https://[*-dot-]<app>.appspot.com
// - google.compute_engine.project_id field matches the value of 'project'.
// - instance_name matches bot_id reported by the bot (case insensitive).
RequireGceVmToken *BotAuth_GCE `protobuf:"bytes,4,opt,name=require_gce_vm_token,json=requireGceVmToken,proto3" json:"require_gce_vm_token,omitempty"`
// If set, defines an IP whitelist name (in auth_service database) with a set
// of IPs allowed to be used by the bots in this group.
//
// Works in conjunction with other checks, e.g. if require_luci_machine_token
// is true, both valid X-Luci-Machine-Token and a whitelisted IP are needed to
// successfully authenticate.
//
// Can also be used on its own (when all other fields are empty). In that case
// the IP whitelist is the primary authentication mechanism. Note that in this
// case all bots that share the IP whitelist are effectively in a single trust
// domain (any bot can pretend to be some other bot).
IpWhitelist string `protobuf:"bytes,3,opt,name=ip_whitelist,json=ipWhitelist,proto3" json:"ip_whitelist,omitempty"`
}
func (x *BotAuth) Reset() {
*x = BotAuth{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BotAuth) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BotAuth) ProtoMessage() {}
func (x *BotAuth) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BotAuth.ProtoReflect.Descriptor instead.
func (*BotAuth) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP(), []int{2}
}
func (x *BotAuth) GetLogIfFailed() bool {
if x != nil {
return x.LogIfFailed
}
return false
}
func (x *BotAuth) GetRequireLuciMachineToken() bool {
if x != nil {
return x.RequireLuciMachineToken
}
return false
}
func (x *BotAuth) GetRequireServiceAccount() []string {
if x != nil {
return x.RequireServiceAccount
}
return nil
}
func (x *BotAuth) GetRequireGceVmToken() *BotAuth_GCE {
if x != nil {
return x.RequireGceVmToken
}
return nil
}
func (x *BotAuth) GetIpWhitelist() string {
if x != nil {
return x.IpWhitelist
}
return ""
}
// Settings controlling migration to the RBE Scheduler.
//
// They are used only if all pools the bot belongs to are associated with an
// RBE instance, and it is the same instance for all pools.
//
// TODO(vadimsh): Remove when no longer used. Replace by BotModeAllocation in
// Pool.RBEMigration.
type BotGroup_RBEMigration struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Approximate percent of bots in this bot group to switch to the RBE mode.
//
// A bot is in the RBE mode if `hash(bot_id) % 100 <= rbe_mode_percent`.
RbeModePercent int32 `protobuf:"varint,1,opt,name=rbe_mode_percent,json=rbeModePercent,proto3" json:"rbe_mode_percent,omitempty"`
// Bots to put into the RBE mode regardless of `rbe_mode_percent`.
//
// Useful to force the RBE mode on a particular bot.
EnableRbeOn []string `protobuf:"bytes,2,rep,name=enable_rbe_on,json=enableRbeOn,proto3" json:"enable_rbe_on,omitempty"`
// Bots to exclude from the RBE mode regardless of `rbe_mode_percent`.
//
// Useful to exclude problematic bots from the RBE mode.
DisableRbeOn []string `protobuf:"bytes,3,rep,name=disable_rbe_on,json=disableRbeOn,proto3" json:"disable_rbe_on,omitempty"`
// If true consume tasks from both Swarming and RBE schedulers at the same
// time (in an interleaved kind of way).
//
// Useful when migrating small bot pools. In this mode task ordering and
// priority may not be respected (if tasks end up in different schedulers)
// and there may be higher scheduling delays.
HybridMode bool `protobuf:"varint,4,opt,name=hybrid_mode,json=hybridMode,proto3" json:"hybrid_mode,omitempty"`
}
func (x *BotGroup_RBEMigration) Reset() {
*x = BotGroup_RBEMigration{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BotGroup_RBEMigration) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BotGroup_RBEMigration) ProtoMessage() {}
func (x *BotGroup_RBEMigration) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BotGroup_RBEMigration.ProtoReflect.Descriptor instead.
func (*BotGroup_RBEMigration) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP(), []int{1, 0}
}
func (x *BotGroup_RBEMigration) GetRbeModePercent() int32 {
if x != nil {
return x.RbeModePercent
}
return 0
}
func (x *BotGroup_RBEMigration) GetEnableRbeOn() []string {
if x != nil {
return x.EnableRbeOn
}
return nil
}
func (x *BotGroup_RBEMigration) GetDisableRbeOn() []string {
if x != nil {
return x.DisableRbeOn
}
return nil
}
func (x *BotGroup_RBEMigration) GetHybridMode() bool {
if x != nil {
return x.HybridMode
}
return false
}
// See require_gce_vm_token below.
type BotAuth_GCE struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
}
func (x *BotAuth_GCE) Reset() {
*x = BotAuth_GCE{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BotAuth_GCE) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BotAuth_GCE) ProtoMessage() {}
func (x *BotAuth_GCE) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BotAuth_GCE.ProtoReflect.Descriptor instead.
func (*BotAuth_GCE) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP(), []int{2, 0}
}
func (x *BotAuth_GCE) GetProject() string {
if x != nil {
return x.Project
}
return ""
}
var File_go_chromium_org_luci_swarming_proto_config_bots_proto protoreflect.FileDescriptor
var file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDesc = []byte{
0x0a, 0x35, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x6f, 0x74,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e,
0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72,
0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6f, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x70, 0x0a, 0x07, 0x42, 0x6f, 0x74,
0x73, 0x43, 0x66, 0x67, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f,
0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
0x52, 0x11, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69,
0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e,
0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75,
0x70, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xa2, 0x05, 0x0a, 0x08,
0x42, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x6f, 0x74, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6f, 0x74, 0x49, 0x64, 0x12,
0x22, 0x0a, 0x0d, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x49, 0x64, 0x50, 0x72, 0x65,
0x66, 0x69, 0x78, 0x12, 0x2c, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x14, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x18, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x74, 0x41, 0x75, 0x74, 0x68, 0x52, 0x04, 0x61, 0x75, 0x74,
0x68, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28,
0x09, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x6d,
0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64,
0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x6f, 0x74,
0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x17,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53,
0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x62, 0x6f, 0x74, 0x5f, 0x63, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x18, 0x1a,
0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x62, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53,
0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x76, 0x12, 0x39, 0x0a, 0x19, 0x62, 0x6f, 0x74, 0x5f,
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x63, 0x6f,
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x62, 0x6f, 0x74,
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x74,
0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x18, 0x20,
0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x6f, 0x67,
0x73, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18,
0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x67, 0x73, 0x43, 0x6c, 0x6f, 0x75, 0x64,
0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x4b, 0x0a, 0x0d, 0x72, 0x62, 0x65, 0x5f, 0x6d,
0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
0x2e, 0x42, 0x6f, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x52, 0x42, 0x45, 0x4d, 0x69, 0x67,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x72, 0x62, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xa3, 0x01, 0x0a, 0x0c, 0x52, 0x42, 0x45, 0x4d, 0x69, 0x67, 0x72,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x62, 0x65, 0x5f, 0x6d, 0x6f, 0x64,
0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0e, 0x72, 0x62, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12,
0x22, 0x0a, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x62, 0x65, 0x5f, 0x6f, 0x6e,
0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x62,
0x65, 0x4f, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72,
0x62, 0x65, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x69, 0x73,
0x61, 0x62, 0x6c, 0x65, 0x52, 0x62, 0x65, 0x4f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x79, 0x62,
0x72, 0x69, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
0x68, 0x79, 0x62, 0x72, 0x69, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04,
0x22, 0xb5, 0x02, 0x0a, 0x07, 0x42, 0x6f, 0x74, 0x41, 0x75, 0x74, 0x68, 0x12, 0x22, 0x0a, 0x0d,
0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x66, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20,
0x01, 0x28, 0x08, 0x52, 0x0b, 0x6c, 0x6f, 0x67, 0x49, 0x66, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64,
0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x6c, 0x75, 0x63, 0x69,
0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01,
0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x4c, 0x75, 0x63,
0x69, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x36, 0x0a,
0x17, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15,
0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x14, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
0x5f, 0x67, 0x63, 0x65, 0x5f, 0x76, 0x6d, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x63,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x74, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x47, 0x43,
0x45, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x47, 0x63, 0x65, 0x56, 0x6d, 0x54,
0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x70, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65,
0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x70, 0x57, 0x68,
0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x1f, 0x0a, 0x03, 0x47, 0x43, 0x45, 0x12, 0x18,
0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x75, 0xa2, 0xfe, 0x23, 0x3c, 0x0a, 0x3a,
0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6c,
0x75, 0x63, 0x69, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f,
0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e,
0x67, 0x3a, 0x62, 0x6f, 0x74, 0x73, 0x2e, 0x63, 0x66, 0x67, 0x5a, 0x33, 0x67, 0x6f, 0x2e, 0x63,
0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69,
0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x70, 0x62, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescOnce sync.Once
file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescData = file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDesc
)
func file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescGZIP() []byte {
file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescOnce.Do(func() {
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)
})
return file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDescData
}
var file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_go_chromium_org_luci_swarming_proto_config_bots_proto_goTypes = []interface{}{
(*BotsCfg)(nil), // 0: swarming.config.BotsCfg
(*BotGroup)(nil), // 1: swarming.config.BotGroup
(*BotAuth)(nil), // 2: swarming.config.BotAuth
(*BotGroup_RBEMigration)(nil), // 3: swarming.config.BotGroup.RBEMigration
(*BotAuth_GCE)(nil), // 4: swarming.config.BotAuth.GCE
}
var file_go_chromium_org_luci_swarming_proto_config_bots_proto_depIdxs = []int32{
1, // 0: swarming.config.BotsCfg.bot_group:type_name -> swarming.config.BotGroup
2, // 1: swarming.config.BotGroup.auth:type_name -> swarming.config.BotAuth
3, // 2: swarming.config.BotGroup.rbe_migration:type_name -> swarming.config.BotGroup.RBEMigration
4, // 3: swarming.config.BotAuth.require_gce_vm_token:type_name -> swarming.config.BotAuth.GCE
4, // [4:4] is the sub-list for method output_type
4, // [4:4] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
}
func init() { file_go_chromium_org_luci_swarming_proto_config_bots_proto_init() }
func file_go_chromium_org_luci_swarming_proto_config_bots_proto_init() {
if File_go_chromium_org_luci_swarming_proto_config_bots_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BotsCfg); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BotGroup); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BotAuth); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BotGroup_RBEMigration); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BotAuth_GCE); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDesc,
NumEnums: 0,
NumMessages: 5,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_go_chromium_org_luci_swarming_proto_config_bots_proto_goTypes,
DependencyIndexes: file_go_chromium_org_luci_swarming_proto_config_bots_proto_depIdxs,
MessageInfos: file_go_chromium_org_luci_swarming_proto_config_bots_proto_msgTypes,
}.Build()
File_go_chromium_org_luci_swarming_proto_config_bots_proto = out.File
file_go_chromium_org_luci_swarming_proto_config_bots_proto_rawDesc = nil
file_go_chromium_org_luci_swarming_proto_config_bots_proto_goTypes = nil
file_go_chromium_org_luci_swarming_proto_config_bots_proto_depIdxs = nil
}