Back to godoc.org

Package apipb

v0.0.0-...-1557bcf
Latest Go to latest

The latest major version is .

Published: Aug 13, 2020 | License: Apache-2.0 | Module: github.com/luci/luci-go

Index

Variables

var (
	GetCancellationsResponse_Cancellation_Reason_name = map[int32]string{
		0: "INVALID",
		1: "PREEMPTED",
		2: "ERROR",
	}
	GetCancellationsResponse_Cancellation_Reason_value = map[string]int32{
		"INVALID":   0,
		"PREEMPTED": 1,
		"ERROR":     2,
	}
)

Enum value maps for GetCancellationsResponse_Cancellation_Reason.

var (
	BotStatusType_name = map[int32]string{
		0: "BOT_STATUS_UNSPECIFIED",
		1: "MISSING",
		2: "QUARANTINED_BY_SERVER",
		3: "QUARANTINED_BY_BOT",
		4: "OVERHEAD_MAINTENANCE_EXTERNAL",
		5: "OVERHEAD_BOT_INTERNAL",
		6: "HOST_REBOOTING",
		7: "BUSY",
		8: "RESERVED",
		9: "IDLE",
	}
	BotStatusType_value = map[string]int32{
		"BOT_STATUS_UNSPECIFIED":        0,
		"MISSING":                       1,
		"QUARANTINED_BY_SERVER":         2,
		"QUARANTINED_BY_BOT":            3,
		"OVERHEAD_MAINTENANCE_EXTERNAL": 4,
		"OVERHEAD_BOT_INTERNAL":         5,
		"HOST_REBOOTING":                6,
		"BUSY":                          7,
		"RESERVED":                      8,
		"IDLE":                          9,
	}
)

Enum value maps for BotStatusType.

var (
	BotEventType_name = map[int32]string{
		0:  "BOT_EVENT_TYPE_UNSPECIFIED",
		1:  "BOT_NEW_SESSION",
		2:  "BOT_INTERNAL_FAILURE",
		3:  "BOT_HOOK_ERROR",
		4:  "BOT_HOOK_LOG",
		5:  "BOT_REBOOTING_HOST",
		6:  "BOT_SHUTDOWN",
		7:  "BOT_DELETED",
		8:  "BOT_MISSING",
		10: "INSTRUCT_IDLE",
		11: "INSTRUCT_START_TASK",
		12: "INSTRUCT_RESTART_BOT",
		13: "INSTRUCT_UPDATE_BOT_CODE",
		14: "INSTRUCT_TERMINATE_BOT",
		20: "TASK_COMPLETED",
		21: "TASK_INTERNAL_FAILURE",
		22: "TASK_KILLED",
	}
	BotEventType_value = map[string]int32{
		"BOT_EVENT_TYPE_UNSPECIFIED": 0,
		"BOT_NEW_SESSION":            1,
		"BOT_INTERNAL_FAILURE":       2,
		"BOT_HOOK_ERROR":             3,
		"BOT_HOOK_LOG":               4,
		"BOT_REBOOTING_HOST":         5,
		"BOT_SHUTDOWN":               6,
		"BOT_DELETED":                7,
		"BOT_MISSING":                8,
		"INSTRUCT_IDLE":              10,
		"INSTRUCT_START_TASK":        11,
		"INSTRUCT_RESTART_BOT":       12,
		"INSTRUCT_UPDATE_BOT_CODE":   13,
		"INSTRUCT_TERMINATE_BOT":     14,
		"TASK_COMPLETED":             20,
		"TASK_INTERNAL_FAILURE":      21,
		"TASK_KILLED":                22,
	}
)

Enum value maps for BotEventType.

var (
	TaskStateCategory_name = map[int32]string{
		0:  "TASK_STATE_CATEGORY_UNSPECIFIED",
		15: "TASK_STATE_MASK",
		16: "CATEGORY_PENDING",
		32: "CATEGORY_RUNNING",
		48: "CATEGORY_TRANSIENT_DONE",
		64: "CATEGORY_EXECUTION_DONE",
		80: "CATEGORY_NEVER_RAN_DONE",
	}
	TaskStateCategory_value = map[string]int32{
		"TASK_STATE_CATEGORY_UNSPECIFIED": 0,
		"TASK_STATE_MASK":                 15,
		"CATEGORY_PENDING":                16,
		"CATEGORY_RUNNING":                32,
		"CATEGORY_TRANSIENT_DONE":         48,
		"CATEGORY_EXECUTION_DONE":         64,
		"CATEGORY_NEVER_RAN_DONE":         80,
	}
)

Enum value maps for TaskStateCategory.

var (
	TaskState_name = map[int32]string{
		0:  "TASK_STATE_INVALID",
		16: "PENDING",
		17: "PENDING_DEDUPING",
		32: "RUNNING",
		33: "RUNNING_OVERHEAD_SETUP",
		34: "RUNNING_OVERHEAD_TEARDOWN",
		35: "TERMINATING",
		47: "COMPLETING",
		48: "RAN_INTERNAL_FAILURE",
		49: "DUT_FAILURE",
		50: "BOT_DISAPPEARED",
		51: "PREEMPTED",
		64: "COMPLETED",
		65: "TIMED_OUT",
		66: "TIMED_OUT_SILENCE",
		67: "KILLED",
		68: "MISSING_INPUTS",
		80: "DEDUPED",
		81: "EXPIRED",
		82: "CANCELED",
		83: "NO_RESOURCE",
		84: "LOAD_SHED",
		85: "RESOURCE_EXHAUSTED",
		86: "SKIPPED_INTERNAL_FAILURE",
	}
	TaskState_value = map[string]int32{
		"TASK_STATE_INVALID":        0,
		"PENDING":                   16,
		"PENDING_DEDUPING":          17,
		"RUNNING":                   32,
		"RUNNING_OVERHEAD_SETUP":    33,
		"RUNNING_OVERHEAD_TEARDOWN": 34,
		"TERMINATING":               35,
		"COMPLETING":                47,
		"RAN_INTERNAL_FAILURE":      48,
		"DUT_FAILURE":               49,
		"BOT_DISAPPEARED":           50,
		"PREEMPTED":                 51,
		"COMPLETED":                 64,
		"TIMED_OUT":                 65,
		"TIMED_OUT_SILENCE":         66,
		"KILLED":                    67,
		"MISSING_INPUTS":            68,
		"DEDUPED":                   80,
		"EXPIRED":                   81,
		"CANCELED":                  82,
		"NO_RESOURCE":               83,
		"LOAD_SHED":                 84,
		"RESOURCE_EXHAUSTED":        85,
		"SKIPPED_INTERNAL_FAILURE":  86,
	}
)

Enum value maps for TaskState.

var (
	Containment_ContainmentType_name = map[int32]string{
		0: "NOT_SPECIFIED",
		1: "NONE",
		2: "AUTO",
		3: "JOB_OBJECT",
	}
	Containment_ContainmentType_value = map[string]int32{
		"NOT_SPECIFIED": 0,
		"NONE":          1,
		"AUTO":          2,
		"JOB_OBJECT":    3,
	}
)

Enum value maps for Containment_ContainmentType.

var File_go_chromium_org_luci_swarming_proto_api_plugin_proto protoreflect.FileDescriptor
var File_go_chromium_org_luci_swarming_proto_api_swarming_proto protoreflect.FileDescriptor

func FileDescriptorSet

func FileDescriptorSet() *descriptor.FileDescriptorSet

FileDescriptorSet returns a descriptor set for this proto package, which includes all defined services, and all transitive dependencies.

Will not return nil.

Do NOT modify the returned descriptor.

func RegisterBotAPIServer

func RegisterBotAPIServer(s prpc.Registrar, srv BotAPIServer)

func RegisterExternalSchedulerServer

func RegisterExternalSchedulerServer(s prpc.Registrar, srv ExternalSchedulerServer)

type AssignTasksRequest

type AssignTasksRequest struct {

	// SchedulerID is the id of the scheduler that this request should be run on.
	SchedulerId string `protobuf:"bytes,1,opt,name=scheduler_id,json=schedulerId,proto3" json:"scheduler_id,omitempty"`
	// IdleBots is the set of idle bots that are trying to get tasks assigned.
	IdleBots []*IdleBot `protobuf:"bytes,2,rep,name=idle_bots,json=idleBots,proto3" json:"idle_bots,omitempty"`
	// Time is the current time (according to swarming) at which these bots
	// are attempting to have tasks assigned to them.
	Time *timestamp.Timestamp `protobuf:"bytes,3,opt,name=time,proto3" json:"time,omitempty"`
	// contains filtered or unexported fields
}

func (*AssignTasksRequest) Descriptor

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

Deprecated: Use AssignTasksRequest.ProtoReflect.Descriptor instead.

func (*AssignTasksRequest) GetIdleBots

func (x *AssignTasksRequest) GetIdleBots() []*IdleBot

func (*AssignTasksRequest) GetSchedulerId

func (x *AssignTasksRequest) GetSchedulerId() string

func (*AssignTasksRequest) GetTime

func (x *AssignTasksRequest) GetTime() *timestamp.Timestamp

func (*AssignTasksRequest) ProtoMessage

func (*AssignTasksRequest) ProtoMessage()

func (*AssignTasksRequest) ProtoReflect

func (x *AssignTasksRequest) ProtoReflect() protoreflect.Message

func (*AssignTasksRequest) Reset

func (x *AssignTasksRequest) Reset()

func (*AssignTasksRequest) String

func (x *AssignTasksRequest) String() string

func (*AssignTasksRequest) Validate

func (r *AssignTasksRequest) Validate() error

Validate returns an error if r is invalid.

type AssignTasksResponse

type AssignTasksResponse struct {

	// Assignments is the set of (bot, task) assignments that the scheduler
	// determined should be made.
	Assignments []*TaskAssignment `protobuf:"bytes,1,rep,name=assignments,proto3" json:"assignments,omitempty"`
	// contains filtered or unexported fields
}

func (*AssignTasksResponse) Descriptor

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

Deprecated: Use AssignTasksResponse.ProtoReflect.Descriptor instead.

func (*AssignTasksResponse) GetAssignments

func (x *AssignTasksResponse) GetAssignments() []*TaskAssignment

func (*AssignTasksResponse) ProtoMessage

func (*AssignTasksResponse) ProtoMessage()

func (*AssignTasksResponse) ProtoReflect

func (x *AssignTasksResponse) ProtoReflect() protoreflect.Message

func (*AssignTasksResponse) Reset

func (x *AssignTasksResponse) Reset()

func (*AssignTasksResponse) String

func (x *AssignTasksResponse) String() string

type Bot

type Bot struct {

	// Bot ID. It must be unique across the Swarming fleet. Generally based on the
	// hostname where the bot runs, but that's not a requirement. Must be
	// predefined in bots.cfg.
	//
	// This value is also included in dimensions for the key 'id'.
	BotId string `protobuf:"bytes,1,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
	// Bot session ID. An opaque value.
	//
	// There is one bot session ID per bot process ID on the host. When the bot
	// self-upgrades, it creates a new bot session ID.
	SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // Not used yet. https://crbug.com/786735
	// Pools that this bot belongs to. Normally assigned via bots.cfg. The
	// pools must be defined in pools.cfg.
	//
	// Normally a bot shall belong to a single pool, but belonging to multiple
	// pool is allowed. This is generally helpful for transitioning bots.
	//
	// This value is also included in dimensions for the key 'pool'.
	Pools []string `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"`
	// Current bot status. A bot status is a state in which the bot is for a
	// certain amount of time.
	Status BotStatusType `protobuf:"varint,4,opt,name=status,proto3,enum=swarming.v1.BotStatusType" json:"status,omitempty"`
	// Supplemental information to describe the bot status. Human readable.
	//
	// See BotStatusType for the meaning of this string for each status.
	StatusMsg string `protobuf:"bytes,5,opt,name=status_msg,json=statusMsg,proto3" json:"status_msg,omitempty"`
	// Current task being handled by the bot, if there is one.
	//
	// In Swarming, only a single task can be assigned to a bot at any given time.
	CurrentTaskId string `protobuf:"bytes,6,opt,name=current_task_id,json=currentTaskId,proto3" json:"current_task_id,omitempty"`
	// Bot reported dimensions. dimensions is a {key: [values]} dictionary. This
	// can be used to declare the properties of the host or for the DUT (Device
	// Under Test) under control. This is used for task selection.
	//
	// In RBE, this is called Property. The difference is that RBE's Property is a
	// string:string flat dictionary, it doesn't allow repeated values.
	//
	// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/doc/Detailed-Design.md#bot-dimensions
	//
	// dimensions MUST be sorted by keys, and each values list must be sorted.
	// Each dimension key must be unique.
	//
	// The values are effectively an OR, a task may match any of the value.
	//
	// Human readable.
	Dimensions []*StringListPair `protobuf:"bytes,7,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
	// Bot reported informational state. This can be used to describe the host,
	// the bot itself and the DUT (Device Under Test) under control as applicable.
	//
	// This is NOT used for task selection.
	Info *BotInfo `protobuf:"bytes,8,opt,name=info,proto3" json:"info,omitempty"`
	// contains filtered or unexported fields
}

Bot describes a Swarming bot.

Because a Swarming bot is a single execution unit unlike RBE, it doesn't have a concept of owned device at the moment. This may change later.

func (*Bot) Descriptor

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

Deprecated: Use Bot.ProtoReflect.Descriptor instead.

func (*Bot) GetBotId

func (x *Bot) GetBotId() string

func (*Bot) GetCurrentTaskId

func (x *Bot) GetCurrentTaskId() string

func (*Bot) GetDimensions

func (x *Bot) GetDimensions() []*StringListPair

func (*Bot) GetInfo

func (x *Bot) GetInfo() *BotInfo

func (*Bot) GetPools

func (x *Bot) GetPools() []string

func (*Bot) GetSessionId

func (x *Bot) GetSessionId() string

func (*Bot) GetStatus

func (x *Bot) GetStatus() BotStatusType

func (*Bot) GetStatusMsg

func (x *Bot) GetStatusMsg() string

func (*Bot) ProtoMessage

func (*Bot) ProtoMessage()

func (*Bot) ProtoReflect

func (x *Bot) ProtoReflect() protoreflect.Message

func (*Bot) Reset

func (x *Bot) Reset()

func (*Bot) String

func (x *Bot) String() string

type BotAPIClient

type BotAPIClient interface {
	// Events returns events relating to one bot.
	Events(ctx context.Context, in *BotEventsRequest, opts ...grpc.CallOption) (*BotEventsResponse, error)
}

BotAPIClient is the client API for BotAPI service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewBotAPIClient

func NewBotAPIClient(cc grpc.ClientConnInterface) BotAPIClient

func NewBotAPIPRPCClient

func NewBotAPIPRPCClient(client *prpc.Client) BotAPIClient

type BotAPIServer

type BotAPIServer interface {
	// Events returns events relating to one bot.
	Events(context.Context, *BotEventsRequest) (*BotEventsResponse, error)
}

BotAPIServer is the server API for BotAPI service.

type BotEvent

type BotEvent struct {
	EventTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=event_time,json=eventTime,proto3" json:"event_time,omitempty"`
	// Snapshot of the Bot that had this event.
	//
	// Eventually we'd want to only snapshot the difference from the previous
	// event, but this would make the SQL queries much more complicated.
	Bot *Bot `protobuf:"bytes,2,opt,name=bot,proto3" json:"bot,omitempty"`
	// Type of state change (event) that trigger this message.
	Event BotEventType `protobuf:"varint,3,opt,name=event,proto3,enum=swarming.v1.BotEventType" json:"event,omitempty"`
	// Supplementation information to describe the bot event. Human readable.
	//
	// See BotEventType for the meaning of this string for each status.
	EventMsg string `protobuf:"bytes,4,opt,name=event_msg,json=eventMsg,proto3" json:"event_msg,omitempty"`
	// contains filtered or unexported fields
}

