compute

package
v1.1.1 Latest Latest
Warning

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

Go to latest
Published: Oct 9, 2023 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Overview

Package compute is a generated GoMock package.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AskForBidRequest

type AskForBidRequest struct {
	RoutingMetadata
	// Execution specifies the job to be executed.
	Execution *models.Execution
	// WaitForApproval specifies whether the compute node should wait for the requester to approve the bid.
	// if set to true, the compute node will not start the execution until the requester approves the bid.
	// If set to false, the compute node will automatically start the execution after bidding and when resources are available.
	WaitForApproval bool
}

type AskForBidResponse

type AskForBidResponse struct {
	ExecutionMetadata
}

type BaseEndpoint

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

Base implementation of Endpoint

func NewBaseEndpoint

func NewBaseEndpoint(params BaseEndpointParams) BaseEndpoint

func (BaseEndpoint) AskForBid

func (s BaseEndpoint) AskForBid(ctx context.Context, request AskForBidRequest) (AskForBidResponse, error)

func (BaseEndpoint) BidAccepted

func (BaseEndpoint) BidRejected

func (BaseEndpoint) CancelExecution

func (BaseEndpoint) ExecutionLogs added in v0.3.26

func (BaseEndpoint) GetNodeID

func (s BaseEndpoint) GetNodeID() string

type BaseEndpointParams

type BaseEndpointParams struct {
	ID              string
	ExecutionStore  store.ExecutionStore
	UsageCalculator capacity.UsageCalculator
	Bidder          Bidder
	Executor        Executor
	LogServer       logstream.LogStreamServer
}

type BaseExecutor

type BaseExecutor struct {
	ID string

	Storages storage.StorageProvider
	// contains filtered or unexported fields
}

BaseExecutor is the base implementation for backend service. All operations are executed asynchronously, and a callback is used to notify the caller of the result.

func NewBaseExecutor

func NewBaseExecutor(params BaseExecutorParams) *BaseExecutor

func (*BaseExecutor) Cancel

func (e *BaseExecutor) Cancel(ctx context.Context, state store.LocalExecutionState) (err error)

Cancel the execution.

func (*BaseExecutor) Run

func (e *BaseExecutor) Run(ctx context.Context, state store.LocalExecutionState) (err error)

Run the execution after it has been accepted, and propose a result to the requester to be verified.

func (*BaseExecutor) Start added in v1.0.4

func (e *BaseExecutor) Start(ctx context.Context, execution *models.Execution) (result *StartResult)

func (*BaseExecutor) Wait added in v1.0.4

type BaseExecutorParams

type BaseExecutorParams struct {
	ID                     string
	Callback               Callback
	Store                  store.ExecutionStore
	Storages               storage.StorageProvider
	Executors              executor.ExecutorProvider
	ResultsPath            ResultsPath
	Publishers             publisher.PublisherProvider
	FailureInjectionConfig model.FailureInjectionComputeConfig
}

type BidAcceptedRequest

type BidAcceptedRequest struct {
	RoutingMetadata
	ExecutionID   string
	Accepted      bool
	Justification string
}

type BidAcceptedResponse

type BidAcceptedResponse struct {
	ExecutionMetadata
}

type BidRejectedRequest

type BidRejectedRequest struct {
	RoutingMetadata
	ExecutionID   string
	Justification string
}

type BidRejectedResponse

type BidRejectedResponse struct {
	ExecutionMetadata
}

type BidResult added in v0.3.26

type BidResult struct {
	RoutingMetadata
	ExecutionMetadata
	Accepted bool
	Reason   string
}

BidResult is the result of the compute node bidding on a job that is returned to the caller through a Callback.

type Bidder added in v0.3.26

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

func NewBidder added in v0.3.26

func NewBidder(params BidderParams) Bidder

func (Bidder) ReturnBidResult added in v0.3.26

func (b Bidder) ReturnBidResult(
	ctx context.Context, localExecutionState store.LocalExecutionState, response *bidstrategy.BidStrategyResponse)

func (Bidder) RunBidding added in v0.3.26

func (b Bidder) RunBidding(ctx context.Context, request AskForBidRequest, usageCalc capacity.UsageCalculator)

