Documentation
¶
Index ¶
Constants ¶
const ReasonInvalid = "InvalidReason"
ReasonInvalid indicates a reason provided by the runtime was invalid.
const ReasonRuntimeError = "RuntimeError"
ReasonRuntimeError is the default reason used when no reason is provided by the runtime.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Agent ¶
type Agent struct {
Log logr.Logger
// ID is the unique identifier for the agent. It is used by the transport to identify workflows
// scheduled for this agent.
ID string
// Transport is the transport used by the agent for communicating workflows and events.
Transport Transport
// Runtime is the container runtime used to execute workflow actions.
Runtime ContainerRuntime
// contains filtered or unexported fields
}
Agent is the core data structure for handling workflow execution on target nodes. It leverages a Transport and a ContainerRuntime to retrieve workflows and execute actions.
The agent runs a single workflow at a time. Concurrent requests to run workflows will have the second workflow rejected with an event.WorkflowRejected event.
func (*Agent) CancelWorkflow ¶
type ContainerRuntime ¶
type ContainerRuntime interface {
// Run executes the action. The runtime should mount the following files for the action
// implementation to communicate a reason and message in the event of failure:
//
// /tinkerbell/failure-reason
// /tinkerbell/failure-message
//
// The reason and message should be communicataed via the returned error. The message should
// be the error message and the reason should be provided as defined in failure.Reason().
Run(context.Context, workflow.Action) error
}
ContainerRuntime is a runtime capable of executing workflow actions.
type ContainerRuntimeMock ¶
type ContainerRuntimeMock struct {
// RunFunc mocks the Run method.
RunFunc func(contextMoqParam context.Context, action workflow.Action) error
// contains filtered or unexported fields
}
ContainerRuntimeMock is a mock implementation of ContainerRuntime.
func TestSomethingThatUsesContainerRuntime(t *testing.T) {
// make and configure a mocked ContainerRuntime
mockedContainerRuntime := &ContainerRuntimeMock{
RunFunc: func(contextMoqParam context.Context, action workflow.Action) error {
panic("mock out the Run method")
},
}
// use mockedContainerRuntime in code that requires ContainerRuntime
// and then make assertions.
}
type Transport ¶
type Transport interface {
// Start is a blocking call that starts the transport and begins retrieving workflows for the
// given agentID. The transport should pass workflows to the Handler. The transport
// should block until its told to cancel via the context.
Start(_ context.Context, agentID string, _ transport.WorkflowHandler) error
}
Transport is a transport mechanism for communicating workflows to the agent.
type TransportMock ¶
type TransportMock struct {
// StartFunc mocks the Start method.
StartFunc func(contextMoqParam context.Context, agentID string, workflowHandler transport.WorkflowHandler) error
// contains filtered or unexported fields
}
TransportMock is a mock implementation of Transport.
func TestSomethingThatUsesTransport(t *testing.T) {
// make and configure a mocked Transport
mockedTransport := &TransportMock{
StartFunc: func(contextMoqParam context.Context, agentID string, workflowHandler transport.WorkflowHandler) error {
panic("mock out the Start method")
},
}
// use mockedTransport in code that requires Transport
// and then make assertions.
}
func (*TransportMock) Start ¶
func (mock *TransportMock) Start(contextMoqParam context.Context, agentID string, workflowHandler transport.WorkflowHandler) error
Start calls StartFunc.
func (*TransportMock) StartCalls ¶
func (mock *TransportMock) StartCalls() []struct { ContextMoqParam context.Context AgentID string WorkflowHandler transport.WorkflowHandler }
StartCalls gets all the calls that were made to Start. Check the length with:
len(mockedTransport.StartCalls())
Directories
¶
| Path | Synopsis |
|---|---|
|
Package event describes the event set and an interface for recording events.
|
Package event describes the event set and an interface for recording events. |
|
Package runtime contains runtime implementations that can execute workflow actions.
|
Package runtime contains runtime implementations that can execute workflow actions. |
|
Package transport contains data structures that implement agent transport capabilities.
|
Package transport contains data structures that implement agent transport capabilities. |
|
Package workflow contains workflow domain objects.
|
Package workflow contains workflow domain objects. |