BotEvent represents an event on the bot.

This message is used both in the API and as a BigQuery table description for the table 'bot_events' in dataset 'swarming'.

func (*BotEvent) Descriptor

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

Deprecated: Use BotEvent.ProtoReflect.Descriptor instead.

func (*BotEvent) GetBot

func (x *BotEvent) GetBot() *Bot

func (*BotEvent) GetEvent

func (x *BotEvent) GetEvent() BotEventType

func (*BotEvent) GetEventMsg

func (x *BotEvent) GetEventMsg() string

func (*BotEvent) GetEventTime

func (x *BotEvent) GetEventTime() *timestamp.Timestamp

func (*BotEvent) ProtoMessage

func (*BotEvent) ProtoMessage()

func (*BotEvent) ProtoReflect

func (x *BotEvent) ProtoReflect() protoreflect.Message

func (*BotEvent) Reset

func (x *BotEvent) Reset()

func (*BotEvent) String

func (x *BotEvent) String() string

type BotEventType

type BotEventType int32

BotEventType defines the reason why BotEvent was created.

const (
	// Invalid bot event type, do not use.
	BotEventType_BOT_EVENT_TYPE_UNSPECIFIED BotEventType = 0
	// Bot connected and started a new session.
	//
	// BotEvent.event_msg shall not be set.
	BotEventType_BOT_NEW_SESSION BotEventType = 1
	// Bot had an internal failure to report to the server outside of a task
	// context. This shall send a report to the administrator of the instance and
	// service author.
	//
	// BotEvent.event_msg shall contain the error message.
	BotEventType_BOT_INTERNAL_FAILURE BotEventType = 2
	// Bot had an hook error to report to the server. This shall send a report to
	// the administrator of the instance.
	//
	// BotEvent.event_msg shall contain the error message.
	BotEventType_BOT_HOOK_ERROR BotEventType = 3
	// Bot hook logged information. The bot hooks can log locally to the local log
	// file, which itself can be streamed out of band. For special notifications
	// that are worth notifying the administrator, this event can be used to raise
	// these. Due to the cost of doing an RPC just for this, this should be used
	// sparingly; vs local logging.
	//
	// BotEvent.event_msg shall contain the log entry.
	BotEventType_BOT_HOOK_LOG BotEventType = 4
	// Bot initiated a host reboot. An example is a bot hook requesting to reboot
	// the host after a task failure.
	//
	// BotEvent.event_msg shall contain the reason for rebooting the host, if any.
	BotEventType_BOT_REBOOTING_HOST BotEventType = 5
	// Bot is shutting down. It may be restarting for an update.
	//
	// BotEvent.event_msg shall contain the reason.
	BotEventType_BOT_SHUTDOWN BotEventType = 6
	// Knowledge of the bot by the server was deleted.
	//
	// In this case, the bot's historical data is still kept in the Swarming
	// server's DB for a year, but the bot is not shown anywhere.
	BotEventType_BOT_DELETED BotEventType = 7 // Not used yet. https://crbug.com/905087
	// Bot is missing. There have been no communication from the bot for longer
	// than deadline configured on server side.
	BotEventType_BOT_MISSING BotEventType = 8
	// The server instructs the bot to stay idle. This is when there is no task
	// pending for this bot. Will only be stored when there are other state
	// changes.
	//
	// BotEvent.event_msg shall not be set.
	BotEventType_INSTRUCT_IDLE BotEventType = 10
	// The server instructs the bot to start a task.
	//
	// BotEvent.event_msg shall not be set. BotEvent.bot.current_task_id shall
	// contain the task ID.
	BotEventType_INSTRUCT_START_TASK BotEventType = 11
	// The server instructs the bot to restart without self-updating. This is to
	// initiate a new bot session.
	//
	// BotEvent.event_msg can be set to the rationale, if any.
	BotEventType_INSTRUCT_RESTART_BOT BotEventType = 12
	// The server instructs the bot to self-update.
	//
	// BotEvent.event_msg shall be set to the version to update to.
	// BotEvent.bot.info.version contains the bot's previous version.
	BotEventType_INSTRUCT_UPDATE_BOT_CODE BotEventType = 13
	// The server instructs the bot to stop its process.
	//
	// BotEvent.event_msg shall not be set. BotEvent.bot.current_task_id shall
	// contain the task ID.
	BotEventType_INSTRUCT_TERMINATE_BOT BotEventType = 14
	// Bot completed a task.
	//
	// BotEvent.event_msg shall not be set. BotEvent.bot.current_task_id shall
	// contain the task ID.
	BotEventType_TASK_COMPLETED BotEventType = 20
	// Bot had an internal failure (RAN_INTERNAL_FAILURE) to report to the server
	// while processing a task. This shall send a report to the administrator of
	// the instance and service author.
	//
	// This event shall not be filed in case of a MISSING_INPUTS.
	//
	// BotEvent.event_msg shall contain the error message.
	// BotEvent.bot.current_task_id shall contain the task ID.
	BotEventType_TASK_INTERNAL_FAILURE BotEventType = 21
	// Bot is forcibly killing the task.
	//
	// This can be induced by a server side request (KILLED, PREEMPTED) or by a
	// bot side decision (TIMED_OUT, TIMED_OUT_SILENCE).
	//
	// BotEvent.event_msg shall not be set. BotEvent.bot.current_task_id shall
	// contain the task ID.
	BotEventType_TASK_KILLED BotEventType = 22
)

func (BotEventType) Descriptor

func (BotEventType) Descriptor() protoreflect.EnumDescriptor

func (BotEventType) Enum

func (x BotEventType) Enum() *BotEventType

func (BotEventType) EnumDescriptor

func (BotEventType) EnumDescriptor() ([]byte, []int)

Deprecated: Use BotEventType.Descriptor instead.

func (BotEventType) Number

func (x BotEventType) Number() protoreflect.EnumNumber

func (BotEventType) String

func (x BotEventType) String() string

func (BotEventType) Type

func (BotEventType) Type() protoreflect.EnumType

type BotEventsRequest

type BotEventsRequest struct {

	// Required. Bot ID to retrieve results from.
	BotId string `protobuf:"bytes,1,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
	// Optional. Use this field to specify the maximum number of results to be
	// returned by the server.
	//
	// The server may further constrain the maximum number of results returned in
	// a single page. If the page_size is 0, the server will decide the number of
	// results to be returned.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// Optional. Use this field to request a specific page of the list results,
	// following a previous call.
	//
	// When specified, page_size, start_time and end_time must match exactly the
	// previous call's argument.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	// Optional. Earliest time to return bot event. Inclusive.
	//
	// If not specified, pagination is done until all events are returned.
	StartTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	// Optional. Most recent time to return bot event. Exclusive.
	//
	// If not specified, defaults to the current time.
	EndTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
	// contains filtered or unexported fields
}

Request for BotAPI.Events.

func (*BotEventsRequest) Descriptor

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

Deprecated: Use BotEventsRequest.ProtoReflect.Descriptor instead.

func (*BotEventsRequest) GetBotId

func (x *BotEventsRequest) GetBotId() string

func (*BotEventsRequest) GetEndTime

func (x *BotEventsRequest) GetEndTime() *timestamp.Timestamp

func (*BotEventsRequest) GetPageSize

func (x *BotEventsRequest) GetPageSize() int32

func (*BotEventsRequest) GetPageToken

func (x *BotEventsRequest) GetPageToken() string

func (*BotEventsRequest) GetStartTime

func (x *BotEventsRequest) GetStartTime() *timestamp.Timestamp

func (*BotEventsRequest) ProtoMessage

func (*BotEventsRequest) ProtoMessage()

func (*BotEventsRequest) ProtoReflect

func (x *BotEventsRequest) ProtoReflect() protoreflect.Message

func (*BotEventsRequest) Reset

func (x *BotEventsRequest) Reset()

func (*BotEventsRequest) String

func (x *BotEventsRequest) String() string

type BotEventsResponse

type BotEventsResponse struct {

	// Events are in reverse chronological order, most recents first and going
	// down to older events.
	Events []*BotEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
	// This field represents the pagination token to retrieve the next page of
	// results. If the value is "", it means no further results for the request.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	// contains filtered or unexported fields
}

Response of BotAPI.Events.

func (*BotEventsResponse) Descriptor

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

Deprecated: Use BotEventsResponse.ProtoReflect.Descriptor instead.

func (*BotEventsResponse) GetEvents

func (x *BotEventsResponse) GetEvents() []*BotEvent

func (*BotEventsResponse) GetNextPageToken

func (x *BotEventsResponse) GetNextPageToken() string

func (*BotEventsResponse) ProtoMessage

func (*BotEventsResponse) ProtoMessage()

func (*BotEventsResponse) ProtoReflect

func (x *BotEventsResponse) ProtoReflect() protoreflect.Message

func (*BotEventsResponse) Reset

func (x *BotEventsResponse) Reset()

func (*BotEventsResponse) String

func (x *BotEventsResponse) String() string

type BotInfo

type BotInfo struct {
	Supplemental *_struct.Struct `protobuf:"bytes,1,opt,name=supplemental,proto3" json:"supplemental,omitempty"`

	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`

	ExternalIp string `protobuf:"bytes,3,opt,name=external_ip,json=externalIp,proto3" json:"external_ip,omitempty"`

	AuthenticatedAs string `protobuf:"bytes,4,opt,name=authenticated_as,json=authenticatedAs,proto3" json:"authenticated_as,omitempty"`

	CasStats *CASStats `protobuf:"bytes,5,opt,name=cas_stats,json=casStats,proto3" json:"cas_stats,omitempty"`

	NamedCachesStats []*NamedCacheStats `protobuf:"bytes,6,rep,name=named_caches_stats,json=namedCachesStats,proto3" json:"named_caches_stats,omitempty"`

	CipdPackagesCacheStats []*CIPDPackageCacheStats "" /* 131 byte string literal not displayed */

	Host *PhysicalEntity `protobuf:"bytes,8,opt,name=host,proto3" json:"host,omitempty"`

	Devices []*PhysicalEntity `protobuf:"bytes,9,rep,name=devices,proto3" json:"devices,omitempty"`

	LastSeenTs *timestamp.Timestamp `protobuf:"bytes,10,opt,name=last_seen_ts,json=lastSeenTs,proto3" json:"last_seen_ts,omitempty"`

}

Bot reported informational state. This can be used to describe the host, the bot itself and the DUT (Device Under Test) under control as applicable.

This is NOT used for task selection.

func (*BotInfo) Descriptor

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

Deprecated: Use BotInfo.ProtoReflect.Descriptor instead.

func (*BotInfo) GetAuthenticatedAs

func (x *BotInfo) GetAuthenticatedAs() string

func (*BotInfo) GetCasStats

func (x *BotInfo) GetCasStats() *CASStats

func (*BotInfo) GetCipdPackagesCacheStats

func (x *BotInfo) GetCipdPackagesCacheStats() []*CIPDPackageCacheStats

func (*BotInfo) GetDevices

func (x *BotInfo) GetDevices() []*PhysicalEntity

func (*BotInfo) GetExternalIp

func (x *BotInfo) GetExternalIp() string

func (*BotInfo) GetHost

func (x *BotInfo) GetHost() *PhysicalEntity

func (*BotInfo) GetLastSeenTs

func (x *BotInfo) GetLastSeenTs() *timestamp.Timestamp

func (*BotInfo) GetNamedCachesStats

func (x *BotInfo) GetNamedCachesStats() []*NamedCacheStats

func (*BotInfo) GetSupplemental

func (x *BotInfo) GetSupplemental() *_struct.Struct