TODO: evaluate the need for async bidding and marking bids as waiting

type BidderParams added in v0.3.26

type BidderParams struct {
	NodeID           string
	SemanticStrategy bidstrategy.SemanticBidStrategy
	ResourceStrategy bidstrategy.ResourceBidStrategy
	Store            store.ExecutionStore
	Executor         Executor
	Callback         Callback
	GetApproveURL    func() *url.URL
}

type Callback

type Callback interface {
	OnBidComplete(ctx context.Context, result BidResult)
	OnRunComplete(ctx context.Context, result RunResult)
	OnCancelComplete(ctx context.Context, result CancelResult)
	OnComputeFailure(ctx context.Context, err ComputeError)
}

Callback Callbacks are used to notify the caller of the result of a job execution.

type CallbackMock added in v0.3.26

type CallbackMock struct {
	OnBidCompleteHandler    func(ctx context.Context, result BidResult)
	OnCancelCompleteHandler func(ctx context.Context, result CancelResult)
	OnComputeFailureHandler func(ctx context.Context, err ComputeError)
	OnRunCompleteHandler    func(ctx context.Context, result RunResult)
}

func (CallbackMock) OnBidComplete added in v0.3.26

func (c CallbackMock) OnBidComplete(ctx context.Context, result BidResult)

OnBidComplete implements Callback

func (CallbackMock) OnCancelComplete added in v0.3.26

func (c CallbackMock) OnCancelComplete(ctx context.Context, result CancelResult)

OnCancelComplete implements Callback

func (CallbackMock) OnComputeFailure added in v0.3.26

func (c CallbackMock) OnComputeFailure(ctx context.Context, err ComputeError)

OnComputeFailure implements Callback

func (CallbackMock) OnRunComplete added in v0.3.26

func (c CallbackMock) OnRunComplete(ctx context.Context, result RunResult)

OnRunComplete implements Callback

type CancelExecutionRequest

type CancelExecutionRequest struct {
	RoutingMetadata
	ExecutionID   string
	Justification string
}

type CancelExecutionResponse

type CancelExecutionResponse struct {
	ExecutionMetadata
}

type CancelResult

type CancelResult struct {
	RoutingMetadata
	ExecutionMetadata
}

CancelResult Result of a job cancel that is returned to the caller through a Callback.

type ChainedCallback

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

ChainedCallback Callback that chains multiple callbacks and delegates the calls to them.

func NewChainedCallback

func NewChainedCallback(params ChainedCallbackParams) *ChainedCallback

func (ChainedCallback) OnBidComplete added in v0.3.26

func (c ChainedCallback) OnBidComplete(ctx context.Context, result BidResult)

func (ChainedCallback) OnCancelComplete

func (c ChainedCallback) OnCancelComplete(ctx context.Context, result CancelResult)

func (ChainedCallback) OnComputeFailure

func (c ChainedCallback) OnComputeFailure(ctx context.Context, err ComputeError)

func (ChainedCallback) OnRunComplete

func (c ChainedCallback) OnRunComplete(ctx context.Context, result RunResult)

type ChainedCallbackParams

type ChainedCallbackParams struct {
	Callbacks []Callback
}

type ComputeError

type ComputeError struct {
	RoutingMetadata
	ExecutionMetadata
	Err string
}

func (ComputeError) Error

func (e ComputeError) Error() string

type Endpoint

type Endpoint interface {
	// AskForBid asks for a bid for a given job, which will assign executionID to the job and return a bid
	// is interested in bidding on.
	AskForBid(context.Context, AskForBidRequest) (AskForBidResponse, error)
	// BidAccepted accepts a bid for a given executionID, which will trigger executing the job in the backend.
	// The execution can be synchronous or asynchronous, depending on the backend implementation.
	BidAccepted(context.Context, BidAcceptedRequest) (BidAcceptedResponse, error)
	// BidRejected rejects a bid for a given executionID.
	BidRejected(context.Context, BidRejectedRequest) (BidRejectedResponse, error)
	// CancelExecution cancels a job for a given executionID.
	CancelExecution(context.Context, CancelExecutionRequest) (CancelExecutionResponse, error)
	// ExecutionLogs returns the address of a suitable log server
	ExecutionLogs(context.Context, ExecutionLogsRequest) (ExecutionLogsResponse, error)
}

