v1alpha1

package
v0.0.0-...-267b159 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2023 License: Apache-2.0 Imports: 22 Imported by: 4

Documentation

Overview

Package v1alpha1 is the v1alpha1 version of the API. +groupName=nebulaworkflow.nebula.net

Index

Constants

View Source
const EndNodeID = "end-node"
View Source
const NebulaWorkflowKind = "nebulaworkflow"
View Source
const ShardKeyspaceSize = 32

Defines a non-configurable keyspace size for shard keys. This needs to be a small value because we use label selectors to define shard key ranges which do not support range queries. It should only be modified increasingly to ensure backward compatibility.

View Source
const StartNodeID = "start-node"

Variables

View Source
var (
	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
	AddToScheme   = SchemeBuilder.AddToScheme
)
View Source
var LatestWorkflowDefinitionVersion = WorkflowDefinitionVersion1
View Source
var NebulaWorkflowGVK = SchemeGroupVersion.WithKind(NebulaWorkflowKind)
View Source
var SchemeGroupVersion = schema.GroupVersion{Group: nebulaworkflow.GroupName, Version: "v1alpha1"}

SchemeGroupVersion is group version used to register these objects

Functions

func IsPhaseTerminal

func IsPhaseTerminal(phase NodePhase) bool

func IsWorkflowPhaseTerminal

func IsWorkflowPhaseTerminal(p WorkflowPhase) bool

func Kind

func Kind(kind string) schema.GroupKind

GetKind takes an unqualified kind and returns back a Group qualified GroupKind

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource

Types

type Alias

type Alias struct {
	core.Alias
}

func (*Alias) DeepCopy

func (in *Alias) DeepCopy() *Alias

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Alias.

func (*Alias) DeepCopyInto

func (in *Alias) DeepCopyInto(out *Alias)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ApproveCondition

type ApproveCondition struct {
	*core.ApproveCondition
}

func (ApproveCondition) MarshalJSON

func (in ApproveCondition) MarshalJSON() ([]byte, error)

func (*ApproveCondition) UnmarshalJSON

func (in *ApproveCondition) UnmarshalJSON(b []byte) error

type ArrayNodePhase

type ArrayNodePhase int
const (
	ArrayNodePhaseNone ArrayNodePhase = iota
	ArrayNodePhaseExecuting
	ArrayNodePhaseFailing
	ArrayNodePhaseSucceeding
)

type ArrayNodeSpec

type ArrayNodeSpec struct {
	SubNodeSpec     *NodeSpec
	Parallelism     uint32
	MinSuccesses    *uint32
	MinSuccessRatio *float32
}

func (*ArrayNodeSpec) GetMinSuccessRatio

func (a *ArrayNodeSpec) GetMinSuccessRatio() *float32

func (*ArrayNodeSpec) GetMinSuccesses

func (a *ArrayNodeSpec) GetMinSuccesses() *uint32

func (*ArrayNodeSpec) GetParallelism

func (a *ArrayNodeSpec) GetParallelism() uint32

func (*ArrayNodeSpec) GetSubNodeSpec

func (a *ArrayNodeSpec) GetSubNodeSpec() *NodeSpec

type ArrayNodeStatus

type ArrayNodeStatus struct {
	MutableStruct
	Phase                 ArrayNodePhase        `json:"phase,omitempty"`
	ExecutionError        *core.ExecutionError  `json:"executionError,omitempty"`
	SubNodePhases         bitarray.CompactArray `json:"subphase,omitempty"`
	SubNodeTaskPhases     bitarray.CompactArray `json:"subtphase,omitempty"`
	SubNodeRetryAttempts  bitarray.CompactArray `json:"subattempts,omitempty"`
	SubNodeSystemFailures bitarray.CompactArray `json:"subsysfailures,omitempty"`
	TaskPhaseVersion      uint32                `json:"taskPhaseVersion,omitempty"`
}

func (*ArrayNodeStatus) GetArrayNodePhase

func (in *ArrayNodeStatus) GetArrayNodePhase() ArrayNodePhase

func (*ArrayNodeStatus) GetExecutionError

func (in *ArrayNodeStatus) GetExecutionError() *core.ExecutionError

func (*ArrayNodeStatus) GetSubNodePhases

func (in *ArrayNodeStatus) GetSubNodePhases() bitarray.CompactArray

func (*ArrayNodeStatus) GetSubNodeRetryAttempts

func (in *ArrayNodeStatus) GetSubNodeRetryAttempts() bitarray.CompactArray

func (*ArrayNodeStatus) GetSubNodeSystemFailures

func (in *ArrayNodeStatus) GetSubNodeSystemFailures() bitarray.CompactArray

func (*ArrayNodeStatus) GetSubNodeTaskPhases

func (in *ArrayNodeStatus) GetSubNodeTaskPhases() bitarray.CompactArray

func (*ArrayNodeStatus) GetTaskPhaseVersion

func (in *ArrayNodeStatus) GetTaskPhaseVersion() uint32

func (*ArrayNodeStatus) SetArrayNodePhase

func (in *ArrayNodeStatus) SetArrayNodePhase(phase ArrayNodePhase)

func (*ArrayNodeStatus) SetExecutionError

func (in *ArrayNodeStatus) SetExecutionError(executionError *core.ExecutionError)

func (*ArrayNodeStatus) SetSubNodePhases

func (in *ArrayNodeStatus) SetSubNodePhases(subNodePhases bitarray.CompactArray)

func (*ArrayNodeStatus) SetSubNodeRetryAttempts

func (in *ArrayNodeStatus) SetSubNodeRetryAttempts(subNodeRetryAttempts bitarray.CompactArray)

func (*ArrayNodeStatus) SetSubNodeSystemFailures

func (in *ArrayNodeStatus) SetSubNodeSystemFailures(subNodeSystemFailures bitarray.CompactArray)

func (*ArrayNodeStatus) SetSubNodeTaskPhases

func (in *ArrayNodeStatus) SetSubNodeTaskPhases(subNodeTaskPhases bitarray.CompactArray)

func (*ArrayNodeStatus) SetTaskPhaseVersion

func (in *ArrayNodeStatus) SetTaskPhaseVersion(taskPhaseVersion uint32)

type BaseNode

type BaseNode interface {
	GetID() NodeID
	GetKind() NodeKind
}

type BaseWorkflow

type BaseWorkflow interface {
	NodeGetter
	StartNode() ExecutableNode
	GetID() WorkflowID
	// FromNode returns all nodes that can be reached directly
	// from the node with the given unique name.
	FromNode(name NodeID) ([]NodeID, error)
	ToNode(name NodeID) ([]NodeID, error)
}

type BaseWorkflowWithStatus

type BaseWorkflowWithStatus interface {
	BaseWorkflow
	NodeStatusGetter
}

type Binding

type Binding struct {
	*core.Binding
}

func (*Binding) DeepCopy

func (in *Binding) DeepCopy() *Binding

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Binding.

func (*Binding) DeepCopyInto

func (in *Binding) DeepCopyInto(out *Binding)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Binding) MarshalJSON

func (in *Binding) MarshalJSON() ([]byte, error)

func (*Binding) UnmarshalJSON

func (in *Binding) UnmarshalJSON(b []byte) error

type BooleanExpression

type BooleanExpression struct {
	*core.BooleanExpression
}

func (*BooleanExpression) DeepCopy

func (in *BooleanExpression) DeepCopy() *BooleanExpression

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BooleanExpression.

func (*BooleanExpression) DeepCopyInto

func (in *BooleanExpression) DeepCopyInto(out *BooleanExpression)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (BooleanExpression) MarshalJSON

func (in BooleanExpression) MarshalJSON() ([]byte, error)

func (*BooleanExpression) UnmarshalJSON

func (in *BooleanExpression) UnmarshalJSON(b []byte) error

type BranchNodePhase

type BranchNodePhase int

A branchNode has its own Phases. These are used by the child nodes to ensure that the branch node is in the right state

const (
	BranchNodeNotYetEvaluated BranchNodePhase = iota
	BranchNodeSuccess
	BranchNodeError
)

func (BranchNodePhase) String

func (b BranchNodePhase) String() string

type BranchNodeSpec

type BranchNodeSpec struct {
	If       IfBlock     `json:"if"`
	ElseIf   []*IfBlock  `json:"elseIf,omitempty"`
	Else     *NodeID     `json:"else,omitempty"`
	ElseFail *core.Error `json:"elseFail,omitempty"`
}

func (*BranchNodeSpec) DeepCopy

func (in *BranchNodeSpec) DeepCopy() *BranchNodeSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BranchNodeSpec.

func (*BranchNodeSpec) DeepCopyInto

func (in *BranchNodeSpec) DeepCopyInto(out *BranchNodeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*BranchNodeSpec) GetElse

func (in *BranchNodeSpec) GetElse() *NodeID

func (*BranchNodeSpec) GetElseFail

func (in *BranchNodeSpec) GetElseFail() *core.Error

func (*BranchNodeSpec) GetElseIf

func (in *BranchNodeSpec) GetElseIf() []ExecutableIfBlock

func (*BranchNodeSpec) GetIf

func (in *BranchNodeSpec) GetIf() ExecutableIfBlock

type BranchNodeStatus

type BranchNodeStatus struct {
	MutableStruct
	Phase           BranchNodePhase `json:"phase,omitempty"`
	FinalizedNodeID *NodeID         `json:"finalNodeId,omitempty"`
}

func (*BranchNodeStatus) DeepCopy

func (in *BranchNodeStatus) DeepCopy() *BranchNodeStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BranchNodeStatus.

func (*BranchNodeStatus) DeepCopyInto