func (*BotInfo) GetVersion

func (x *BotInfo) GetVersion() string

func (*BotInfo) ProtoMessage

func (*BotInfo) ProtoMessage()

func (*BotInfo) ProtoReflect

func (x *BotInfo) ProtoReflect() protoreflect.Message

func (*BotInfo) Reset

func (x *BotInfo) Reset()

func (*BotInfo) String

func (x *BotInfo) String() string

type BotStatusType

type BotStatusType int32

BotStatusType is one of the states the bot can be in.

A bot status implies being in this status for a certain amount of time, for example a hook running for N seconds, contrary to BotEventType which is about an event that doesn't have an inherent duration.

Some values are more important than others. For example if a bot is now MISSING but used to be QUARANTINED, the value is still MISSING.

const (
	// Invalid bot status, do not use.
	BotStatusType_BOT_STATUS_UNSPECIFIED BotStatusType = 0
	// The server detected that the bot is not pinging the server anymore. Unlike
	// other statuses, this value is set after a timeout.
	//
	// Bot.status_msg shall not be set.
	BotStatusType_MISSING BotStatusType = 1
	// Bot was quarantined by the server.
	//
	// Bot.status_msg shall include the server provided rationale.
	BotStatusType_QUARANTINED_BY_SERVER BotStatusType = 2 // Not used yet. https://crbug.com/757931
	// Bot self-reported as unhealthy.
	//
	// What is currently called as 'quarantined' in the old API.
	//
	// Bot.status_msg shall include the bot provided rationale.
	BotStatusType_QUARANTINED_BY_BOT BotStatusType = 3
	// Bot self-reported as unable to run tasks due to externally induced
	// overhead.
	//
	// Examples include:
	// - The temperature of the DUT (Device Under Test) is too high, and the bot
	//   is waiting for cool down
	// - host is doing self-cleaning work out of the bot's control (puppet is
	//   running), etc.
	//
	// Bot.status_msg shall include the bot provided rationale.
	BotStatusType_OVERHEAD_MAINTENANCE_EXTERNAL BotStatusType = 4
	// Bot self-reported as unable to run tasks due to doing internal overhead.
	//
	// Examples include:
	// - Running hooks
	// - Cleaning up or verifying its local cache
	// - Bot is starting for a version upgrade
	//
	// Bot.status_msg shall disambiguate the type of work item done.
	BotStatusType_OVERHEAD_BOT_INTERNAL BotStatusType = 5 // Not used yet. https://crbug.com/870723
	// Bot is down as its host is rebooting and contact was lost.
	//
	// If the bot doesn't contact back soon enough, it will be considered MISSING.
	//
	// Bot.status_msg shall not be set.
	BotStatusType_HOST_REBOOTING BotStatusType = 6 // Not used yet. https://crbug.com/870723
	// Running a task.
	//
	// Bot.status_msg shall not be set.
	BotStatusType_BUSY BotStatusType = 7
	// Bot is 'reserved' for operations outside of normal operations. This can be
	// relevant for SUT (System Under Test).
	//
	// Bot.status_msg shall not be set.
	BotStatusType_RESERVED BotStatusType = 8 // Not used yet. https://crbug.com/913978
	// Bot is healthy and waiting for tasks.
	//
	// Bot.status_msg shall not be set.
	BotStatusType_IDLE BotStatusType = 9
)

func (BotStatusType) Descriptor

func (BotStatusType) Descriptor() protoreflect.EnumDescriptor

func (BotStatusType) Enum

func (x BotStatusType) Enum() *BotStatusType

func (BotStatusType) EnumDescriptor

func (BotStatusType) EnumDescriptor() ([]byte, []int)

Deprecated: Use BotStatusType.Descriptor instead.

func (BotStatusType) Number

func (x BotStatusType) Number() protoreflect.EnumNumber

func (BotStatusType) String

func (x BotStatusType) String() string

func (BotStatusType) Type

func (BotStatusType) Type() protoreflect.EnumType

type CASEntriesStats

type CASEntriesStats struct {
	NumItems        int64 `protobuf:"varint,1,opt,name=num_items,json=numItems,proto3" json:"num_items,omitempty"`
	TotalBytesItems int64 `protobuf:"varint,2,opt,name=total_bytes_items,json=totalBytesItems,proto3" json:"total_bytes_items,omitempty"`
	// This buffer is compressed as deflate'd delta-encoded varints. This is the
	// list of all the item size for an I/O operation, which can scale in the 100k
	// range. So this can be large! See //client/utils/large.py for the code to
	// handle these.
	Items []byte `protobuf:"bytes,6,opt,name=items,proto3" json:"items,omitempty"`
	// contains filtered or unexported fields
}

Statistics for differential CAS entries in the context of I/O for a task.

func (*CASEntriesStats) Descriptor

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

Deprecated: Use CASEntriesStats.ProtoReflect.Descriptor instead.

func (*CASEntriesStats) GetItems

func (x *CASEntriesStats) GetItems() []byte

func (*CASEntriesStats) GetNumItems

func (x *CASEntriesStats) GetNumItems() int64

func (*CASEntriesStats) GetTotalBytesItems

func (x *CASEntriesStats) GetTotalBytesItems() int64

func (*CASEntriesStats) ProtoMessage

func (*CASEntriesStats) ProtoMessage()

func (*CASEntriesStats) ProtoReflect

func (x *CASEntriesStats) ProtoReflect() protoreflect.Message

func (*CASEntriesStats) Reset

func (x *CASEntriesStats) Reset()

func (*CASEntriesStats) String

func (x *CASEntriesStats) String() string

type CASStats

type CASStats struct {
	NumberItems int64                `protobuf:"varint,1,opt,name=number_items,json=numberItems,proto3" json:"number_items,omitempty"`
	Size        int64                `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
	OldestTime  *timestamp.Timestamp `protobuf:"bytes,3,opt,name=oldest_time,json=oldestTime,proto3" json:"oldest_time,omitempty"`
	// contains filtered or unexported fields
}

Bot local content addressed cache information.

func (*CASStats) Descriptor

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

Deprecated: Use CASStats.ProtoReflect.Descriptor instead.

func (*CASStats) GetNumberItems

func (x *CASStats) GetNumberItems() int64

func (*CASStats) GetOldestTime

func (x *CASStats) GetOldestTime() *timestamp.Timestamp

func (*CASStats) GetSize

func (x *CASStats) GetSize() int64

func (*CASStats) ProtoMessage

func (*CASStats) ProtoMessage()

func (*CASStats) ProtoReflect

func (x *CASStats) ProtoReflect() protoreflect.Message

func (*CASStats) Reset

func (x *CASStats) Reset()

func (*CASStats) String

func (x *CASStats) String() string

type CASTree

type CASTree struct {

	// server is one of:
	// - The isolated server to fetch (or push) content from. Must contain
	//   "https://" or "http://" prefix.
	// - The Google Cloud Project name hosting the RBE CAS.
	Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
	// The hex encoded hash of an isolated archive. It is expected to be a SHA-1
	// (40 characters) or SHA-256 (64 characters), based on the namespace value
	// below.
	Digest string `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
	// Namespace on the isolate server. This currently defines the hashing
	// algorithm and compression algorithm but is currently loosely defined.
	//
	// A prefix "sha256-" defines a SHA-256 hashing. Defaults to SHA-1.
	// A suffix "-deflate" or "-gzip" defines a deflate algorithm.
	//
	// When referring to a RBE CAS instance, the namespace must be set to
	// "sha256-GCP". The GCP RBE CAS requires SHA-256 and doesn't support
	// precompressed data.
	Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
	// contains filtered or unexported fields
}

Defines a Content Addressed Storage (a cache in practice) data tree reference, normally a reference to a .isolated file.

This can be used to refer to either a task's inputs or a task's outputs.

The .isolated file format is defined at https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/isolate/doc/Design.md#file-format It is a JSON file listing all the inputs.

It is very different RBE's CAS format, which uses a merkel tree of protobuf files.

func (*CASTree) Descriptor

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

Deprecated: Use CASTree.ProtoReflect.Descriptor instead.

func (*CASTree) GetDigest

func (x *CASTree) GetDigest() string

func (*CASTree) GetNamespace

func (x *CASTree) GetNamespace() string

func (*CASTree) GetServer

func (x *CASTree) GetServer() string

func (*CASTree) ProtoMessage

func (*CASTree) ProtoMessage()

func (*CASTree) ProtoReflect

func (x *CASTree) ProtoReflect() protoreflect.Message

func (*CASTree) Reset

func (x *CASTree) Reset()

func (*CASTree) String

func (x *CASTree) String() string

type CIPDPackage

type CIPDPackage struct {

	// The template for the CIPD package name that will have its variables
	// evaluated, e.g. "infra/tools/authutil/${platform}".
	//
	// TODO(vadimsh): Link to documentation of the variable usable.
	PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"`
	// Valid package version for the requested package.
	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
	// Path to directory relative to the task's root dir, where the package is to
	// be installed.
	//
	// If empty, the package will be installed at the root of the mapped
	// directory. If file names in the package and in the isolate clash, it will
	// cause a failure.
	DestPath string `protobuf:"bytes,3,opt,name=dest_path,json=destPath,proto3" json:"dest_path,omitempty"`
	// contains filtered or unexported fields
}

Defines one CIPD package to install prior to running the task.

CIPD packages are versioned and ACL'ed packages that are meant for tools that are kept for a long time.

func (*CIPDPackage) Descriptor

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

Deprecated: Use CIPDPackage.ProtoReflect.Descriptor instead.

func (*CIPDPackage) GetDestPath

func (x *CIPDPackage) GetDestPath() string

func (*CIPDPackage) GetPackageName

func (x *CIPDPackage) GetPackageName() string

func (*CIPDPackage) GetVersion

func (x *CIPDPackage) GetVersion() string

func (*CIPDPackage) ProtoMessage

func (*CIPDPackage) ProtoMessage()

func (*CIPDPackage) ProtoReflect

func (x *CIPDPackage) ProtoReflect() protoreflect.Message

func (*CIPDPackage) Reset

func (x *CIPDPackage) Reset()

func (*CIPDPackage) String

func (x *CIPDPackage) String() string

type CIPDPackageCacheStats

type CIPDPackageCacheStats struct {
	Name        string               `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Version     string               `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
	Size        int64                `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`
	LastUseTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=last_use_time,json=lastUseTime,proto3" json:"last_use_time,omitempty"`
	// contains filtered or unexported fields
}

Bot local CIPD package cache information.

func (*CIPDPackageCacheStats) Descriptor

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

Deprecated: Use CIPDPackageCacheStats.ProtoReflect.Descriptor instead.

func (*CIPDPackageCacheStats) GetLastUseTime

func (x *CIPDPackageCacheStats) GetLastUseTime() *timestamp.Timestamp

func (*CIPDPackageCacheStats) GetName

func (x *CIPDPackageCacheStats) GetName() string

func (*CIPDPackageCacheStats) GetSize

func (x *CIPDPackageCacheStats) GetSize() int64

func (*CIPDPackageCacheStats) GetVersion

func (x *CIPDPackageCacheStats) GetVersion() string

func (*CIPDPackageCacheStats) ProtoMessage

func (*CIPDPackageCacheStats) ProtoMessage()

func (*CIPDPackageCacheStats) ProtoReflect

func (x *CIPDPackageCacheStats) ProtoReflect() protoreflect.Message

func (*CIPDPackageCacheStats) Reset

func (x *CIPDPackageCacheStats) Reset()

func (*CIPDPackageCacheStats) String

func (x *CIPDPackageCacheStats) String() string

type CIPDPins

type CIPDPins struct {

	// The CIPD server where the CIPD packages were fetched from. Must contain
	// "https://" or "http://" prefix.
	//
	// This field or its subfields are optional if default CIPD client is defined
	// in the server config.
	Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
	// The pinned package + version of the CIPD client that was actually used.
	ClientPackage *CIPDPackage `protobuf:"bytes,2,opt,name=client_package,json=clientPackage,proto3" json:"client_package,omitempty"`
	// List of CIPD packages that were installed in the task with fully resolved
	// package names and versions.
	Packages []*CIPDPackage `protobuf:"bytes,3,rep,name=packages,proto3" json:"packages,omitempty"`
	// contains filtered or unexported fields
}

Defines pinned CIPD packages that were installed during the task.

func (*CIPDPins) Descriptor

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

Deprecated: Use CIPDPins.ProtoReflect.Descriptor instead.

func (*CIPDPins) GetClientPackage

func (x *CIPDPins) GetClientPackage() *CIPDPackage

func (*CIPDPins) GetPackages

func (x *CIPDPins) GetPackages() []*CIPDPackage

func (*CIPDPins) GetServer

func (x *CIPDPins) GetServer() string

func (*CIPDPins) ProtoMessage

func (*CIPDPins) ProtoMessage()

func (*CIPDPins) ProtoReflect

func (x *CIPDPins) ProtoReflect() protoreflect.Message

func (*CIPDPins) Reset

func (x *CIPDPins) Reset()

func (*CIPDPins) String

func (x *CIPDPins) String() string

type Containment

type Containment struct {
	LowerPriority bool `protobuf:"varint,1,opt,name=lower_priority,json=lowerPriority,proto3" json:"lower_priority,omitempty"`

	ContainmentType Containment_ContainmentType "" /* 152 byte string literal not displayed */

	LimitProcesses int64 `protobuf:"varint,3,opt,name=limit_processes,json=limitProcesses,proto3" json:"limit_processes,omitempty"`

	LimitTotalCommittedMemory int64 "" /* 141 byte string literal not displayed */

}

Defines the type of containment to use to put the task primary process inside.

TODO(maruel): https://crbug.com/808836