Endpoint is the frontend and entry point to the compute node. Requesters, whether through API, CLI or other means, do interact with the frontend service to submit jobs, ask for bids, accept or reject bids, etc.

type ExecutionLogsRequest added in v0.3.26

type ExecutionLogsRequest struct {
	RoutingMetadata
	ExecutionID string
	WithHistory bool
	Follow      bool
}

type ExecutionLogsResponse added in v0.3.26

type ExecutionLogsResponse struct {
	Address           string
	ExecutionFinished bool
}

type ExecutionMetadata

type ExecutionMetadata struct {
	ExecutionID string
	JobID       string
}

func NewExecutionMetadata

func NewExecutionMetadata(execution *models.Execution) ExecutionMetadata

type Executor

type Executor interface {
	// Run triggers the execution of a job.
	Run(ctx context.Context, localExecutionState store.LocalExecutionState) error
	// Cancel cancels the execution of a job.
	Cancel(ctx context.Context, localExecutionState store.LocalExecutionState) error
}

Executor Backend service that is responsible for running and publishing executions. Implementations can be synchronous or asynchronous by using Callbacks.

type ExecutorBuffer

type ExecutorBuffer struct {
	ID string
	// contains filtered or unexported fields
}

ExecutorBuffer is a backend.Executor implementation that buffers executions locally until enough capacity is available to be able to run them. The buffer accepts a delegate backend.Executor that will be used to run the jobs. The buffer is implemented as a FIFO queue, where the order of the executions is determined by the order in which they were enqueued. However, an execution with high resource usage requirements might be skipped if there are newer jobs with lower resource usage requirements that can be executed immediately. This is done to improve utilization of compute nodes, though it might result in starvation and should be re-evaluated in the future.

func NewExecutorBuffer

func NewExecutorBuffer(params ExecutorBufferParams) *ExecutorBuffer

func (*ExecutorBuffer) Cancel

func (s *ExecutorBuffer) Cancel(_ context.Context, localExecutionState store.LocalExecutionState) error

func (*ExecutorBuffer) EnqueuedExecutionsCount added in v1.0.4

func (s *ExecutorBuffer) EnqueuedExecutionsCount() int

EnqueuedExecutionsCount return number of items enqueued

func (*ExecutorBuffer) Run

func (s *ExecutorBuffer) Run(ctx context.Context, localExecutionState store.LocalExecutionState) (err error)

Run enqueues the execution and tries to run it if there is enough capacity.

func (*ExecutorBuffer) RunningExecutions

func (s *ExecutorBuffer) RunningExecutions() []store.LocalExecutionState

RunningExecutions return list of running executions

type ExecutorBufferParams

type ExecutorBufferParams struct {
	ID                         string
	DelegateExecutor           Executor
	Callback                   Callback
	RunningCapacityTracker     capacity.Tracker
	EnqueuedCapacityTracker    capacity.Tracker
	DefaultJobExecutionTimeout time.Duration
	BackoffDuration            time.Duration
}

type InputCleanupFn added in v1.0.4

type InputCleanupFn = func(context.Context) error

InputCleanupFn is a function type that defines the contract for cleaning up resources associated with input volume data after the job execution has either completed or failed to start. The function is expected to take a context.Context as an argument, which can be used for timeout and cancellation signals. It returns an error if the cleanup operation fails.

For example, an InputCleanupFn might be responsible for deallocating storage used for input volumes, or deleting temporary input files that were created as part of the job's execution. The nature of it operation depends on the storage provided by `strgprovider` and input sources of the jobs associated tasks. For the case of a wasm job its input and entry module storage volumes should be removed via the method after the jobs execution reaches a terminal state.

func PrepareRunArguments added in v1.0.4

func PrepareRunArguments(
	ctx context.Context,
	strgprovider storage.StorageProvider,
	execution *models.Execution,
	resultsDir string,
) (*executor.RunCommandRequest, InputCleanupFn, error)