func (in *BranchNodeStatus) DeepCopyInto(out *BranchNodeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*BranchNodeStatus) Equals

func (in *BranchNodeStatus) Equals(other *BranchNodeStatus) bool

func (*BranchNodeStatus) GetFinalizedNode

func (in *BranchNodeStatus) GetFinalizedNode() *NodeID

func (*BranchNodeStatus) GetPhase

func (in *BranchNodeStatus) GetPhase() BranchNodePhase

func (*BranchNodeStatus) SetBranchNodeError

func (in *BranchNodeStatus) SetBranchNodeError()

func (*BranchNodeStatus) SetBranchNodeSuccess

func (in *BranchNodeStatus) SetBranchNodeSuccess(id NodeID)

type ConditionKind

type ConditionKind string
const (
	ConditionKindApprove ConditionKind = "approve"
	ConditionKindSignal  ConditionKind = "signal"
	ConditionKindSleep   ConditionKind = "sleep"
)

func (ConditionKind) String

func (n ConditionKind) String() string

type Connections

type Connections struct {
	Downstream map[NodeID][]NodeID `json:"downstream"`
	Upstream   map[NodeID][]NodeID `json:"upstream"`
}

Connections keep track of downstream and upstream dependencies (including data and execution dependencies).

func (*Connections) DeepCopy

func (in *Connections) DeepCopy() *Connections

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Connections.

func (*Connections) DeepCopyInto

func (in *Connections) DeepCopyInto(out *Connections)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CustomState

type CustomState map[string]interface{}

func (*CustomState) DeepCopy

func (in *CustomState) DeepCopy() *CustomState

func (*CustomState) DeepCopyInto

func (in *CustomState) DeepCopyInto(out *CustomState)

THIS IS NOT AUTO GENERATED

type DataReference

type DataReference = storage.DataReference

func GetDeckFile

func GetDeckFile(inputDir DataReference) DataReference

func GetInputsFile

func GetInputsFile(inputDir DataReference) DataReference

func GetOutputsFile

func GetOutputsFile(outputDir DataReference) DataReference

type DeprecatedConnections deprecated

type DeprecatedConnections struct {
	DownstreamEdges map[NodeID][]NodeID
	UpstreamEdges   map[NodeID][]NodeID
}

Deprecated: Please use Connections instead

func (*DeprecatedConnections) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeprecatedConnections.

func (*DeprecatedConnections) DeepCopyInto

func (in *DeprecatedConnections) DeepCopyInto(out *DeprecatedConnections)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DeprecatedConnections) MarshalJSON

func (in *DeprecatedConnections) MarshalJSON() ([]byte, error)

func (*DeprecatedConnections) UnmarshalJSON

func (in *DeprecatedConnections) UnmarshalJSON(b []byte) error

type DynamicNodePhase

type DynamicNodePhase int
const (
	// This is the default phase for a Dynamic Node execution. This also implies that the parent node is being executed
	DynamicNodePhaseNone DynamicNodePhase = iota
	// This phase implies that all the sub-nodes are being executed
	DynamicNodePhaseExecuting
	// This implies that the dynamic sub-nodes have failed and failure is being handled
	DynamicNodePhaseFailing
	// This Phase implies that the Parent node is done but it needs to be finalized before progressing to the sub-nodes (or dynamically yielded nodes)
	DynamicNodePhaseParentFinalizing
	// This Phase implies that the Parent node has finalized and the sub-node (or dynamically yielded nodes) can now be processed.
	DynamicNodePhaseParentFinalized
)

type DynamicNodeStatus

type DynamicNodeStatus struct {
	MutableStruct
	Phase              DynamicNodePhase `json:"phase,omitempty"`
	Reason             string           `json:"reason,omitempty"`
	Error              *ExecutionError  `json:"error,omitempty"`
	IsFailurePermanent bool             `json:"permFailure,omitempty"`
}

func (*DynamicNodeStatus) DeepCopy

func (in *DynamicNodeStatus) DeepCopy() *DynamicNodeStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DynamicNodeStatus.

func (*DynamicNodeStatus) DeepCopyInto

func (in *DynamicNodeStatus) DeepCopyInto(out *DynamicNodeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DynamicNodeStatus) Equals

func (in *DynamicNodeStatus) Equals(o *DynamicNodeStatus) bool

func (*DynamicNodeStatus) GetDynamicNodePhase

func (in *DynamicNodeStatus) GetDynamicNodePhase() DynamicNodePhase

func (*DynamicNodeStatus) GetDynamicNodeReason

func (in *DynamicNodeStatus) GetDynamicNodeReason() string

func (*DynamicNodeStatus) GetExecutionError

func (in *DynamicNodeStatus) GetExecutionError() *core.ExecutionError

func (*DynamicNodeStatus) GetIsFailurePermanent

func (in *DynamicNodeStatus) GetIsFailurePermanent() bool

func (*DynamicNodeStatus) SetDynamicNodePhase

func (in *DynamicNodeStatus) SetDynamicNodePhase(phase DynamicNodePhase)

func (*DynamicNodeStatus) SetDynamicNodeReason

func (in *DynamicNodeStatus) SetDynamicNodeReason(reason string)

func (*DynamicNodeStatus) SetExecutionError

func (in *DynamicNodeStatus) SetExecutionError(err *core.ExecutionError)

func (*DynamicNodeStatus) SetIsFailurePermanent

func (in *DynamicNodeStatus) SetIsFailurePermanent(isFailurePermanent bool)

type EnqueueWorkflow

type EnqueueWorkflow func(workflowID WorkflowID)

Simple callback that can be used to indicate that the workflow with WorkflowID should be re-enqueued for examination.

type EventVersion

type EventVersion int
const (
	EventVersion0 EventVersion = iota
	EventVersion1
	EventVersion2
)

type ExecutableArrayNode

type ExecutableArrayNode interface {
	GetSubNodeSpec() *NodeSpec
	GetParallelism() uint32
	GetMinSuccesses() *uint32
	GetMinSuccessRatio() *float32
}

type ExecutableArrayNodeStatus

type ExecutableArrayNodeStatus interface {
	GetArrayNodePhase() ArrayNodePhase
	GetExecutionError() *core.ExecutionError
	GetSubNodePhases() bitarray.CompactArray
	GetSubNodeTaskPhases() bitarray.CompactArray
	GetSubNodeRetryAttempts() bitarray.CompactArray
	GetSubNodeSystemFailures() bitarray.CompactArray
	GetTaskPhaseVersion() uint32
}

type ExecutableBranchNode

type ExecutableBranchNode interface {
	GetIf() ExecutableIfBlock
	GetElse() *NodeID
	GetElseIf() []ExecutableIfBlock
	GetElseFail() *core.Error
}

ExecutableBranchNode is an interface for Branch node. All the methods are purely read only except for the GetExecutionStatus. p returns ExecutableBranchNodeStatus, which permits some mutations

type ExecutableBranchNodeStatus

type ExecutableBranchNodeStatus interface {
	GetPhase() BranchNodePhase
	GetFinalizedNode() *NodeID
}

Interface for branch node status. This is the mutable API for a branch node

type ExecutableDynamicNodeStatus

type ExecutableDynamicNodeStatus interface {
	GetDynamicNodePhase() DynamicNodePhase
	GetDynamicNodeReason() string
	GetExecutionError() *core.ExecutionError
	GetIsFailurePermanent() bool
}

Interface for dynamic node status.

type ExecutableGateNode

type ExecutableGateNode interface {
	GetKind() ConditionKind
	GetApprove() *core.ApproveCondition
	GetSignal() *core.SignalCondition
	GetSleep() *core.SleepCondition
}

type ExecutableGateNodeStatus

type ExecutableGateNodeStatus interface {
	GetGateNodePhase() GateNodePhase
}

type ExecutableIfBlock

type ExecutableIfBlock interface {
	GetCondition() *core.BooleanExpression
	GetThenNode() *NodeID
}

Interface for the executable If block

type ExecutableNode

type ExecutableNode interface {
	BaseNode
	IsStartNode() bool
	IsEndNode() bool
	GetTaskID() *TaskID
	GetBranchNode() ExecutableBranchNode
	GetWorkflowNode() ExecutableWorkflowNode
	GetGateNode() ExecutableGateNode
	GetArrayNode() ExecutableArrayNode
	GetOutputAlias() []Alias
	GetInputBindings() []*Binding
	GetResources() *v1.ResourceRequirements
	GetExtendedResources() *core.ExtendedResources
	GetConfig() *v1.ConfigMap
	GetRetryStrategy() *RetryStrategy
	GetExecutionDeadline() *time.Duration
	GetActiveDeadline() *time.Duration
	IsInterruptible() *bool
	GetName() string
}

ExecutableNode is an interface for the Executable Node

type ExecutableNodeStatus

type ExecutableNodeStatus interface {
	NodeStatusGetter
	MutableNodeStatus
	NodeStatusVisitor
	ExecutionTimeInfo
	GetPhase() NodePhase
	GetQueuedAt() *metav1.Time
	GetLastAttemptStartedAt() *metav1.Time
	GetParentNodeID() *NodeID
	GetParentTaskID() *core.TaskExecutionIdentifier
	GetDataDir() DataReference
	GetOutputDir() DataReference
	GetMessage() string
	GetExecutionError() *core.ExecutionError
	GetAttempts() uint32
	GetSystemFailures() uint32
	GetWorkflowNodeStatus() ExecutableWorkflowNodeStatus
	GetTaskNodeStatus() ExecutableTaskNodeStatus

	IsCached() bool
}

ExecutableNodeStatus interface for a Node p. This provides a mutable API.

type ExecutableSubWorkflow