This is highly OS specific: - Lower the integrity level on Windows. https://crbug.com/916586 - Job Object on Windows. https://crbug.com/732818 - Docker on Linux or Windows. https://crbug.com/916584 - cgroup on Linux. https://crbug.com/764493 - Creating a temporary user on Windows and macOS. https://crbug.com/916585 - Lightweight home directory override on Windows, Linux and macOS.

https://crbug.com/811411

func (*Containment) Descriptor

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

Deprecated: Use Containment.ProtoReflect.Descriptor instead.

func (*Containment) GetContainmentType

func (x *Containment) GetContainmentType() Containment_ContainmentType

func (*Containment) GetLimitProcesses

func (x *Containment) GetLimitProcesses() int64

func (*Containment) GetLimitTotalCommittedMemory

func (x *Containment) GetLimitTotalCommittedMemory() int64

func (*Containment) GetLowerPriority

func (x *Containment) GetLowerPriority() bool

func (*Containment) ProtoMessage

func (*Containment) ProtoMessage()

func (*Containment) ProtoReflect

func (x *Containment) ProtoReflect() protoreflect.Message

func (*Containment) Reset

func (x *Containment) Reset()

func (*Containment) String

func (x *Containment) String() string

type Containment_ContainmentType

type Containment_ContainmentType int32
const (
	// Historical value, not specified. Containment may or may not be used.
	Containment_NOT_SPECIFIED Containment_ContainmentType = 0
	// No containment, the default for now.
	Containment_NONE Containment_ContainmentType = 1
	// Use the containment appropriate on the platform.
	Containment_AUTO Containment_ContainmentType = 2
	// Use Job Object on Windows. Will fail if used on other platforms.
	Containment_JOB_OBJECT Containment_ContainmentType = 3
)

func (Containment_ContainmentType) Descriptor

func (Containment_ContainmentType) Descriptor() protoreflect.EnumDescriptor

func (Containment_ContainmentType) Enum

func (x Containment_ContainmentType) Enum() *Containment_ContainmentType

func (Containment_ContainmentType) EnumDescriptor

func (Containment_ContainmentType) EnumDescriptor() ([]byte, []int)

Deprecated: Use Containment_ContainmentType.Descriptor instead.

func (Containment_ContainmentType) Number

func (x Containment_ContainmentType) Number() protoreflect.EnumNumber

func (Containment_ContainmentType) String

func (x Containment_ContainmentType) String() string

func (Containment_ContainmentType) Type

func (Containment_ContainmentType) Type() protoreflect.EnumType

type DecoratedExternalScheduler

type DecoratedExternalScheduler struct {
	// Service is the service to decorate.
	Service ExternalSchedulerServer
	// Prelude is called for each method before forwarding the call to Service.
	// If Prelude returns an error, then the call is skipped and the error is
	// processed via the Postlude (if one is defined), or it is returned directly.
	Prelude func(ctx context.Context, methodName string, req proto.Message) (context.Context, error)
	// Postlude is called for each method after Service has processed the call, or
	// after the Prelude has returned an error. This takes the the Service's
	// response proto (which may be nil) and/or any error. The decorated
	// service will return the response (possibly mutated) and error that Postlude
	// returns.
	Postlude func(ctx context.Context, methodName string, rsp proto.Message, err error) error
}

func (*DecoratedExternalScheduler) AssignTasks

func (s *DecoratedExternalScheduler) AssignTasks(ctx context.Context, req *AssignTasksRequest) (rsp *AssignTasksResponse, err error)

func (*DecoratedExternalScheduler) GetCallbacks

func (s *DecoratedExternalScheduler) GetCallbacks(ctx context.Context, req *GetCallbacksRequest) (rsp *GetCallbacksResponse, err error)

func (*DecoratedExternalScheduler) GetCancellations

func (s *DecoratedExternalScheduler) GetCancellations(ctx context.Context, req *GetCancellationsRequest) (rsp *GetCancellationsResponse, err error)

func (*DecoratedExternalScheduler) NotifyTasks

func (s *DecoratedExternalScheduler) NotifyTasks(ctx context.Context, req *NotifyTasksRequest) (rsp *NotifyTasksResponse, err error)

type ExternalSchedulerClient

type ExternalSchedulerClient interface {
	// AssignTasks determines which tasks should be run on which of the supplied
	// idle bots.
	AssignTasks(ctx context.Context, in *AssignTasksRequest, opts ...grpc.CallOption) (*AssignTasksResponse, error)
	// GetCancellations determines which tasks should be cancelled on which bots.
	GetCancellations(ctx context.Context, in *GetCancellationsRequest, opts ...grpc.CallOption) (*GetCancellationsResponse, error)
	// NotifyTasks informs the scheduler about the state of tasks (either new
	// tasks, or states of existing tasks).
	NotifyTasks(ctx context.Context, in *NotifyTasksRequest, opts ...grpc.CallOption) (*NotifyTasksResponse, error)
	// GetCallbacks asks the scheduler for a set of request ids that the
	// external scheduler wants to receive callback NotifyTasks calls about.
	GetCallbacks(ctx context.Context, in *GetCallbacksRequest, opts ...grpc.CallOption) (*GetCallbacksResponse, error)
}

ExternalSchedulerClient is the client API for ExternalScheduler service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewExternalSchedulerPRPCClient

func NewExternalSchedulerPRPCClient(client *prpc.Client) ExternalSchedulerClient

type ExternalSchedulerServer

type ExternalSchedulerServer interface {
	// AssignTasks determines which tasks should be run on which of the supplied
	// idle bots.
	AssignTasks(context.Context, *AssignTasksRequest) (*AssignTasksResponse, error)
	// GetCancellations determines which tasks should be cancelled on which bots.
	GetCancellations(context.Context, *GetCancellationsRequest) (*GetCancellationsResponse, error)
	// NotifyTasks informs the scheduler about the state of tasks (either new
	// tasks, or states of existing tasks).
	NotifyTasks(context.Context, *NotifyTasksRequest) (*NotifyTasksResponse, error)
	// GetCallbacks asks the scheduler for a set of request ids that the
	// external scheduler wants to receive callback NotifyTasks calls about.
	GetCallbacks(context.Context, *GetCallbacksRequest) (*GetCallbacksResponse, error)
}

ExternalSchedulerServer is the server API for ExternalScheduler service.

type GetCallbacksRequest

type GetCallbacksRequest struct {

	// SchedulerID is the id of the scheduler that this request should be run on.
	SchedulerId string `protobuf:"bytes,1,opt,name=scheduler_id,json=schedulerId,proto3" json:"scheduler_id,omitempty"`
	// contains filtered or unexported fields
}

func (*GetCallbacksRequest) Descriptor

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

Deprecated: Use GetCallbacksRequest.ProtoReflect.Descriptor instead.

func (*GetCallbacksRequest) GetSchedulerId

func (x *GetCallbacksRequest) GetSchedulerId() string

func (*GetCallbacksRequest) ProtoMessage

func (*GetCallbacksRequest) ProtoMessage()

func (*GetCallbacksRequest) ProtoReflect

func (x *GetCallbacksRequest) ProtoReflect() protoreflect.Message

func (*GetCallbacksRequest) Reset

func (x *GetCallbacksRequest) Reset()

func (*GetCallbacksRequest) String

func (x *GetCallbacksRequest) String() string

type GetCallbacksResponse

type GetCallbacksResponse struct {

	// TaskIds is the list of tasks that the external scheduler would like
	// callback notifications about.
	TaskIds []string `protobuf:"bytes,1,rep,name=task_ids,json=taskIds,proto3" json:"task_ids,omitempty"`
	// contains filtered or unexported fields
}

func (*GetCallbacksResponse) Descriptor

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

Deprecated: Use GetCallbacksResponse.ProtoReflect.Descriptor instead.

func (*GetCallbacksResponse) GetTaskIds

func (x *GetCallbacksResponse) GetTaskIds() []string

func (*GetCallbacksResponse) ProtoMessage

func (*GetCallbacksResponse) ProtoMessage()

func (*GetCallbacksResponse) ProtoReflect

func (x *GetCallbacksResponse) ProtoReflect() protoreflect.Message

func (*GetCallbacksResponse) Reset

func (x *GetCallbacksResponse) Reset()

func (*GetCallbacksResponse) String

func (x *GetCallbacksResponse) String() string

type GetCancellationsRequest

type GetCancellationsRequest struct {

	// SchedulerID is the id of the scheduler that this request should be run on.
	SchedulerId string `protobuf:"bytes,1,opt,name=scheduler_id,json=schedulerId,proto3" json:"scheduler_id,omitempty"`
	// contains filtered or unexported fields
}

func (*GetCancellationsRequest) Descriptor

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

Deprecated: Use GetCancellationsRequest.ProtoReflect.Descriptor instead.

func (*GetCancellationsRequest) GetSchedulerId

func (x *GetCancellationsRequest) GetSchedulerId() string

func (*GetCancellationsRequest) ProtoMessage

func (*GetCancellationsRequest) ProtoMessage()

func (*GetCancellationsRequest) ProtoReflect

func (x *GetCancellationsRequest) ProtoReflect() protoreflect.Message

func (*GetCancellationsRequest) Reset

func (x *GetCancellationsRequest) Reset()

func (*GetCancellationsRequest) String

func (x *GetCancellationsRequest) String() string

func (*GetCancellationsRequest) Validate

func (r *GetCancellationsRequest) Validate() error

Validate returns an error if r is invalid.

type GetCancellationsResponse

type GetCancellationsResponse struct {

	// Cancellations is the set of (bot, task) pairs for tasks that should be
	// cancelled on bots.
	Cancellations []*GetCancellationsResponse_Cancellation `protobuf:"bytes,1,rep,name=cancellations,proto3" json:"cancellations,omitempty"`
	// contains filtered or unexported fields
}

func (*GetCancellationsResponse) Descriptor

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

Deprecated: Use GetCancellationsResponse.ProtoReflect.Descriptor instead.

func (*GetCancellationsResponse) GetCancellations

func (x *GetCancellationsResponse) GetCancellations() []*GetCancellationsResponse_Cancellation

func (*GetCancellationsResponse) ProtoMessage

func (*GetCancellationsResponse) ProtoMessage()

func (*GetCancellationsResponse) ProtoReflect

func (x *GetCancellationsResponse) ProtoReflect() protoreflect.Message

func (*GetCancellationsResponse) Reset

func (x *GetCancellationsResponse) Reset()

func (*GetCancellationsResponse) String

func (x *GetCancellationsResponse) String() string

type GetCancellationsResponse_Cancellation

type GetCancellationsResponse_Cancellation struct {
	BotId string `protobuf:"bytes,1,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`

	TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`

	Reason GetCancellationsResponse_Cancellation_Reason "" /* 128 byte string literal not displayed */

	ExtraInfo string `protobuf:"bytes,4,opt,name=extra_info,json=extraInfo,proto3" json:"extra_info,omitempty"`

}

func (*GetCancellationsResponse_Cancellation) Descriptor

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

Deprecated: Use GetCancellationsResponse_Cancellation.ProtoReflect.Descriptor instead.

func (*GetCancellationsResponse_Cancellation) GetBotId

func (x *GetCancellationsResponse_Cancellation) GetBotId() string

func (*GetCancellationsResponse_Cancellation) GetExtraInfo

func (x *GetCancellationsResponse_Cancellation) GetExtraInfo() string

func (*GetCancellationsResponse_Cancellation) GetReason

func (x *GetCancellationsResponse_Cancellation) GetReason() GetCancellationsResponse_Cancellation_Reason

func (*GetCancellationsResponse_Cancellation) GetTaskId

func (x *GetCancellationsResponse_Cancellation) GetTaskId() string

func (*GetCancellationsResponse_Cancellation) ProtoMessage

func (*GetCancellationsResponse_Cancellation) ProtoMessage()

func (*GetCancellationsResponse_Cancellation) ProtoReflect

func (x *GetCancellationsResponse_Cancellation) ProtoReflect() protoreflect.Message

func (*GetCancellationsResponse_Cancellation) Reset

func (x *GetCancellationsResponse_Cancellation) Reset()

func (*GetCancellationsResponse_Cancellation) String

func (x *GetCancellationsResponse_Cancellation) String() string

type GetCancellationsResponse_Cancellation_Reason

type GetCancellationsResponse_Cancellation_Reason int32
const (
	// Invalid reason, do not use.
	GetCancellationsResponse_Cancellation_INVALID GetCancellationsResponse_Cancellation_Reason = 0
	// Task was running on a worker, but was interrupted by another task.
	// Task may be retried by swarming.
	GetCancellationsResponse_Cancellation_PREEMPTED GetCancellationsResponse_Cancellation_Reason = 1
	// Task had invalid or erroneous properties that make it not handleable
	// by scheduler. Task should not be retried.
	GetCancellationsResponse_Cancellation_ERROR GetCancellationsResponse_Cancellation_Reason = 2
)

func (GetCancellationsResponse_Cancellation_Reason) Descriptor

func (GetCancellationsResponse_Cancellation_Reason) Descriptor() protoreflect.EnumDescriptor

func (GetCancellationsResponse_Cancellation_Reason) Enum

func (x GetCancellationsResponse_Cancellation_Reason) Enum() *GetCancellationsResponse_Cancellation_Reason

func (GetCancellationsResponse_Cancellation_Reason) EnumDescriptor

func (GetCancellationsResponse_Cancellation_Reason) EnumDescriptor() ([]byte, []int)

Deprecated: Use GetCancellationsResponse_Cancellation_Reason.Descriptor instead.

func (GetCancellationsResponse_Cancellation_Reason) Number

func (x GetCancellationsResponse_Cancellation_Reason) Number() protoreflect.EnumNumber

func (GetCancellationsResponse_Cancellation_Reason) String

func (x GetCancellationsResponse_Cancellation_Reason) String() string

func (GetCancellationsResponse_Cancellation_Reason) Type

func (GetCancellationsResponse_Cancellation_Reason) Type() protoreflect.EnumType

type IdleBot

type IdleBot struct {

	// BotId is the id of the bot that is idle.
	BotId string `protobuf:"bytes,1,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
	// Dimensions is the dimension set of the idle bot.
	Dimensions []string `protobuf:"bytes,2,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
	// contains filtered or unexported fields
}

func (*IdleBot) Descriptor

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

Deprecated: Use IdleBot.ProtoReflect.Descriptor instead.

func (*IdleBot) GetBotId

func (x *IdleBot) GetBotId() string

func (*IdleBot) GetDimensions

func (x *IdleBot) GetDimensions() []string

func (*IdleBot) ProtoMessage

func (*IdleBot) ProtoMessage()

func (*IdleBot) ProtoReflect

func (x *IdleBot) ProtoReflect() protoreflect.Message

func (*IdleBot) Reset

func (x *IdleBot) Reset()

func (*IdleBot) String

func (x *IdleBot) String() string

type NamedCacheEntry

type NamedCacheEntry struct {

	// Unique name of the cache. Required. Length is limited to 4096.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Path to directory relative to the task's root dir, where the named cache is
	// to be installed.
	//
	// A path cannot be shared among multiple caches or CIPD installations.
	// A task will fail if a file/dir with the same name already exists.
	DestPath string `protobuf:"bytes,2,opt,name=dest_path,json=destPath,proto3" json:"dest_path,omitempty"`
	// contains filtered or unexported fields
}

Describes a named cache that should be reused on the bot.

A NamedCacheEntry in a task specifies that the task wants a directory to be persisted on the bot across tasks.

The cache directory is created at <run_dir>/|path|. If the cache was not present on the bot prior the task's execution, the directory is empty when the task starts. Any change done in the directory by the task is persisted on the bot after the task completes.

If another task runs on the same bot and requests the same named cache, even if mapped to a different path, it will get the updated content.

func (*NamedCacheEntry) Descriptor

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

Deprecated: Use NamedCacheEntry.ProtoReflect.Descriptor instead.

func (*NamedCacheEntry) GetDestPath

func (x *NamedCacheEntry) GetDestPath() string

func (*NamedCacheEntry) GetName

func (x *NamedCacheEntry) GetName() string

func (*NamedCacheEntry) ProtoMessage

func (*NamedCacheEntry) ProtoMessage()

func (*NamedCacheEntry) ProtoReflect

func (x *NamedCacheEntry) ProtoReflect() protoreflect.Message

func (*NamedCacheEntry) Reset

func (x *NamedCacheEntry) Reset()

func (*NamedCacheEntry) String

func (x *NamedCacheEntry) String() string

type NamedCacheStats

type NamedCacheStats struct {
	Name        string               `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Size        int64                `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
	LastUseTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=last_use_time,json=lastUseTime,proto3" json:"last_use_time,omitempty"`
	// contains filtered or unexported fields
}

