apimodels

package
v0.0.0-...-806298e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2024 License: Apache-2.0 Imports: 21 Imported by: 86

Documentation

Overview

Package apimodels provides models used across multiple packages by the REST API.

Index

Constants

View Source
const (
	ProviderEC2                     = "ec2"
	ProviderDocker                  = "docker"
	ScopeTask                       = "task"
	ScopeBuild                      = "build"
	DefaultSetupTimeoutSecs         = 600
	DefaultTeardownTimeoutSecs      = 21600
	DefaultContainerWaitTimeoutSecs = 600
	DefaultPollFrequency            = 30
	DefaultRetries                  = 2
)
View Source
const (
	SystemLogPrefix  = "S"
	AgentLogPrefix   = "E"
	TaskLogPrefix    = "T"
	AllTaskLevelLogs = "ALL"

	LogErrorPrefix = "E"
	LogWarnPrefix  = "W"
	LogDebugPrefix = "D"
	LogInfoPrefix  = "I"
)

Variables

This section is empty.

Functions

func GetBuildloggerLogs

func GetBuildloggerLogs(ctx context.Context, opts GetBuildloggerLogsOptions) (log.LogIterator, error)

GetBuildloggerLogs makes request to Cedar for a specifc log and returns a log iterator. TODO (DEVPROD-1681): Remove this once Cedar logs have TTL'ed.

func GetSeverityMapping

func GetSeverityMapping(s level.Priority) string

func StreamFromLogIterator

func StreamFromLogIterator(it log.LogIterator) chan LogMessage

StreamFromLogIterator streams log lines from the given iterator to the returned log message channel. It is the responsibility of the caller to close the log iterator.

Types

type AgentSetupData

type AgentSetupData struct {
	SplunkServerURL        string                  `json:"splunk_server_url"`
	SplunkClientToken      string                  `json:"splunk_client_token"`
	SplunkChannel          string                  `json:"splunk_channel"`
	TaskSync               evergreen.S3Credentials `json:"task_sync"`
	EC2Keys                []evergreen.EC2Key      `json:"ec2_keys"`
	TraceCollectorEndpoint string                  `json:"trace_collector_endpoint"`
}

type CedarConfig

type CedarConfig struct {
	BaseURL     string `json:"base_url"`
	GRPCBaseURL string `json:"grpc_base_url"`
	RPCPort     string `json:"rpc_port"`
	Username    string `json:"username"`
	APIKey      string `json:"api_key,omitempty"`
	Insecure    bool   `json:"insecure"`
}

type CedarPerfCount

type CedarPerfCount struct {
	NumberOfResults int `json:"number_of_results"`
}

CedarPerfCount holds one element, NumberOfResults, matching the json returned by Cedar's perf count rest route.

func CedarPerfResultsCount

func CedarPerfResultsCount(ctx context.Context, opts GetCedarPerfCountOptions) (*CedarPerfCount, error)

CedarPerfResultsCount queries Cedar for the number of perf results attached to a task.

type CheckMergeRequest

type CheckMergeRequest struct {
	PRNum int    `json:"pr_num"`
	Owner string `json:"owner"`
	Repo  string `json:"repo"`
}

CheckMergeRequest holds information sent by the agent to get a PR and check mergeability.

type CheckRunAnnotation

type CheckRunAnnotation struct {
	Path            string `json:"path,omitempty" plugin:"expand"`
	StartLine       *int   `json:"start_line,omitempty" `
	EndLine         *int   `json:"end_line,omitempty" `
	StartColumn     *int   `json:"start_column,omitempty"`
	EndColumn       *int   `json:"end_column,omitempty" `
	AnnotationLevel string `json:"annotation_level,omitempty" plugin:"expand"`
	Message         string `json:"message,omitempty" plugin:"expand"`
	Title           string `json:"title,omitempty" plugin:"expand"`
	RawDetails      string `json:"raw_details,omitempty" plugin:"expand"`
}

CheckRunAnnotation represents an annotation object for a CheckRun output.

type CheckRunOutput

type CheckRunOutput struct {
	Title            string                `json:"title,omitempty" plugin:"expand"`
	Summary          string                `json:"summary,omitempty" plugin:"expand"`
	Text             string                `json:"text,omitempty" plugin:"expand"`
	AnnotationsCount *int                  `json:"annotations_count,omitempty"`
	AnnotationsURL   string                `json:"annotations_url,omitempty" plugin:"expand"`
	Annotations      []*CheckRunAnnotation `json:"annotations,omitempty" plugin:"expand"`
}

