models

package
v1.4.1 Latest Latest
Warning

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

Go to latest
Published: Jul 27, 2021 License: GPL-3.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CancelTaskResponse

type CancelTaskResponse struct {
}

CancelTaskResponse represents that a task was canceled

type CreateTaskResponse

type CreateTaskResponse struct {
	ID string `json:"id"`
}

CreateTaskResponse represents a task submitted and approved by the system

type Executor

type Executor struct {
	// Name of the container image
	Image string `json:"image"`
	// A sequence of program arguments to execute, where the first argument is the program to execute
	Command []string `json:"command"`
	// The working directory that the command will be executed in
	WorkDir string `json:"workdir,omitempty"`
	// Path inside the container to a file which will be piped to the executor's stdin
	Stdin string `json:"stdin,omitempty"`
	// Path inside the container to a file where the executor's stdout will be written to
	Stdout string `json:"stdout,omitempty"`
	// Path inside the container to a file where the executor's stderr will be written to
	Stderr string `json:"stderr,omitempty"`
	// Environment variables to set within the container
	Env map[string]string `json:"env,omitempty"`
}

Executor describes a command to be executed, and its environment.

type ExecutorLog

type ExecutorLog struct {
	ExitCode  int32     `json:"exit_code"`            // Exit code
	StartTime time.Time `json:"start_time,omitempty"` // Time the executor started
	EndTime   time.Time `json:"end_time,omitempty"`   // Time the executor ended
	Stdout    string    `json:"stdout,omitempty"`     // Stdout content
	Stderr    string    `json:"stderr,omitempty"`     // Stderr content
}

ExecutorLog represents processing times and logs of an executor

type FileType

type FileType string

FileType can be file or directory

const (
	// File type of Input
	File FileType = "FILE"
	// Directory type of Input
	Directory FileType = "DIRECTORY"
)

type Input

type Input struct {
	Name        string   `json:"name,omitempty"`
	Description string   `json:"description,omitempty"`
	URL         string   `json:"url"`
	Path        string   `json:"path"`
	Type        FileType `json:"type"`
	Content     string   `json:"content,omitempty"`
}

Input represents an input file to be used by task.

type ListTasksResponse

type ListTasksResponse struct {
	Tasks         []*Task `json:"tasks"`
	NextPageToken string  `json:"next_page_token,omitempty"`
}

ListTasksResponse represents a list of tasks previous submitted to system

type Metrics added in v1.1.0

type Metrics struct {
	// Total CPU time in nanoseconds across all cores.
	CPUTime uint64 `json:"cpu_time"`
	// Maximum CPU percentage ever recorded.
	CPUPercentage float64 `json:"cpu_percentage"`
	// Maximum memory used ever recorded in bytes.
	Memory uint64 `json:"memory"`
}

Metrics represents a active computing node.

type Node

type Node struct {
	Host   string `json:"host" bson:"_id"`
	Port   string `json:"port"`
	Active bool   `json:"active"`

	CPUCores int32   `json:"cpu_cores"`
	RAMGb    float64 `json:"ram_gb"`

	// Usage keeps real-time allocated resources in memory. It is not stored in database.
	Usage *Usage `json:"usage" bson:"-"`
}

Node is a computing node that accepts and executes tasks. It has maximum allowed (Info) and real-time allocated computing resources (Usage). Host is used as its unique identifier.

func (*Node) Address added in v1.0.1

func (n *Node) Address() string

Address returns full node address with port.

type Organization added in v1.3.0

type Organization struct {
	Name string `json:"name"`
	URL  string `json:"url"`
}

type Output

type Output struct {
	Name        string   `json:"name,omitempty"`
	Description string   `json:"description,omitempty"`
	URL         string   `json:"url"`
	Path        string   `json:"path"`
	Type        FileType `json:"type"`
}

Output represents a file generated by task

type OutputFileLog

type OutputFileLog struct {
	URL       string `json:"url"`
	Path      string `json:"path"`
	SizeBytes string `json:"size_bytes"`
}

OutputFileLog represents a log file

type Resources

type Resources struct {
	CPUCores    int32    `json:"cpu_cores,omitempty"`
	RAMGb       float64  `json:"ram_gb,omitempty"`
	DiskGb      float64  `json:"disk_gb,omitempty"`
	Zones       []string `json:"zones,omitempty"`
	Preemptible bool     `json:"preemptible,omitempty"`
}

Resources represents computing requirements to run task

type ServiceInfo