Bot local named cache information.

func (*NamedCacheStats) Descriptor

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

Deprecated: Use NamedCacheStats.ProtoReflect.Descriptor instead.

func (*NamedCacheStats) GetLastUseTime

func (x *NamedCacheStats) GetLastUseTime() *timestamp.Timestamp

func (*NamedCacheStats) GetName

func (x *NamedCacheStats) GetName() string

func (*NamedCacheStats) GetSize

func (x *NamedCacheStats) GetSize() int64

func (*NamedCacheStats) ProtoMessage

func (*NamedCacheStats) ProtoMessage()

func (*NamedCacheStats) ProtoReflect

func (x *NamedCacheStats) ProtoReflect() protoreflect.Message

func (*NamedCacheStats) Reset

func (x *NamedCacheStats) Reset()

func (*NamedCacheStats) String

func (x *NamedCacheStats) String() string

type NotifyTasksItem

type NotifyTasksItem struct {

	// Time is the time at which the given task was in the given state.
	Time *timestamp.Timestamp `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"`
	// Task describes a task request and its current state.
	Task *TaskSpec `protobuf:"bytes,2,opt,name=task,proto3" json:"task,omitempty"`
	// contains filtered or unexported fields
}

func (*NotifyTasksItem) Descriptor

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

Deprecated: Use NotifyTasksItem.ProtoReflect.Descriptor instead.

func (*NotifyTasksItem) GetTask

func (x *NotifyTasksItem) GetTask() *TaskSpec

func (*NotifyTasksItem) GetTime

func (x *NotifyTasksItem) GetTime() *timestamp.Timestamp

func (*NotifyTasksItem) ProtoMessage

func (*NotifyTasksItem) ProtoMessage()

func (*NotifyTasksItem) ProtoReflect

func (x *NotifyTasksItem) ProtoReflect() protoreflect.Message

func (*NotifyTasksItem) Reset

func (x *NotifyTasksItem) Reset()

func (*NotifyTasksItem) String

func (x *NotifyTasksItem) String() string

type NotifyTasksRequest

type NotifyTasksRequest struct {

	// SchedulerID is the id of the scheduler that this request should be run on.
	SchedulerId string `protobuf:"bytes,1,opt,name=scheduler_id,json=schedulerId,proto3" json:"scheduler_id,omitempty"`
	// Notifications is the set of task notifications to send to the scheduler.
	Notifications []*NotifyTasksItem `protobuf:"bytes,2,rep,name=notifications,proto3" json:"notifications,omitempty"`
	// IsCallback specifies whether these notifications are in response to
	// updates that were requested by a previous GetCallbacks call.
	//
	// This is for diagnostic purposes only.
	IsCallback bool `protobuf:"varint,3,opt,name=is_callback,json=isCallback,proto3" json:"is_callback,omitempty"`
	// contains filtered or unexported fields
}

func (*NotifyTasksRequest) Descriptor

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

Deprecated: Use NotifyTasksRequest.ProtoReflect.Descriptor instead.

func (*NotifyTasksRequest) GetIsCallback

func (x *NotifyTasksRequest) GetIsCallback() bool

func (*NotifyTasksRequest) GetNotifications

func (x *NotifyTasksRequest) GetNotifications() []*NotifyTasksItem

func (*NotifyTasksRequest) GetSchedulerId

func (x *NotifyTasksRequest) GetSchedulerId() string

func (*NotifyTasksRequest) ProtoMessage

func (*NotifyTasksRequest) ProtoMessage()

func (*NotifyTasksRequest) ProtoReflect

func (x *NotifyTasksRequest) ProtoReflect() protoreflect.Message

func (*NotifyTasksRequest) Reset

func (x *NotifyTasksRequest) Reset()

func (*NotifyTasksRequest) String

func (x *NotifyTasksRequest) String() string

func (*NotifyTasksRequest) Validate

func (r *NotifyTasksRequest) Validate() error

Validate returns an error if r is invalid.

type NotifyTasksResponse

type NotifyTasksResponse struct {
	// contains filtered or unexported fields
}

func (*NotifyTasksResponse) Descriptor

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

Deprecated: Use NotifyTasksResponse.ProtoReflect.Descriptor instead.

func (*NotifyTasksResponse) ProtoMessage

func (*NotifyTasksResponse) ProtoMessage()

func (*NotifyTasksResponse) ProtoReflect

func (x *NotifyTasksResponse) ProtoReflect() protoreflect.Message

func (*NotifyTasksResponse) Reset

func (x *NotifyTasksResponse) Reset()

func (*NotifyTasksResponse) String

func (x *NotifyTasksResponse) String() string

type PhysicalEntity

type PhysicalEntity struct {

	// Name that represents this physical entity.
	//
	// For a host, it shall be the hostname. For a device, it should be the device
	// hostname, if any. Failing that, something that makes sense to the users.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// supplemental contains the free form JSON data that includes interesting
	// information about the device that doesn't fit in any of the fields below.
	//
	// Anything that is usable by multiple customers should eventually be moved to
	// a new field below.
	Supplemental *_struct.Struct `protobuf:"bytes,2,opt,name=supplemental,proto3" json:"supplemental,omitempty"`
	// IP address as visible by the bot process (bot_main) itself.
	//
	// In the case of the host, it will be one of the IP addresses assigned to it.
	// In the case of the host where the bot is running inside docker, it will be
	// the IP address assigned to the docker container.
	// In the case of a device, it is the IP address of the device, if any.
	//
	// Can be either IPv4 or IPv6.
	Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip,omitempty"`
	// contains filtered or unexported fields
}

PhysicalEntity includes information about an host or device.

This can be the host where the bot runs, or a device under control of the bot.

If the bot runs inside a docker container, this information is about the container, or whatever the bot can observe from its vantage point.

func (*PhysicalEntity) Descriptor

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

Deprecated: Use PhysicalEntity.ProtoReflect.Descriptor instead.

func (*PhysicalEntity) GetIp

func (x *PhysicalEntity) GetIp() string

func (*PhysicalEntity) GetName

func (x *PhysicalEntity) GetName() string

func (*PhysicalEntity) GetSupplemental

func (x *PhysicalEntity) GetSupplemental() *_struct.Struct

func (*PhysicalEntity) ProtoMessage

func (*PhysicalEntity) ProtoMessage()

func (*PhysicalEntity) ProtoReflect

func (x *PhysicalEntity) ProtoReflect() protoreflect.Message

func (*PhysicalEntity) Reset

func (x *PhysicalEntity) Reset()

func (*PhysicalEntity) String

func (x *PhysicalEntity) String() string

type PubSub

type PubSub struct {

	// Full topic name to post task state updates to, e.g.
	// "projects/<id>/topics/<id>".
	Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
	// Secret string to put into "auth_token" attribute of PubSub messages.
	//
	// This value is write only, it cannot be retrieved back.
	AuthToken string `protobuf:"bytes,2,opt,name=auth_token,json=authToken,proto3" json:"auth_token,omitempty"`
	// String to put into "userdata" attribute of PubSub messages.
	Userdata string `protobuf:"bytes,3,opt,name=userdata,proto3" json:"userdata,omitempty"`
	// contains filtered or unexported fields
}

PubSub is a Cloud Pub/Sub topic to send task updates to.

For this to work, the Swarming's AppEngine service account must have roles/pubsub.publisher role on the Cloud Pub/Sub topic.

For a Swarming instance "FOOBAR.appspot.com", the service account to grant publisher right is "FOOBAR@@appspot.gserviceaccount.com".

This is described at https://cloud.google.com/pubsub/docs/access-control.

To grant Swarming instance FOOBAR.appspot.com publisher rights to topic projects/PROJ/topics/TOP, use:

gcloud beta pubsub topics add-iam-policy-binding \
    TOP \
    --project PROJ \
    --member serviceAccount:FOOBAR@appspot.gserviceaccount.com \
    --role roles/pubsub.publisher

See https://cloud.google.com/pubsub/docs/authentication for more information.

func (*PubSub) Descriptor

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

Deprecated: Use PubSub.ProtoReflect.Descriptor instead.

func (*PubSub) GetAuthToken

func (x *PubSub) GetAuthToken() string

func (*PubSub) GetTopic

func (x *PubSub) GetTopic() string

func (*PubSub) GetUserdata

func (x *PubSub) GetUserdata() string

func (*PubSub) ProtoMessage

func (*PubSub) ProtoMessage()

func (*PubSub) ProtoReflect

func (x *PubSub) ProtoReflect() protoreflect.Message

func (*PubSub) Reset

func (x *PubSub) Reset()

func (*PubSub) String

func (x *PubSub) String() string

type SliceSpec

type SliceSpec struct {

	// Dimensions is set dimension strings for this slice.
	Dimensions []string `protobuf:"bytes,1,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
	// contains filtered or unexported fields
}

SliceSpec describes a task request slice, for the purposes of TaskSpec.

func (*SliceSpec) Descriptor

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

Deprecated: Use SliceSpec.ProtoReflect.Descriptor instead.

func (*SliceSpec) GetDimensions

func (x *SliceSpec) GetDimensions() []string

func (*SliceSpec) ProtoMessage

func (*SliceSpec) ProtoMessage()

func (*SliceSpec) ProtoReflect

func (x *SliceSpec) ProtoReflect() protoreflect.Message

func (*SliceSpec) Reset

func (x *SliceSpec) Reset()

func (*SliceSpec) String

func (x *SliceSpec) String() string

type StringListPair

type StringListPair struct {
	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// All the values for this key. values must be sorted. Human readable.
	//
	// This string should make sense to a user in the context of 'key'.
	Values []string `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"`
	// contains filtered or unexported fields
}

Represents a mapping of string to a list of strings.

The same as a map<key, repeated values>, except that the encoding is deterministic.

If the StringListPair is itself repeated inside another message, the list must be sorted by key and the keys must be unique.

func (*StringListPair) Descriptor

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

Deprecated: Use StringListPair.ProtoReflect.Descriptor instead.

func (*StringListPair) GetKey

func (x *StringListPair) GetKey() string

func (*StringListPair) GetValues

func (x *StringListPair) GetValues() []string

func (*StringListPair) ProtoMessage

func (*StringListPair) ProtoMessage()

func (*StringListPair) ProtoReflect

func (x *StringListPair) ProtoReflect() protoreflect.Message

func (*StringListPair) Reset

func (x *StringListPair) Reset()

func (*StringListPair) String

func (x *StringListPair) String() string

type StringPair

type StringPair struct {
	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// contains filtered or unexported fields
}

Represents a mapping of string to a string.

The same as a map<key, value>, except that the encoding is deterministic.

If the StringPair is itself repeated inside another message, the list must be sorted by key and the keys must be unique.

func (*StringPair) Descriptor

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

Deprecated: Use StringPair.ProtoReflect.Descriptor instead.

