Documentation ¶
Index ¶
- Constants
- func AddPodAnnotation(c kubernetes.Interface, podName, namespace, key, value string) error
- func AddPodLabel(c kubernetes.Interface, podName, namespace, key, value string) error
- func DefaultConfigMapName(controllerName string) string
- func ExecPodContainer(restConfig *rest.Config, namespace string, pod string, container string, ...) (remotecommand.Executor, error)
- func FindOverlappingVolume(tmpl *wfv1.Template, path string) *apiv1.VolumeMount
- func FormulateResubmitWorkflow(wf *wfv1.Workflow, memoized bool) (*wfv1.Workflow, error)
- func GetExecutorOutput(exec remotecommand.Executor) (string, string, error)
- func GetTaskAncestry(taskName string, tasks []wfv1.DAGTask) []string
- func IsPodTemplate(tmpl *wfv1.Template) bool
- func IsValidWorkflowFieldName(name string) []string
- func IsWorkflowCompleted(wf *wfv1.Workflow) bool
- func IsWorkflowSuspended(wf *wfv1.Workflow) bool
- func KillPodContainer(restConfig *rest.Config, namespace string, pod string, container string) error
- func ProcessArgs(tmpl *wfv1.Template, args wfv1.Arguments, ...) (*wfv1.Template, error)
- func Replace(fstTmpl *fasttemplate.Template, replaceMap map[string]string, ...) (string, error)
- func ResumeWorkflow(wfIf v1alpha1.WorkflowInterface, workflowName string) error
- func RetryWorkflow(kubeClient kubernetes.Interface, wfClient v1alpha1.WorkflowInterface, ...) (*wfv1.Workflow, error)
- func RunCommand(name string, arg ...string) error
- func SuspendWorkflow(wfIf v1alpha1.WorkflowInterface, workflowName string) error
- func ValidateWorkflow(wf *wfv1.Workflow, lint ...bool) error
- type ExecutionControl
Constants ¶
const ( // DefaultControllerDeploymentName is the default deployment name of the workflow controller DefaultControllerDeploymentName = "workflow-controller" // DefaultControllerNamespace is the default namespace where the workflow controller is installed DefaultControllerNamespace = "kube-system" // WorkflowControllerConfigMapKey is the key in the configmap to retrieve workflow configuration from. // Content encoding is expected to be YAML. WorkflowControllerConfigMapKey = "config" // Container names used in the workflow pod MainContainerName = "main" InitContainerName = "init" WaitContainerName = "wait" // PodMetadataVolumeName is the volume name defined in a workflow pod spec to expose pod metadata via downward API PodMetadataVolumeName = "podmetadata" // PodMetadataAnnotationsVolumePath is volume path for metadata.annotations in the downward API PodMetadataAnnotationsVolumePath = "annotations" // PodMetadataMountPath is the directory mount location for DownwardAPI volume containing pod metadata PodMetadataMountPath = "/argo/" + PodMetadataVolumeName // PodMetadataAnnotationsPath is the file path containing pod metadata annotations. Examined by executor PodMetadataAnnotationsPath = PodMetadataMountPath + "/" + PodMetadataAnnotationsVolumePath // DockerLibVolumeName is the volume name for the /var/lib/docker host path volume DockerLibVolumeName = "docker-lib" // DockerLibHostPath is the host directory path containing docker runtime state DockerLibHostPath = "/var/lib/docker" // DockerSockVolumeName is the volume name for the /var/run/docker.sock host path volume DockerSockVolumeName = "docker-sock" // AnnotationKeyNodeName is the pod metadata annotation key containing the workflow node name AnnotationKeyNodeName = workflow.FullName + "/node-name" // AnnotationKeyNodeMessage is the pod metadata annotation key the executor will use to // communicate errors encountered by the executor during artifact load/save, etc... AnnotationKeyNodeMessage = workflow.FullName + "/node-message" // AnnotationKeyTemplate is the pod metadata annotation key containing the container template as JSON AnnotationKeyTemplate = workflow.FullName + "/template" // AnnotationKeyOutputs is the pod metadata annotation key containing the container outputs AnnotationKeyOutputs = workflow.FullName + "/outputs" // AnnotationKeyExecutionControl is the pod metadata annotation key containing execution control parameters // set by the controller and obeyed by the executor. For example, the controller will use this annotation to // signal the executors of daemoned containers that it should terminate. AnnotationKeyExecutionControl = workflow.FullName + "/execution" // LabelKeyControllerInstanceID is the label the controller will carry forward to workflows/pod labels // for the purposes of workflow segregation LabelKeyControllerInstanceID = workflow.FullName + "/controller-instanceid" // LabelKeyCompleted is the metadata label applied on worfklows and workflow pods to indicates if resource is completed // Workflows and pods with a completed=true label will be ignored by the controller LabelKeyCompleted = workflow.FullName + "/completed" // LabelKeyWorkflow is the pod metadata label to indicate the associated workflow name LabelKeyWorkflow = workflow.FullName + "/workflow" // LabelKeyPhase is a label applied to workflows to indicate the current phase of the workflow (for filtering purposes) LabelKeyPhase = workflow.FullName + "/phase" // 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" // InitContainerMainFilesystemDir is a path made available to the init container such that the init container // 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) InitContainerMainFilesystemDir = "/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 a manifest file to for resource templates ExecutorResourceManifestPath = "/tmp/manifest.yaml" // EnvVarPodIP contains the IP of the pod (currently unused) EnvVarPodIP = "ARGO_POD_IP" // EnvVarPodName contains the name of the pod (currently unused) EnvVarPodName = "ARGO_POD_NAME" // EnvVarNamespace contains the namespace of the pod (currently unused) EnvVarNamespace = "ARGO_NAMESPACE" // 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" // 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" )
Variables ¶
This section is empty.
Functions ¶
func AddPodAnnotation ¶
func AddPodAnnotation(c kubernetes.Interface, podName, namespace, key, value string) error
AddPodAnnotation adds an annotation to pod
func AddPodLabel ¶
func AddPodLabel(c kubernetes.Interface, podName, namespace, key, value string) error
AddPodLabel adds an label to pod
func DefaultConfigMapName ¶
DefaultConfigMapName returns a formulated name for a configmap name based on the workflow-controller deployment name
func ExecPodContainer ¶
func ExecPodContainer(restConfig *rest.Config, namespace string, pod string, container string, stdout bool, stderr bool, command ...string) (remotecommand.Executor, 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).
func FormulateResubmitWorkflow ¶
FormulateResubmitWorkflow formulate a new workflow from a previous workflow, optionally re-using successful nodes
func GetExecutorOutput ¶
func GetExecutorOutput(exec remotecommand.Executor) (string, string, error)
GetExecutorOutput returns the output of an remotecommand.Executor
func GetTaskAncestry ¶
GetTaskAncestry returns a list of taskNames which are ancestors of this task
func IsPodTemplate ¶
IsPodTemplate returns whether the template corresponds to a pod
func IsValidWorkflowFieldName ¶
IsValidWorkflowFieldName : workflow field name must consist of alpha-numeric characters or '-', and must start with an alpha-numeric character
func IsWorkflowCompleted ¶
IsWorkflowCompleted returns whether or not a workflow is considered completed
func IsWorkflowSuspended ¶
IsWorkflowSuspended returns whether or not a workflow is considered suspended
func KillPodContainer ¶
func KillPodContainer(restConfig *rest.Config, namespace string, pod string, container string) error
KillPodContainer is a convenience function to issue a kill signal to a container in a pod It gives a 15 second grace period before issuing SIGKILL NOTE: this only works with containers that have sh
func ProcessArgs ¶
func ProcessArgs(tmpl *wfv1.Template, args wfv1.Arguments, globalParams, localParams map[string]string, validateOnly bool) (*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 Replace ¶
func Replace(fstTmpl *fasttemplate.Template, replaceMap map[string]string, allowUnresolved bool) (string, error)
Replace executes basic string substitution of a template with replacement values. allowUnresolved indicates whether or not it is acceptable to have unresolved variables remaining in the substituted template. prefixFilter will apply the replacements only to variables with the specified prefix
func ResumeWorkflow ¶
func ResumeWorkflow(wfIf v1alpha1.WorkflowInterface, workflowName string) error
ResumeWorkflow resumes a workflow by setting spec.suspend to nil and any suspended nodes to Successful. Retries conflict errors
func RetryWorkflow ¶
func RetryWorkflow(kubeClient kubernetes.Interface, wfClient v1alpha1.WorkflowInterface, wf *wfv1.Workflow) (*wfv1.Workflow, error)
RetryWorkflow updates a workflow, deleting all failed steps as well as the onExit node (and children)
func RunCommand ¶
RunCommand is a convenience function to run/log a command and log the stderr upon failure
func SuspendWorkflow ¶
func SuspendWorkflow(wfIf v1alpha1.WorkflowInterface, workflowName string) error
SuspendWorkflow suspends a workflow by setting spec.suspend to true. Retries conflict errors
Types ¶
type ExecutionControl ¶
type ExecutionControl struct { // Deadline is a max timestamp in which an executor can run the container before terminating it // It is used to signal the executor to terminate a daemoned container. In the future it will be // used to support workflow or steps/dag level timeouts. Deadline *time.Time `json:"deadline,omitempty"` }
ExecutionControl contains execution control parameters for executor to decide how to execute the container