luci: go.chromium.org/luci/swarming/proto/config Index | Files

package configpb

import "go.chromium.org/luci/swarming/proto/config"

Index

Package Files

bots.pb.go config.pb.go gen.go pools.pb.go

type AuthSettings Uses

type AuthSettings struct {
    // Members of this group have full administrative access.
    //
    // Grants:
    // - config view and edit
    // - delete any bot
    // - all of bot_bootstrap_group membership
    // - all of privileged_users_group membership
    AdminsGroup string `protobuf:"bytes,1,opt,name=admins_group,json=adminsGroup,proto3" json:"admins_group,omitempty"`
    // Members of this group can fetch swarming bot code and bootstrap bots.
    //
    // Grants:
    // - bot create: create a token to anonymously fetch the bot code.
    BotBootstrapGroup string `protobuf:"bytes,2,opt,name=bot_bootstrap_group,json=botBootstrapGroup,proto3" json:"bot_bootstrap_group,omitempty"`
    // Members of this group can schedule tasks and see everyone else's tasks.
    //
    // Grants:
    // - cancel any task
    // - edit (terminate) any bot
    // - all of view_all_bots_group membership
    // - all of view_all_tasks_group membership
    PrivilegedUsersGroup string `protobuf:"bytes,3,opt,name=privileged_users_group,json=privilegedUsersGroup,proto3" json:"privileged_users_group,omitempty"`
    // Members of this group can schedule tasks and see only their own tasks.
    //
    // Grants:
    // - create a task
    // - view and edit own task
    UsersGroup string `protobuf:"bytes,4,opt,name=users_group,json=usersGroup,proto3" json:"users_group,omitempty"`
    // Members of this group can view all bots. This is a read-only group.
    //
    // Grants:
    // - view all bots
    ViewAllBotsGroup string `protobuf:"bytes,5,opt,name=view_all_bots_group,json=viewAllBotsGroup,proto3" json:"view_all_bots_group,omitempty"`
    // Members of this group can view all tasks. This is a read-only group.
    //
    // Grants:
    // - view all tasks
    ViewAllTasksGroup    string   `protobuf:"bytes,6,opt,name=view_all_tasks_group,json=viewAllTasksGroup,proto3" json:"view_all_tasks_group,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

func (*AuthSettings) Descriptor Uses

func (*AuthSettings) Descriptor() ([]byte, []int)

func (*AuthSettings) GetAdminsGroup Uses

func (m *AuthSettings) GetAdminsGroup() string

func (*AuthSettings) GetBotBootstrapGroup Uses

func (m *AuthSettings) GetBotBootstrapGroup() string

func (*AuthSettings) GetPrivilegedUsersGroup Uses

func (m *AuthSettings) GetPrivilegedUsersGroup() string

func (*AuthSettings) GetUsersGroup Uses

func (m *AuthSettings) GetUsersGroup() string

func (*AuthSettings) GetViewAllBotsGroup Uses

func (m *AuthSettings) GetViewAllBotsGroup() string

func (*AuthSettings) GetViewAllTasksGroup Uses

func (m *AuthSettings) GetViewAllTasksGroup() string

func (*AuthSettings) ProtoMessage Uses

func (*AuthSettings) ProtoMessage()

func (*AuthSettings) Reset Uses

func (m *AuthSettings) Reset()

func (*AuthSettings) String Uses

func (m *AuthSettings) String() string

func (*AuthSettings) XXX_DiscardUnknown Uses

func (m *AuthSettings) XXX_DiscardUnknown()

func (*AuthSettings) XXX_Marshal Uses

func (m *AuthSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*AuthSettings) XXX_Merge Uses

func (m *AuthSettings) XXX_Merge(src proto.Message)

func (*AuthSettings) XXX_Size Uses

func (m *AuthSettings) XXX_Size() int

func (*AuthSettings) XXX_Unmarshal Uses

func (m *AuthSettings) XXX_Unmarshal(b []byte) error

type BotAuth Uses

type BotAuth struct {
    // 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"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

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.

func (*BotAuth) Descriptor Uses

func (*BotAuth) Descriptor() ([]byte, []int)

func (*BotAuth) GetIpWhitelist Uses

func (m *BotAuth) GetIpWhitelist() string

func (*BotAuth) GetLogIfFailed Uses

func (m *BotAuth) GetLogIfFailed() bool

func (*BotAuth) GetRequireGceVmToken Uses

func (m *BotAuth) GetRequireGceVmToken() *BotAuth_GCE

func (*BotAuth) GetRequireLuciMachineToken Uses

func (m *BotAuth) GetRequireLuciMachineToken() bool

func (*BotAuth) GetRequireServiceAccount Uses

func (m *BotAuth) GetRequireServiceAccount() []string

func (*BotAuth) ProtoMessage Uses

func (*BotAuth) ProtoMessage()

func (*BotAuth) Reset Uses

func (m *BotAuth) Reset()

func (*BotAuth) String Uses

func (m *BotAuth) String() string

func (*BotAuth) XXX_DiscardUnknown Uses

func (m *BotAuth) XXX_DiscardUnknown()

func (*BotAuth) XXX_Marshal Uses

func (m *BotAuth) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*BotAuth) XXX_Merge Uses

func (m *BotAuth) XXX_Merge(src proto.Message)

func (*BotAuth) XXX_Size Uses

func (m *BotAuth) XXX_Size() int

func (*BotAuth) XXX_Unmarshal Uses

func (m *BotAuth) XXX_Unmarshal(b []byte) error

type BotAuth_GCE Uses

type BotAuth_GCE struct {
    Project              string   `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

See require_gce_vm_token below.

func (*BotAuth_GCE) Descriptor Uses

func (*BotAuth_GCE) Descriptor() ([]byte, []int)

func (*BotAuth_GCE) GetProject Uses

func (m *BotAuth_GCE) GetProject() string

func (*BotAuth_GCE) ProtoMessage Uses

func (*BotAuth_GCE) ProtoMessage()

func (*BotAuth_GCE) Reset Uses

func (m *BotAuth_GCE) Reset()

func (*BotAuth_GCE) String Uses

func (m *BotAuth_GCE) String() string

func (*BotAuth_GCE) XXX_DiscardUnknown Uses

func (m *BotAuth_GCE) XXX_DiscardUnknown()

func (*BotAuth_GCE) XXX_Marshal Uses

func (m *BotAuth_GCE) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*BotAuth_GCE) XXX_Merge Uses

func (m *BotAuth_GCE) XXX_Merge(src proto.Message)

func (*BotAuth_GCE) XXX_Size Uses

func (m *BotAuth_GCE) XXX_Size() int

func (*BotAuth_GCE) XXX_Unmarshal Uses

func (m *BotAuth_GCE) XXX_Unmarshal(b []byte) error

type BotGroup Uses

type BotGroup struct {
    // 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"`
    // A type of machine to lease from the Machine Provider.
    MachineType []*MachineType `protobuf:"bytes,3,rep,name=machine_type,json=machineType,proto3" json:"machine_type,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 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"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

A group of bots that share authentication method, dimensions and owners.

Union of bot_id, bot_id_prefix, and machine_type define a set of bots that belong to this group. The rest of the fields define properties of this group.

If bot_id, bot_id_prefix, and machine_type are all missing, the group defines all bots that didn't fit into other groups. There can be only one such "default" group.

TODO(vadimsh): Introduce explicit field "use_as_default" instead.

func (*BotGroup) Descriptor Uses

func (*BotGroup) Descriptor() ([]byte, []int)

func (*BotGroup) GetAuth Uses

func (m *BotGroup) GetAuth() []*BotAuth

func (*BotGroup) GetBotConfigScript Uses

func (m *BotGroup) GetBotConfigScript() string

func (*BotGroup) GetBotConfigScriptContent Uses

func (m *BotGroup) GetBotConfigScriptContent() []byte

func (*BotGroup) GetBotId Uses

func (m *BotGroup) GetBotId() []string

func (*BotGroup) GetBotIdPrefix Uses

func (m *BotGroup) GetBotIdPrefix() []string

func (*BotGroup) GetDimensions Uses

func (m *BotGroup) GetDimensions() []string

func (*BotGroup) GetMachineType Uses

func (m *BotGroup) GetMachineType() []*MachineType

func (*BotGroup) GetOwners Uses

func (m *BotGroup) GetOwners() []string

func (*BotGroup) GetSystemServiceAccount Uses

func (m *BotGroup) GetSystemServiceAccount() string

func (*BotGroup) ProtoMessage Uses

func (*BotGroup) ProtoMessage()

func (*BotGroup) Reset Uses

func (m *BotGroup) Reset()

func (*BotGroup) String Uses

func (m *BotGroup) String() string

func (*BotGroup) XXX_DiscardUnknown Uses

func (m *BotGroup) XXX_DiscardUnknown()

func (*BotGroup) XXX_Marshal Uses

func (m *BotGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*BotGroup) XXX_Merge Uses

func (m *BotGroup) XXX_Merge(src proto.Message)

func (*BotGroup) XXX_Size Uses

func (m *BotGroup) XXX_Size() int

func (*BotGroup) XXX_Unmarshal Uses

func (m *BotGroup) XXX_Unmarshal(b []byte) error

type BotMonitoring Uses

type BotMonitoring struct {
    // Name is used by Pool to describe how to monitor bots in this pool.
    Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
    // Dimension keys to be used to bucket the bots.
    //
    // The algorithm for a key with multiple values is:
    //   def simplify(values):
    //     values = sorted(values)
    //     return '|'.join(
    //         v for i, v in enumerate(values)
    //         if not any(v.startswith(value) for v in values[i+1:]))
    //
    // For example, if 'os' is specified and a bot has the values
    // ['Linux', 'Ubuntu', 'Ubuntu-16.04'], the bucket value used for this bot
    // will be 'Linux|Ubuntu-16.04'.
    //
    // Then whole algorithm then works for each key:
    //   def bucket(keys, bot_dimensions):
    //     return ';'.join(
    //         '%s:%s' % (key, simplify(bot_dimensions.get(values, []))
    //         for key in keys)
    //
    // so the end result may look like: 'os:Linux|Ubuntu-16.04;pool:Testers'.
    //
    // More precisely, when this is used, the other bot dimensions are ignored.
    // 'pool' is always implicit.
    DimensionKey         []string `protobuf:"bytes,2,rep,name=dimension_key,json=dimensionKey,proto3" json:"dimension_key,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

Defines about how to monitor bots.

func (*BotMonitoring) Descriptor Uses

func (*BotMonitoring) Descriptor() ([]byte, []int)

func (*BotMonitoring) GetDimensionKey Uses

func (m *BotMonitoring) GetDimensionKey() []string

func (*BotMonitoring) GetName Uses

func (m *BotMonitoring) GetName() string

func (*BotMonitoring) ProtoMessage Uses

func (*BotMonitoring) ProtoMessage()

func (*BotMonitoring) Reset Uses

func (m *BotMonitoring) Reset()

func (*BotMonitoring) String Uses

func (m *BotMonitoring) String() string

func (*BotMonitoring) XXX_DiscardUnknown Uses

func (m *BotMonitoring) XXX_DiscardUnknown()

func (*BotMonitoring) XXX_Marshal Uses

func (m *BotMonitoring) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*BotMonitoring) XXX_Merge Uses