type ExecutableSubWorkflow interface {
	BaseWorkflow
	GetOutputBindings() []*Binding
	GetOnFailureNode() ExecutableNode
	GetNodes() []NodeID
	GetConnections() *Connections
	GetOutputs() *OutputVarMap
	GetOnFailurePolicy() WorkflowOnFailurePolicy
}

ExecutableSubWorkflow interface captures the methods available on any workflow (top level or child). The Meta section is available only for the top level workflow

type ExecutableSubWorkflowNodeStatus

type ExecutableSubWorkflowNodeStatus interface {
	GetPhase() WorkflowPhase
}

type ExecutableTask

type ExecutableTask interface {
	TaskType() TaskType
	CoreTask() *core.TaskTemplate
}

Interface for a Task that can be executed

type ExecutableTaskNodeStatus

type ExecutableTaskNodeStatus interface {
	GetPhase() int
	GetPhaseVersion() uint32
	GetPluginState() []byte
	GetPluginStateVersion() uint32
	GetBarrierClockTick() uint32
	GetLastPhaseUpdatedAt() time.Time
	GetPreviousNodeExecutionCheckpointPath() DataReference
	GetCleanupOnFailure() bool
}

type ExecutableWorkflow

type ExecutableWorkflow interface {
	ExecutableSubWorkflow
	MetaExtended
	NodeStatusGetter
	GetExecutionConfig() ExecutionConfig
}

A Top level Workflow is a combination of Meta and an ExecutableSubWorkflow

type ExecutableWorkflowNode

type ExecutableWorkflowNode interface {
	GetLaunchPlanRefID() *LaunchPlanRefID
	GetSubWorkflowRef() *WorkflowID
}

ExecutableWorkflowNode is an interface for a Child Workflow Node

type ExecutableWorkflowNodeStatus

type ExecutableWorkflowNodeStatus interface {
	GetWorkflowNodePhase() WorkflowNodePhase
	GetExecutionError() *core.ExecutionError
}

type ExecutableWorkflowStatus

type ExecutableWorkflowStatus interface {
	NodeStatusGetter
	ExecutionTimeInfo
	UpdatePhase(p WorkflowPhase, msg string, err *core.ExecutionError)
	GetPhase() WorkflowPhase
	IsTerminated() bool
	GetMessage() string
	GetExecutionError() *core.ExecutionError
	SetDataDir(DataReference)
	GetDataDir() DataReference
	GetOutputReference() DataReference
	SetOutputReference(reference DataReference)
	IncFailedAttempts()
	SetMessage(msg string)
	ConstructNodeDataDir(ctx context.Context, name NodeID) (storage.DataReference, error)
}

ExecutableWorkflowStatus is an interface for the Workflow p. This is the mutable portion for a Workflow

type ExecutionConfig

type ExecutionConfig struct {
	// Maps individual task types to their alternate (non-default) plugin handlers by name.
	TaskPluginImpls map[string]TaskPluginOverride
	// Can be used to control the number of parallel nodes to run within the workflow. This is useful to achieve fairness.
	MaxParallelism uint32
	// Defines execution behavior for processing nodes.
	RecoveryExecution WorkflowExecutionIdentifier
	// Defines the resource requests and limits specified for tasks run as part of this execution that ought to be
	// applied at execution time.
	TaskResources TaskResources
	// Defines whether a workflow has been flagged as interruptible.
	Interruptible *bool
	// Defines whether a workflow should skip all its cached results and re-compute its output, overwriting any already stored data.
	OverwriteCache bool
	// Defines a map of environment variable name / value pairs that are applied to all tasks.
	EnvironmentVariables map[string]string
}

This contains workflow-execution specifications and overrides.

func (*ExecutionConfig) DeepCopy

func (in *ExecutionConfig) DeepCopy() *ExecutionConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionConfig.

func (*ExecutionConfig) DeepCopyInto

func (in *ExecutionConfig) DeepCopyInto(out *ExecutionConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExecutionError

type ExecutionError struct {
	*core.ExecutionError
}

Wrapper around core.Execution error. Execution Error has a protobuf enum and hence needs to be wrapped by custom marshaller

func (*ExecutionError) DeepCopy

func (in *ExecutionError) DeepCopy() *ExecutionError

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionError.

func (*ExecutionError) DeepCopyInto

func (in *ExecutionError) DeepCopyInto(out *ExecutionError)

func (*ExecutionError) MarshalJSON

func (in *ExecutionError) MarshalJSON() ([]byte, error)

func (*ExecutionError) UnmarshalJSON

func (in *ExecutionError) UnmarshalJSON(b []byte) error

type ExecutionID

type ExecutionID = WorkflowExecutionIdentifier

type ExecutionTimeInfo

type ExecutionTimeInfo interface {
	GetStoppedAt() *metav1.Time
	GetStartedAt() *metav1.Time
	GetLastUpdatedAt() *metav1.Time
}

type ExtendedResources

type ExtendedResources struct {
	*core.ExtendedResources
}

func (*ExtendedResources) DeepCopyInto

func (in *ExtendedResources) DeepCopyInto(out *ExtendedResources)

func (*ExtendedResources) MarshalJSON

func (in *ExtendedResources) MarshalJSON() ([]byte, error)

func (*ExtendedResources) UnmarshalJSON

func (in *ExtendedResources) UnmarshalJSON(b []byte) error

type GateNodePhase

type GateNodePhase int
const (
	GateNodePhaseUndefined GateNodePhase = iota
	GateNodePhaseExecuting
)

type GateNodeSpec

type GateNodeSpec struct {
	Kind    ConditionKind     `json:"kind"`
	Approve *ApproveCondition `json:"approve,omitempty"`
	Signal  *SignalCondition  `json:"signal,omitempty"`
	Sleep   *SleepCondition   `json:"sleep,omitempty"`
}

func (*GateNodeSpec) GetApprove

func (g *GateNodeSpec) GetApprove() *core.ApproveCondition

func (*GateNodeSpec) GetKind

func (g *GateNodeSpec) GetKind() ConditionKind

func (*GateNodeSpec) GetSignal

func (g *GateNodeSpec) GetSignal() *core.SignalCondition

func (*GateNodeSpec) GetSleep

func (g *GateNodeSpec) GetSleep() *core.SleepCondition

type GateNodeStatus

type GateNodeStatus struct {
	MutableStruct
	Phase GateNodePhase `json:"phase,omitempty"`
}

func (*GateNodeStatus) GetGateNodePhase

func (in *GateNodeStatus) GetGateNodePhase() GateNodePhase

func (*GateNodeStatus) SetGateNodePhase

func (in *GateNodeStatus) SetGateNodePhase(phase GateNodePhase)

type Identifier

type Identifier struct {
	*core.Identifier
}

func (*Identifier) DeepCopy

func (in *Identifier) DeepCopy() *Identifier

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Identifier.

func (*Identifier) DeepCopyInto

func (in *Identifier) DeepCopyInto(out *Identifier)

func (*Identifier) MarshalJSON

func (in *Identifier) MarshalJSON() ([]byte, error)

func (*Identifier) UnmarshalJSON

func (in *Identifier) UnmarshalJSON(b []byte) error

type IfBlock

type IfBlock struct {
	Condition BooleanExpression `json:"condition"`
	ThenNode  *NodeID           `json:"then"`
}

func (*IfBlock) DeepCopy

func (in *IfBlock) DeepCopy() *IfBlock

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IfBlock.

func (*IfBlock) DeepCopyInto

func (in *IfBlock) DeepCopyInto(out *IfBlock)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (IfBlock) GetCondition

func (in IfBlock) GetCondition() *core.BooleanExpression

func (*IfBlock) GetThenNode

func (in *IfBlock) GetThenNode() *NodeID

type Inputs

type Inputs struct {
	*core.LiteralMap
}

func (*Inputs) DeepCopy

func (in *Inputs) DeepCopy() *Inputs

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Inputs.

func (*Inputs) DeepCopyInto

func (in *Inputs) DeepCopyInto(out *Inputs)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Inputs) MarshalJSON

func (in *Inputs) MarshalJSON() ([]byte, error)

func (*Inputs) UnmarshalJSON

func (in *Inputs) UnmarshalJSON(b []byte) error

type LaunchPlanRefID

type LaunchPlanRefID = Identifier

type Meta

type Meta interface {
	GetExecutionID() ExecutionID
	GetK8sWorkflowID() types.NamespacedName
	GetOwnerReference() metav1.OwnerReference
	GetNamespace() string
	GetCreationTimestamp() metav1.Time
	GetAnnotations() map[string]string
	GetLabels() map[string]string
	GetName() string
	GetServiceAccountName() string
	GetSecurityContext() core.SecurityContext
	IsInterruptible() bool
	GetEventVersion() EventVersion
	GetDefinitionVersion() WorkflowDefinitionVersion
	GetRawOutputDataConfig() RawOutputDataConfig
}

Meta provides an interface to retrieve labels, annotations and other concepts that are declared only once for the top level workflow

type MetaExtended

type MetaExtended interface {
	Meta
	TaskDetailsGetter
	SubWorkflowGetter
	GetExecutionStatus() ExecutableWorkflowStatus
}

type Mutable

type Mutable interface {
	IsDirty() bool
}

type MutableArrayNodeStatus

type MutableArrayNodeStatus interface {
	Mutable
	ExecutableArrayNodeStatus
	SetArrayNodePhase(phase ArrayNodePhase)
	SetExecutionError(executionError *core.ExecutionError)
	SetSubNodePhases(subNodePhases bitarray.CompactArray)
	SetSubNodeTaskPhases(subNodeTaskPhases bitarray.CompactArray)
	SetSubNodeRetryAttempts(subNodeRetryAttempts bitarray.CompactArray)
	SetSubNodeSystemFailures(subNodeSystemFailures bitarray.CompactArray)
	SetTaskPhaseVersion(taskPhaseVersion uint32)
}