type MockCallback added in v1.0.0

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

MockCallback is a mock of Callback interface.

func NewMockCallback added in v1.0.4

func NewMockCallback(ctrl *gomock.Controller) *MockCallback

NewMockCallback creates a new mock instance.

func (*MockCallback) EXPECT added in v1.0.4

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockCallback) OnBidComplete added in v1.0.0

func (m *MockCallback) OnBidComplete(ctx context.Context, result BidResult)

OnBidComplete mocks base method.

func (*MockCallback) OnCancelComplete added in v1.0.0

func (m *MockCallback) OnCancelComplete(ctx context.Context, result CancelResult)

OnCancelComplete mocks base method.

func (*MockCallback) OnComputeFailure added in v1.0.0

func (m *MockCallback) OnComputeFailure(ctx context.Context, err ComputeError)

OnComputeFailure mocks base method.

func (*MockCallback) OnRunComplete added in v1.0.0

func (m *MockCallback) OnRunComplete(ctx context.Context, result RunResult)

OnRunComplete mocks base method.

type MockCallbackMockRecorder added in v1.0.4

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

MockCallbackMockRecorder is the mock recorder for MockCallback.

func (*MockCallbackMockRecorder) OnBidComplete added in v1.0.4

func (mr *MockCallbackMockRecorder) OnBidComplete(ctx, result interface{}) *gomock.Call

OnBidComplete indicates an expected call of OnBidComplete.

func (*MockCallbackMockRecorder) OnCancelComplete added in v1.0.4

func (mr *MockCallbackMockRecorder) OnCancelComplete(ctx, result interface{}) *gomock.Call

OnCancelComplete indicates an expected call of OnCancelComplete.

func (*MockCallbackMockRecorder) OnComputeFailure added in v1.0.4

func (mr *MockCallbackMockRecorder) OnComputeFailure(ctx, err interface{}) *gomock.Call

OnComputeFailure indicates an expected call of OnComputeFailure.

func (*MockCallbackMockRecorder) OnRunComplete added in v1.0.4

func (mr *MockCallbackMockRecorder) OnRunComplete(ctx, result interface{}) *gomock.Call

OnRunComplete indicates an expected call of OnRunComplete.

type MockEndpoint added in v1.0.4

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

MockEndpoint is a mock of Endpoint interface.

func NewMockEndpoint added in v1.0.4

func NewMockEndpoint(ctrl *gomock.Controller) *MockEndpoint

NewMockEndpoint creates a new mock instance.

func (*MockEndpoint) AskForBid added in v1.0.4

AskForBid mocks base method.

func (*MockEndpoint) BidAccepted added in v1.0.4

BidAccepted mocks base method.

func (*MockEndpoint) BidRejected added in v1.0.4

BidRejected mocks base method.

func (*MockEndpoint) CancelExecution added in v1.0.4

CancelExecution mocks base method.

func (*MockEndpoint) EXPECT added in v1.0.4

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockEndpoint) ExecutionLogs added in v1.0.4

ExecutionLogs mocks base method.

type MockEndpointMockRecorder added in v1.0.4

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

MockEndpointMockRecorder is the mock recorder for MockEndpoint.

func (*MockEndpointMockRecorder) AskForBid added in v1.0.4

func (mr *MockEndpointMockRecorder) AskForBid(arg0, arg1 interface{}) *gomock.Call

AskForBid indicates an expected call of AskForBid.

func (*MockEndpointMockRecorder) BidAccepted added in v1.0.4

func (mr *MockEndpointMockRecorder) BidAccepted(arg0, arg1 interface{}) *gomock.Call

BidAccepted indicates an expected call of BidAccepted.

func (*MockEndpointMockRecorder) BidRejected added in v1.0.4

func (mr *MockEndpointMockRecorder) BidRejected(arg0, arg1 interface{}) *gomock.Call

BidRejected indicates an expected call of BidRejected.

func (*MockEndpointMockRecorder) CancelExecution added in v1.0.4

func (mr *MockEndpointMockRecorder) CancelExecution(arg0, arg1 interface{}) *gomock.Call

CancelExecution indicates an expected call of CancelExecution.