func (m *BotMonitoring) XXX_Merge(src proto.Message)

func (*BotMonitoring) XXX_Size Uses

func (m *BotMonitoring) XXX_Size() int

func (*BotMonitoring) XXX_Unmarshal Uses

func (m *BotMonitoring) XXX_Unmarshal(b []byte) error

type BotsCfg Uses

type BotsCfg struct {
    // 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"`
    XXX_NoUnkeyedLiteral struct{}    `json:"-"`
    XXX_unrecognized     []byte      `json:"-"`
    XXX_sizecache        int32       `json:"-"`
}

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"
  }
}

func (*BotsCfg) Descriptor Uses

func (*BotsCfg) Descriptor() ([]byte, []int)

func (*BotsCfg) GetBotGroup Uses

func (m *BotsCfg) GetBotGroup() []*BotGroup

func (*BotsCfg) GetTrustedDimensions Uses

func (m *BotsCfg) GetTrustedDimensions() []string

func (*BotsCfg) ProtoMessage Uses

func (*BotsCfg) ProtoMessage()

func (*BotsCfg) Reset Uses

func (m *BotsCfg) Reset()

func (*BotsCfg) String Uses

func (m *BotsCfg) String() string

func (*BotsCfg) XXX_DiscardUnknown Uses

func (m *BotsCfg) XXX_DiscardUnknown()

func (*BotsCfg) XXX_Marshal Uses

func (m *BotsCfg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*BotsCfg) XXX_Merge Uses

func (m *BotsCfg) XXX_Merge(src proto.Message)

func (*BotsCfg) XXX_Size Uses

func (m *BotsCfg) XXX_Size() int

func (*BotsCfg) XXX_Unmarshal Uses

func (m *BotsCfg) XXX_Unmarshal(b []byte) error

type CipdPackage Uses

type CipdPackage struct {
    // A template of a full CIPD package name, e.g.
    // "infra/tools/cipd/${platform}"
    // See also cipd.ALL_PARAMS.
    PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"`
    // Valid package version for all packages matched by package name.
    Version              string   `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

A CIPD package.

func (*CipdPackage) Descriptor Uses

func (*CipdPackage) Descriptor() ([]byte, []int)

func (*CipdPackage) GetPackageName Uses

func (m *CipdPackage) GetPackageName() string

func (*CipdPackage) GetVersion Uses

func (m *CipdPackage) GetVersion() string

func (*CipdPackage) ProtoMessage Uses

func (*CipdPackage) ProtoMessage()

func (*CipdPackage) Reset Uses

func (m *CipdPackage) Reset()

func (*CipdPackage) String Uses

func (m *CipdPackage) String() string

func (*CipdPackage) XXX_DiscardUnknown Uses

func (m *CipdPackage) XXX_DiscardUnknown()

func (*CipdPackage) XXX_Marshal Uses

func (m *CipdPackage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*CipdPackage) XXX_Merge Uses

func (m *CipdPackage) XXX_Merge(src proto.Message)

func (*CipdPackage) XXX_Size Uses

func (m *CipdPackage) XXX_Size() int

func (*CipdPackage) XXX_Unmarshal Uses

func (m *CipdPackage) XXX_Unmarshal(b []byte) error

type CipdSettings Uses

type CipdSettings struct {
    // URL of the default CIPD server to use if it is not specified in a task.
    // Must start with "https://" or "http://",
    // e.g. "https://chrome-infra-packages.appspot.com".
    DefaultServer string `protobuf:"bytes,1,opt,name=default_server,json=defaultServer,proto3" json:"default_server,omitempty"`
    // Package of the default CIPD client to use if it is not specified in a
    // task.
    DefaultClientPackage *CipdPackage `protobuf:"bytes,2,opt,name=default_client_package,json=defaultClientPackage,proto3" json:"default_client_package,omitempty"`
    XXX_NoUnkeyedLiteral struct{}     `json:"-"`
    XXX_unrecognized     []byte       `json:"-"`
    XXX_sizecache        int32        `json:"-"`
}

Settings for Swarming-CIPD integration.

func (*CipdSettings) Descriptor Uses

func (*CipdSettings) Descriptor() ([]byte, []int)

func (*CipdSettings) GetDefaultClientPackage Uses

func (m *CipdSettings) GetDefaultClientPackage() *CipdPackage

func (*CipdSettings) GetDefaultServer Uses

func (m *CipdSettings) GetDefaultServer() string

func (*CipdSettings) ProtoMessage Uses

func (*CipdSettings) ProtoMessage()

func (*CipdSettings) Reset Uses

func (m *CipdSettings) Reset()

func (*CipdSettings) String Uses

func (m *CipdSettings) String() string

func (*CipdSettings) XXX_DiscardUnknown Uses

func (m *CipdSettings) XXX_DiscardUnknown()

func (*CipdSettings) XXX_Marshal Uses

func (m *CipdSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*CipdSettings) XXX_Merge Uses

func (m *CipdSettings) XXX_Merge(src proto.Message)

func (*CipdSettings) XXX_Size Uses

func (m *CipdSettings) XXX_Size() int

func (*CipdSettings) XXX_Unmarshal Uses

func (m *CipdSettings) XXX_Unmarshal(b []byte) error

type DailySchedule Uses

type DailySchedule struct {
    // UTC time to resize the MachineType.
    //
    // Formatted as "<hour>:<minute>".
    Start string `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"`
    // UTC time to resize the MachineType.
    //
    // Formatted as "<hour>:<minute>". Must be strictly later than start.
    End string `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"`
    // Days of the week to resize the MachineType.
    //
    // 0 - 6 (Mon - Sun).
    DaysOfTheWeek []int32 `protobuf:"varint,3,rep,packed,name=days_of_the_week,json=daysOfTheWeek,proto3" json:"days_of_the_week,omitempty"`
    // Target size to set this MachineType to.
    //
    // If omitted, defaults to zero.
    TargetSize           int32    `protobuf:"varint,4,opt,name=target_size,json=targetSize,proto3" json:"target_size,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

A daily schedule for Machine Provider leases.

Allows a MachineType to be resized during specific UTC hours.

func (*DailySchedule) Descriptor Uses

func (*DailySchedule) Descriptor() ([]byte, []int)

func (*DailySchedule) GetDaysOfTheWeek Uses

func (m *DailySchedule) GetDaysOfTheWeek() []int32

func (*DailySchedule) GetEnd Uses

func (m *DailySchedule) GetEnd() string

func (*DailySchedule) GetStart Uses

func (m *DailySchedule) GetStart() string

func (*DailySchedule) GetTargetSize Uses

func (m *DailySchedule) GetTargetSize() int32

func (*DailySchedule) ProtoMessage Uses

func (*DailySchedule) ProtoMessage()

func (*DailySchedule) Reset Uses

func (m *DailySchedule) Reset()

func (*DailySchedule) String Uses

func (m *DailySchedule) String() string

func (*DailySchedule) XXX_DiscardUnknown Uses

func (m *DailySchedule) XXX_DiscardUnknown()

func (*DailySchedule) XXX_Marshal Uses

func (m *DailySchedule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*DailySchedule) XXX_Merge Uses

func (m *DailySchedule) XXX_Merge(src proto.Message)

func (*DailySchedule) XXX_Size Uses

func (m *DailySchedule) XXX_Size() int

func (*DailySchedule) XXX_Unmarshal Uses

func (m *DailySchedule) XXX_Unmarshal(b []byte) error

type ExternalSchedulerConfig Uses

type ExternalSchedulerConfig struct {
    // Service address of external scheduler.
    Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
    // Scheduler id within the external scheduler service to use. This value
    // is opaque to swarming.
    Id  string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
    // Dimensions is a list of dimension strings in "key:value" format (e.g.
    // ["os:foo", "featureX:bar"]) that determines eligibility for a bot or task
    // to use this external scheduler. In particular:
    // - a bot will be eligible if it contains all of these dimensions.
    // - a task will be eligible if all its slices contain all these dimensions.
    //
    // Note of care: if this list is empty, that means all requests in the pool
    // are eligible to be forwarded to it.
    Dimensions []string `protobuf:"bytes,3,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
    // If not enabled, this external scheduler config will be ignored. This
    // makes it safer to add new configs (the naive approach of adding a config
    // with empty dimentions list would cause all requests to be routed to
    // that config).
    Enabled              bool     `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

Describes an external scheduler used by a particular swarming pool and dimension set, via the external scheduler API.

func (*ExternalSchedulerConfig) Descriptor Uses

func (*ExternalSchedulerConfig) Descriptor() ([]byte, []int)

func (*ExternalSchedulerConfig) GetAddress Uses

func (m *ExternalSchedulerConfig) GetAddress() string

func (*ExternalSchedulerConfig) GetDimensions Uses

func (m *ExternalSchedulerConfig) GetDimensions() []string

func (*ExternalSchedulerConfig) GetEnabled Uses

func (m *ExternalSchedulerConfig) GetEnabled() bool

func (*ExternalSchedulerConfig) GetId Uses

func (m *ExternalSchedulerConfig) GetId() string

func (*ExternalSchedulerConfig) ProtoMessage Uses

func (*ExternalSchedulerConfig) ProtoMessage()

func (*ExternalSchedulerConfig) Reset Uses

func (m *ExternalSchedulerConfig) Reset()

func (*ExternalSchedulerConfig) String Uses

func (m *ExternalSchedulerConfig) String() string

func (*ExternalSchedulerConfig) XXX_DiscardUnknown Uses

func (m *ExternalSchedulerConfig) XXX_DiscardUnknown()

func (*ExternalSchedulerConfig) XXX_Marshal Uses

func (m *ExternalSchedulerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ExternalSchedulerConfig) XXX_Merge Uses

func (m *ExternalSchedulerConfig) XXX_Merge(src proto.Message)

func (*ExternalSchedulerConfig) XXX_Size Uses

func (m *ExternalSchedulerConfig) XXX_Size() int

func (*ExternalSchedulerConfig) XXX_Unmarshal Uses

func (m *ExternalSchedulerConfig) XXX_Unmarshal(b []byte) error

type ExternalServices Uses

type ExternalServices struct {
    Isolate              *ExternalServices_Isolate `protobuf:"bytes,1,opt,name=isolate,proto3" json:"isolate,omitempty"`
    Cipd                 *ExternalServices_CIPD    `protobuf:"bytes,2,opt,name=cipd,proto3" json:"cipd,omitempty"`
    XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
    XXX_unrecognized     []byte                    `json:"-"`
    XXX_sizecache        int32                     `json:"-"`
}

func (*ExternalServices) Descriptor Uses

func (*ExternalServices) Descriptor() ([]byte, []int)

func (*ExternalServices) GetCipd Uses

func (m *ExternalServices) GetCipd() *ExternalServices_CIPD

func (*ExternalServices) GetIsolate Uses

func (m *ExternalServices) GetIsolate() *ExternalServices_Isolate

func (*ExternalServices) ProtoMessage Uses

func (*ExternalServices) ProtoMessage()

func (*ExternalServices) Reset Uses

func (m *ExternalServices) Reset()

func (*ExternalServices) String Uses

func (m *ExternalServices) String() string

func (*ExternalServices) XXX_DiscardUnknown Uses

func (m *ExternalServices) XXX_DiscardUnknown()

func (*ExternalServices) XXX_Marshal Uses

func (m *ExternalServices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ExternalServices) XXX_Merge Uses

func (m *ExternalServices) XXX_Merge(src proto.Message)

func (*ExternalServices) XXX_Size Uses

func (m *ExternalServices) XXX_Size() int

func (*ExternalServices) XXX_Unmarshal Uses

func (m *ExternalServices) XXX_Unmarshal(b []byte) error

type ExternalServices_CIPD Uses

type ExternalServices_CIPD struct {
    // (required) URL of the default CIPD server to use, if it is not specified
    // in the task.
    //
    // Must start with "https://" or "http://".
    //
    // e.g. "https://chrome-infra-packages.appspot.com"
    Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
    // (required) The version of the cipd client to use. This is the
    // 'infra/tools/cipd/${platform}' package, but because it's part of the
    // bootstrap needs special logic to handle its installation.
    ClientVersion        string   `protobuf:"bytes,2,opt,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

func (*ExternalServices_CIPD) Descriptor Uses

func (*ExternalServices_CIPD) Descriptor() ([]byte, []int)

func (*ExternalServices_CIPD) GetClientVersion Uses

func (m *ExternalServices_CIPD) GetClientVersion() string

func (*ExternalServices_CIPD) GetServer Uses

func (m *ExternalServices_CIPD) GetServer() string

func (*ExternalServices_CIPD) ProtoMessage Uses

func (*ExternalServices_CIPD) ProtoMessage()

func (*ExternalServices_CIPD) Reset Uses

func (m *ExternalServices_CIPD) Reset()

func (*ExternalServices_CIPD) String Uses

func (m *ExternalServices_CIPD) String() string

func (*ExternalServices_CIPD) XXX_DiscardUnknown Uses

func (m *ExternalServices_CIPD) XXX_DiscardUnknown()

func (*ExternalServices_CIPD) XXX_Marshal Uses

func (m *ExternalServices_CIPD) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ExternalServices_CIPD) XXX_Merge Uses