func (*StringPair) GetKey

func (x *StringPair) GetKey() string

func (*StringPair) GetValue

func (x *StringPair) GetValue() string

func (*StringPair) ProtoMessage

func (*StringPair) ProtoMessage()

func (*StringPair) ProtoReflect

func (x *StringPair) ProtoReflect() protoreflect.Message

func (*StringPair) Reset

func (x *StringPair) Reset()

func (*StringPair) String

func (x *StringPair) String() string

type TaskAssignment

type TaskAssignment struct {

	// BotID is the bot that should be assigned a task.
	BotId string `protobuf:"bytes,1,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
	// TaskID is the task that should be assigned to the bot.
	TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
	// SliceNumber is the slice within the task that should be assigned to the bot.
	// If absent, slice 0 will be assumed.
	SliceNumber int32 `protobuf:"varint,3,opt,name=slice_number,json=sliceNumber,proto3" json:"slice_number,omitempty"`
	// contains filtered or unexported fields
}

func (*TaskAssignment) Descriptor

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

Deprecated: Use TaskAssignment.ProtoReflect.Descriptor instead.

func (*TaskAssignment) GetBotId

func (x *TaskAssignment) GetBotId() string

func (*TaskAssignment) GetSliceNumber

func (x *TaskAssignment) GetSliceNumber() int32

func (*TaskAssignment) GetTaskId

func (x *TaskAssignment) GetTaskId() string

func (*TaskAssignment) ProtoMessage

func (*TaskAssignment) ProtoMessage()

func (*TaskAssignment) ProtoReflect

func (x *TaskAssignment) ProtoReflect() protoreflect.Message

func (*TaskAssignment) Reset

func (x *TaskAssignment) Reset()

func (*TaskAssignment) String

func (x *TaskAssignment) String() string

type TaskOverheadStats

type TaskOverheadStats struct {

	// Duration of this overhead.
	Duration *duration.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
	// CAS entries that were not present in the local or remote cache and had to
	// be sent across the network.
	Cold *CASEntriesStats `protobuf:"bytes,2,opt,name=cold,proto3" json:"cold,omitempty"`
	// CAS entries that were in the cache and thus didn't have to be transferred.
	Hot *CASEntriesStats `protobuf:"bytes,3,opt,name=hot,proto3" json:"hot,omitempty"`
	// contains filtered or unexported fields
}

Information about setup or teardown.

func (*TaskOverheadStats) Descriptor

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

Deprecated: Use TaskOverheadStats.ProtoReflect.Descriptor instead.

func (*TaskOverheadStats) GetCold

func (x *TaskOverheadStats) GetCold() *CASEntriesStats

func (*TaskOverheadStats) GetDuration

func (x *TaskOverheadStats) GetDuration() *duration.Duration

func (*TaskOverheadStats) GetHot

func (x *TaskOverheadStats) GetHot() *CASEntriesStats

func (*TaskOverheadStats) ProtoMessage

func (*TaskOverheadStats) ProtoMessage()

func (*TaskOverheadStats) ProtoReflect

func (x *TaskOverheadStats) ProtoReflect() protoreflect.Message

func (*TaskOverheadStats) Reset

func (x *TaskOverheadStats) Reset()

func (*TaskOverheadStats) String

func (x *TaskOverheadStats) String() string

type TaskPerformance

type TaskPerformance struct {

	// Total cost of running this task in $USD. In the case of DEDUPED task, this
	// represents the amount saved.
	CostUsd float32 `protobuf:"fixed32,1,opt,name=cost_usd,json=costUsd,proto3" json:"cost_usd,omitempty"`
	// Overhead that is caused by the bot server that is not accounted for by the
	// other overheads.
	OtherOverhead *duration.Duration `protobuf:"bytes,2,opt,name=other_overhead,json=otherOverhead,proto3" json:"other_overhead,omitempty"`
	// Task environment setup overhead. This is the task state
	// RUNNING_OVERHEAD_SETUP.
	Setup *TaskOverheadStats `protobuf:"bytes,3,opt,name=setup,proto3" json:"setup,omitempty"`
	// Task environment teardown overhead. This is the task state
	// RUNNING_OVERHEAD_TEARDOWN.
	Teardown *TaskOverheadStats `protobuf:"bytes,4,opt,name=teardown,proto3" json:"teardown,omitempty"`
	// contains filtered or unexported fields
}

Information about the task's performance.

func (*TaskPerformance) Descriptor

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

Deprecated: Use TaskPerformance.ProtoReflect.Descriptor instead.

func (*TaskPerformance) GetCostUsd

func (x *TaskPerformance) GetCostUsd() float32

func (*TaskPerformance) GetOtherOverhead

func (x *TaskPerformance) GetOtherOverhead() *duration.Duration

func (*TaskPerformance) GetSetup

func (x *TaskPerformance) GetSetup() *TaskOverheadStats

func (*TaskPerformance) GetTeardown

func (x *TaskPerformance) GetTeardown() *TaskOverheadStats

func (*TaskPerformance) ProtoMessage

func (*TaskPerformance) ProtoMessage()

func (*TaskPerformance) ProtoReflect

func (x *TaskPerformance) ProtoReflect() protoreflect.Message

func (*TaskPerformance) Reset

func (x *TaskPerformance) Reset()

func (*TaskPerformance) String

func (x *TaskPerformance) String() string

type TaskProperties

type TaskProperties struct {

	// Isolated inputs to map in the working directory.
	//
	// Deprecated: the isolated file may optionally specify a command to run.
	// Otherwise, 'command' must be specified.
	CasInputs *CASTree `protobuf:"bytes,1,opt,name=cas_inputs,json=casInputs,proto3" json:"cas_inputs,omitempty"`
	// Defines the set of CIPD packages to install prior to running the task.
	//
	// These packages are meant to be software that is needed (a dependency) by
	// the task being run. Unlike isolated files from cas_inputs, the CIPD
	// packages do not expire from the server.
	//
	// Items must be sorted per the CIPD package name.
	CipdInputs []*CIPDPackage `protobuf:"bytes,2,rep,name=cipd_inputs,json=cipdInputs,proto3" json:"cipd_inputs,omitempty"`
	// Specifies named caches to map into the working directory. These caches
	// outlive the task, which can then be reused by tasks later used on this bot
	// that request the same named cache.
	//
	// Items must be sorted per the named cache name.
	NamedCaches []*NamedCacheEntry `protobuf:"bytes,3,rep,name=named_caches,json=namedCaches,proto3" json:"named_caches,omitempty"`
	// Command to run. This has priority over a command specified in the isolated
	// files. Only one of 'command' or 'extra_args' can be specified.
	Command []string `protobuf:"bytes,4,rep,name=command,proto3" json:"command,omitempty"`
	// Relative working directory to start the 'command' in, defaults to the root
	// mapped directory or what is provided in the isolated file, if any.
	RelativeCwd string `protobuf:"bytes,5,opt,name=relative_cwd,json=relativeCwd,proto3" json:"relative_cwd,omitempty"`
	// Extraneous arguments to append to the command specified in the isolated
	// file. Can only be used when an isolated file specifies a command. Only one
	// of 'command' or 'extra_args' can be specified.
	//
	// Deprecated.
	ExtraArgs []string `protobuf:"bytes,6,rep,name=extra_args,json=extraArgs,proto3" json:"extra_args,omitempty"`
	// Secret bytes to provide to the task. Write only, cannot be retrieved back.
	SecretBytes []byte `protobuf:"bytes,7,opt,name=secret_bytes,json=secretBytes,proto3" json:"secret_bytes,omitempty"`
	// When retrieved back, has_secret_bytes is set to true.
	HasSecretBytes bool `protobuf:"varint,8,opt,name=has_secret_bytes,json=hasSecretBytes,proto3" json:"has_secret_bytes,omitempty"`
	// Dimensions are what is used to determine which bot can run the task.
	//
	// The values are effectively an AND, a bot must match all dimensions to be
	// selected to run the task.
	//
	// Items must be sorted.
	Dimensions []*StringListPair `protobuf:"bytes,9,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
	// Environment variables to set when running the task.
	//
	// Items must be sorted.
	Env []*StringPair `protobuf:"bytes,10,rep,name=env,proto3" json:"env,omitempty"`
	// Task root relative paths to prepend to a given environment variable.
	//
	// This allows one to safely modify variables like PATH, PYTHONPATH, or other
	// PATH-like environment variables. The order of operations is:
	// * Turn slashes into native-platform slashes
	// * Make the path absolute
	// * Prepend it to the current value of the envvar using the os-native list
	//   separator (`;` on Windows, `:` on POSIX)
	//
	// Each key can have multiple paths to prepend. They will be prepended in
	// the order seen here.
	//
	// For example, if env_paths is:
	//   [ (key="PATH", values=["foo", "bar"]),
	//     (key="CUSTOMPATH", values=["custom"]), ]
	//
	// The task would see:
	//   PATH=/path/to/swarming/rundir/foo:/path/to/swarming/rundir/bar:$PATH
	//   CUSTOMPATH=/path/to/swarming/rundir/custom
	//
	// Paths must always be specified here with forward-slashes, and must not
	// attempt to escape the task's root (i.e. must not contain `..`).
	//
	// This is applied AFTER evaluating `env`.
	//
	// Items must be sorted by key, but exceptionally not by values.
	EnvPaths []*StringListPair `protobuf:"bytes,11,rep,name=env_paths,json=envPaths,proto3" json:"env_paths,omitempty"`
	// Declare what kind of containment shall be used to run the task process
	// in.
	Containment *Containment `protobuf:"bytes,12,opt,name=containment,proto3" json:"containment,omitempty"` // Not used yet. https://crbug.com/808836
	// Maximum number of seconds the task can run before its process is forcibly
	// terminated and the task results in TIMED_OUT.
	ExecutionTimeout *duration.Duration `protobuf:"bytes,13,opt,name=execution_timeout,json=executionTimeout,proto3" json:"execution_timeout,omitempty"`
	// Maximum number of seconds the task may be silent (no output to stdout nor
	// stderr) before it is considered hung and it forcibly terminated early and
	// the task results in TIMED_OUT_SILENCE.
	IoTimeout *duration.Duration `protobuf:"bytes,14,opt,name=io_timeout,json=ioTimeout,proto3" json:"io_timeout,omitempty"`
	// Number of second to give the child process after a SIGTERM before sending a
	// SIGKILL. See ../../doc/Bot.md#timeout-handling
	GracePeriod *duration.Duration `protobuf:"bytes,15,opt,name=grace_period,json=gracePeriod,proto3" json:"grace_period,omitempty"`
	// True if the task does not access any service through the network and is
	// believed to be certain to produce the same output given the same input. In
	// the case of a successful task, previous results will be reused if possible,
	// leading to DEDUPED task result for the tasks that could reuse previous
	// task's outcome.
	Idempotent bool `protobuf:"varint,16,opt,name=idempotent,proto3" json:"idempotent,omitempty"`
	// Paths in the working directory to archive back and store as
	// TaskResult.outputs.
	//
	// Items must be sorted.
	Outputs []string `protobuf:"bytes,17,rep,name=outputs,proto3" json:"outputs,omitempty"`
	// contains filtered or unexported fields
}

Defines the 'what' to run.

A serialization of this message is hashed and this hash is what is used for task deduping.

func (*TaskProperties) Descriptor

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

Deprecated: Use TaskProperties.ProtoReflect.Descriptor instead.

func (*TaskProperties) GetCasInputs

func (x *TaskProperties) GetCasInputs() *CASTree

func (*TaskProperties) GetCipdInputs

func (x *TaskProperties) GetCipdInputs() []*CIPDPackage

func (*TaskProperties) GetCommand

func (x *TaskProperties) GetCommand() []string

func (*TaskProperties) GetContainment

func (x *TaskProperties) GetContainment() *Containment

func (*TaskProperties) GetDimensions

func (x *TaskProperties) GetDimensions() []*StringListPair

func (*TaskProperties) GetEnv

func (x *TaskProperties) GetEnv() []*StringPair

func (*TaskProperties) GetEnvPaths

func (x *TaskProperties) GetEnvPaths() []*StringListPair

func (*TaskProperties) GetExecutionTimeout

func (x *TaskProperties) GetExecutionTimeout() *duration.Duration

func (*TaskProperties) GetExtraArgs

func (x *TaskProperties) GetExtraArgs() []string

func (*TaskProperties) GetGracePeriod

func (x *TaskProperties) GetGracePeriod() *duration.Duration

func (*TaskProperties) GetHasSecretBytes

func (x *TaskProperties) GetHasSecretBytes() bool

func (*TaskProperties) GetIdempotent

func (x *TaskProperties) GetIdempotent() bool

func (*TaskProperties) GetIoTimeout

func (x *TaskProperties) GetIoTimeout() *duration.Duration

func (*TaskProperties) GetNamedCaches

func (x *TaskProperties) GetNamedCaches() []*NamedCacheEntry

func (*TaskProperties) GetOutputs

func (x *TaskProperties) GetOutputs() []string

func (*TaskProperties) GetRelativeCwd

func (x *TaskProperties) GetRelativeCwd() string

func (*TaskProperties) GetSecretBytes

func (x *TaskProperties) GetSecretBytes() []byte

func (*TaskProperties) ProtoMessage

func (*TaskProperties) ProtoMessage()

func (*TaskProperties) ProtoReflect

func (x *TaskProperties) ProtoReflect() protoreflect.Message

func (*TaskProperties) Reset

func (x *TaskProperties) Reset()

func (*TaskProperties) String

func (x *TaskProperties) String() string

type TaskRequest