CheckRunOutput represents the output for a CheckRun.

type CreateHost

type CreateHost struct {
	// agent-controlled settings
	CloudProvider       string `mapstructure:"provider" json:"provider" yaml:"provider" plugin:"expand"`
	NumHosts            string `mapstructure:"num_hosts" json:"num_hosts" yaml:"num_hosts" plugin:"expand"`
	Scope               string `mapstructure:"scope" json:"scope" yaml:"scope" plugin:"expand"`
	SetupTimeoutSecs    int    `mapstructure:"timeout_setup_secs" json:"timeout_setup_secs" yaml:"timeout_setup_secs"`
	TeardownTimeoutSecs int    `mapstructure:"timeout_teardown_secs" json:"timeout_teardown_secs" yaml:"timeout_teardown_secs"`
	Retries             int    `mapstructure:"retries" json:"retries" yaml:"retries"`

	// EC2-related settings
	AMI            string               `mapstructure:"ami" json:"ami" yaml:"ami" plugin:"expand"`
	Distro         string               `mapstructure:"distro" json:"distro" yaml:"distro" plugin:"expand"`
	EBSDevices     []EbsDevice          `mapstructure:"ebs_block_device" json:"ebs_block_device" yaml:"ebs_block_device" plugin:"expand"`
	InstanceType   string               `mapstructure:"instance_type" json:"instance_type" yaml:"instance_type" plugin:"expand"`
	IPv6           bool                 `mapstructure:"ipv6" json:"ipv6" yaml:"ipv6"`
	Region         string               `mapstructure:"region" json:"region" yaml:"region" plugin:"expand"`
	SecurityGroups []string             `mapstructure:"security_group_ids" json:"security_group_ids" yaml:"security_group_ids" plugin:"expand"`
	Subnet         string               `mapstructure:"subnet_id" json:"subnet_id" yaml:"subnet_id" plugin:"expand"`
	Tenancy        evergreen.EC2Tenancy `mapstructure:"tenancy" json:"tenancy" yaml:"tenancy" plugin:"expand"`
	UserdataFile   string               `mapstructure:"userdata_file" json:"userdata_file" yaml:"userdata_file" plugin:"expand"`
	// UserdataCommand is the content of the userdata file. Users can't actually
	// set this directly, instead they pass in a userdata file.
	UserdataCommand string `json:"userdata_command" yaml:"userdata_command" plugin:"expand"`

	// docker-related settings
	Image                    string           `mapstructure:"image" json:"image" yaml:"image" plugin:"expand"`
	Command                  string           `mapstructure:"command" json:"command" yaml:"command" plugin:"expand"`
	PublishPorts             bool             `mapstructure:"publish_ports" json:"publish_ports" yaml:"publish_ports"`
	Registry                 RegistrySettings `mapstructure:"registry" json:"registry" yaml:"registry" plugin:"expand"`
	Background               bool             `mapstructure:"background" json:"background" yaml:"background"` // default is true
	ContainerWaitTimeoutSecs int              `mapstructure:"container_wait_timeout_secs" json:"container_wait_timeout_secs" yaml:"container_wait_timeout_secs"`
	PollFrequency            int              `mapstructure:"poll_frequency_secs" json:"poll_frequency_secs" yaml:"poll_frequency_secs"` // poll frequency in seconds
	StdinFile                string           `mapstructure:"stdin_file_name" json:"stdin_file_name" yaml:"stdin_file_name" plugin:"expand"`
	// StdinFileContents is the full file content of the StdinFile on the host,
	// which is then sent to the app server.
	StdinFileContents []byte            `mapstructure:"-" json:"stdin_file_contents" yaml:"-"`
	StdoutFile        string            `mapstructure:"stdout_file_name" json:"stdout_file_name" yaml:"stdout_file_name" plugin:"expand"`
	StderrFile        string            `mapstructure:"stderr_file_name" json:"stderr_file_name" yaml:"stderr_file_name" plugin:"expand"`
	EnvironmentVars   map[string]string `mapstructure:"environment_vars" json:"environment_vars" yaml:"environment_vars" plugin:"expand"`
	ExtraHosts        []string          `mapstructure:"extra_hosts" json:"extra_hosts" yaml:"extra_hosts" plugin:"expand"`
}

func (*CreateHost) Expand

func (ch *CreateHost) Expand(exp *util.Expansions) error

func (*CreateHost) Validate

func (ch *CreateHost) Validate(ctx context.Context) error

type DisableInfo