func (m *ExternalServices_CIPD) XXX_Merge(src proto.Message)

func (*ExternalServices_CIPD) XXX_Size Uses

func (m *ExternalServices_CIPD) XXX_Size() int

func (*ExternalServices_CIPD) XXX_Unmarshal Uses

func (m *ExternalServices_CIPD) XXX_Unmarshal(b []byte) error

type ExternalServices_Isolate Uses

type ExternalServices_Isolate struct {
    // (required) URL of the default isolate server to use if it is not
    // specified in the task.
    //
    // Must start with "https://" or "http://".
    //
    // e.g. "https://isolateserver.appspot.com"
    Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
    // (required) Default namespace to use if it is not specified in a task,
    // e.g. "default-gzip"
    Namespace            string   `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

func (*ExternalServices_Isolate) Descriptor Uses

func (*ExternalServices_Isolate) Descriptor() ([]byte, []int)

func (*ExternalServices_Isolate) GetNamespace Uses

func (m *ExternalServices_Isolate) GetNamespace() string

func (*ExternalServices_Isolate) GetServer Uses

func (m *ExternalServices_Isolate) GetServer() string

func (*ExternalServices_Isolate) ProtoMessage Uses

func (*ExternalServices_Isolate) ProtoMessage()

func (*ExternalServices_Isolate) Reset Uses

func (m *ExternalServices_Isolate) Reset()

func (*ExternalServices_Isolate) String Uses

func (m *ExternalServices_Isolate) String() string

func (*ExternalServices_Isolate) XXX_DiscardUnknown Uses

func (m *ExternalServices_Isolate) XXX_DiscardUnknown()

func (*ExternalServices_Isolate) XXX_Marshal Uses

func (m *ExternalServices_Isolate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ExternalServices_Isolate) XXX_Merge Uses

func (m *ExternalServices_Isolate) XXX_Merge(src proto.Message)

func (*ExternalServices_Isolate) XXX_Size Uses

func (m *ExternalServices_Isolate) XXX_Size() int

func (*ExternalServices_Isolate) XXX_Unmarshal Uses

func (m *ExternalServices_Isolate) XXX_Unmarshal(b []byte) error

type IsolateSettings Uses

type IsolateSettings struct {
    // URL of the default isolate server to use if it is not specified in a
    // task. Must start with "https://" or "http://",
    // e.g. "https://isolateserver.appspot.com"
    DefaultServer string `protobuf:"bytes,1,opt,name=default_server,json=defaultServer,proto3" json:"default_server,omitempty"`
    // Default namespace to use if it is not specified in a task,
    // e.g. "default-gzip"
    DefaultNamespace     string   `protobuf:"bytes,2,opt,name=default_namespace,json=defaultNamespace,proto3" json:"default_namespace,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

Configuration for swarming-isolate integration.

func (*IsolateSettings) Descriptor Uses

func (*IsolateSettings) Descriptor() ([]byte, []int)

func (*IsolateSettings) GetDefaultNamespace Uses

func (m *IsolateSettings) GetDefaultNamespace() string

func (*IsolateSettings) GetDefaultServer Uses

func (m *IsolateSettings) GetDefaultServer() string

func (*IsolateSettings) ProtoMessage Uses

func (*IsolateSettings) ProtoMessage()

func (*IsolateSettings) Reset Uses

func (m *IsolateSettings) Reset()

func (*IsolateSettings) String Uses

func (m *IsolateSettings) String() string

func (*IsolateSettings) XXX_DiscardUnknown Uses

func (m *IsolateSettings) XXX_DiscardUnknown()

func (*IsolateSettings) XXX_Marshal Uses

func (m *IsolateSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*IsolateSettings) XXX_Merge Uses

func (m *IsolateSettings) XXX_Merge(src proto.Message)

func (*IsolateSettings) XXX_Size Uses

func (m *IsolateSettings) XXX_Size() int

func (*IsolateSettings) XXX_Unmarshal Uses

func (m *IsolateSettings) XXX_Unmarshal(b []byte) error

type LoadBased Uses

type LoadBased struct {
    // Minimum size the MachineType may be resized to.
    //
    // If omitted, defaults to zero.
    MinimumSize int32 `protobuf:"varint,1,opt,name=minimum_size,json=minimumSize,proto3" json:"minimum_size,omitempty"`
    // Maximum size the MachineType may be resized to.
    //
    // If omitted, defaults to zero.
    MaximumSize          int32    `protobuf:"varint,2,opt,name=maximum_size,json=maximumSize,proto3" json:"maximum_size,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

A load-based schedule for Machine Provider leases.

Allows a MachineType to be resized according to Swarming bot utilization.

func (*LoadBased) Descriptor Uses

func (*LoadBased) Descriptor() ([]byte, []int)

func (*LoadBased) GetMaximumSize Uses

func (m *LoadBased) GetMaximumSize() int32

func (*LoadBased) GetMinimumSize Uses

func (m *LoadBased) GetMinimumSize() int32

func (*LoadBased) ProtoMessage Uses

func (*LoadBased) ProtoMessage()

func (*LoadBased) Reset Uses

func (m *LoadBased) Reset()

func (*LoadBased) String Uses

func (m *LoadBased) String() string

func (*LoadBased) XXX_DiscardUnknown Uses

func (m *LoadBased) XXX_DiscardUnknown()

func (*LoadBased) XXX_Marshal Uses

func (m *LoadBased) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*LoadBased) XXX_Merge Uses

func (m *LoadBased) XXX_Merge(src proto.Message)

func (*LoadBased) XXX_Size Uses

func (m *LoadBased) XXX_Size() int

func (*LoadBased) XXX_Unmarshal Uses

func (m *LoadBased) XXX_Unmarshal(b []byte) error

type MachineProviderSettings Uses

type MachineProviderSettings struct {
    // Whether or not Swarming-MP integration is enabled.
    Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
    // URL of the Machine Provider server to use.
    Server               string   `protobuf:"bytes,2,opt,name=server,proto3" json:"server,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

Settings for Swarming-MP integration.

func (*MachineProviderSettings) Descriptor Uses

func (*MachineProviderSettings) Descriptor() ([]byte, []int)

func (*MachineProviderSettings) GetEnabled Uses

func (m *MachineProviderSettings) GetEnabled() bool

func (*MachineProviderSettings) GetServer Uses

func (m *MachineProviderSettings) GetServer() string

func (*MachineProviderSettings) ProtoMessage Uses

func (*MachineProviderSettings) ProtoMessage()

func (*MachineProviderSettings) Reset Uses

func (m *MachineProviderSettings) Reset()

func (*MachineProviderSettings) String Uses

func (m *MachineProviderSettings) String() string

func (*MachineProviderSettings) XXX_DiscardUnknown Uses

func (m *MachineProviderSettings) XXX_DiscardUnknown()

func (*MachineProviderSettings) XXX_Marshal Uses

func (m *MachineProviderSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MachineProviderSettings) XXX_Merge Uses

func (m *MachineProviderSettings) XXX_Merge(src proto.Message)

func (*MachineProviderSettings) XXX_Size Uses

func (m *MachineProviderSettings) XXX_Size() int

func (*MachineProviderSettings) XXX_Unmarshal Uses

func (m *MachineProviderSettings) XXX_Unmarshal(b []byte) error

type MachineType Uses

type MachineType struct {
    // Name for this type of machine. Must be globally unique.
    Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
    // Human-readable description for this type of machine.
    Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
    // Number of seconds ahead of lease_duration_ts to release leases.
    //
    // If omitted, defaults to zero. Must not be specified for indefinite leases.
    EarlyReleaseSecs int32 `protobuf:"varint,3,opt,name=early_release_secs,json=earlyReleaseSecs,proto3" json:"early_release_secs,omitempty"`
    // Types that are valid to be assigned to LeaseDuration:
    //	*MachineType_LeaseDurationSecs
    //	*MachineType_LeaseIndefinitely
    LeaseDuration isMachineType_LeaseDuration `protobuf_oneof:"lease_duration"`
    // Machine Provider dimensions describing this machine.
    //
    // Each string should be in the format "<key>:<value>".
    MpDimensions []string `protobuf:"bytes,5,rep,name=mp_dimensions,json=mpDimensions,proto3" json:"mp_dimensions,omitempty"`
    // Target number of machines of this type to have leased at once.
    TargetSize int32 `protobuf:"varint,6,opt,name=target_size,json=targetSize,proto3" json:"target_size,omitempty"`
    // Schedule for machines of this type.
    Schedule             *Schedule `protobuf:"bytes,7,opt,name=schedule,proto3" json:"schedule,omitempty"`
    XXX_NoUnkeyedLiteral struct{}  `json:"-"`
    XXX_unrecognized     []byte    `json:"-"`
    XXX_sizecache        int32     `json:"-"`
}

A type of machine to lease from the Machine Provider.

func (*MachineType) Descriptor Uses

func (*MachineType) Descriptor() ([]byte, []int)

func (*MachineType) GetDescription Uses

func (m *MachineType) GetDescription() string

func (*MachineType) GetEarlyReleaseSecs Uses

func (m *MachineType) GetEarlyReleaseSecs() int32

func (*MachineType) GetLeaseDuration Uses

func (m *MachineType) GetLeaseDuration() isMachineType_LeaseDuration

func (*MachineType) GetLeaseDurationSecs Uses

func (m *MachineType) GetLeaseDurationSecs() int32

func (*MachineType) GetLeaseIndefinitely Uses

func (m *MachineType) GetLeaseIndefinitely() bool

func (*MachineType) GetMpDimensions Uses

func (m *MachineType) GetMpDimensions() []string

func (*MachineType) GetName Uses

func (m *MachineType) GetName() string

func (*MachineType) GetSchedule Uses

func (m *MachineType) GetSchedule() *Schedule

func (*MachineType) GetTargetSize Uses

func (m *MachineType) GetTargetSize() int32

func (*MachineType) ProtoMessage Uses

func (*MachineType) ProtoMessage()

func (*MachineType) Reset Uses

func (m *MachineType) Reset()

func (*MachineType) String Uses

func (m *MachineType) String() string

func (*MachineType) XXX_DiscardUnknown Uses

func (m *MachineType) XXX_DiscardUnknown()

func (*MachineType) XXX_Marshal Uses

func (m *MachineType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MachineType) XXX_Merge Uses

func (m *MachineType) XXX_Merge(src proto.Message)

func (*MachineType) XXX_OneofWrappers Uses

func (*MachineType) XXX_OneofWrappers() []interface{}

XXX_OneofWrappers is for the internal use of the proto package.

func (*MachineType) XXX_Size Uses

func (m *MachineType) XXX_Size() int

func (*MachineType) XXX_Unmarshal Uses

func (m *MachineType) XXX_Unmarshal(b []byte) error

type MachineType_LeaseDurationSecs Uses

type MachineType_LeaseDurationSecs struct {
    LeaseDurationSecs int32 `protobuf:"varint,4,opt,name=lease_duration_secs,json=leaseDurationSecs,proto3,oneof"`
}

type MachineType_LeaseIndefinitely Uses

type MachineType_LeaseIndefinitely struct {
    LeaseIndefinitely bool `protobuf:"varint,8,opt,name=lease_indefinitely,json=leaseIndefinitely,proto3,oneof"`
}

type Pool Uses

type Pool struct {
    // Names of the pools this config applies to.
    //
    // Tasks target the pool by specifying its name as 'pool' dimension, thus
    // names here should be valid dimension value.
    Name []string `protobuf:"bytes,1,rep,name=name,proto3" json:"name,omitempty"`
    // Contact information for people that own this pool.
    //
    // Not used in any ACLs, just informational field.
    Owners []string `protobuf:"bytes,2,rep,name=owners,proto3" json:"owners,omitempty"`
    // Defines who can schedule tasks in this pool.
    //
    // The checks here act as a second authorization layer, consulted after the
    // first server-global one (defined based on groups set in settings.cfg, see
    // AuthSettings in config.proto).
    Schedulers *Schedulers `protobuf:"bytes,3,opt,name=schedulers,proto3" json:"schedulers,omitempty"`
    // List of service account emails allowed to be used for tasks that target
    // this pool. Tasks specify the service account via 'service_account' field
    // in the tasks.New RPC.
    //
    // By associating accounts with pools in the config we make it more explicit
    // that a bot belonging to a pool eventually can get access to service
    // accounts of all tasks running in this pool (just by sitting there, grabbing
    // tasks and sniffing service account tokens).
    AllowedServiceAccount []string `protobuf:"bytes,4,rep,name=allowed_service_account,json=allowedServiceAccount,proto3" json:"allowed_service_account,omitempty"`
    // Same as 'allowed_service_account', but the set of service accounts is
    // specified through an auth group.
    AllowedServiceAccountGroup []string `protobuf:"bytes,5,rep,name=allowed_service_account_group,json=allowedServiceAccountGroup,proto3" json:"allowed_service_account_group,omitempty"`
    // Types that are valid to be assigned to TaskDeploymentScheme:
    //	*Pool_TaskTemplateDeployment
    //	*Pool_TaskTemplateDeploymentInline
    TaskDeploymentScheme isPool_TaskDeploymentScheme `protobuf_oneof:"task_deployment_scheme"`
    // Refer to one bot_monitoring at the file level by name.
    BotMonitoring string `protobuf:"bytes,8,opt,name=bot_monitoring,json=botMonitoring,proto3" json:"bot_monitoring,omitempty"`
    // If specified, this is the description of the external schedulers to be used
    // for tasks and bots for this pool that match the dimension set of a scheduler.
    // For a given task or bot, the first entry in this list that matches based on
    // dimension eligibility will be used.
    ExternalSchedulers   []*ExternalSchedulerConfig `protobuf:"bytes,9,rep,name=external_schedulers,json=externalSchedulers,proto3" json:"external_schedulers,omitempty"`
    XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
    XXX_unrecognized     []byte                     `json:"-"`
    XXX_sizecache        int32                      `json:"-"`
}

Properties of a single pool or a bunch of identically configured pools.

In particular contains authorization configuration.

func (*Pool) Descriptor Uses

func (*Pool) Descriptor() ([]byte, []int)

func (*Pool) GetAllowedServiceAccount Uses

func (m *Pool) GetAllowedServiceAccount() []string

func (*Pool) GetAllowedServiceAccountGroup Uses

func (m *Pool) GetAllowedServiceAccountGroup() []string

func (*Pool) GetBotMonitoring Uses

func (m *Pool) GetBotMonitoring() string

func (*Pool) GetExternalSchedulers Uses

func (m *Pool) GetExternalSchedulers() []*ExternalSchedulerConfig

func (*Pool) GetName Uses

func (m *Pool) GetName() []string

func (*Pool) GetOwners Uses

func (m *Pool) GetOwners() []string

func (*Pool) GetSchedulers Uses

func (m *Pool) GetSchedulers() *Schedulers

func (*Pool) GetTaskDeploymentScheme Uses

func (m *Pool) GetTaskDeploymentScheme() isPool_TaskDeploymentScheme

func (*Pool) GetTaskTemplateDeployment Uses

func (m *Pool) GetTaskTemplateDeployment() string

func (*Pool) GetTaskTemplateDeploymentInline Uses

func (m *Pool) GetTaskTemplateDeploymentInline() *TaskTemplateDeployment

func (*Pool) ProtoMessage Uses

func (*Pool) ProtoMessage()

func (*Pool) Reset Uses

func (m *Pool) Reset()

func (*Pool) String Uses

func (m *Pool) String() string

func (*Pool) XXX_DiscardUnknown Uses

func (m *Pool) XXX_DiscardUnknown()

func (*Pool) XXX_Marshal Uses

func (m *Pool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Pool) XXX_Merge Uses

func (m *Pool) XXX_Merge(src proto.Message)

func (*Pool) XXX_OneofWrappers Uses

func (*Pool) XXX_OneofWrappers() []interface{}

XXX_OneofWrappers is for the internal use of the proto package.

func (*Pool) XXX_Size Uses

func (m *Pool) XXX_Size() int

func (*Pool) XXX_Unmarshal Uses

func (m *Pool) XXX_Unmarshal(b []byte) error

type Pool_TaskTemplateDeployment Uses

type Pool_TaskTemplateDeployment struct {
    TaskTemplateDeployment string `protobuf:"bytes,6,opt,name=task_template_deployment,json=taskTemplateDeployment,proto3,oneof"`
}

type Pool_TaskTemplateDeploymentInline Uses

type Pool_TaskTemplateDeploymentInline struct {
    TaskTemplateDeploymentInline *TaskTemplateDeployment `protobuf:"bytes,7,opt,name=task_template_deployment_inline,json=taskTemplateDeploymentInline,proto3,oneof"`
}

type PoolsCfg Uses

type PoolsCfg struct {
    // List of all defined pools.
    Pool []*Pool `protobuf:"bytes,1,rep,name=pool,proto3" json:"pool,omitempty"`
    // Configures the default isolate and CIPD services to use for all pools on
    // this server.
    DefaultExternalServices *ExternalServices `protobuf:"bytes,6,opt,name=default_external_services,json=defaultExternalServices,proto3" json:"default_external_services,omitempty"`
    // This is the "shared namespace" of task templates.
    //
    // Task templates allow pools to specify some property defaults (particularly
    // around caches, CIPD packages and Environment variables) for tasks created
    // within the pool. These templates can have 'include' statements, and those
    // include statements draw from this namespace.
    //
    // Swarming will do a 2-pass parse of these so order doesn't matter (i.e. If
    // A includes B, but is defined B-then-A, it's not an error).
    TaskTemplate []*TaskTemplate `protobuf:"bytes,3,rep,name=task_template,json=taskTemplate,proto3" json:"task_template,omitempty"`
    // This is the "shared namespace" of deployments.
    //
    // When pools specify a task_template_deployment, it draws from this
    // namespace.
    TaskTemplateDeployment []*TaskTemplateDeployment `protobuf:"bytes,4,rep,name=task_template_deployment,json=taskTemplateDeployment,proto3" json:"task_template_deployment,omitempty"`
    // Defines about how to monitor bots in a pool. Each pool above may refer to
    // one of the BotMonitoring message by name, which permits reusing
    // BotMonitoring definitions.
    BotMonitoring        []*BotMonitoring `protobuf:"bytes,5,rep,name=bot_monitoring,json=botMonitoring,proto3" json:"bot_monitoring,omitempty"`
    XXX_NoUnkeyedLiteral struct{}         `json:"-"`
    XXX_unrecognized     []byte           `json:"-"`
    XXX_sizecache        int32            `json:"-"`
}

Schema for pools.cfg service config file in luci-config.

It defined a set of Pool objects, each one corresponding to a single Swarming pool dimension. Each Swarming task resided in some pool, and each Swarming bot belongs to at least one pool.

Pools are used to isolate groups of tasks/bots from each other for security and capacity reasons. Two different pools should not interfere with each other at all (unless explicitly configured to share bots or accounts).

func (*PoolsCfg) Descriptor Uses

func (*PoolsCfg) Descriptor() ([]byte, []int)

func (*PoolsCfg) GetBotMonitoring Uses

func (m *PoolsCfg) GetBotMonitoring() []*BotMonitoring

func (*PoolsCfg) GetDefaultExternalServices Uses

func (m *PoolsCfg) GetDefaultExternalServices() *ExternalServices

func (*PoolsCfg) GetPool Uses

func (m *PoolsCfg) GetPool() []*Pool

func (*PoolsCfg) GetTaskTemplate Uses

func (m *PoolsCfg) GetTaskTemplate() []*TaskTemplate

func (*PoolsCfg) GetTaskTemplateDeployment Uses

func (m *PoolsCfg) GetTaskTemplateDeployment() []*TaskTemplateDeployment

func (*PoolsCfg) ProtoMessage Uses

func (*PoolsCfg) ProtoMessage()

func (*PoolsCfg) Reset Uses

func (m *PoolsCfg) Reset()

func (*PoolsCfg) String Uses

func (m *PoolsCfg) String() string

func (*PoolsCfg) XXX_DiscardUnknown Uses

func (m *PoolsCfg) XXX_DiscardUnknown()

func (*PoolsCfg) XXX_Marshal Uses

func (m *PoolsCfg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*PoolsCfg) XXX_Merge Uses

func (m *PoolsCfg) XXX_Merge(src proto.Message)

func (*PoolsCfg) XXX_Size Uses

func (m *PoolsCfg) XXX_Size() int

func (*PoolsCfg) XXX_Unmarshal Uses

func (m *PoolsCfg) XXX_Unmarshal(b []byte) error

type Schedule Uses

type Schedule struct {
    // Schedule to repeat every day.
    Daily []*DailySchedule `protobuf:"bytes,1,rep,name=daily,proto3" json:"daily,omitempty"`
    // Load-based schedule.
    LoadBased            []*LoadBased `protobuf:"bytes,2,rep,name=load_based,json=loadBased,proto3" json:"load_based,omitempty"`
    XXX_NoUnkeyedLiteral struct{}     `json:"-"`
    XXX_unrecognized     []byte       `json:"-"`
    XXX_sizecache        int32        `json:"-"`
}

A schedule for Machine Provider leases.

func (*Schedule) Descriptor Uses

func (*Schedule) Descriptor() ([]byte, []int)

func (*Schedule) GetDaily Uses

func (m *Schedule) GetDaily() []*DailySchedule

func (*Schedule) GetLoadBased Uses

func (m *Schedule) GetLoadBased() []*LoadBased

func (*Schedule) ProtoMessage Uses

func (*Schedule) ProtoMessage()

func (*Schedule) Reset Uses

func (m *Schedule) Reset()

func (*Schedule) String Uses

func (m *Schedule) String() string

func (*Schedule) XXX_DiscardUnknown Uses

func (m *Schedule) XXX_DiscardUnknown()

func (*Schedule) XXX_Marshal Uses

func (m *Schedule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Schedule) XXX_Merge Uses

func (m *Schedule) XXX_Merge(src proto.Message)

func (*Schedule) XXX_Size Uses

func (m *Schedule) XXX_Size() int

func (*Schedule) XXX_Unmarshal Uses

func (m *Schedule) XXX_Unmarshal(b []byte) error

type Schedulers Uses

type Schedulers struct {
    // Emails of individual end-users.
    //
    // Useful to avoid creating one-person groups.
    User []string `protobuf:"bytes,1,rep,name=user,proto3" json:"user,omitempty"`
    // List of groups with end-users.
    Group []string `protobuf:"bytes,2,rep,name=group,proto3" json:"group,omitempty"`
    // See TrustedDelegation comment.
    TrustedDelegation    []*TrustedDelegation `protobuf:"bytes,3,rep,name=trusted_delegation,json=trustedDelegation,proto3" json:"trusted_delegation,omitempty"`
    XXX_NoUnkeyedLiteral struct{}             `json:"-"`
    XXX_unrecognized     []byte               `json:"-"`
    XXX_sizecache        int32                `json:"-"`
}

Defines who can schedule tasks in a pool.

func (*Schedulers) Descriptor Uses

func (*Schedulers) Descriptor() ([]byte, []int)

func (*Schedulers) GetGroup Uses

func (m *Schedulers) GetGroup() []string

func (*Schedulers) GetTrustedDelegation Uses

func (m *Schedulers) GetTrustedDelegation() []*TrustedDelegation

func (*Schedulers) GetUser Uses

func (m *Schedulers) GetUser() []string

func (*Schedulers) ProtoMessage Uses

func (*Schedulers) ProtoMessage()

func (*Schedulers) Reset Uses

func (m *Schedulers) Reset()

func (*Schedulers) String Uses

func (m *Schedulers) String() string

func (*Schedulers) XXX_DiscardUnknown Uses

func (m *Schedulers) XXX_DiscardUnknown()

func (*Schedulers) XXX_Marshal Uses

func (m *Schedulers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Schedulers) XXX_Merge Uses

func (m *Schedulers) XXX_Merge(src proto.Message)

func (*Schedulers) XXX_Size Uses

func (m *Schedulers) XXX_Size() int

func (*Schedulers) XXX_Unmarshal Uses

func (m *Schedulers) XXX_Unmarshal(b []byte) error

type SettingsCfg Uses

type SettingsCfg struct {
    // id to inject into pages if applicable.
    GoogleAnalytics string `protobuf:"bytes,1,opt,name=google_analytics,json=googleAnalytics,proto3" json:"google_analytics,omitempty"`
    // The number of seconds an old task can be deduped from.
    // Default is one week: 7*24*60*60 = 604800
    ReusableTaskAgeSecs int32 `protobuf:"varint,2,opt,name=reusable_task_age_secs,json=reusableTaskAgeSecs,proto3" json:"reusable_task_age_secs,omitempty"`
    // The amount of time that has to pass before a machine is considered dead.
    // Default is 600 (10 minutes).
    BotDeathTimeoutSecs int32 `protobuf:"varint,3,opt,name=bot_death_timeout_secs,json=botDeathTimeoutSecs,proto3" json:"bot_death_timeout_secs,omitempty"`
    // Enable ts_mon based monitoring.
    EnableTsMonitoring bool `protobuf:"varint,4,opt,name=enable_ts_monitoring,json=enableTsMonitoring,proto3" json:"enable_ts_monitoring,omitempty"`
    // (deprecated, see pools.proto) Configuration for swarming-isolate integration.
    Isolate *IsolateSettings `protobuf:"bytes,5,opt,name=isolate,proto3" json:"isolate,omitempty"`
    // (deprecated, see pools.proto) Configuration for swarming-cipd integration.
    Cipd *CipdSettings `protobuf:"bytes,6,opt,name=cipd,proto3" json:"cipd,omitempty"`
    // Configuration for swarming-mp integration.
    Mp  *MachineProviderSettings `protobuf:"bytes,7,opt,name=mp,proto3" json:"mp,omitempty"`
    // Emergency setting to disable bot task reaping. When set, all bots are
    // always put to sleep and are never granted task.
    ForceBotsToSleepAndNotRunTask bool `protobuf:"varint,8,opt,name=force_bots_to_sleep_and_not_run_task,json=forceBotsToSleepAndNotRunTask,proto3" json:"force_bots_to_sleep_and_not_run_task,omitempty"`
    // oauth client id for the ui. This is created in the developer's console
    // under Credentials.
    UiClientId string `protobuf:"bytes,9,opt,name=ui_client_id,json=uiClientId,proto3" json:"ui_client_id,omitempty"`
    // A url to a task display server (e.g. milo).  This should have a %s where
    // a task id can go.
    DisplayServerUrlTemplate string `protobuf:"bytes,11,opt,name=display_server_url_template,json=displayServerUrlTemplate,proto3" json:"display_server_url_template,omitempty"`
    // Sets a maximum sleep time in seconds for bots that limits the exponental
    // backoff. If missing, the task scheduler will provide the default maximum
    // (usually 60s, but see bot_code/task_scheduler.py for details).
    MaxBotSleepTime int32 `protobuf:"varint,12,opt,name=max_bot_sleep_time,json=maxBotSleepTime,proto3" json:"max_bot_sleep_time,omitempty"`
    // Names of the authorization groups used by components/auth.
    Auth *AuthSettings `protobuf:"bytes,13,opt,name=auth,proto3" json:"auth,omitempty"`
    // Sets the default gRPC proxy for the bot's Isolate server calls.
    BotIsolateGrpcProxy string `protobuf:"bytes,14,opt,name=bot_isolate_grpc_proxy,json=botIsolateGrpcProxy,proto3" json:"bot_isolate_grpc_proxy,omitempty"`
    // Sets the default gRPC proxy for the bot's Swarming server calls.
    BotSwarmingGrpcProxy string `protobuf:"bytes,15,opt,name=bot_swarming_grpc_proxy,json=botSwarmingGrpcProxy,proto3" json:"bot_swarming_grpc_proxy,omitempty"`
    // Any extra urls that should be added to frame-src, e.g. anything that
    // will be linked to from the display server.
    // This originally added things to child-src, which was deprecated:
    // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/child-src
    ExtraChildSrcCspUrl []string `protobuf:"bytes,16,rep,name=extra_child_src_csp_url,json=extraChildSrcCspUrl,proto3" json:"extra_child_src_csp_url,omitempty"`
    // Whether tasks should be run in FIFO or LIFO order.
    UseLifo              bool     `protobuf:"varint,17,opt,name=use_lifo,json=useLifo,proto3" json:"use_lifo,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

Schema for settings.cfg service config file in luci-config.

func (*SettingsCfg) Descriptor Uses

func (*SettingsCfg) Descriptor() ([]byte, []int)

func (*SettingsCfg) GetAuth Uses

func (m *SettingsCfg) GetAuth() *AuthSettings

func (*SettingsCfg) GetBotDeathTimeoutSecs Uses

func (m *SettingsCfg) GetBotDeathTimeoutSecs() int32

func (*SettingsCfg) GetBotIsolateGrpcProxy Uses

func (m *SettingsCfg) GetBotIsolateGrpcProxy() string

func (*SettingsCfg) GetBotSwarmingGrpcProxy Uses

func (m *SettingsCfg) GetBotSwarmingGrpcProxy() string

func (*SettingsCfg) GetCipd Uses

func (m *SettingsCfg) GetCipd() *CipdSettings

func (*SettingsCfg) GetDisplayServerUrlTemplate Uses

func (m *SettingsCfg) GetDisplayServerUrlTemplate() string

func (*SettingsCfg) GetEnableTsMonitoring Uses

func (m *SettingsCfg) GetEnableTsMonitoring() bool

func (*SettingsCfg) GetExtraChildSrcCspUrl Uses

func (m *SettingsCfg) GetExtraChildSrcCspUrl() []string

func (*SettingsCfg) GetForceBotsToSleepAndNotRunTask Uses

func (m *SettingsCfg) GetForceBotsToSleepAndNotRunTask() bool

func (*SettingsCfg) GetGoogleAnalytics Uses

func (m *SettingsCfg) GetGoogleAnalytics() string

func (*SettingsCfg) GetIsolate Uses

func (m *SettingsCfg) GetIsolate() *IsolateSettings

func (*SettingsCfg) GetMaxBotSleepTime Uses

func (m *SettingsCfg) GetMaxBotSleepTime() int32

func (*SettingsCfg) GetMp Uses

func (m *SettingsCfg) GetMp() *MachineProviderSettings

func (*SettingsCfg) GetReusableTaskAgeSecs Uses

func (m *SettingsCfg) GetReusableTaskAgeSecs() int32

func (*SettingsCfg) GetUiClientId Uses

func (m *SettingsCfg) GetUiClientId() string

func (*SettingsCfg) GetUseLifo Uses

func (m *SettingsCfg) GetUseLifo() bool

func (*SettingsCfg) ProtoMessage Uses

func (*SettingsCfg) ProtoMessage()

func (*SettingsCfg) Reset Uses

func (m *SettingsCfg) Reset()

func (*SettingsCfg) String Uses

func (m *SettingsCfg) String() string

func (*SettingsCfg) XXX_DiscardUnknown Uses

func (m *SettingsCfg) XXX_DiscardUnknown()

func (*SettingsCfg) XXX_Marshal Uses

func (m *SettingsCfg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*SettingsCfg) XXX_Merge Uses

func (m *SettingsCfg) XXX_Merge(src proto.Message)

func (*SettingsCfg) XXX_Size Uses

func (m *SettingsCfg) XXX_Size() int

func (*SettingsCfg) XXX_Unmarshal Uses

func (m *SettingsCfg) XXX_Unmarshal(b []byte) error

type TaskTemplate Uses

type TaskTemplate struct {
    // This gives the template a name for the 'include' field below. This only
    // applies to templates defined within the PoolsCfg message (i.e. the
    // top-level message), not to templates inlined into a TaskTemplateDeployment.
    Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
    // Includes properties from the named other TaskTemplate. This can only
    // include templates defined in the top-level PoolsCfg message.
    Include []string `protobuf:"bytes,2,rep,name=include,proto3" json:"include,omitempty"`
    // CacheEntries are keyed by `name`, and `path` is overridden wholesale.
    //
    // It is illegal to have any TaskTemplate with multiple cache entries mapping
    // to the same path. It is illegal to have any cache paths overlap with cipd
    // package paths.
    Cache []*TaskTemplate_CacheEntry `protobuf:"bytes,3,rep,name=cache,proto3" json:"cache,omitempty"`
    // CipdPackages are keyed by (path, name), and `version` is overridden
    // wholesale.
    //
    // It is illegal to have any cipd paths overlap with cache entry paths.
    CipdPackage []*TaskTemplate_CipdPackage `protobuf:"bytes,4,rep,name=cipd_package,json=cipdPackage,proto3" json:"cipd_package,omitempty"`
    // Env vars are keyed by the `var` field,
    //
    // `value` fields overwrite included values.
    // `soft` fields overwrite included values.
    // `prefix` fields append to included values. For example, Doing:
    //
    //     {name: "1" env { var: "PATH" prefix: "a" }}
    //     {name: "2" env { var: "PATH" prefix: "b" }}
    //     {name: "3" include: "1" include: "2" }
    //
    //  Is equivalent to:
    //
    //     {name: "3" env { var: "PATH" prefix: "a" prefix: "b" }}
    //
    //
    // Full Example:
    //
    //   env {
    //     var: "PATH"
    //     value: "/disable_system_path"
    //     prefix: "a"
    //     prefix: "b"
    //     prefix: "c"
    //     soft: true
    //   }
    //   env {
    //     var: "OTHER"
    //     value: "1"
    //   }
    //   env {
    //     var: "PYTHONPATH"
    //     prefix: "a"
    //   }
    //
    // Results in, essentially:
    //
    //   $PATH=/path/to/a:/path/to/b:/path/to/c:/disable_system_path
    //   $OTHER=1
    //   $PYTHONPATH=/path/to/a:$PYTHONPATH
    Env                  []*TaskTemplate_Env `protobuf:"bytes,5,rep,name=env,proto3" json:"env,omitempty"`
    XXX_NoUnkeyedLiteral struct{}            `json:"-"`
    XXX_unrecognized     []byte              `json:"-"`
    XXX_sizecache        int32               `json:"-"`
}

A TaskTemplate describes a set of properties (caches, CIPD packages and envvars) which apply to tasks created within a swarming pool.

TaskTemplates may either be defined inline inside of a TaskTemplateDeployment, or in "shared namespace" of the PoolsCfg.task_template field.

TaskTemplates may also include other TaskTemplates by name from the "shared namespace" in PoolsCfg. Swarming calculates the final value for a given TaskTemplate by applying all of its `include` fields depth-first, and then by applying the properties in the body of the TaskTemplate. Includes may never be repeated, including transitively. This means that "diamond shaped dependencies" are forbidden (i.e. A<-B<-D and A<-C<-D would be forbidden because `A` is included in `D` twice (via both C and B)).

func (*TaskTemplate) Descriptor Uses

func (*TaskTemplate) Descriptor() ([]byte, []int)

func (*TaskTemplate) GetCache Uses

func (m *TaskTemplate) GetCache() []*TaskTemplate_CacheEntry

func (*TaskTemplate) GetCipdPackage Uses

func (m *TaskTemplate) GetCipdPackage() []*TaskTemplate_CipdPackage

func (*TaskTemplate) GetEnv Uses

func (m *TaskTemplate) GetEnv() []*TaskTemplate_Env

func (*TaskTemplate) GetInclude Uses

func (m *TaskTemplate) GetInclude() []string

func (*TaskTemplate) GetName Uses

func (m *TaskTemplate) GetName() string

func (*TaskTemplate) ProtoMessage Uses

func (*TaskTemplate) ProtoMessage()

func (*TaskTemplate) Reset Uses

func (m *TaskTemplate) Reset()

func (*TaskTemplate) String Uses

func (m *TaskTemplate) String() string

func (*TaskTemplate) XXX_DiscardUnknown Uses

func (m *TaskTemplate) XXX_DiscardUnknown()

func (*TaskTemplate) XXX_Marshal Uses

func (m *TaskTemplate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*TaskTemplate) XXX_Merge Uses

func (m *TaskTemplate) XXX_Merge(src proto.Message)

func (*TaskTemplate) XXX_Size Uses

func (m *TaskTemplate) XXX_Size() int

func (*TaskTemplate) XXX_Unmarshal Uses

func (m *TaskTemplate) XXX_Unmarshal(b []byte) error

type TaskTemplateDeployment Uses

type TaskTemplateDeployment struct {
    // This gives the deployment a name for the 'task_template_deployment' field
    // in PoolCfg.
    //
    // When this TaskTemplateDeployment is inlined into another message (e.g.
    // `TaskTemplate.task_template_deployment_inline`), the name field must not be
    // specified.
    Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
    // Most Deployments will have a TaskTemplate with just a single include
    // directive.
    //
    // However, pools which substantially differ from other ones could define an
    // entire template inline without being forced to put it in the shared
    // namespace.
    //
    // The name field in this template (and the canary template) must not be
    // specified.
    Prod *TaskTemplate `protobuf:"bytes,2,opt,name=prod,proto3" json:"prod,omitempty"`
    // The canary template can be defined like the `prod` field above. If this is
    // defined and `canary_chance` is greater than 0, then this template will be
    // selected instead of `prod`.
    Canary *TaskTemplate `protobuf:"bytes,3,opt,name=canary,proto3" json:"canary,omitempty"`
    // range [0, 9999] where each tick corresponds to %0.01 chance of selecting
    // the template. Exactly 0 means 'canary is disabled', meaning that tasks
    // in this pool will always get the prod template.
    //
    // Examples:
    //   * 1     ".01% chance of picking canary"
    //   * 10    ".1% chance of picking canary"
    //   * 100   "1% chance of picking canary"
    //   * 1000  "10% chance of picking canary"
    //   * 5000  "50% chance of picking canary"
    //   * 7500  "75% chance of picking canary"
    //   * 9999  "99.99% chance of picking canary"
    CanaryChance         int32    `protobuf:"varint,4,opt,name=canary_chance,json=canaryChance,proto3" json:"canary_chance,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

This is a tuple of (prod template, canary template, canary_chance), so that it can be referenced from multiple pools simultaneously as a single unit.

func (*TaskTemplateDeployment) Descriptor Uses

func (*TaskTemplateDeployment) Descriptor() ([]byte, []int)

func (*TaskTemplateDeployment) GetCanary Uses

func (m *TaskTemplateDeployment) GetCanary() *TaskTemplate

func (*TaskTemplateDeployment) GetCanaryChance Uses

func (m *TaskTemplateDeployment) GetCanaryChance() int32

func (*TaskTemplateDeployment) GetName Uses

func (m *TaskTemplateDeployment) GetName() string

func (*TaskTemplateDeployment) GetProd Uses

func (m *TaskTemplateDeployment) GetProd() *TaskTemplate

func (*TaskTemplateDeployment) ProtoMessage Uses

func (*TaskTemplateDeployment) ProtoMessage()

func (*TaskTemplateDeployment) Reset Uses

func (m *TaskTemplateDeployment) Reset()

func (*TaskTemplateDeployment) String Uses

func (m *TaskTemplateDeployment) String() string

func (*TaskTemplateDeployment) XXX_DiscardUnknown Uses

func (m *TaskTemplateDeployment) XXX_DiscardUnknown()

func (*TaskTemplateDeployment) XXX_Marshal Uses

func (m *TaskTemplateDeployment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*TaskTemplateDeployment) XXX_Merge Uses

func (m *TaskTemplateDeployment) XXX_Merge(src proto.Message)

func (*TaskTemplateDeployment) XXX_Size Uses

func (m *TaskTemplateDeployment) XXX_Size() int

func (*TaskTemplateDeployment) XXX_Unmarshal Uses

func (m *TaskTemplateDeployment) XXX_Unmarshal(b []byte) error

type TaskTemplate_CacheEntry Uses

type TaskTemplate_CacheEntry struct {
    // The name of the cache (required).
    Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
    // The path relative to the task root to mount the cache (required).
    Path                 string   `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

func (*TaskTemplate_CacheEntry) Descriptor Uses

func (*TaskTemplate_CacheEntry) Descriptor() ([]byte, []int)

func (*TaskTemplate_CacheEntry) GetName Uses

func (m *TaskTemplate_CacheEntry) GetName() string

func (*TaskTemplate_CacheEntry) GetPath Uses

func (m *TaskTemplate_CacheEntry) GetPath() string

func (*TaskTemplate_CacheEntry) ProtoMessage Uses

func (*TaskTemplate_CacheEntry) ProtoMessage()

func (*TaskTemplate_CacheEntry) Reset Uses

func (m *TaskTemplate_CacheEntry) Reset()

func (*TaskTemplate_CacheEntry) String Uses

func (m *TaskTemplate_CacheEntry) String() string

func (*TaskTemplate_CacheEntry) XXX_DiscardUnknown Uses

func (m *TaskTemplate_CacheEntry) XXX_DiscardUnknown()

func (*TaskTemplate_CacheEntry) XXX_Marshal Uses

func (m *TaskTemplate_CacheEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*TaskTemplate_CacheEntry) XXX_Merge Uses

func (m *TaskTemplate_CacheEntry) XXX_Merge(src proto.Message)

func (*TaskTemplate_CacheEntry) XXX_Size Uses

func (m *TaskTemplate_CacheEntry) XXX_Size() int

func (*TaskTemplate_CacheEntry) XXX_Unmarshal Uses

func (m *TaskTemplate_CacheEntry) XXX_Unmarshal(b []byte) error

type TaskTemplate_CipdPackage Uses

type TaskTemplate_CipdPackage struct {
    // The relative to the task root to unpack the CIPD package. A blank value
    // is permitted and means 'the root directory of the task'.
    Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
    // The CIPD package name template to use (required).
    Pkg string `protobuf:"bytes,2,opt,name=pkg,proto3" json:"pkg,omitempty"`
    // The version of the CIPD package to use (required).
    Version              string   `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

func (*TaskTemplate_CipdPackage) Descriptor Uses

func (*TaskTemplate_CipdPackage) Descriptor() ([]byte, []int)

func (*TaskTemplate_CipdPackage) GetPath Uses

func (m *TaskTemplate_CipdPackage) GetPath() string

func (*TaskTemplate_CipdPackage) GetPkg Uses

func (m *TaskTemplate_CipdPackage) GetPkg() string

func (*TaskTemplate_CipdPackage) GetVersion Uses

func (m *TaskTemplate_CipdPackage) GetVersion() string

func (*TaskTemplate_CipdPackage) ProtoMessage Uses

func (*TaskTemplate_CipdPackage) ProtoMessage()

func (*TaskTemplate_CipdPackage) Reset Uses

func (m *TaskTemplate_CipdPackage) Reset()

func (*TaskTemplate_CipdPackage) String Uses

func (m *TaskTemplate_CipdPackage) String() string

func (*TaskTemplate_CipdPackage) XXX_DiscardUnknown Uses

func (m *TaskTemplate_CipdPackage) XXX_DiscardUnknown()

func (*TaskTemplate_CipdPackage) XXX_Marshal Uses

func (m *TaskTemplate_CipdPackage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*TaskTemplate_CipdPackage) XXX_Merge Uses

func (m *TaskTemplate_CipdPackage) XXX_Merge(src proto.Message)

func (*TaskTemplate_CipdPackage) XXX_Size Uses

func (m *TaskTemplate_CipdPackage) XXX_Size() int

func (*TaskTemplate_CipdPackage) XXX_Unmarshal Uses

func (m *TaskTemplate_CipdPackage) XXX_Unmarshal(b []byte) error

type TaskTemplate_Env Uses

type TaskTemplate_Env struct {
    // The envvar you want to set (required).
    Var string `protobuf:"bytes,1,opt,name=var,proto3" json:"var,omitempty"`
    // The envvar value you want to set. Any prefixes are prepended to this
    // value. If the value is unset, prefixes will be prepended to the bot's
    // current value of this envvar (see examples)
    Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
    // Paths relative to the task root to prepend to this envvar on the bot.
    // These will be resolved to absolute paths on the bot.
    Prefix []string `protobuf:"bytes,3,rep,name=prefix,proto3" json:"prefix,omitempty"`
    // If true, tasks setting this EnvVar can overwrite the value and/or the
    // prefix. Otherwise, tasks will not be permitted to to set any env var or
    // env_prefix for this var.
    //
    // This should be True for envvars you expect tasks to extend, like $PATH.
    // Note that this only affects envvar manipulation at the Swarming API
    // level; once the task is running it can (of course) manipulate the env
    // however it wants.
    Soft                 bool     `protobuf:"varint,4,opt,name=soft,proto3" json:"soft,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

func (*TaskTemplate_Env) Descriptor Uses

func (*TaskTemplate_Env) Descriptor() ([]byte, []int)

func (*TaskTemplate_Env) GetPrefix Uses

func (m *TaskTemplate_Env) GetPrefix() []string

func (*TaskTemplate_Env) GetSoft Uses

func (m *TaskTemplate_Env) GetSoft() bool

func (*TaskTemplate_Env) GetValue Uses

func (m *TaskTemplate_Env) GetValue() string

func (*TaskTemplate_Env) GetVar Uses

func (m *TaskTemplate_Env) GetVar() string

func (*TaskTemplate_Env) ProtoMessage Uses

func (*TaskTemplate_Env) ProtoMessage()

func (*TaskTemplate_Env) Reset Uses

func (m *TaskTemplate_Env) Reset()

func (*TaskTemplate_Env) String Uses

func (m *TaskTemplate_Env) String() string

func (*TaskTemplate_Env) XXX_DiscardUnknown Uses

func (m *TaskTemplate_Env) XXX_DiscardUnknown()

func (*TaskTemplate_Env) XXX_Marshal Uses

func (m *TaskTemplate_Env) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*TaskTemplate_Env) XXX_Merge Uses

func (m *TaskTemplate_Env) XXX_Merge(src proto.Message)

func (*TaskTemplate_Env) XXX_Size Uses

func (m *TaskTemplate_Env) XXX_Size() int

func (*TaskTemplate_Env) XXX_Unmarshal Uses

func (m *TaskTemplate_Env) XXX_Unmarshal(b []byte) error

type TrustedDelegation Uses

type TrustedDelegation struct {
    // Email of a trusted delegatee (the one who's minting the delegation token).
    PeerId string `protobuf:"bytes,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"`
    // A list of tags to expected in the delegation token to allow the usage of
    // a pool.
    //
    // Presence of any of the specified tags are enough. The format of these tags
    // generally depends on what service is doing the delegation.
    RequireAnyOf         *TrustedDelegation_TagList `protobuf:"bytes,2,opt,name=require_any_of,json=requireAnyOf,proto3" json:"require_any_of,omitempty"`
    XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
    XXX_unrecognized     []byte                     `json:"-"`
    XXX_sizecache        int32                      `json:"-"`
}

Defines a delegatee trusted to make authorization decisions for who can use a pool.

This is based on LUCI delegation protocol. Imagine an end user U calling Swarming through an intermediary service X. In this case U is a delegator and X is a delegatee. When X calls Swarming, it makes an RPC to the token server to make a delegation token that says "<X can call Swarming on behalf of U>".

This token is then sent to the Swarming with the RPC. Swarming sees that the direct peer it's talking to is X, but the call should be performed under the authority of U.

We extend this to also allow X make authorization decisions about whether U can use particular Swarming resource or not. The result of this decision is encoded in the delegation token as a set of "key:value" tags. Swarming then can treat presence of such tags as a signal that the particular call is allowed.

In this scenario we totally trust X to make the correct decision.

func (*TrustedDelegation) Descriptor Uses

func (*TrustedDelegation) Descriptor() ([]byte, []int)

func (*TrustedDelegation) GetPeerId Uses

func (m *TrustedDelegation) GetPeerId() string

func (*TrustedDelegation) GetRequireAnyOf Uses

func (m *TrustedDelegation) GetRequireAnyOf() *TrustedDelegation_TagList

func (*TrustedDelegation) ProtoMessage Uses

func (*TrustedDelegation) ProtoMessage()

func (*TrustedDelegation) Reset Uses

func (m *TrustedDelegation) Reset()

func (*TrustedDelegation) String Uses

func (m *TrustedDelegation) String() string

func (*TrustedDelegation) XXX_DiscardUnknown Uses

func (m *TrustedDelegation) XXX_DiscardUnknown()

func (*TrustedDelegation) XXX_Marshal Uses

func (m *TrustedDelegation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*TrustedDelegation) XXX_Merge Uses

func (m *TrustedDelegation) XXX_Merge(src proto.Message)

func (*TrustedDelegation) XXX_Size Uses

func (m *TrustedDelegation) XXX_Size() int

func (*TrustedDelegation) XXX_Unmarshal Uses

func (m *TrustedDelegation) XXX_Unmarshal(b []byte) error

type TrustedDelegation_TagList Uses

type TrustedDelegation_TagList struct {
    Tag                  []string `protobuf:"bytes,1,rep,name=tag,proto3" json:"tag,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

func (*TrustedDelegation_TagList) Descriptor Uses

func (*TrustedDelegation_TagList) Descriptor() ([]byte, []int)

func (*TrustedDelegation_TagList) GetTag Uses

func (m *TrustedDelegation_TagList) GetTag() []string

func (*TrustedDelegation_TagList) ProtoMessage Uses

func (*TrustedDelegation_TagList) ProtoMessage()

func (*TrustedDelegation_TagList) Reset Uses

func (m *TrustedDelegation_TagList) Reset()

func (*TrustedDelegation_TagList) String Uses

func (m *TrustedDelegation_TagList) String() string

func (*TrustedDelegation_TagList) XXX_DiscardUnknown Uses

func (m *TrustedDelegation_TagList) XXX_DiscardUnknown()

func (*TrustedDelegation_TagList) XXX_Marshal Uses

func (m *TrustedDelegation_TagList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*TrustedDelegation_TagList) XXX_Merge Uses

func (m *TrustedDelegation_TagList) XXX_Merge(src proto.Message)

func (*TrustedDelegation_TagList) XXX_Size Uses

func (m *TrustedDelegation_TagList) XXX_Size() int

func (*TrustedDelegation_TagList) XXX_Unmarshal Uses

func (m *TrustedDelegation_TagList) XXX_Unmarshal(b []byte) error

Package configpb imports 3 packages (graph) and is imported by 2 packages. Updated 2019-04-20. Refresh now. Tools for package owners.