type TaskRequest struct {

	// List of TaskSlice, along with their scheduling parameters.
	//
	// This defines all the various possible task execution for a task request to
	// be run on the Swarming infrastructure. They are processed in order, and it
	// is guaranteed that at most one of these will be processed.
	//
	// At least one must be specified, and a maximum number of 8 can be included.
	TaskSlices []*TaskSlice `protobuf:"bytes,1,rep,name=task_slices,json=taskSlices,proto3" json:"task_slices,omitempty"`
	// Task priority, the lower the more important.
	//
	// Valid values are between 1 and 255.
	Priority int32 `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`
	// Defines what OAuth2 credentials the task uses when calling other services.
	//
	// Possible values are:
	//   - 'none': do not use a task service account at all, this is the default.
	//   - 'bot': use bot's own account, works only if bots authenticate with
	//       OAuth2.
	//  - <some email>: use this specific service account if it is allowed in the
	//       pool (via 'allowed_service_account' pools.cfg setting) and configured
	//       in the token server's service_accounts.cfg.
	//
	// Note that the service account name is specified outside of task properties,
	// and thus it is possible to have two tasks with different service accounts,
	// but identical properties hash (so one can be deduped). If this is
	// unsuitable use 'idempotent=False' or include a service account name in
	// properties separately.
	ServiceAccount string `protobuf:"bytes,3,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
	// When the task was created.
	CreateTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Task name for display purpose.
	//
	// Note: this value is not indexed. If you want to be able to query for tasks
	// based on names, use tags below.
	Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
	// Tags are 'key:value' strings that describes what the task is about (it's
	// semantic meaning).
	//
	// It is fine to reuse the same 'key' multiple times. It is not fine to use a
	// key that is also used as a dimension.
	//
	// The tags are indexed, thus can be used for search with exact matches.
	//
	// Items must be sorted.
	Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"`
	// User for this task is run, if relevant. Not validated.
	User string `protobuf:"bytes,7,opt,name=user,proto3" json:"user,omitempty"`
	// Authenticated client that triggered this task.
	Authenticated string `protobuf:"bytes,13,opt,name=authenticated,proto3" json:"authenticated,omitempty"`
	// Task realm is used to control who can interact with the task e.g. get,
	// cancel etc, and which task service accounts can be used in the realm.
	Realm string `protobuf:"bytes,14,opt,name=realm,proto3" json:"realm,omitempty"`
	// The task request ID.
	//
	// The request wasn't "run" so it is the same ID as the summary (ending with
	// '0').
	TaskId string `protobuf:"bytes,8,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
	// Parent Swarming task summary ID of the process requesting this task.
	//
	// This points to the TaskResult.task_id (ending with '0'). Note that an
	// idempotent task can be automatically retried by Swarming, which may result
	// in two TaskResult with the same task_id but different run_id.
	//
	// This field is read-only and derived from parent_run_id. It cannot be
	// specified at task creation.
	ParentTaskId string `protobuf:"bytes,9,opt,name=parent_task_id,json=parentTaskId,proto3" json:"parent_task_id,omitempty"`
	// Parent Swarming task run ID of the process requesting this task.
	//
	// This field is set on the children tasks when a Swarming task creates
	// children Swarming tasks.
	//
	// This points to the TaskResult.run_id (ending with '1', '2' or more).
	ParentRunId string `protobuf:"bytes,11,opt,name=parent_run_id,json=parentRunId,proto3" json:"parent_run_id,omitempty"`
	// Send notification to this pubsub topic for updates of this task.
	PubsubNotification *PubSub `protobuf:"bytes,10,opt,name=pubsub_notification,json=pubsubNotification,proto3" json:"pubsub_notification,omitempty"`
	// Maximum delay between bot pings before the bot is considered dead
	// while running a task.
	//
	// When a task is running, the bot sends update to the server every
	// few seconds. In some cases, like when the system is overloaded,
	// the bot may be preempted and delayed in sending its updates.
	// After the delay specified here, the server will claim the bot to
	// be dead and will forcibly abort the task as BOT_DIED. This is to
	// catch system wide issues like a BSOD.
	BotPingTolerance *duration.Duration `protobuf:"bytes,12,opt,name=bot_ping_tolerance,json=botPingTolerance,proto3" json:"bot_ping_tolerance,omitempty"`
	// contains filtered or unexported fields
}

This message is used to create a new task and can be retrieved back, except for a few write-only fields.

A TaskRequest is immutable, it cannot be updated once created.

func (*TaskRequest) Descriptor

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

Deprecated: Use TaskRequest.ProtoReflect.Descriptor instead.

func (*TaskRequest) GetAuthenticated

func (x *TaskRequest) GetAuthenticated() string

func (*TaskRequest) GetBotPingTolerance

func (x *TaskRequest) GetBotPingTolerance() *duration.Duration

func (*TaskRequest) GetCreateTime

func (x *TaskRequest) GetCreateTime() *timestamp.Timestamp

func (*TaskRequest) GetName

func (x *TaskRequest) GetName() string

func (*TaskRequest) GetParentRunId

func (x *TaskRequest) GetParentRunId() string

func (*TaskRequest) GetParentTaskId

func (x *TaskRequest) GetParentTaskId() string

func (*TaskRequest) GetPriority

func (x *TaskRequest) GetPriority() int32

func (*TaskRequest) GetPubsubNotification

func (x *TaskRequest) GetPubsubNotification() *PubSub

func (*TaskRequest) GetRealm

func (x *TaskRequest) GetRealm() string

func (*TaskRequest) GetServiceAccount

func (x *TaskRequest) GetServiceAccount() string

func (*TaskRequest) GetTags

func (x *TaskRequest) GetTags() []string

func (*TaskRequest) GetTaskId

func (x *TaskRequest) GetTaskId() string

func (*TaskRequest) GetTaskSlices

func (x *TaskRequest) GetTaskSlices() []*TaskSlice

func (*TaskRequest) GetUser

func (x *TaskRequest) GetUser() string

func (*TaskRequest) ProtoMessage

func (*TaskRequest) ProtoMessage()

func (*TaskRequest) ProtoReflect

func (x *TaskRequest) ProtoReflect() protoreflect.Message

func (*TaskRequest) Reset

func (x *TaskRequest) Reset()

func (*TaskRequest) String

func (x *TaskRequest) String() string

type TaskResult

type TaskResult struct {
	Request *TaskRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"`

	CreateTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`

	StartTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`

	AbandonTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=abandon_time,json=abandonTime,proto3" json:"abandon_time,omitempty"`

	EndTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`

	Duration *duration.Duration `protobuf:"bytes,6,opt,name=duration,proto3" json:"duration,omitempty"`

	State TaskState `protobuf:"varint,7,opt,name=state,proto3,enum=swarming.v1.TaskState" json:"state,omitempty"`

	StateCategory TaskStateCategory "" /* 136 byte string literal not displayed */

	TryNumber int32 `protobuf:"varint,9,opt,name=try_number,json=tryNumber,proto3" json:"try_number,omitempty"`

	CurrentTaskSlice int32 `protobuf:"varint,10,opt,name=current_task_slice,json=currentTaskSlice,proto3" json:"current_task_slice,omitempty"`

	Bot *Bot `protobuf:"bytes,11,opt,name=bot,proto3" json:"bot,omitempty"`

	ServerVersions []string `protobuf:"bytes,12,rep,name=server_versions,json=serverVersions,proto3" json:"server_versions,omitempty"`

	ChildrenTaskIds []string `protobuf:"bytes,13,rep,name=children_task_ids,json=childrenTaskIds,proto3" json:"children_task_ids,omitempty"`

	DedupedFrom string `protobuf:"bytes,14,opt,name=deduped_from,json=dedupedFrom,proto3" json:"deduped_from,omitempty"`

	TaskId string `protobuf:"bytes,15,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`

	RunId string `protobuf:"bytes,16,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`

	CipdPins *CIPDPins `protobuf:"bytes,17,opt,name=cipd_pins,json=cipdPins,proto3" json:"cipd_pins,omitempty"`

	Performance *TaskPerformance `protobuf:"bytes,18,opt,name=performance,proto3" json:"performance,omitempty"`

	ExitCode int32 `protobuf:"zigzag32,19,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`

	Outputs *CASTree `protobuf:"bytes,20,opt,name=outputs,proto3" json:"outputs,omitempty"`

}

TaskResult is the result of a TaskRequest as it is processed by Swarming.

The TaskResult represents one attempt (run on a bot) and/or the final result (summary). When the task never ran (for example EXPIRED), there's one summary but no run.

An idempotent task can be automatically retried by Swarming, which may result in two TaskResult with the same task_id but different run_id; two runs, one summary.

A retry is done when a task fails with a retriable error (for example with RAN_INTERNAL_FAILURE). For the client's perspective when looking at the summary (ID ending with '0'), the task went from PENDING to RUNNING and then back to PENDING.

When stored in BigQuery in table task_result_run and task_results_summary, on-going tasks are in the __NULL__ partition since end_time is unset.

There's a risk of duplicate rows because BigQuery is eventually consistent with regards to duplicate rows. Set your filter to ignore the __NULL__ partition to enforce strong consistency and ignore on-going tasks. See https://cloud.google.com/bigquery/streaming-data-into-bigquery#dataconsistency for more information.

func (*TaskResult) Descriptor

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

Deprecated: Use TaskResult.ProtoReflect.Descriptor instead.

func (*TaskResult) GetAbandonTime

func (x *TaskResult) GetAbandonTime() *timestamp.Timestamp

func (*TaskResult) GetBot

func (x *TaskResult) GetBot() *Bot

func (*TaskResult) GetChildrenTaskIds

func (x *TaskResult) GetChildrenTaskIds() []string

func (*TaskResult) GetCipdPins

func (x *TaskResult) GetCipdPins() *CIPDPins

func (*TaskResult) GetCreateTime

func (x *TaskResult) GetCreateTime() *timestamp.Timestamp

func (*TaskResult) GetCurrentTaskSlice

func (x *TaskResult) GetCurrentTaskSlice() int32

func (*TaskResult) GetDedupedFrom

func (x *TaskResult) GetDedupedFrom() string

func (*TaskResult) GetDuration

func (x *TaskResult) GetDuration() *duration.Duration

func (*TaskResult) GetEndTime

func (x *TaskResult) GetEndTime() *timestamp.Timestamp

func (*TaskResult) GetExitCode

func (x *TaskResult) GetExitCode() int32

func (*TaskResult) GetOutputs

func (x *TaskResult) GetOutputs() *CASTree

func (*TaskResult) GetPerformance

func (x *TaskResult) GetPerformance() *TaskPerformance

func (*TaskResult) GetRequest

func (x *TaskResult) GetRequest() *TaskRequest

func (*TaskResult) GetRunId

func (x *TaskResult) GetRunId() string

func (*TaskResult) GetServerVersions

func (x *TaskResult) GetServerVersions() []string

func (*TaskResult) GetStartTime

func (x *TaskResult) GetStartTime() *timestamp.Timestamp

func (*TaskResult) GetState

func (x *TaskResult) GetState() TaskState

func (*TaskResult) GetStateCategory

func (x *TaskResult) GetStateCategory() TaskStateCategory

func (*TaskResult) GetTaskId

func (x *TaskResult) GetTaskId() string

func (*TaskResult) GetTryNumber

func (x *TaskResult) GetTryNumber() int32

func (*TaskResult) ProtoMessage

func (*TaskResult) ProtoMessage()

func (*TaskResult) ProtoReflect

func (x *TaskResult) ProtoReflect() protoreflect.Message

func (*TaskResult) Reset

func (x *TaskResult) Reset()

func (*TaskResult) String

func (x *TaskResult) String() string

type TaskSlice

type TaskSlice struct {

	// The property of the task to try to run.
	//
	// If there is no bot that can serve this properties.dimensions when this task
	// slice is enqueued, it is immediately denied. This can trigger if:
	// - There is no bot with these dimensions currently known (NO_RESOURCE).
	// - Bots that could run this task are either all missing or quarantined.
	Properties *TaskProperties `protobuf:"bytes,1,opt,name=properties,proto3" json:"properties,omitempty"`
	// If this task slice is not scheduled after waiting this long, the next one
	// will be processed.
	Expiration *duration.Duration `protobuf:"bytes,2,opt,name=expiration,proto3" json:"expiration,omitempty"`
	// When a task is scheduled and there are currently no bots available to run
	// the task, the TaskSlice can either be PENDING, or be denied immediately.
	// When denied, the next TaskSlice is enqueued, and if there's no following
	// TaskSlice, the task state is set to NO_RESOURCE. This should normally be
	// set to False to avoid unnecessary waiting.
	WaitForCapacity bool `protobuf:"varint,3,opt,name=wait_for_capacity,json=waitForCapacity,proto3" json:"wait_for_capacity,omitempty"`
	// Digest of a serialized form of TaskProperties.
	//
	// This is used for DEDUPED and PENDING_DEDUPING when idempotent is true.
	// Consider this value as opaque string, only use to check equality.
	//
	// It is set even if idempotent is false.
	PropertiesHash string `protobuf:"bytes,4,opt,name=properties_hash,json=propertiesHash,proto3" json:"properties_hash,omitempty"`
	// contains filtered or unexported fields
}

Defines a possible task execution for a task request to be run on the Swarming infrastructure.

When there is more than TaskSlice specified in TaskRequest, the second TaskSlice onwards represent possible fallbacks.

func (*TaskSlice) Descriptor

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

Deprecated: Use TaskSlice.ProtoReflect.Descriptor instead.

func (*TaskSlice) GetExpiration

func (x *TaskSlice) GetExpiration() *duration.Duration

func (*TaskSlice) GetProperties

func (x *TaskSlice) GetProperties() *TaskProperties

func (*TaskSlice) GetPropertiesHash

func (x *TaskSlice) GetPropertiesHash() string

func (*TaskSlice) GetWaitForCapacity

func (x *TaskSlice) GetWaitForCapacity() bool