type ServiceInfo struct {
	ID               string        `json:"id"`
	Name             string        `json:"name"`
	Type             *ServiceType  `json:"type"`
	Description      string        `json:"description"`
	Organization     *Organization `json:"organization"`
	ContactURL       string        `json:"contactUrl"`
	DocumentationURL string        `json:"documentationUrl,omitempty"`
	Storage          []string      `json:"storage,omitempty"`
	CreatedAt        time.Time     `json:"createdAt"`
	UpdatedAt        time.Time     `json:"updatedAt"`
	Environment      string        `json:"environment"`
	Version          string        `json:"version"`
}

ServiceInfo describes information about the service, such as storage details, resource availability, and other documentation.

type ServiceType added in v1.3.0

type ServiceType struct {
	Group    string `json:"group"`
	Artifact string `json:"artifact"`
	Version  string `json:"version"`
}

type State

type State string

State of a task

const (
	// Unknown means task state is not defined
	Unknown State = "UNKNOWN"
	// Queued means task was submitted and waiting
	Queued State = "QUEUED"
	// Initializing means required files are be gathering before execution
	// for example, downloading Docker image
	Initializing State = "INITIALIZING"
	// Running means tasks is been executed by some worker node
	Running State = "RUNNING"
	// Paused is not used
	Paused State = "PAUSED"
	// Complete means task was terminated successfully, aka 0 return code
	Complete State = "COMPLETE"
	// ExecutorError means something had happen to worker node when running task
	ExecutorError State = "EXECUTOR_ERROR"
	// SystemError means something went wrong with the worker when running task
	SystemError State = "SYSTEM_ERROR"
	// Canceled means task was canceled
	Canceled State = "CANCELED"
)

func ActiveStates added in v1.1.0

func ActiveStates() []State

ActiveStates returns task states considered active.

func ErrorStates added in v1.1.0

func ErrorStates() []State

ErrorStates returns task states considered failed.

func TerminatedStates added in v1.1.0

func TerminatedStates() []State

TerminatedStates returns task states considered completed.

type Task

type Task struct {
	ID          string            `json:"id" bson:"_id"`
	State       State             `json:"state"`
	Name        string            `json:"name,omitempty"`
	Description string            `json:"description,omitempty"`
	Created     *time.Time        `json:"creation_time,omitempty"`
	Resources   *Resources        `json:"resources,omitempty"`
	Executors   []Executor        `json:"executors,omitempty"`
	Inputs      []*Input          `json:"inputs,omitempty"`
	Outputs     []*Output         `json:"outputs,omitempty"`
	Volumes     []string          `json:"volumes,omitempty"`
	Tags        map[string]string `json:"tags,omitempty"`
	Logs        []*TaskLog        `json:"logs,omitempty"`

	// RNNR specific fields.
	Host    string   `json:"host,omitempty"`
	Metrics *Metrics `json:"metrics,omitempty"`
}

Task is a collection of command to be executed to process data

func (*Task) Active

func (t *Task) Active() bool

Active returns true if task is active (queued, initializing, running and paused).

func (*Task) Elapsed added in v1.1.0

func (t *Task) Elapsed() time.Duration

Elapsed computes elapsed time of task execution.

func (*Task) Failed added in v1.1.0

func (t *Task) Failed() bool

Failed returns true if task failed (executor error and system error).

func (*Task) String

func (t *Task) String() string

func (*Task) Terminated added in v1.1.0

func (t *Task) Terminated() bool

Terminated returns true if task is completed (complete, executor error, system error and canceled).

type TaskLog added in v1.3.0

type TaskLog struct {
	// ExecutorLogs for each executor
	ExecutorLogs []*ExecutorLog `json:"logs,omitempty"`
	// Arbitrary logging metadata included by the implementation
	Metadata map[string]string `json:"metadata,omitempty"`
	// When the task started
	StartTime *time.Time `json:"start_time,omitempty"`
	// When the task ended
	EndTime *time.Time `json:"end_time,omitempty"`
	// Information about all output files
	Outputs []*OutputFileLog `json:"outputs,omitempty"`
	// System logs are any logs the system decides are relevant, which are not tied directly to an Executor process
	SystemLogs []string `json:"system_logs,omitempty"`
}

TaskLog represents processing times and logs of a task

type Usage

type Usage struct {
	Tasks    int     `json:"tasks"`
	CPUCores int32   `json:"cpu_cores"`
	RAMGb    float64 `json:"ram_gb"`
}

Usage has the amount of computings resources already in use.

type View

type View string

View defines which task field should be returned

const (
	// Minimal returns only task ID and state
	Minimal View = "MINIMAL"
	// Basic returns all fields except
	// - Logs.ExecutorLogs.Stdout
	// - Logs.ExecutorLogs.Stderr
	// - Inputs.Content
	// - Logs.SystemLogs
	Basic View = "BASIC"
	// Full returns all fields
	Full View = "FULL"
)

Jump to

Keyboard shortcuts

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