type DisableInfo struct {
	Reason string `bson:"reason" json:"reason"`
}

type DisplayTaskInfo

type DisplayTaskInfo struct {
	ID   string `json:"id"`
	Name string `json:"name"`
}

DisplayTaskInfo represents information about a display task necessary for creating a cedar test result.

type DistroView

type DistroView struct {
	DisableShallowClone bool     `json:"disable_shallow_clone"`
	Mountpoints         []string `json:"mountpoints"`
}

DistroView represents the view of data that the agent uses from the distro it is running on.

type EbsDevice

type EbsDevice struct {
	DeviceName string `mapstructure:"device_name" json:"device_name" yaml:"device_name"`
	IOPS       int    `mapstructure:"ebs_iops" json:"ebs_iops" yaml:"ebs_iops"`
	Throughput int    `mapstructure:"ebs_throughput" json:"ebs_throughput" yaml:"ebs_throughput"`
	SizeGiB    int    `mapstructure:"ebs_size" json:"ebs_size" yaml:"ebs_size"`
	SnapshotID string `mapstructure:"ebs_snapshot_id" json:"ebs_snapshot_id" yaml:"ebs_snapshot_id"`
}

type EndTaskResponse

type EndTaskResponse struct {
	ShouldExit bool `json:"should_exit,omitempty"`
}

EndTaskResponse is what is returned when the task ends

type ExpansionsAndVars

type ExpansionsAndVars struct {
	// Expansions contain the expansions for a task.
	Expansions util.Expansions `json:"expansions"`
	// Parameters contain the parameters for a task.
	Parameters map[string]string `json:"parameters"`
	// Vars contain the project variables and parameters.
	Vars map[string]string `json:"vars"`
	// PrivateVars contain the project private variables.
	PrivateVars map[string]bool `json:"private_vars"`
	// Redact keys contain patterns to match against expansion keys for
	// redaction in logs.
	RedactKeys []string `json:"redact_keys"`
}

ExpansionsAndVars represents expansions, project variables, and parameters used when running a task.

type GeneratePollResponse

type GeneratePollResponse struct {
	Finished bool   `json:"finished"`
	Error    string `json:"error"`
}

type GetBuildloggerLogsOptions

type GetBuildloggerLogsOptions struct {
	BaseURL   string   `json:"_"`
	TaskID    string   `json:"-"`
	Execution *int     `json:"-"`
	TestName  string   `json:"-"`
	Tags      []string `json:"-"`
	Start     int64    `json:"-"`
	End       int64    `json:"-"`
	Limit     int      `json:"-"`
	Tail      int      `json:"-"`
}

GetBuildloggerLogsOptions represents the arguments passed into the GetBuildloggerLogs function.

type GetCedarPerfCountOptions

type GetCedarPerfCountOptions struct {
	BaseURL   string `json:"-"`
	TaskID    string `json:"-"`
	Execution int    `json:"_"`
}

GetCedarPerfCountOptions represents the arguments for getting a count of perf results for a given task id from Cedar.

type GetNextTaskDetails

type GetNextTaskDetails struct {
	TaskGroup     string `json:"task_group"`
	AgentRevision string `json:"agent_revision"`
	// EC2InstanceID is the ID of the instance running the agent if the agent is
	// running on an EC2 host. For non-EC2 hosts, this will not be populated.
	EC2InstanceID string `json:"instance_id,omitempty"`
}

type HeartbeatResponse

type HeartbeatResponse struct {
	Abort bool `json:"abort,omitempty"`
}

HeartbeatResponse is sent by the API server in response to the agent's heartbeat message.

type InstallationToken

type InstallationToken struct {
	Token string `json:"token"`
}

type LogInfo

type LogInfo struct {
	Command string `bson:"command" json:"command"`
	URL     string `bson:"url" json:"url"`
}

type LogMessage

type LogMessage struct {
	Type      string    `bson:"t" json:"t"`
	Severity  string    `bson:"s" json:"s"`
	Message   string    `bson:"m" json:"m"`
	Timestamp time.Time `bson:"ts" json:"ts"`
	Version   int       `bson:"v" json:"v"`
}

The LogMessage type is used by the the GraphQL resolver and HTML logs.

func ReadLogToSlice

func ReadLogToSlice(it log.LogIterator) ([]*LogMessage, error)

ReadLogToSlice returns a slice of log message pointers from a log iterator.

type ModuleCloneInfo

type ModuleCloneInfo struct {
	Prefixes map[string]string `bson:"prefixes,omitempty" json:"prefixes,omitempty"`
}