type MutableBranchNodeStatus

type MutableBranchNodeStatus interface {
	Mutable
	ExecutableBranchNodeStatus

	SetBranchNodeError()
	SetBranchNodeSuccess(id NodeID)
}

type MutableDynamicNodeStatus

type MutableDynamicNodeStatus interface {
	Mutable
	ExecutableDynamicNodeStatus

	SetDynamicNodePhase(phase DynamicNodePhase)
	SetDynamicNodeReason(reason string)
	SetExecutionError(executionError *core.ExecutionError)
	SetIsFailurePermanent(isFailurePermanent bool)
}

type MutableGateNodeStatus

type MutableGateNodeStatus interface {
	Mutable
	ExecutableGateNodeStatus
	SetGateNodePhase(phase GateNodePhase)
}

type MutableNodeStatus

type MutableNodeStatus interface {
	Mutable
	// Mutation API's
	SetDataDir(DataReference)
	SetOutputDir(d DataReference)
	SetParentNodeID(n *NodeID)
	SetParentTaskID(t *core.TaskExecutionIdentifier)
	UpdatePhase(phase NodePhase, occurredAt metav1.Time, reason string, err *core.ExecutionError)
	IncrementAttempts() uint32
	IncrementSystemFailures() uint32
	SetCached()
	ResetDirty()

	GetBranchStatus() MutableBranchNodeStatus
	GetOrCreateBranchStatus() MutableBranchNodeStatus
	GetWorkflowStatus() MutableWorkflowNodeStatus
	GetOrCreateWorkflowStatus() MutableWorkflowNodeStatus

	ClearWorkflowStatus()
	GetOrCreateTaskStatus() MutableTaskNodeStatus
	GetTaskStatus() MutableTaskNodeStatus
	ClearTaskStatus()
	GetOrCreateDynamicNodeStatus() MutableDynamicNodeStatus
	GetDynamicNodeStatus() MutableDynamicNodeStatus
	ClearDynamicNodeStatus()
	ClearLastAttemptStartedAt()
	ClearSubNodeStatus()

	GetGateNodeStatus() MutableGateNodeStatus
	GetOrCreateGateNodeStatus() MutableGateNodeStatus
	ClearGateNodeStatus()

	GetArrayNodeStatus() MutableArrayNodeStatus
	GetOrCreateArrayNodeStatus() MutableArrayNodeStatus
	ClearArrayNodeStatus()
}

type MutableStruct

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

func (*MutableStruct) DeepCopy

func (in *MutableStruct) DeepCopy() *MutableStruct

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutableStruct.

func (*MutableStruct) DeepCopyInto

func (in *MutableStruct) DeepCopyInto(out *MutableStruct)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (MutableStruct) IsDirty

func (in MutableStruct) IsDirty() bool

func (*MutableStruct) ResetDirty

func (in *MutableStruct) ResetDirty()

For testing only

func (*MutableStruct) SetDirty

func (in *MutableStruct) SetDirty()

type MutableSubWorkflowNodeStatus

type MutableSubWorkflowNodeStatus interface {
	Mutable
	ExecutableSubWorkflowNodeStatus
	SetPhase(phase WorkflowPhase)
}

type MutableTaskNodeStatus

type MutableTaskNodeStatus interface {
	Mutable
	ExecutableTaskNodeStatus
	SetPhase(phase int)
	SetLastPhaseUpdatedAt(updatedAt time.Time)
	SetPhaseVersion(version uint32)
	SetPluginState([]byte)
	SetPluginStateVersion(uint32)
	SetBarrierClockTick(tick uint32)
	SetPreviousNodeExecutionCheckpointPath(DataReference)
	SetCleanupOnFailure(bool)
}

type MutableWorkflowNodeStatus

type MutableWorkflowNodeStatus interface {
	Mutable
	ExecutableWorkflowNodeStatus
	SetWorkflowNodePhase(phase WorkflowNodePhase)
	SetExecutionError(executionError *core.ExecutionError)
}

type NebulaWorkflow

type NebulaWorkflow struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`
	*WorkflowSpec     `json:"spec"`
	WorkflowMeta      *WorkflowMeta                `json:"workflowMeta,omitempty"`
	Inputs            *Inputs                      `json:"inputs,omitempty"`
	ExecutionID       ExecutionID                  `json:"executionId"`
	Tasks             map[TaskID]*TaskSpec         `json:"tasks"`
	SubWorkflows      map[WorkflowID]*WorkflowSpec `json:"subWorkflows,omitempty"`
	// StartTime before the system will actively try to mark it failed and kill associated containers.
	// Value must be a positive integer.
	// +optional
	ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty"`
	// Defaults value of parameters to be used for nodes if not set by the node.
	NodeDefaults NodeDefaults `json:"node-defaults,omitempty"`
	// Specifies the time when the workflow has been accepted into the system.
	AcceptedAt *metav1.Time `json:"acceptedAt,omitempty"`
	// [DEPRECATED] ServiceAccountName is the name of the ServiceAccount to use to run this pod.
	// [DEPRECATED] More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
	// [DEPRECATED] +optional
	ServiceAccountName string `json:"serviceAccountName,omitempty" protobuf:"bytes,8,opt,name=serviceAccountName"`
	// Security context fields to define privilege and access control settings
	// +optional
	SecurityContext core.SecurityContext `json:"securityContext,omitempty" protobuf:"bytes,12,rep,name=securityContext"`
	// Status is the only mutable section in the workflow. It holds all the execution information
	Status WorkflowStatus `json:"status,omitempty"`
	// RawOutputDataConfig defines the configurations to use for generating raw outputs (e.g. blobs, schemas).
	RawOutputDataConfig RawOutputDataConfig `json:"rawOutputDataConfig,omitempty"`
	// Workflow-execution specifications and overrides
	ExecutionConfig ExecutionConfig `json:"executionConfig,omitempty"`

	// non-Serialized fields (these will not get written to etcd)
	// As of 2020-07, the only real implementation of this interface is a URLPathConstructor, which is just an empty
	// struct. However, because this field is an interface, we create it once when the crd is hydrated from etcd,
	// so that it can be used downstream without any confusion.
	// This field is here because it's easier to put it here than pipe through a new object through all of propeller.
	DataReferenceConstructor storage.ReferenceConstructor `json:"-"`

	// WorkflowClosureReference is the location containing an offloaded WorkflowClosure. This is used to offload
	// portions of the CRD to an external data store to reduce CRD size. If this exists, NebulaPropeller must retrieve
	// and parse the static data prior to processing.
	WorkflowClosureReference DataReference `json:"workflowClosureReference,omitempty"`
}

NebulaWorkflow: represents one Execution Workflow object

func (*NebulaWorkflow) DeepCopy

func (in *NebulaWorkflow) DeepCopy() *NebulaWorkflow

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NebulaWorkflow.

func (*NebulaWorkflow) DeepCopyInto

func (in *NebulaWorkflow) DeepCopyInto(out *NebulaWorkflow)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*NebulaWorkflow) DeepCopyObject

func (in *NebulaWorkflow) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*NebulaWorkflow) FindSubWorkflow

func (in *NebulaWorkflow) FindSubWorkflow(subID WorkflowID) ExecutableSubWorkflow

func (*NebulaWorkflow) GetDefinitionVersion

func (in *NebulaWorkflow) GetDefinitionVersion() WorkflowDefinitionVersion

func (*NebulaWorkflow) GetEventVersion

func (in *NebulaWorkflow) GetEventVersion() EventVersion

func (*NebulaWorkflow) GetExecutionConfig

func (in *NebulaWorkflow) GetExecutionConfig() ExecutionConfig

func (*NebulaWorkflow) GetExecutionID

func (in *NebulaWorkflow) GetExecutionID() ExecutionID

func (*NebulaWorkflow) GetExecutionStatus

func (in *NebulaWorkflow) GetExecutionStatus() ExecutableWorkflowStatus

func (*NebulaWorkflow) GetK8sWorkflowID

func (in *NebulaWorkflow) GetK8sWorkflowID() types.NamespacedName

func (*NebulaWorkflow) GetNodeExecutionStatus

func (in *NebulaWorkflow) GetNodeExecutionStatus(ctx context.Context, id NodeID) ExecutableNodeStatus

func (*NebulaWorkflow) GetOwnerReference

func (in *NebulaWorkflow) GetOwnerReference() metav1.OwnerReference

func (*NebulaWorkflow) GetRawOutputDataConfig

func (in *NebulaWorkflow) GetRawOutputDataConfig() RawOutputDataConfig

func (*NebulaWorkflow) GetSecurityContext

func (in *NebulaWorkflow) GetSecurityContext() core.SecurityContext

func (*NebulaWorkflow) GetServiceAccountName

func (in *NebulaWorkflow) GetServiceAccountName() string

func (*NebulaWorkflow) GetTask

func (in *NebulaWorkflow) GetTask(id TaskID) (ExecutableTask, error)

func (*NebulaWorkflow) IsInterruptible

func (in *NebulaWorkflow) IsInterruptible() bool

type NebulaWorkflowList

type NebulaWorkflowList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`
	Items           []NebulaWorkflow `json:"items"`
}

+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object NebulaWorkflowList is a list of NebulaWorkflow resources

func (*NebulaWorkflowList) DeepCopy

func (in *NebulaWorkflowList) DeepCopy() *NebulaWorkflowList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NebulaWorkflowList.

func (*NebulaWorkflowList) DeepCopyInto

func (in *NebulaWorkflowList) DeepCopyInto(out *NebulaWorkflowList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*NebulaWorkflowList) DeepCopyObject

func (in *NebulaWorkflowList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type NodeDefaults

type NodeDefaults struct {
	// Default behaviour for Interruptible for nodes unless explicitly set at the node level.
	Interruptible bool `json:"interruptible,omitempty"`
}

func (*NodeDefaults) DeepCopy

func (in *NodeDefaults) DeepCopy() *NodeDefaults

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeDefaults.

func (*NodeDefaults) DeepCopyInto

func (in *NodeDefaults) DeepCopyInto(out *NodeDefaults)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NodeGetter

type NodeGetter interface {
	GetNode(nodeID NodeID) (ExecutableNode, bool)
}

type NodeID

type NodeID = string

type NodeKind

type NodeKind string

NodeKind refers to the type of Node.

const (
	// TODO Should we default a NodeKindTask to empty? thus we can assume all unspecified nodetypes as task
	NodeKindTask     NodeKind = "task"
	NodeKindBranch   NodeKind = "branch"   // A Branch node with conditions
	NodeKindWorkflow NodeKind = "workflow" // Either an inline workflow or a remote workflow definition
	NodeKindGate     NodeKind = "gate"     // A Gate node with a condition
	NodeKindArray    NodeKind = "array"    // An array node with a subtask Node
	NodeKindStart    NodeKind = "start"    // Start node is a special node
	NodeKindEnd      NodeKind = "end"
)

func (NodeKind) String

func (n NodeKind) String() string

type NodeMetadata

type NodeMetadata struct {
	core.NodeMetadata
}

func (*NodeMetadata) DeepCopy

func (in *NodeMetadata) DeepCopy() *NodeMetadata

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeMetadata.

func (*NodeMetadata) DeepCopyInto

func (in *NodeMetadata) DeepCopyInto(out *NodeMetadata)

type NodePhase

type NodePhase int

NodePhase indicates the current state of the Node (phase). A node progresses through these states

const (
	NodePhaseNotYetStarted NodePhase = iota
	NodePhaseQueued
	NodePhaseRunning
	NodePhaseFailing
	NodePhaseSucceeding
	NodePhaseSucceeded
	NodePhaseFailed
	NodePhaseSkipped
	NodePhaseRetryableFailure
	NodePhaseTimingOut
	NodePhaseTimedOut
	NodePhaseDynamicRunning
	NodePhaseRecovered
)

func (NodePhase) String

func (p NodePhase) String() string

type NodeSpec

type NodeSpec struct {
	ID            NodeID                        `json:"id"`
	Name          string                        `json:"name,omitempty"`
	Resources     *typesv1.ResourceRequirements `json:"resources,omitempty"`
	Kind          NodeKind                      `json:"kind"`
	BranchNode    *BranchNodeSpec               `json:"branch,omitempty"`
	TaskRef       *TaskID                       `json:"task,omitempty"`
	WorkflowNode  *WorkflowNodeSpec             `json:"workflow,omitempty"`
	GateNode      *GateNodeSpec                 `json:"gate,omitempty"`
	ArrayNode     *ArrayNodeSpec                `json:"array,omitempty"`
	InputBindings []*Binding                    `json:"inputBindings,omitempty"`
	Config        *typesv1.ConfigMap            `json:"config,omitempty"`
	RetryStrategy *RetryStrategy                `json:"retry,omitempty"`
	OutputAliases []Alias                       `json:"outputAlias,omitempty"`

	// SecurityContext holds pod-level security attributes and common container settings.
	// Optional: Defaults to empty.  See type description for default values of each field.
	// +optional
	SecurityContext *typesv1.PodSecurityContext `json:"securityContext,omitempty" protobuf:"bytes,14,opt,name=securityContext"`
	// ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
	// If specified, these secrets will be passed to individual puller implementations for them to use. For example,
	// in the case of docker, only DockerConfig type secrets are honored.
	// More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
	// +optional
	// +patchMergeKey=name
	// +patchStrategy=merge
	ImagePullSecrets []typesv1.LocalObjectReference `json:"imagePullSecrets,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,15,rep,name=imagePullSecrets"`
	// Specifies the hostname of the Pod
	// If not specified, the pod's hostname will be set to a system-defined value.
	// +optional
	Hostname string `json:"hostname,omitempty" protobuf:"bytes,16,opt,name=hostname"`
	// If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>".
	// If not specified, the pod will not have a domainname at all.
	// +optional
	Subdomain string `json:"subdomain,omitempty" protobuf:"bytes,17,opt,name=subdomain"`
	// If specified, the pod's scheduling constraints
	// +optional
	Affinity *typesv1.Affinity `json:"affinity,omitempty" protobuf:"bytes,18,opt,name=affinity"`
	// If specified, the pod will be dispatched by specified scheduler.
	// If not specified, the pod will be dispatched by default scheduler.
	// +optional
	SchedulerName string `json:"schedulerName,omitempty" protobuf:"bytes,19,opt,name=schedulerName"`
	// If specified, includes overrides for extended resources to allocate to the
	// node.
	// +optional
	ExtendedResources *ExtendedResources `json:"extendedResources,omitempty" protobuf:"bytes,20,opt,name=extendedResources"`
	// If specified, the pod's tolerations.
	// +optional
	Tolerations []typesv1.Toleration `json:"tolerations,omitempty" protobuf:"bytes,22,opt,name=tolerations"`
	// Node execution timeout
	ExecutionDeadline *v1.Duration `json:"executionDeadline,omitempty"`
	// StartTime before the system will actively try to mark it failed and kill associated containers.
	// Value must be a positive integer. This includes time spent waiting in the queue.
	// +optional
	ActiveDeadline *v1.Duration `json:"activeDeadline,omitempty"`
	// The value set to True means task is OK with getting interrupted
	// +optional
	Interruptible *bool `json:"interruptible,omitempty"`
}

func (*NodeSpec) DeepCopy

func (in *NodeSpec) DeepCopy() *NodeSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeSpec.

func (*NodeSpec) DeepCopyInto

func (in *NodeSpec) DeepCopyInto(out *NodeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*NodeSpec) GetActiveDeadline

func (in *NodeSpec) GetActiveDeadline() *time.Duration

func (*NodeSpec) GetArrayNode

func (in *NodeSpec) GetArrayNode() ExecutableArrayNode

func (*NodeSpec) GetBranchNode

func (in *NodeSpec) GetBranchNode() ExecutableBranchNode

func (*NodeSpec) GetConfig

func (in *NodeSpec) GetConfig() *typesv1.ConfigMap

func (*NodeSpec) GetExecutionDeadline

func (in *NodeSpec) GetExecutionDeadline() *time.Duration

func (*NodeSpec) GetExtendedResources

func (in *NodeSpec) GetExtendedResources() *core.ExtendedResources

func (*NodeSpec) GetGateNode

func (in *NodeSpec) GetGateNode() ExecutableGateNode

func (*NodeSpec) GetID

func (in *NodeSpec) GetID() NodeID

func (*NodeSpec) GetInputBindings

func (in *NodeSpec) GetInputBindings() []*Binding

func (*NodeSpec) GetKind

func (in *NodeSpec) GetKind() NodeKind

func (*NodeSpec) GetName

func (in *NodeSpec) GetName() string

func (*NodeSpec) GetOutputAlias

func (in *NodeSpec) GetOutputAlias() []Alias

func (*NodeSpec) GetResources

func (in *NodeSpec) GetResources() *typesv1.ResourceRequirements

func (*NodeSpec) GetRetryStrategy

func (in *NodeSpec) GetRetryStrategy() *RetryStrategy

func (*NodeSpec) GetTaskID

func (in *NodeSpec) GetTaskID() *TaskID

func (*NodeSpec) GetWorkflowNode

func (in *NodeSpec) GetWorkflowNode() ExecutableWorkflowNode

func (*NodeSpec) IsEndNode

func (in *NodeSpec) IsEndNode() bool

func (*NodeSpec) IsInterruptible

func (in *NodeSpec) IsInterruptible() *bool

func (*NodeSpec) IsStartNode

func (in *NodeSpec) IsStartNode() bool

type NodeStatus

type NodeStatus struct {
	MutableStruct
	Phase                NodePhase     `json:"phase,omitempty"`
	QueuedAt             *metav1.Time  `json:"queuedAt,omitempty"`
	StartedAt            *metav1.Time  `json:"startedAt,omitempty"`
	StoppedAt            *metav1.Time  `json:"stoppedAt,omitempty"`
	LastUpdatedAt        *metav1.Time  `json:"lastUpdatedAt,omitempty"`
	LastAttemptStartedAt *metav1.Time  `json:"laStartedAt,omitempty"`
	Message              string        `json:"message,omitempty"`
	DataDir              DataReference `json:"-"`
	OutputDir            DataReference `json:"-"`
	Attempts             uint32        `json:"attempts,omitempty"`
	SystemFailures       uint32        `json:"systemFailures,omitempty"`
	Cached               bool          `json:"cached,omitempty"`

	// This is useful only for branch nodes. If this is set, then it can be used to determine if execution can proceed
	ParentNode    *NodeID                  `json:"parentNode,omitempty"`
	ParentTask    *TaskExecutionIdentifier `json:"-"`
	BranchStatus  *BranchNodeStatus        `json:"branchStatus,omitempty"`
	SubNodeStatus map[NodeID]*NodeStatus   `json:"subNodeStatus,omitempty"`

	// TODO not used delete
	WorkflowNodeStatus *WorkflowNodeStatus `json:"workflowNodeStatus,omitempty"`

	TaskNodeStatus    *TaskNodeStatus    `json:",omitempty"`
	DynamicNodeStatus *DynamicNodeStatus `json:"dynamicNodeStatus,omitempty"`
	GateNodeStatus    *GateNodeStatus    `json:"gateNodeStatus,omitempty"`
	ArrayNodeStatus   *ArrayNodeStatus   `json:"arrayNodeStatus,omitempty"`
	// In case of Failing/Failed Phase, an execution error can be optionally associated with the Node
	Error *ExecutionError `json:"error,omitempty"`

	// Not Persisted
	DataReferenceConstructor storage.ReferenceConstructor `json:"-"`
}

func (*NodeStatus) ClearArrayNodeStatus

func (in *NodeStatus) ClearArrayNodeStatus()

func (*NodeStatus) ClearDynamicNodeStatus

func (in *NodeStatus) ClearDynamicNodeStatus()

func (*NodeStatus) ClearGateNodeStatus

func (in *NodeStatus) ClearGateNodeStatus()

func (*NodeStatus) ClearLastAttemptStartedAt

func (in *NodeStatus) ClearLastAttemptStartedAt()

func (*NodeStatus) ClearSubNodeStatus

func (in *NodeStatus) ClearSubNodeStatus()

func (*NodeStatus) ClearTaskStatus

func (in *NodeStatus) ClearTaskStatus()

func (*NodeStatus) ClearWorkflowStatus

func (in *NodeStatus) ClearWorkflowStatus()

func (*NodeStatus) DeepCopy

func (in *NodeStatus) DeepCopy() *NodeStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeStatus.

func (*NodeStatus) DeepCopyInto

func (in *NodeStatus) DeepCopyInto(out *NodeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*NodeStatus) Equals

func (in *NodeStatus) Equals(other *NodeStatus) bool

func (*NodeStatus) GetArrayNodeStatus

func (in *NodeStatus) GetArrayNodeStatus() MutableArrayNodeStatus

func (*NodeStatus) GetAttempts

func (in *NodeStatus) GetAttempts() uint32

func (*NodeStatus) GetBranchStatus

func (in *NodeStatus) GetBranchStatus() MutableBranchNodeStatus

func (*NodeStatus) GetDataDir

func (in *NodeStatus) GetDataDir() DataReference

func (NodeStatus) GetDynamicNodeStatus

func (in NodeStatus) GetDynamicNodeStatus() MutableDynamicNodeStatus

func (*NodeStatus) GetExecutionError

func (in *NodeStatus) GetExecutionError() *core.ExecutionError

func (*NodeStatus) GetGateNodeStatus

func (in *NodeStatus) GetGateNodeStatus() MutableGateNodeStatus

func (*NodeStatus) GetLastAttemptStartedAt

func (in *NodeStatus) GetLastAttemptStartedAt() *metav1.Time

func (*NodeStatus) GetLastUpdatedAt

func (in *NodeStatus) GetLastUpdatedAt() *metav1.Time

func (*NodeStatus) GetMessage

func (in *NodeStatus) GetMessage() string

func (*NodeStatus) GetNodeExecutionStatus

func (in *NodeStatus) GetNodeExecutionStatus(ctx context.Context, id NodeID) ExecutableNodeStatus

func (*NodeStatus) GetOrCreateArrayNodeStatus

func (in *NodeStatus) GetOrCreateArrayNodeStatus() MutableArrayNodeStatus

func (*NodeStatus) GetOrCreateBranchStatus

func (in *NodeStatus) GetOrCreateBranchStatus() MutableBranchNodeStatus

func (*NodeStatus) GetOrCreateDynamicNodeStatus

func (in *NodeStatus) GetOrCreateDynamicNodeStatus() MutableDynamicNodeStatus

func (*NodeStatus) GetOrCreateGateNodeStatus

func (in *NodeStatus) GetOrCreateGateNodeStatus() MutableGateNodeStatus

func (*NodeStatus) GetOrCreateTaskStatus

func (in *NodeStatus) GetOrCreateTaskStatus() MutableTaskNodeStatus

func (*NodeStatus) GetOrCreateWorkflowStatus

func (in *NodeStatus) GetOrCreateWorkflowStatus() MutableWorkflowNodeStatus

func (*NodeStatus) GetOutputDir

func (in *NodeStatus) GetOutputDir() DataReference

func (*NodeStatus) GetParentNodeID

func (in *NodeStatus) GetParentNodeID() *NodeID

func (*NodeStatus) GetParentTaskID

func (in *NodeStatus) GetParentTaskID() *core.TaskExecutionIdentifier

func (*NodeStatus) GetPhase

func (in *NodeStatus) GetPhase() NodePhase

func (*NodeStatus) GetQueuedAt

func (in *NodeStatus) GetQueuedAt() *metav1.Time

func (*NodeStatus) GetStartedAt

func (in *NodeStatus) GetStartedAt() *metav1.Time

func (*NodeStatus) GetStoppedAt

func (in *NodeStatus) GetStoppedAt() *metav1.Time

func (*NodeStatus) GetSystemFailures

func (in *NodeStatus) GetSystemFailures() uint32

func (NodeStatus) GetTaskNodeStatus

func (in NodeStatus) GetTaskNodeStatus() ExecutableTaskNodeStatus

func (*NodeStatus) GetTaskStatus

func (in *NodeStatus) GetTaskStatus() MutableTaskNodeStatus

func (*NodeStatus) GetWorkflowNodeStatus

func (in *NodeStatus) GetWorkflowNodeStatus() ExecutableWorkflowNodeStatus

func (*NodeStatus) GetWorkflowStatus

func (in *NodeStatus) GetWorkflowStatus() MutableWorkflowNodeStatus

func (*NodeStatus) IncrementAttempts

func (in *NodeStatus) IncrementAttempts() uint32

func (*NodeStatus) IncrementSystemFailures

func (in *NodeStatus) IncrementSystemFailures() uint32

func (*NodeStatus) IsCached

func (in *NodeStatus) IsCached() bool

func (*NodeStatus) IsDirty

func (in *NodeStatus) IsDirty() bool

func (*NodeStatus) IsTerminated

func (in *NodeStatus) IsTerminated() bool

func (*NodeStatus) ResetDirty

func (in *NodeStatus) ResetDirty()

ResetDirty is for unit tests, shouldn't be used in actual logic.

func (*NodeStatus) SetCached

func (in *NodeStatus) SetCached()

func (*NodeStatus) SetDataDir

func (in *NodeStatus) SetDataDir(d DataReference)

func (*NodeStatus) SetOutputDir

func (in *NodeStatus) SetOutputDir(d DataReference)

func (*NodeStatus) SetParentNodeID

func (in *NodeStatus) SetParentNodeID(n *NodeID)

func (*NodeStatus) SetParentTaskID

func (in *NodeStatus) SetParentTaskID(t *core.TaskExecutionIdentifier)

func (*NodeStatus) UpdatePhase

func (in *NodeStatus) UpdatePhase(p NodePhase, occurredAt metav1.Time, reason string, err *core.ExecutionError)

func (NodeStatus) VisitNodeStatuses

func (in NodeStatus) VisitNodeStatuses(visitor NodeStatusVisitFn)

type NodeStatusGetter

type NodeStatusGetter interface {
	GetNodeExecutionStatus(ctx context.Context, id NodeID) ExecutableNodeStatus
}

type NodeStatusMap

type NodeStatusMap = map[NodeID]ExecutableNodeStatus

type NodeStatusVisitFn

type NodeStatusVisitFn = func(node NodeID, status ExecutableNodeStatus)

type NodeStatusVisitor

type NodeStatusVisitor interface {
	VisitNodeStatuses(visitor NodeStatusVisitFn)
}

type OutputVarMap

type OutputVarMap struct {
	*core.VariableMap
}

func (*OutputVarMap) DeepCopy

func (in *OutputVarMap) DeepCopy() *OutputVarMap

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutputVarMap.

func (*OutputVarMap) DeepCopyInto

func (in *OutputVarMap) DeepCopyInto(out *OutputVarMap)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*OutputVarMap) MarshalJSON

func (in *OutputVarMap) MarshalJSON() ([]byte, error)

func (*OutputVarMap) UnmarshalJSON

func (in *OutputVarMap) UnmarshalJSON(b []byte) error

type RawOutputDataConfig

type RawOutputDataConfig struct {
	*admin.RawOutputDataConfig
}

This contains an OutputLocationPrefix. When running against AWS, this should be something of the form s3://my-bucket, or s3://my-bucket/ A sharding string will automatically be appended to this prefix before handing off to plugins/tasks. Sharding behavior may change in the future. Background available at https://github.com/nebulaclouds/nebula/issues/211

func (*RawOutputDataConfig) DeepCopy

func (in *RawOutputDataConfig) DeepCopy() *RawOutputDataConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RawOutputDataConfig.

func (*RawOutputDataConfig) DeepCopyInto

func (in *RawOutputDataConfig) DeepCopyInto(out *RawOutputDataConfig)

type RetryStrategy

type RetryStrategy struct {
	// MinAttempts implies the at least n attempts to try this node before giving up. The at least here is because we may
	// fail to write the attempt information and end up retrying again.
	// Also `0` and `1` both mean at least one attempt will be done. 0 is a degenerate case.
	MinAttempts *int `json:"minAttempts"`
}

Strategy to be used to Retry a node that is in RetryableFailure state

func (*RetryStrategy) DeepCopy

func (in *RetryStrategy) DeepCopy() *RetryStrategy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetryStrategy.

func (*RetryStrategy) DeepCopyInto

func (in *RetryStrategy) DeepCopyInto(out *RetryStrategy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SignalCondition

type SignalCondition struct {
	*core.SignalCondition
}

func (SignalCondition) MarshalJSON

func (in SignalCondition) MarshalJSON() ([]byte, error)

func (*SignalCondition) UnmarshalJSON

func (in *SignalCondition) UnmarshalJSON(b []byte) error

type SleepCondition

type SleepCondition struct {
	*core.SleepCondition
}

func (SleepCondition) MarshalJSON

func (in SleepCondition) MarshalJSON() ([]byte, error)

func (*SleepCondition) UnmarshalJSON

func (in *SleepCondition) UnmarshalJSON(b []byte) error

type SubWorkflowGetter

type SubWorkflowGetter interface {
	FindSubWorkflow(subID WorkflowID) ExecutableSubWorkflow
}

type TaskDetailsGetter

type TaskDetailsGetter interface {
	GetTask(id TaskID) (ExecutableTask, error)
}

type TaskExecutionIdentifier

type TaskExecutionIdentifier struct {
	*core.TaskExecutionIdentifier
}

func (*TaskExecutionIdentifier) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskExecutionIdentifier.

func (*TaskExecutionIdentifier) DeepCopyInto

func (in *TaskExecutionIdentifier) DeepCopyInto(out *TaskExecutionIdentifier)

type TaskID

type TaskID = string

type TaskNodeStatus

type TaskNodeStatus struct {
	MutableStruct
	Phase                               int           `json:"phase,omitempty"`
	PhaseVersion                        uint32        `json:"phaseVersion,omitempty"`
	PluginState                         []byte        `json:"pState,omitempty"`
	PluginStateVersion                  uint32        `json:"psv,omitempty"`
	BarrierClockTick                    uint32        `json:"tick,omitempty"`
	LastPhaseUpdatedAt                  time.Time     `json:"updAt,omitempty"`
	PreviousNodeExecutionCheckpointPath DataReference `json:"checkpointPath,omitempty"`
	CleanupOnFailure                    bool          `json:"clean,omitempty"`
}

func (*TaskNodeStatus) DeepCopy

func (in *TaskNodeStatus) DeepCopy() *TaskNodeStatus

func (*TaskNodeStatus) DeepCopyInto

func (in *TaskNodeStatus) DeepCopyInto(out *TaskNodeStatus)

func (*TaskNodeStatus) Equals

func (in *TaskNodeStatus) Equals(other *TaskNodeStatus) bool

func (*TaskNodeStatus) GetBarrierClockTick

func (in *TaskNodeStatus) GetBarrierClockTick() uint32

func (TaskNodeStatus) GetCleanupOnFailure

func (in TaskNodeStatus) GetCleanupOnFailure() bool

func (TaskNodeStatus) GetLastPhaseUpdatedAt

func (in TaskNodeStatus) GetLastPhaseUpdatedAt() time.Time

func (TaskNodeStatus) GetPhase

func (in TaskNodeStatus) GetPhase() int

func (TaskNodeStatus) GetPhaseVersion

func (in TaskNodeStatus) GetPhaseVersion() uint32

func (*TaskNodeStatus) GetPluginState

func (in *TaskNodeStatus) GetPluginState() []byte

func (*TaskNodeStatus) GetPluginStateVersion

func (in *TaskNodeStatus) GetPluginStateVersion() uint32

func (TaskNodeStatus) GetPreviousNodeExecutionCheckpointPath

func (in TaskNodeStatus) GetPreviousNodeExecutionCheckpointPath() DataReference

func (*TaskNodeStatus) SetBarrierClockTick

func (in *TaskNodeStatus) SetBarrierClockTick(tick uint32)

func (*TaskNodeStatus) SetCleanupOnFailure

func (in *TaskNodeStatus) SetCleanupOnFailure(cleanupOnFailure bool)

func (*TaskNodeStatus) SetLastPhaseUpdatedAt

func (in *TaskNodeStatus) SetLastPhaseUpdatedAt(updatedAt time.Time)

func (*TaskNodeStatus) SetPhase

func (in *TaskNodeStatus) SetPhase(phase int)

func (*TaskNodeStatus) SetPhaseVersion

func (in *TaskNodeStatus) SetPhaseVersion(version uint32)

func (*TaskNodeStatus) SetPluginState

func (in *TaskNodeStatus) SetPluginState(s []byte)

func (*TaskNodeStatus) SetPluginStateVersion

func (in *TaskNodeStatus) SetPluginStateVersion(v uint32)

func (*TaskNodeStatus) SetPreviousNodeExecutionCheckpointPath

func (in *TaskNodeStatus) SetPreviousNodeExecutionCheckpointPath(path DataReference)

func (*TaskNodeStatus) UpdatePhase

func (in *TaskNodeStatus) UpdatePhase(phase int, phaseVersion uint32)

type TaskPluginOverride

type TaskPluginOverride struct {
	PluginIDs             []string
	MissingPluginBehavior admin.PluginOverride_MissingPluginBehavior
}

func (*TaskPluginOverride) DeepCopy

func (in *TaskPluginOverride) DeepCopy() *TaskPluginOverride

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskPluginOverride.

func (*TaskPluginOverride) DeepCopyInto

func (in *TaskPluginOverride) DeepCopyInto(out *TaskPluginOverride)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TaskResourceSpec

type TaskResourceSpec struct {
	CPU              resource.Quantity
	Memory           resource.Quantity
	EphemeralStorage resource.Quantity
	Storage          resource.Quantity
	GPU              resource.Quantity
}

Defines a set of configurable resources of different types that a task can request or apply as limits.

type TaskResources

type TaskResources struct {
	// If the node where a task is running has enough of a resource available, a
	// container may use more resources than its request for that resource specifies.
	Requests TaskResourceSpec
	// A hard limit, a task cannot consume resources greater than the limit specifies.
	Limits TaskResourceSpec
}

Defines the complete closure of compute resources a task can request and apply as limits.

type TaskSpec

type TaskSpec struct {
	*core.TaskTemplate
}

func (*TaskSpec) CoreTask

func (in *TaskSpec) CoreTask() *core.TaskTemplate

func (*TaskSpec) DeepCopy

func (in *TaskSpec) DeepCopy() *TaskSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskSpec.

func (*TaskSpec) DeepCopyInto

func (in *TaskSpec) DeepCopyInto(out *TaskSpec)

func (*TaskSpec) MarshalJSON

func (in *TaskSpec) MarshalJSON() ([]byte, error)

func (*TaskSpec) TaskType

func (in *TaskSpec) TaskType() TaskType

func (*TaskSpec) UnmarshalJSON

func (in *TaskSpec) UnmarshalJSON(b []byte) error

type TaskType

type TaskType = string

TaskType is a dynamic enumeration, that is defined by configuration

type WorkflowDefinitionVersion

type WorkflowDefinitionVersion uint32
const (
	WorkflowDefinitionVersion0 WorkflowDefinitionVersion = iota
	WorkflowDefinitionVersion1
)

type WorkflowExecutionIdentifier

type WorkflowExecutionIdentifier struct {
	*core.WorkflowExecutionIdentifier
}

func (*WorkflowExecutionIdentifier) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowExecutionIdentifier.

func (*WorkflowExecutionIdentifier) DeepCopyInto

type WorkflowID

type WorkflowID = string

type WorkflowMeta

type WorkflowMeta struct {
	EventVersion EventVersion `json:"eventVersion,omitempty"`
}

func (*WorkflowMeta) DeepCopy

func (in *WorkflowMeta) DeepCopy() *WorkflowMeta

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowMeta.

func (*WorkflowMeta) DeepCopyInto

func (in *WorkflowMeta) DeepCopyInto(out *WorkflowMeta)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkflowNodePhase

type WorkflowNodePhase int
const (
	WorkflowNodePhaseUndefined WorkflowNodePhase = iota
	WorkflowNodePhaseExecuting
	WorkflowNodePhaseFailing
)

type WorkflowNodeSpec

type WorkflowNodeSpec struct {
	// Either one of the two
	LaunchPlanRefID *LaunchPlanRefID `json:"launchPlanRefId,omitempty"`
	// We currently want the SubWorkflow to be completely contained in the node. this is because
	// We use the node status to store the information of the execution.
	// Important Note: This may cause a bloat in case we use the same SubWorkflow in multiple nodes. The recommended
	// technique for that is to use launch plan refs. This is because we will end up executing the launch plan refs as
	// disparate executions in Nebula propeller. This is potentially better as it prevents us from hitting the storage limit
	// in etcd
	//+optional.
	// Workflow *WorkflowSpec `json:"workflow,omitempty"`
	SubWorkflowReference *WorkflowID `json:"subWorkflowRef,omitempty"`
}

func (*WorkflowNodeSpec) DeepCopy

func (in *WorkflowNodeSpec) DeepCopy() *WorkflowNodeSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowNodeSpec.

func (*WorkflowNodeSpec) DeepCopyInto

func (in *WorkflowNodeSpec) DeepCopyInto(out *WorkflowNodeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*WorkflowNodeSpec) GetLaunchPlanRefID

func (in *WorkflowNodeSpec) GetLaunchPlanRefID() *LaunchPlanRefID

func (*WorkflowNodeSpec) GetSubWorkflowRef

func (in *WorkflowNodeSpec) GetSubWorkflowRef() *WorkflowID

type WorkflowNodeStatus

type WorkflowNodeStatus struct {
	MutableStruct
	Phase          WorkflowNodePhase    `json:"phase,omitempty"`
	ExecutionError *core.ExecutionError `json:"executionError,omitempty"`
}

func (*WorkflowNodeStatus) DeepCopy

func (in *WorkflowNodeStatus) DeepCopy() *WorkflowNodeStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowNodeStatus.

func (*WorkflowNodeStatus) DeepCopyInto

func (in *WorkflowNodeStatus) DeepCopyInto(out *WorkflowNodeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*WorkflowNodeStatus) GetExecutionError

func (in *WorkflowNodeStatus) GetExecutionError() *core.ExecutionError

func (*WorkflowNodeStatus) GetWorkflowNodePhase

func (in *WorkflowNodeStatus) GetWorkflowNodePhase() WorkflowNodePhase

func (*WorkflowNodeStatus) SetExecutionError

func (in *WorkflowNodeStatus) SetExecutionError(executionError *core.ExecutionError)

func (*WorkflowNodeStatus) SetWorkflowNodePhase

func (in *WorkflowNodeStatus) SetWorkflowNodePhase(phase WorkflowNodePhase)

type WorkflowOnFailurePolicy

type WorkflowOnFailurePolicy core.WorkflowMetadata_OnFailurePolicy

Failure Handling Policy

func WorkflowOnFailurePolicyString

func WorkflowOnFailurePolicyString(policy string) (WorkflowOnFailurePolicy, error)

func (WorkflowOnFailurePolicy) MarshalJSON

func (in WorkflowOnFailurePolicy) MarshalJSON() ([]byte, error)

func (*WorkflowOnFailurePolicy) UnmarshalJSON

func (in *WorkflowOnFailurePolicy) UnmarshalJSON(data []byte) error

type WorkflowPhase

type WorkflowPhase int

WorkflowPhase indicates current state of the Workflow.

const (
	WorkflowPhaseReady WorkflowPhase = iota
	WorkflowPhaseRunning
	WorkflowPhaseSucceeding
	WorkflowPhaseSuccess
	WorkflowPhaseFailing
	WorkflowPhaseFailed
	WorkflowPhaseAborted
	// WorkflowPhaseHandlingFailureNode is the phase the workflow will enter when a failure is detected in the workflow,
	// the workflow has finished cleaning up (aborted running nodes... etc.) and a failure node is declared in the
	// workflow spec. We enter this explicit phase so as to ensure we do not attempt to repeatedly clean up old nodes
	// when handling a workflow event which might yield to seemingly random failures. This phase ensure we are handling,
	// and only so, the failure node until it's done executing or it fails itself.
	// If a failure node fails to execute (a real possibility), the final failure output of the workflow will only include
	// its failure reason. In other words, its failure will mask the original failure for the workflow. It's imperative
	// failure nodes should be very simple, very resilient and very well tested.
	WorkflowPhaseHandlingFailureNode
)

func (WorkflowPhase) String

func (p WorkflowPhase) String() string

type WorkflowSpec

type WorkflowSpec struct {
	ID    WorkflowID           `json:"id"`
	Nodes map[NodeID]*NodeSpec `json:"nodes"`

	// Defines the set of connections (both data dependencies and execution dependencies) that the graph is
	// formed of. The execution engine will respect and follow these connections as it determines which nodes
	// can and should be executed.
	// Deprecated: Please use Connections
	DeprecatedConnections DeprecatedConnections `json:"connections"`

	// Defines the set of connections (both data dependencies and execution dependencies) that the graph is
	// formed of. The execution engine will respect and follow these connections as it determines which nodes
	// can and should be executed.
	Connections Connections `json:"edges"`

	// Defines a single node to execute in case the system determined the Workflow has failed.
	OnFailure *NodeSpec `json:"onFailure,omitempty"`

	// Defines the declaration of the outputs types and names this workflow is expected to generate.
	Outputs *OutputVarMap `json:"outputs,omitempty"`

	// Defines the data links used to construct the final outputs of the workflow. Bindings will typically
	// refer to specific outputs of a subset of the nodes executed in the Workflow. When executing the end-node,
	// the execution engine will traverse these bindings and assemble the final set of outputs of the workflow.
	OutputBindings []*Binding `json:"outputBindings,omitempty"`

	// Defines the policy for handling failures whether it's to fail immediately, or let the nodes run
	// to completion.
	OnFailurePolicy WorkflowOnFailurePolicy `json:"onFailurePolicy,omitempty"`
}

WorkflowSpec is the spec for the actual Nebula Workflow (DAG)

func (*WorkflowSpec) DeepCopy

func (in *WorkflowSpec) DeepCopy() *WorkflowSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowSpec.

func (*WorkflowSpec) DeepCopyInto

func (in *WorkflowSpec) DeepCopyInto(out *WorkflowSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*WorkflowSpec) FromNode

func (in *WorkflowSpec) FromNode(name NodeID) ([]NodeID, error)

func (*WorkflowSpec) GetConnections

func (in *WorkflowSpec) GetConnections() *Connections

func (*WorkflowSpec) GetID

func (in *WorkflowSpec) GetID() WorkflowID

func (*WorkflowSpec) GetNode

func (in *WorkflowSpec) GetNode(nodeID NodeID) (ExecutableNode, bool)

func (*WorkflowSpec) GetNodes

func (in *WorkflowSpec) GetNodes() []NodeID

func (*WorkflowSpec) GetOnFailureNode

func (in *WorkflowSpec) GetOnFailureNode() ExecutableNode

func (*WorkflowSpec) GetOnFailurePolicy

func (in *WorkflowSpec) GetOnFailurePolicy() WorkflowOnFailurePolicy

func (*WorkflowSpec) GetOutputBindings

func (in *WorkflowSpec) GetOutputBindings() []*Binding

func (*WorkflowSpec) GetOutputs

func (in *WorkflowSpec) GetOutputs() *OutputVarMap

func (*WorkflowSpec) StartNode

func (in *WorkflowSpec) StartNode() ExecutableNode

func (*WorkflowSpec) ToNode

func (in *WorkflowSpec) ToNode(name NodeID) ([]NodeID, error)

type WorkflowStatus

type WorkflowStatus struct {
	Phase           WorkflowPhase `json:"phase"`
	StartedAt       *metav1.Time  `json:"startedAt,omitempty"`
	StoppedAt       *metav1.Time  `json:"stoppedAt,omitempty"`
	LastUpdatedAt   *metav1.Time  `json:"lastUpdatedAt,omitempty"`
	Message         string        `json:"message,omitempty"`
	DataDir         DataReference `json:"dataDir,omitempty"`
	OutputReference DataReference `json:"outputRef,omitempty"`

	NodeStatus map[NodeID]*NodeStatus `json:"nodeStatus,omitempty"`

	// Number of Attempts completed with rounds resulting in error. this is used to cap out poison pill workflows
	// that spin in an error loop. The value should be set at the global level and will be enforced. At the end of
	// the retries the workflow will fail
	FailedAttempts uint32 `json:"failedAttempts,omitempty"`

	// Stores the Error during the Execution of the Workflow. It is optional and usually associated with Failing/Failed state only
	Error *ExecutionError `json:"error,omitempty"`

	// DefinitionVersion allows propeller code that populates the CRD to evolve (in backward incompatible ways) without
	// affecting in-flight executions. Once an execution starts, propeller will populate this field with the current or
	// latest version. If a newer propeller version is deployed midway that comes with a newer version, code that relies
	// on the latest version should be gated behind this.
	DefinitionVersion *WorkflowDefinitionVersion `json:"defVersion,omitempty"`

	// non-Serialized fields
	DataReferenceConstructor storage.ReferenceConstructor `json:"-"`
}

func (*WorkflowStatus) ConstructNodeDataDir

func (in *WorkflowStatus) ConstructNodeDataDir(ctx context.Context, name NodeID) (storage.DataReference, error)

func (*WorkflowStatus) DeepCopy

func (in *WorkflowStatus) DeepCopy() *WorkflowStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowStatus.

func (*WorkflowStatus) DeepCopyInto

func (in *WorkflowStatus) DeepCopyInto(out *WorkflowStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*WorkflowStatus) Equals

func (in *WorkflowStatus) Equals(other *WorkflowStatus) bool

func (*WorkflowStatus) GetDataDir

func (in *WorkflowStatus) GetDataDir() DataReference

func (*WorkflowStatus) GetExecutionError

func (in *WorkflowStatus) GetExecutionError() *core.ExecutionError

func (*WorkflowStatus) GetLastUpdatedAt

func (in *WorkflowStatus) GetLastUpdatedAt() *metav1.Time

func (*WorkflowStatus) GetMessage

func (in *WorkflowStatus) GetMessage() string

func (*WorkflowStatus) GetNodeExecutionStatus

func (in *WorkflowStatus) GetNodeExecutionStatus(ctx context.Context, id NodeID) ExecutableNodeStatus

func (*WorkflowStatus) GetOutputReference

func (in *WorkflowStatus) GetOutputReference() DataReference

func (*WorkflowStatus) GetPhase

func (in *WorkflowStatus) GetPhase() WorkflowPhase

func (*WorkflowStatus) GetStartedAt

func (in *WorkflowStatus) GetStartedAt() *metav1.Time

func (*WorkflowStatus) GetStoppedAt

func (in *WorkflowStatus) GetStoppedAt() *metav1.Time

func (*WorkflowStatus) IncFailedAttempts

func (in *WorkflowStatus) IncFailedAttempts()

func (*WorkflowStatus) IsTerminated

func (in *WorkflowStatus) IsTerminated() bool

func (*WorkflowStatus) SetDataDir

func (in *WorkflowStatus) SetDataDir(d DataReference)

func (*WorkflowStatus) SetMessage

func (in *WorkflowStatus) SetMessage(msg string)

func (*WorkflowStatus) SetOutputReference

func (in *WorkflowStatus) SetOutputReference(reference DataReference)

func (*WorkflowStatus) UpdatePhase

func (in *WorkflowStatus) UpdatePhase(p WorkflowPhase, msg string, err *core.ExecutionError)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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