func (*MockEndpointMockRecorder) ExecutionLogs added in v1.0.4

func (mr *MockEndpointMockRecorder) ExecutionLogs(arg0, arg1 interface{}) *gomock.Call

ExecutionLogs indicates an expected call of ExecutionLogs.

type MockExecutor added in v1.0.4

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

MockExecutor is a mock of Executor interface.

func NewMockExecutor added in v1.0.4

func NewMockExecutor(ctrl *gomock.Controller) *MockExecutor

NewMockExecutor creates a new mock instance.

func (*MockExecutor) Cancel added in v1.0.4

func (m *MockExecutor) Cancel(ctx context.Context, localExecutionState store.LocalExecutionState) error

Cancel mocks base method.

func (*MockExecutor) EXPECT added in v1.0.4

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockExecutor) Run added in v1.0.4

func (m *MockExecutor) Run(ctx context.Context, localExecutionState store.LocalExecutionState) error

Run mocks base method.

type MockExecutorMockRecorder added in v1.0.4

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

MockExecutorMockRecorder is the mock recorder for MockExecutor.

func (*MockExecutorMockRecorder) Cancel added in v1.0.4

func (mr *MockExecutorMockRecorder) Cancel(ctx, localExecutionState interface{}) *gomock.Call

Cancel indicates an expected call of Cancel.

func (*MockExecutorMockRecorder) Run added in v1.0.4

func (mr *MockExecutorMockRecorder) Run(ctx, localExecutionState interface{}) *gomock.Call

Run indicates an expected call of Run.

type NodeInfoProvider

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

func NewNodeInfoProvider

func NewNodeInfoProvider(params NodeInfoProviderParams) *NodeInfoProvider

func (*NodeInfoProvider) GetComputeInfo

func (n *NodeInfoProvider) GetComputeInfo(ctx context.Context) models.ComputeNodeInfo

type NodeInfoProviderParams

type NodeInfoProviderParams struct {
	Executors          executor.ExecutorProvider
	Publisher          publisher.PublisherProvider
	Storages           storage.StorageProvider
	CapacityTracker    capacity.Tracker
	ExecutorBuffer     *ExecutorBuffer
	MaxJobRequirements models.Resources
}

type ResultsPath added in v1.0.4

type ResultsPath struct {
	// where do we copy the results from jobs temporarily?
	ResultsDir string
}

func NewResultsPath added in v1.0.4

func NewResultsPath() (*ResultsPath, error)

func (*ResultsPath) Close added in v1.0.4

func (results *ResultsPath) Close() error

func (*ResultsPath) EnsureResultsDir added in v1.0.4

func (results *ResultsPath) EnsureResultsDir(executionID string) (string, error)

EnsureResultsDir ensures that the results directory exists.

func (*ResultsPath) PrepareResultsDir added in v1.0.4

func (results *ResultsPath) PrepareResultsDir(executionID string) (string, error)

PrepareResultsDir creates a temporary directory to store the results of a job execution.

type RoutingMetadata

type RoutingMetadata struct {
	SourcePeerID string
	TargetPeerID string
}

type RunResult

type RunResult struct {
	RoutingMetadata
	ExecutionMetadata
	PublishResult    *models.SpecConfig
	RunCommandResult *models.RunCommandResult
}

RunResult Result of a job execution that is returned to the caller through a Callback.

type StartResult added in v1.0.4

type StartResult struct {
	Err error
	// contains filtered or unexported fields
}

func (*StartResult) Cleanup added in v1.0.4

func (r *StartResult) Cleanup(ctx context.Context) error

type Startup added in v1.0.4

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

func NewStartup added in v1.0.4

func NewStartup(execStore store.ExecutionStore, execBuffer Executor) *Startup

func (*Startup) Execute added in v1.0.4

func (s *Startup) Execute(ctx context.Context) error

Execute is used by the compute node to perform startup tasks that should happen before the node takes part in the rest of the network. This might be executions setup, or cleaning previous inputs etc.

Directories

Path Synopsis
Package store is a generated GoMock package.
Package store is a generated GoMock package.

Jump to

Keyboard shortcuts

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