func (*TaskSlice) ProtoMessage

func (*TaskSlice) ProtoMessage()

func (*TaskSlice) ProtoReflect

func (x *TaskSlice) ProtoReflect() protoreflect.Message

func (*TaskSlice) Reset

func (x *TaskSlice) Reset()

func (*TaskSlice) String

func (x *TaskSlice) String() string

type TaskSpec

type TaskSpec struct {

	// Id is the swarming task request ID.
	//
	// Other than being a unique string to track the lifecycle of this request,
	// it is opaque to external scheduler. By convention, swarming uses a task's
	// summary ID (trailing '0') here, not the run ID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Tags is the list of tags applied to this task request.
	Tags []string `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty"`
	// Slices is the set of task slices for this spec. A TaskSpec must contain
	// at least 1 slice.
	Slices []*SliceSpec `protobuf:"bytes,3,rep,name=slices,proto3" json:"slices,omitempty"`
	// State is the current state of this task.
	State TaskState `protobuf:"varint,4,opt,name=state,proto3,enum=swarming.v1.TaskState" json:"state,omitempty"`
	// BotID is the id of the bot that this task is running on. It is only
	// valid if state=RUNNING.
	BotId string `protobuf:"bytes,5,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
	// EnqueuedTime is the time at which a task was enqueued. It is only valid
	// if state=PENDING.
	EnqueuedTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=enqueued_time,json=enqueuedTime,proto3" json:"enqueued_time,omitempty"`
	// contains filtered or unexported fields
}

TaskSpec describes a task request and its state, for the purposes of the external scheduler API.

It intentionally elides aspects of a task request that are irrelevant to scheduling decisions, to keep this proto small for performance reasons.

This message format is in its early stages, and may be subject to frequent or even breaking changes as the external scheduler API is rolled out.

func (*TaskSpec) Descriptor

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

Deprecated: Use TaskSpec.ProtoReflect.Descriptor instead.

func (*TaskSpec) GetBotId

func (x *TaskSpec) GetBotId() string

func (*TaskSpec) GetEnqueuedTime

func (x *TaskSpec) GetEnqueuedTime() *timestamp.Timestamp

func (*TaskSpec) GetId

func (x *TaskSpec) GetId() string

func (*TaskSpec) GetSlices

func (x *TaskSpec) GetSlices() []*SliceSpec

func (*TaskSpec) GetState

func (x *TaskSpec) GetState() TaskState

func (*TaskSpec) GetTags

func (x *TaskSpec) GetTags() []string

func (*TaskSpec) ProtoMessage

func (*TaskSpec) ProtoMessage()

func (*TaskSpec) ProtoReflect

func (x *TaskSpec) ProtoReflect() protoreflect.Message

func (*TaskSpec) Reset

func (x *TaskSpec) Reset()

func (*TaskSpec) String

func (x *TaskSpec) String() string

type TaskState

type TaskState int32

TaskState represents the different possible states for a Task.

Each state is in one of the bitmask in TaskStateCategory.

const (
	// Invalid task state.
	TaskState_TASK_STATE_INVALID TaskState = 0
	// The task is currently pending.
	//
	// This means that no bot reaped the task yet. It will stay in this state
	// until either a bot reaps the task, or the expiration elapsed or all bots
	// become MISSING, leading to a NO_RESOURCE. The task pending expiration is
	// specified as TaskSlice.expiration, one per task slice.
	//
	// The task may go through multiple pending TaskSlice as they expire or are
	// skipped due to NO_RESOURCE (see definition below). In this situation the
	// task state still stays in PENDING state as long as there's a chance for a
	// bot to reap the task.
	TaskState_PENDING TaskState = 16
	// The task is currently pending, but another previously scheduled task was
	// identified to be deduped against, but the previously scheduled task hasn't
	// completed yet.
	//
	// In this case, the task may go back into PENDING if the previous identical
	// task failed, or immediately into DEDUPED if it succeeded.
	TaskState_PENDING_DEDUPING TaskState = 17 // Not used yet, https://crbug.com/915342
	// The task is currently running.
	//
	// For new tasks, this is only the actual tasks runtime. For old tasks, this
	// includes RUNNING_OVERHEAD_START and RUNNING_OVERHEAD_END.
	TaskState_RUNNING TaskState = 32
	// The task is assigned to a bot. The bot is fetching input files and setting
	// up the runtime environment.
	TaskState_RUNNING_OVERHEAD_SETUP TaskState = 33 // Not used yet, https://crbug.com/796757
	// Task completed and result metadata is available. Outputs and other
	// associated logs are still being uploaded and the environment is being
	// teared down.
	//
	// A client that only needs the exit code may chose to stop waiting for the
	// task, as the task will end with COMPLETED, unless there's a failure during
	// outputs upload, which would result in INTERNAL_FAILURE.
	TaskState_RUNNING_OVERHEAD_TEARDOWN TaskState = 34 // Not used yet, https://crbug.com/813412
	// The task is being forcibly terminated. This can be due to either a kill
	// request, preemption or time out.
	//
	// See
	// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/doc/Bot.md#graceful-termination_aka-the-sigterm-and-sigkill-dance
	TaskState_TERMINATING TaskState = 35 // Not used yet. https://crbug.com/916560
	// Task completed, result metadata and task outputs are available. There's
	// still some overhead being finished like attaching relevant bot logs to the
	// task.
	//
	// The client can return right away unless infrastructure issue debugging is
	// needed.
	TaskState_COMPLETING TaskState = 47 // Not used yet, https://crbug.com/813412
	// The task ran but the bot had an internal failure, unrelated to the task
	// itself. It can be due to disk or network I/O issues.
	TaskState_RAN_INTERNAL_FAILURE TaskState = 48
	// The task ran and completed normally, but returned an exit code that was
	// provided in the TaskProperties as signaling an hardware failure of the DUT
	// (Device Under Test).
	//
	// As such, the task may need to be retried.
	TaskState_DUT_FAILURE TaskState = 49 // Not used yet, https://crbug.com/902807
	// The task started but the bot failed to keep the connection to the server
	// alive. This can be due to the bot's host crashing, or network connectivity
	// issues.
	TaskState_BOT_DISAPPEARED TaskState = 50 // Not used yet. https://crbug.com/916553
	// The task ran but was killed by the client or an external scheduler in a way
	// that it should still be retried as another task try.
	//
	// This can happen via the external scheduler or an API yet to be defined. The
	// rationale is to kill slow running low priority task, without disrupting the
	// client and simply postponing the task for later.
	TaskState_PREEMPTED TaskState = 51 // Not used yet. https://crbug.com/916559
	// The task ran and completed normally. The task process exit code may be 0 or
	// another value.
	//
	// This value is also used when the task is deduped against a previous task.
	TaskState_COMPLETED TaskState = 64
	// The task ran for longer than the allowed time in
	// TaskProperties.execution_timeout.
	//
	// This means the bot forcefully killed the task process as described in the
	// graceful termination dance in the documentation.
	TaskState_TIMED_OUT TaskState = 65
	// The task timed out due to not sending updates to stdout or stderr within
	// the period specified in TaskProperties.io_timeout.
	//
	// This means the bot forcefully killed the task process as described in the
	// graceful termination dance in the documentation.
	TaskState_TIMED_OUT_SILENCE TaskState = 66 // Not used yet. https://crbug.com/916556
	// The task ran but was manually killed via the 'cancel' API.
	//
	// This means the bot forcefully killed the task process as described in the
	// graceful termination dance in the documentation.
	TaskState_KILLED TaskState = 67
	// The task had specified invalid inputs. This is found out by the bot while
	// RUNNING_OVERHEAD_SETUP.
	//
	// For example, the cas_inputs or cipd_inputs refers to missing items,
	// or the requested containment cannot be achieved.
	TaskState_MISSING_INPUTS TaskState = 68 // Not used yet. https://crbug.com/916553
	// The task didn't have to run, because a previous task had results. It is
	// functionally equivalent to COMPLETED, except that previous results were
	// returned as-is.
	TaskState_DEDUPED TaskState = 80
	// The task is not pending anymore; it never ran due to lack of capacity.
	//
	// This means that other higher priority tasks ran instead and that not enough
	// bots were available to run this task for TaskSlice.expiration.
	TaskState_EXPIRED TaskState = 81
	// The task never ran, and was manually cancelled via the 'cancel' API before
	// it was reaped.
	TaskState_CANCELED TaskState = 82
	// The task was never set to PENDING and was immediately refused, as the
	// server determined that there is no bot capacity to run this task. This
	// happens because no bot exposes a superset of the requested task dimensions.
	//
	// There can be a situation where a task goes from PENDING to NO_RESOURCE if
	// capacity (bots) is removed.
	//
	// Set TaskSlice.wait_for_capacity to True to force the server to keep the
	// task slice pending even in this case. Generally speaking, the task will
	// eventually switch to EXPIRED, as there's no bot to run it. That said, there
	// are situations where it is known that in some not-too-distant future a wild
	// bot will appear that will be able to run this task.
	TaskState_NO_RESOURCE TaskState = 83
	// The task was valid but was denied due to a temporary capacity surcharge.
	// The user should try again after a delay, or surface the lack of capacity to
	// the user.
	TaskState_LOAD_SHED TaskState = 84 // Not used yet. https://crbug.com/916562
	// The task is valid but was denied due to insufficient quota.
	TaskState_RESOURCE_EXHAUSTED TaskState = 85 // Not used yet. https://crbug.com/916557
	// The task never ran, the server had an internal failure, unrelated to the
	// task itself. It can be due to a server bug or network I/O issues.
	TaskState_SKIPPED_INTERNAL_FAILURE TaskState = 86 // Not used yet. https://crbug.com/916553
)

func (TaskState) Descriptor

func (TaskState) Descriptor() protoreflect.EnumDescriptor

func (TaskState) Enum

func (x TaskState) Enum() *TaskState

func (TaskState) EnumDescriptor

func (TaskState) EnumDescriptor() ([]byte, []int)

Deprecated: Use TaskState.Descriptor instead.

func (TaskState) Number

func (x TaskState) Number() protoreflect.EnumNumber

func (TaskState) String

func (x TaskState) String() string

func (TaskState) Type

func (TaskState) Type() protoreflect.EnumType

type TaskStateCategory

type TaskStateCategory int32

TaskStateCategory represents the 5 different categories of task state.

For active state categories (RUNNING_MASK and TRANSIENT_DONE_MASK), it is possible to go 'back' to PENDING_MASK category; for example, a task has an internal error, and the server reenqueues the task for a second try.

const (
	// Invalid value.
	TaskStateCategory_TASK_STATE_CATEGORY_UNSPECIFIED TaskStateCategory = 0
	// Bit mask for the TaskState inside each category.
	TaskStateCategory_TASK_STATE_MASK TaskStateCategory = 15
	// The task is enqueued and pending bot availability.
	TaskStateCategory_CATEGORY_PENDING TaskStateCategory = 16
	// The task is running.
	TaskStateCategory_CATEGORY_RUNNING TaskStateCategory = 32
	// Transient done states are uncertain states; something ran but the result
	// was inconclusive.
	//
	// They can trigger the Swarming internal retry mechanism. In this case, the
	// "task try" will have this state, but the task summary will become PENDING.
	// In case the task cannot be retried, when idempotent is false, then this
	// becomes a final state.
	TaskStateCategory_CATEGORY_TRANSIENT_DONE TaskStateCategory = 48
	// The task ran, and it is done.
	TaskStateCategory_CATEGORY_EXECUTION_DONE TaskStateCategory = 64
	// The task did not run, and won't.
	TaskStateCategory_CATEGORY_NEVER_RAN_DONE TaskStateCategory = 80
)

func (TaskStateCategory) Descriptor

func (TaskStateCategory) Descriptor() protoreflect.EnumDescriptor

func (TaskStateCategory) Enum

func (x TaskStateCategory) Enum() *TaskStateCategory

func (TaskStateCategory) EnumDescriptor

func (TaskStateCategory) EnumDescriptor() ([]byte, []int)

Deprecated: Use TaskStateCategory.Descriptor instead.

func (TaskStateCategory) Number

func (x TaskStateCategory) Number() protoreflect.EnumNumber

func (TaskStateCategory) String

func (x TaskStateCategory) String() string

func (TaskStateCategory) Type

func (TaskStateCategory) Type() protoreflect.EnumType

type UnimplementedBotAPIServer

type UnimplementedBotAPIServer struct {
}

UnimplementedBotAPIServer can be embedded to have forward compatible implementations.

func (*UnimplementedBotAPIServer) Events

func (*UnimplementedBotAPIServer) Events(context.Context, *BotEventsRequest) (*BotEventsResponse, error)

type UnimplementedExternalSchedulerServer

type UnimplementedExternalSchedulerServer struct {
}

UnimplementedExternalSchedulerServer can be embedded to have forward compatible implementations.

func (*UnimplementedExternalSchedulerServer) AssignTasks

func (*UnimplementedExternalSchedulerServer) AssignTasks(context.Context, *AssignTasksRequest) (*AssignTasksResponse, error)

func (*UnimplementedExternalSchedulerServer) GetCallbacks

func (*UnimplementedExternalSchedulerServer) GetCallbacks(context.Context, *GetCallbacksRequest) (*GetCallbacksResponse, error)

func (*UnimplementedExternalSchedulerServer) GetCancellations

func (*UnimplementedExternalSchedulerServer) GetCancellations(context.Context, *GetCancellationsRequest) (*GetCancellationsResponse, error)

func (*UnimplementedExternalSchedulerServer) NotifyTasks

func (*UnimplementedExternalSchedulerServer) NotifyTasks(context.Context, *NotifyTasksRequest) (*NotifyTasksResponse, error)

Package Files

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier