Documentation
¶
Index ¶
- Constants
- Variables
- func ConvertCronWorkflowToWorkflow(cronWf *wfv1.CronWorkflow) *wfv1.Workflow
- func ConvertCronWorkflowToWorkflowWithProperties(cronWf *wfv1.CronWorkflow, name string, scheduledTime time.Time) *wfv1.Workflow
- func DeletePod(ctx context.Context, c kubernetes.Interface, podName, namespace string) error
- func ExecPodContainer(restConfig *rest.Config, namespace string, pod string, container string, ...) (exec remotecommand.Executor, err error)
- func FindOverlappingVolume(tmpl *wfv1.Template, path string) *apiv1.VolumeMount
- func GenerateOnExitNodeName(parentNodeName string) string
- func GetConfigMapValue(configMapInformer cache.SharedIndexInformer, namespace, name, key string) (string, error)
- func GetExecutorOutput(exec remotecommand.Executor) (*bytes.Buffer, *bytes.Buffer, error)
- func GetTaskAncestry(ctx DagContext, taskName string) []string
- func GetTaskDependencies(task *wfv1.DAGTask, ctx DagContext) (map[string]DependencyType, string)
- func GetTemplateGetterString(getter wfv1.TemplateHolder) string
- func GetTemplateHolderString(tmplHolder wfv1.TemplateReferenceHolder) string
- func IsDone(un *unstructured.Unstructured) bool
- func NewPlaceholderGenerator() *placeholderGenerator
- func NewWorkflowFromWorkflowTemplate(templateName string, clusterScope bool) *wfv1.Workflow
- func ProcessArgs(tmpl *wfv1.Template, args wfv1.ArgumentsProvider, ...) (*wfv1.Template, error)
- func RunCommand(name string, arg ...string) ([]byte, error)
- func RunShellCommand(arg ...string) ([]byte, error)
- func SplitClusterWorkflowTemplateYAMLFile(body []byte, strict bool) ([]wfv1.ClusterWorkflowTemplate, error)
- func SplitCronWorkflowYAMLFile(body []byte, strict bool) ([]wfv1.CronWorkflow, error)
- func SplitWorkflowTemplateYAMLFile(body []byte, strict bool) ([]wfv1.WorkflowTemplate, error)
- func SplitWorkflowYAMLFile(body []byte, strict bool) ([]wfv1.Workflow, error)
- func SubstituteParams(tmpl *wfv1.Template, globalParams, localParams Parameters) (*wfv1.Template, error)
- func UnstructuredHasCompletedLabel(obj interface{}) bool
- func ValidateTaskResults(dagTask *wfv1.DAGTask) error
- type DagContext
- type DependencyType
- type Parameters
- type ParseResult
- type RoundTripCallback
- type TaskResult
- type WebsocketRoundTripper
Constants ¶
const ( // Container names used in the workflow pod MainContainerName = "main" InitContainerName = "init" WaitContainerName = "wait" // AnnotationKeyDefaultContainer is the annotation that specify container that will be used by default in case of kubectl commands for example AnnotationKeyDefaultContainer = "kubectl.kubernetes.io/default-container" // AnnotationKeyServiceAccountTokenName is used to name the secret that containers the service account token name. // It is intentially named similar to ` `kubernetes.io/service-account.name`. AnnotationKeyServiceAccountTokenName = workflow.WorkflowFullName + "/service-account-token.name" // AnnotationKeyNodeID is the ID of the node. // Historically, the pod name was the same as the node ID. // Therefore, if it does not exist, then the node ID is the pod name. AnnotationKeyNodeID = workflow.WorkflowFullName + "/node-id" // AnnotationKeyNodeName is the pod metadata annotation key containing the workflow node name AnnotationKeyNodeName = workflow.WorkflowFullName + "/node-name" // AnnotationKeyNodeType is the node's type AnnotationKeyNodeType = workflow.WorkflowFullName + "/node-type" // AnnotationKeyNodeStartTime is the node's start timestamp. AnnotationKeyNodeStartTime = workflow.WorkflowFullName + "/node-start-time" // AnnotationKeyRBACRule is a rule to match the claims AnnotationKeyRBACRule = workflow.WorkflowFullName + "/rbac-rule" AnnotationKeyRBACRulePrecedence = workflow.WorkflowFullName + "/rbac-rule-precedence" // AnnotationKeyOutputs is the pod metadata annotation key containing the container outputs AnnotationKeyOutputs = workflow.WorkflowFullName + "/outputs" // AnnotationKeyCronWfScheduledTime is the workflow metadata annotation key containing the time when the workflow // was scheduled to run by CronWorkflow. AnnotationKeyCronWfScheduledTime = workflow.WorkflowFullName + "/scheduled-time" // AnnotationKeyWorkflowName is the name of the workflow AnnotationKeyWorkflowName = workflow.WorkflowFullName + "/workflow-name" // AnnotationKeyWorkflowUID is the uid of the workflow AnnotationKeyWorkflowUID = workflow.WorkflowFullName + "/workflow-uid" // AnnotationKeyPodNameVersion stores the pod naming convention version AnnotationKeyPodNameVersion = workflow.WorkflowFullName + "/pod-name-format" // AnnotationKeyProgress is N/M progress for the node AnnotationKeyProgress = workflow.WorkflowFullName + "/progress" // AnnotationKeyArtifactGCStrategy is listed as an annotation on the Artifact GC Pod to identify // the strategy whose artifacts are being deleted AnnotationKeyArtifactGCStrategy = workflow.WorkflowFullName + "/artifact-gc-strategy" // LabelKeyControllerInstanceID is the label the controller will carry forward to workflows/pod labels // for the purposes of workflow segregation LabelKeyControllerInstanceID = workflow.WorkflowFullName + "/controller-instanceid" // Who created this workflow. LabelKeyCreator = workflow.WorkflowFullName + "/creator" LabelKeyCreatorEmail = workflow.WorkflowFullName + "/creator-email" LabelKeyCreatorPreferredUsername = workflow.WorkflowFullName + "/creator-preferred-username" // LabelKeyCompleted is the metadata label applied on workflows and workflow pods to indicates if resource is completed // Workflows and pods with a completed=true label will be ignored by the controller. // See also `LabelKeyWorkflowArchivingStatus`. LabelKeyCompleted = workflow.WorkflowFullName + "/completed" // LabelKeyWorkflowArchivingStatus indicates if a workflow needs archiving or not: // * “ - does not need archiving ... yet // * `Pending` - pending archiving // * `Archived` - has been archived // See also `LabelKeyCompleted`. LabelKeyWorkflowArchivingStatus = workflow.WorkflowFullName + "/workflow-archiving-status" // LabelKeyWorkflow is the pod metadata label to indicate the associated workflow name LabelKeyWorkflow = workflow.WorkflowFullName + "/workflow" // LabelKeyComponent determines what component within a workflow, intentionally similar to app.kubernetes.io/component. // See https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/ LabelKeyComponent = workflow.WorkflowFullName + "/component" // LabelKeyPhase is a label applied to workflows to indicate the current phase of the workflow (for filtering purposes) LabelKeyPhase = workflow.WorkflowFullName + "/phase" // LabelKeyPreviousWorkflowName is a label applied to resubmitted workflows LabelKeyPreviousWorkflowName = workflow.WorkflowFullName + "/resubmitted-from-workflow" // LabelKeyCronWorkflow is a label applied to Workflows that are started by a CronWorkflow LabelKeyCronWorkflow = workflow.WorkflowFullName + "/cron-workflow" // LabelKeyWorkflowTemplate is a label applied to Workflows that are submitted from Workflowtemplate LabelKeyWorkflowTemplate = workflow.WorkflowFullName + "/workflow-template" // LabelKeyWorkflowEventBinding is a label applied to Workflows that are submitted from a WorkflowEventBinding LabelKeyWorkflowEventBinding = workflow.WorkflowFullName + "/workflow-event-binding" // LabelKeyWorkflowTemplate is a label applied to Workflows that are submitted from ClusterWorkflowtemplate LabelKeyClusterWorkflowTemplate = workflow.WorkflowFullName + "/cluster-workflow-template" // LabelKeyOnExit is a label applied to Pods that are run from onExit nodes, so that they are not shut down when stopping a Workflow LabelKeyOnExit = workflow.WorkflowFullName + "/on-exit" // LabelKeyArtifactGCPodHash is a label applied to WorkflowTaskSets used by the Artifact Garbage Collection Pod LabelKeyArtifactGCPodHash = workflow.WorkflowFullName + "/artifact-gc-pod" // ExecutorArtifactBaseDir is the base directory in the init container in which artifacts will be copied to. // Each artifact will be named according to its input name (e.g: /argo/inputs/artifacts/CODE) ExecutorArtifactBaseDir = "/argo/inputs/artifacts" // ExecutorMainFilesystemDir is a path made available to the init/wait containers such that they // can access the same volume mounts used in the main container. This is used for the purposes // of artifact loading (when there is overlapping paths between artifacts and volume mounts), // as well as artifact collection by the wait container. ExecutorMainFilesystemDir = "/mainctrfs" // ExecutorStagingEmptyDir is the path of the emptydir which is used as a staging area to transfer a file between init/main container for script/resource templates ExecutorStagingEmptyDir = "/argo/staging" // ExecutorScriptSourcePath is the path which init will write the script source file to for script templates ExecutorScriptSourcePath = "/argo/staging/script" // ExecutorResourceManifestPath is the path which init will write the manifest file to for resource templates ExecutorResourceManifestPath = "/tmp/manifest.yaml" // EnvVarArtifactGCPodHash is applied as a Label on the WorkflowTaskSets read by the Artifact GC Pod, so that the Pod can find them EnvVarArtifactGCPodHash = "ARGO_ARTIFACT_POD_NAME" // EnvVarPodName contains the name of the pod (currently unused) EnvVarPodName = "ARGO_POD_NAME" // EnvVarPodUID is the workflow's UID EnvVarPodUID = "ARGO_POD_UID" // EnvVarInstanceID is the instance ID EnvVarInstanceID = "ARGO_INSTANCE_ID" // EnvVarWorkflowName is the name of the workflow for which the an agent is responsible for EnvVarWorkflowName = "ARGO_WORKFLOW_NAME" // EnvVarWorkflowUID is the workflow UUID EnvVarWorkflowUID = "ARGO_WORKFLOW_UID" // EnvVarNodeID is the node ID of the node. EnvVarNodeID = "ARGO_NODE_ID" // EnvVarPluginAddresses is a list of plugin addresses EnvVarPluginAddresses = "ARGO_PLUGIN_ADDRESSES" // EnvVarPluginNames is a list of plugin names EnvVarPluginNames = "ARGO_PLUGIN_NAMES" // EnvVarContainerName container the container's name for the current pod EnvVarContainerName = "ARGO_CONTAINER_NAME" // EnvVarDeadline is the deadline for the pod EnvVarDeadline = "ARGO_DEADLINE" // EnvVarTerminationGracePeriodSeconds is pod.spec.terminationGracePeriodSeconds EnvVarTerminationGracePeriodSeconds = "ARGO_TERMINATION_GRACE_PERIOD_SECONDS" // EnvVarIncludeScriptOutput capture the stdout and stderr EnvVarIncludeScriptOutput = "ARGO_INCLUDE_SCRIPT_OUTPUT" // EnvVarTemplate is the template EnvVarTemplate = "ARGO_TEMPLATE" // EnvVarArgoTrace is used enable tracing statements in Argo components EnvVarArgoTrace = "ARGO_TRACE" // EnvVarProgressPatchTickDuration sets the tick duration for patching pod annotations upon progress changes. // Setting this or EnvVarProgressFileTickDuration to 0 will disable monitoring progress. EnvVarProgressPatchTickDuration = "ARGO_PROGRESS_PATCH_TICK_DURATION" // EnvVarProgressFileTickDuration sets the tick duration for reading & parsing the progress file. // Setting this or EnvVarProgressPatchTickDuration to 0 will disable monitoring progress. EnvVarProgressFileTickDuration = "ARGO_PROGRESS_FILE_TICK_DURATION" // EnvVarProgressFile is the file watched for reporting progress EnvVarProgressFile = "ARGO_PROGRESS_FILE" // EnvVarDefaultRequeueTime is the default requeue time for Workflow Informers. For more info, see rate_limiters.go EnvVarDefaultRequeueTime = "DEFAULT_REQUEUE_TIME" // EnvAgentTaskWorkers is the number of task workers for the agent pod EnvAgentTaskWorkers = "ARGO_AGENT_TASK_WORKERS" // EnvAgentPatchRate is the rate that the Argo Agent will patch the Workflow TaskSet EnvAgentPatchRate = "ARGO_AGENT_PATCH_RATE" // Finalizer to block deletion of the workflow if deletion of artifacts fail for some reason. FinalizerArtifactGC = workflow.WorkflowFullName + "/artifact-gc" // GlobalVarWorkflowName is a global workflow variable referencing the workflow's metadata.name field GlobalVarWorkflowName = "workflow.name" // GlobalVarWorkflowNamespace is a global workflow variable referencing the workflow's metadata.namespace field GlobalVarWorkflowNamespace = "workflow.namespace" // GlobalVarWorkflowServiceAccountName is a global workflow variable referencing the workflow's spec.serviceAccountName field GlobalVarWorkflowServiceAccountName = "workflow.serviceAccountName" // GlobalVarWorkflowUID is a global workflow variable referencing the workflow's metadata.uid field GlobalVarWorkflowUID = "workflow.uid" // GlobalVarWorkflowStatus is a global workflow variable referencing the workflow's status.phase field GlobalVarWorkflowStatus = "workflow.status" // GlobalVarWorkflowCreationTimestamp is the workflow variable referencing the workflow's metadata.creationTimestamp field GlobalVarWorkflowCreationTimestamp = "workflow.creationTimestamp" // GlobalVarWorkflowPriority is the workflow variable referencing the workflow's priority field GlobalVarWorkflowPriority = "workflow.priority" // GlobalVarWorkflowFailures is a global variable of a JSON map referencing the workflow's failed nodes GlobalVarWorkflowFailures = "workflow.failures" // GlobalVarWorkflowDuration is the current duration of this workflow GlobalVarWorkflowDuration = "workflow.duration" // GlobalVarWorkflowAnnotations is a JSON string containing all workflow annotations - which will be deprecated in favor of GlobalVarWorkflowAnnotationsJSON GlobalVarWorkflowAnnotations = "workflow.annotations" // GlobalVarWorkflowAnnotationsJSON is a JSON string containing all workflow annotations GlobalVarWorkflowAnnotationsJSON = "workflow.annotations.json" // GlobalVarWorkflowLabels is a JSON string containing all workflow labels - which will be deprecated in favor of GlobalVarWorkflowLabelsJSON GlobalVarWorkflowLabels = "workflow.labels" // GlobalVarWorkflowLabelsJSON is a JSON string containing all workflow labels GlobalVarWorkflowLabelsJSON = "workflow.labels.json" // GlobalVarWorkflowParameters is a JSON string containing all workflow parameters - which will be deprecated in favor of GlobalVarWorkflowParametersJSON GlobalVarWorkflowParameters = "workflow.parameters" // GlobalVarWorkflowParametersJSON is a JSON string containing all workflow parameters GlobalVarWorkflowParametersJSON = "workflow.parameters.json" // GlobalVarWorkflowCronScheduleTime is the scheduled timestamp of a Workflow started by a CronWorkflow GlobalVarWorkflowCronScheduleTime = "workflow.scheduledTime" // LabelKeyConfigMapType is the label key for the type of configmap. LabelKeyConfigMapType = "workflows.argoproj.io/configmap-type" // LabelValueTypeConfigMapCache is a key for configmaps that are memoization cache. LabelValueTypeConfigMapCache = "Cache" // LabelValueTypeConfigMapParameter is a key for configmaps that contains parameter values. LabelValueTypeConfigMapParameter = "Parameter" // LabelValueTypeConfigMapExecutorPlugin is a key for configmaps that contains an executor plugin. LabelValueTypeConfigMapExecutorPlugin = "ExecutorPlugin" // LocalVarPodName is a step level variable that references the name of the pod LocalVarPodName = "pod.name" // LocalVarRetries is a step level variable that references the retries number if retryStrategy is specified LocalVarRetries = "retries" // LocalVarDuration is a step level variable (currently only available in metric emission) that tracks the duration of the step LocalVarDuration = "duration" // LocalVarStatus is a step level variable (currently only available in metric emission) that tracks the duration of the step LocalVarStatus = "status" // LocalVarResourcesDuration is a step level variable (currently only available in metric emission) that tracks the resources duration of the step LocalVarResourcesDuration = "resourcesDuration" // LocalVarExitCode is a step level variable (currently only available in metric emission) that tracks the step's exit code LocalVarExitCode = "exitCode" // LocalVarRetriesLastExitCode is a variable that references information about the last retry's exit code LocalVarRetriesLastExitCode = "lastRetry.exitCode" // LocalVarRetriesLastStatus is a variable that references information about the last retry's status LocalVarRetriesLastStatus = "lastRetry.status" // LocalVarRetriesLastDuration is a variable that references information about the last retry's duration, in seconds LocalVarRetriesLastDuration = "lastRetry.duration" KubeConfigDefaultMountPath = "/kube/config" KubeConfigDefaultVolumeName = "kubeconfig" ServiceAccountTokenMountPath = "/var/run/secrets/kubernetes.io/serviceaccount" //nolint:gosec ServiceAccountTokenVolumeName = "exec-sa-token" //nolint:gosec SecretVolMountPath = "/argo/secret" // CACertificatesVolumeMountName is the name of the secret that contains the CA certificates. CACertificatesVolumeMountName = "argo-workflows-agent-ca-certificates" // VarRunArgoPath is the standard path for the shared volume VarRunArgoPath = "/var/run/argo" // ArgoProgressPath defines the path to a file used for self reporting progress ArgoProgressPath = VarRunArgoPath + "/progress" ConfigMapName = "workflow-controller-configmap" )
Variables ¶
var AnnotationKeyKillCmd = func(containerName string) string { return workflow.WorkflowFullName + "/kill-cmd-" + containerName }
AnnotationKeyKillCmd specifies the command to use to kill to container, useful for injected sidecars
var GlobalVarValidWorkflowVariablePrefix = []string{"item.", "steps.", "inputs.", "outputs.", "pod.", "workflow.", "tasks."}
GlobalVarWorkflowRootTags is a list of root tags in workflow which could be used for variable reference
Functions ¶
func ConvertCronWorkflowToWorkflow ¶
func ConvertCronWorkflowToWorkflow(cronWf *wfv1.CronWorkflow) *wfv1.Workflow
func ExecPodContainer ¶
func ExecPodContainer(restConfig *rest.Config, namespace string, pod string, container string, stdout bool, stderr bool, command ...string) (exec remotecommand.Executor, err error)
ExecPodContainer runs a command in a container in a pod and returns the remotecommand.Executor
func FindOverlappingVolume ¶
func FindOverlappingVolume(tmpl *wfv1.Template, path string) *apiv1.VolumeMount
FindOverlappingVolume looks an artifact path, checks if it overlaps with any user specified volumeMounts in the template, and returns the deepest volumeMount (if any). A return value of nil indicates the path is not under any volumeMount.
func GenerateOnExitNodeName ¶
func GetConfigMapValue ¶ added in v3.2.5
func GetConfigMapValue(configMapInformer cache.SharedIndexInformer, namespace, name, key string) (string, error)
GetConfigMapValue retrieves a configmap value
func GetExecutorOutput ¶
GetExecutorOutput returns the output of an remotecommand.Executor
func GetTaskAncestry ¶
func GetTaskAncestry(ctx DagContext, taskName string) []string
GetTaskAncestry returns a list of taskNames which are ancestors of this task. The list is ordered by the tasks finished time.
func GetTaskDependencies ¶
func GetTaskDependencies(task *wfv1.DAGTask, ctx DagContext) (map[string]DependencyType, string)
func GetTemplateGetterString ¶
func GetTemplateGetterString(getter wfv1.TemplateHolder) string
GetTemplateGetterString returns string of TemplateHolder.
func GetTemplateHolderString ¶
func GetTemplateHolderString(tmplHolder wfv1.TemplateReferenceHolder) string
GetTemplateHolderString returns string of TemplateReferenceHolder.
func IsDone ¶ added in v3.3.0
func IsDone(un *unstructured.Unstructured) bool
func NewPlaceholderGenerator ¶
func NewPlaceholderGenerator() *placeholderGenerator
NewPlaceholderGenerator returns a placeholderGenerator.
func ProcessArgs ¶
func ProcessArgs(tmpl *wfv1.Template, args wfv1.ArgumentsProvider, globalParams, localParams Parameters, validateOnly bool, namespace string, configMapInformer cache.SharedIndexInformer) (*wfv1.Template, error)
ProcessArgs sets in the inputs, the values either passed via arguments, or the hardwired values It substitutes: * parameters in the template from the arguments * global parameters (e.g. {{workflow.parameters.XX}}, {{workflow.name}}, {{workflow.status}}) * local parameters (e.g. {{pod.name}})
func RunCommand ¶
RunCommand is a convenience function to run/log a command and log the stderr upon failure
func RunShellCommand ¶
RunShellCommand is a convenience function to use RunCommand for shell executions. It's os-specific and runs `cmd` in windows.
func SplitClusterWorkflowTemplateYAMLFile ¶
func SplitClusterWorkflowTemplateYAMLFile(body []byte, strict bool) ([]wfv1.ClusterWorkflowTemplate, error)
SplitClusterWorkflowTemplateYAMLFile is a helper to split a body into multiple cluster workflow template objects
func SplitCronWorkflowYAMLFile ¶
func SplitCronWorkflowYAMLFile(body []byte, strict bool) ([]wfv1.CronWorkflow, error)
SplitCronWorkflowYAMLFile is a helper to split a body into multiple workflow template objects
func SplitWorkflowTemplateYAMLFile ¶
func SplitWorkflowTemplateYAMLFile(body []byte, strict bool) ([]wfv1.WorkflowTemplate, error)
SplitWorkflowTemplateYAMLFile is a helper to split a body into multiple workflow template objects
func SplitWorkflowYAMLFile ¶
SplitWorkflowYAMLFile is a helper to split a body into multiple workflow objects
func SubstituteParams ¶
func SubstituteParams(tmpl *wfv1.Template, globalParams, localParams Parameters) (*wfv1.Template, error)
SubstituteParams returns a new copy of the template with global, pod, and input parameters substituted
func UnstructuredHasCompletedLabel ¶
func UnstructuredHasCompletedLabel(obj interface{}) bool
func ValidateTaskResults ¶
Types ¶
type DagContext ¶
type DependencyType ¶
type DependencyType int
const ( DependencyTypeTask DependencyType = iota DependencyTypeItems )
type Parameters ¶
Parameters extends string map with useful methods.
func (Parameters) DeepCopy ¶
func (ps Parameters) DeepCopy() Parameters
DeepCopy returns a new instance which has the same parameters as the receiver.
func (Parameters) Merge ¶
func (ps Parameters) Merge(args ...Parameters) Parameters
Merge merges given parameters.
type ParseResult ¶
func ParseObjects ¶
func ParseObjects(body []byte, strict bool) []ParseResult
type RoundTripCallback ¶
type TaskResult ¶
type TaskResult string
const ( TaskResultSucceeded TaskResult = "Succeeded" TaskResultFailed TaskResult = "Failed" TaskResultErrored TaskResult = "Errored" TaskResultSkipped TaskResult = "Skipped" TaskResultOmitted TaskResult = "Omitted" TaskResultDaemoned TaskResult = "Daemoned" TaskResultAnySucceeded TaskResult = "AnySucceeded" TaskResultAllFailed TaskResult = "AllFailed" )
type WebsocketRoundTripper ¶
type WebsocketRoundTripper struct { Dialer *websocket.Dialer Do RoundTripCallback }