type NextTaskResponse

type NextTaskResponse struct {
	TaskId              string `json:"task_id,omitempty"`
	TaskExecution       int    `json:"task_execution,omitempty"`
	TaskSecret          string `json:"task_secret,omitempty"`
	TaskGroup           string `json:"task_group,omitempty"`
	Version             string `json:"version,omitempty"`
	Build               string `json:"build,omitempty"`
	ShouldExit          bool   `json:"should_exit,omitempty"`
	ShouldTeardownGroup bool   `json:"should_teardown_group,omitempty"`
}

NextTaskResponse represents the response sent back when an agent asks for a next task

type OOMTrackerInfo

type OOMTrackerInfo struct {
	Detected bool  `bson:"detected" json:"detected"`
	Pids     []int `bson:"pids" json:"pids"`
}

type ProcessTimeoutResponse

type ProcessTimeoutResponse struct {
	Status        string      `json:"status"`
	LateProcesses interface{} `json:"late_mci_processes,omitempty"`
}

Struct for reporting process timeouts

type PullRequestInfo

type PullRequestInfo struct {
	Mergeable      *bool  `json:"mergeable"`
	MergeCommitSHA string `json:"merge_commit_sha"`
}

type RegistrySettings

type RegistrySettings struct {
	Name     string `mapstructure:"registry_name" json:"registry_name" yaml:"registry_name"`
	Username string `mapstructure:"registry_username" json:"registry_username" yaml:"registry_username"`
	Password string `mapstructure:"registry_password" json:"registry_password" yaml:"registry_password"`
}

type S3CopyRequest

type S3CopyRequest struct {
	S3SourceRegion      string `json:"s3_source_region"`
	S3SourceBucket      string `json:"s3_source_bucket"`
	S3SourcePath        string `json:"s3_source_path"`
	S3DestinationRegion string `json:"s3_destination_region"`
	S3DestinationBucket string `json:"s3_destination_bucket"`
	S3DestinationPath   string `json:"s3_destination_path"`
	S3DisplayName       string `json:"display_name"`
	S3Permissions       string `json:"s3_permissions"`
}

S3CopyRequest holds information necessary for the API server to complete an S3 copy request; namely, an S3 key/secret, a source and a destination path

type TaskEndDetail

type TaskEndDetail struct {
	Status          string          `bson:"status,omitempty" json:"status,omitempty"`
	Type            string          `bson:"type,omitempty" json:"type,omitempty"`
	PostErrored     bool            `bson:"post_errored,omitempty" json:"post_errored,omitempty"`
	Description     string          `bson:"desc,omitempty" json:"desc,omitempty"`
	TimedOut        bool            `bson:"timed_out,omitempty" json:"timed_out,omitempty"`
	TimeoutType     string          `bson:"timeout_type,omitempty" json:"timeout_type,omitempty"`
	TimeoutDuration time.Duration   `bson:"timeout_duration,omitempty" json:"timeout_duration,omitempty" swaggertype:"primitive,integer"`
	OOMTracker      *OOMTrackerInfo `bson:"oom_killer,omitempty" json:"oom_killer,omitempty"`
	Modules         ModuleCloneInfo `bson:"modules,omitempty" json:"modules,omitempty"`
	TraceID         string          `bson:"trace_id,omitempty" json:"trace_id,omitempty"`
	DiskDevices     []string        `bson:"disk_devices,omitempty" json:"disk_devices,omitempty"`
}

TaskEndDetail contains data sent from the agent to the API server after each task run. This should be used to store data relating to what happened when the task ran

func (*TaskEndDetail) IsEmpty

func (ted *TaskEndDetail) IsEmpty() bool

type TaskEndDetails

type TaskEndDetails struct {
	TimeoutStage string `bson:"timeout_stage,omitempty" json:"timeout_stage,omitempty"`
	TimedOut     bool   `bson:"timed_out,omitempty" json:"timed_out,omitempty"`
}

type TaskStartRequest

type TaskStartRequest struct {
	Pid string `json:"pid"`
}

TaskStartRequest holds information sent by the agent to the API server at the beginning of each task run.

type TaskTestResultsInfo

type TaskTestResultsInfo struct {
	Service string `json:"service"`
	Failed  bool   `json:"failed"`
}

TaskTestResultsInfo contains metadata related to test results persisted for a given task.

type WorkstationSetupCommandOptions

type WorkstationSetupCommandOptions struct {
	Directory string
	Quiet     bool
	DryRun    bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL