Documentation ¶
Index ¶
- Variables
- func RunFallback(options *RunOptions) (output []byte, err error)
- type Executor
- type K8sTaskSpecFetcher
- type MetaExecutor
- type MetaTaskAction
- type MetaTaskIdentity
- type MetaTaskProps
- type MetaTaskSpec
- type OutputExecutor
- type PostTaskRunFn
- type RepeatWithResource
- type RunOptions
- type RunOptionsMiddleware
- type RunTaskKind
- type TaskGroupRunner
- func (m *TaskGroupRunner) AddRunTask(runtask *v1alpha1.RunTask) (err error)
- func (m *TaskGroupRunner) Run(values map[string]interface{}) (output []byte, err error)
- func (m *TaskGroupRunner) SetFallback(castemplate string)
- func (m *TaskGroupRunner) SetOutputTask(runtask *v1alpha1.RunTask) (err error)
- type TaskPatch
- type TaskPatchType
- type TaskSpecFetcher
Constants ¶
This section is empty.
Variables ¶
var ( // ErrorUnSupportedTask is used to throw error // for the tasks which are not supported by // the executor instance(s) ErrorUnSupportedTask error = errors.New("task not supported") )
Functions ¶
func RunFallback ¶
func RunFallback(options *RunOptions) (output []byte, err error)
RunFallback executes the fallback tasks
Types ¶
type Executor ¶
type Executor interface {
Execute() (err error)
}
Executor provides the contract to execute RunTasks
type K8sTaskSpecFetcher ¶
type K8sTaskSpecFetcher struct {
// contains filtered or unexported fields
}
K8sTaskSpecFetcher deals with fetching a task specifications from K8s cluster
NOTE:
A task is a K8s ConfigMap
func NewK8sTaskSpecFetcher ¶
func NewK8sTaskSpecFetcher(searchNamespace string) (*K8sTaskSpecFetcher, error)
NewK8sTaskSpecFetcher returns a new instance of K8sTaskSpecFetcher based on the provided namespace.
NOTE:
SearchNamespace refers to the K8s namespace where a task
is expected to be found
type MetaExecutor ¶
type MetaExecutor struct {
// contains filtered or unexported fields
}
MetaExecutor ...
func NewMetaExecutor ¶
func NewMetaExecutor(metaTaskYml string, values map[string]interface{}) (*MetaExecutor, error)
NewMetaExecutor provides a new instance of MetaExecutor
type MetaTaskAction ¶
type MetaTaskAction string
MetaTaskAction represents the action type of RunTask
const ( // GetTA flags a action as get. Typically used to fetch // an object from its name. GetTA MetaTaskAction = "get" // ListTA flags a action as list. Typically used to fetch // a list of objects based on options. ListTA MetaTaskAction = "list" // PutTA flags a action as put. Typically used to put // an object. PutTA MetaTaskAction = "put" // DeleteTA flags a action as delete. Typically used to // delete an object. DeleteTA MetaTaskAction = "delete" // PatchTA flags a action as patch. Typically used to // patch an object. PatchTA MetaTaskAction = "patch" // ExecTA flags a action as exec. Typically used to // exec inside a container of a pod. ExecTA MetaTaskAction = "exec" // RolloutstatusTA flags a action as rollouttatus. Typically used to // get rollout satus of resource RolloutstatusTA MetaTaskAction = "rolloutstatus" // OutputTA flags the task action as output. Typically used to // provide a schema (i.e. a custom defined) based output after // running one or more tasks. OutputTA MetaTaskAction = "output" )
type MetaTaskIdentity ¶
type MetaTaskIdentity struct { // Identity provides a unique identification to this // task. // // NOTE: // Usage: There should not be two tasks with same identity // in a cas template engine run. Identity string `json:"id"` // Kind of the task Kind string `json:"kind"` // APIVersion of the task APIVersion string `json:"apiVersion"` }
MetaTaskIdentity will provide the required identity to a task
type MetaTaskProps ¶
type MetaTaskProps struct { // RunNamespace is the namespace where task will get // executed RunNamespace string `json:"runNamespace"` // Owner represents the owner of this task Owner string `json:"owner"` // ObjectName is the name of the resource that gets // created or will get operated by this task ObjectName string `json:"objectName"` // Options is a set of selectors that can be used for // tasks that are get or list based actions Options string `json:"options"` // Retry specifies the no. of times this particular task (i.e. all properties // remains same) can be re-tried. This is typically used along with task // result verify options for get or list related actions. // // A sample retry option: // // # max of 10 attempts in 20 seconds interval // retry: "10,20s" Retry string `json:"retry"` // Disable will disable execution of this task Disable bool `json:"disable"` }
MetaTaskProps provides properties representing the task's meta information
type MetaTaskSpec ¶
type MetaTaskSpec struct { // MetaTaskIdentity provides the identity to this task MetaTaskIdentity // MetaTaskProps provides the task's meta related properties MetaTaskProps // Action representing this task // // e.g. get based task or list based task or put based task and so on Action MetaTaskAction `json:"action"` // RepeatWith sets one or more resources for repetitive execution. // In other words a task template is executed multiple times based on each // of the item present here. RepeatWith RepeatWithResource `json:"repeatWith"` }
MetaTaskSpec is the specifications of a MetaTask
type OutputExecutor ¶
OutputExecutor provides the contract to generate content from a RunTask's specifications
NOTE:
The output format is specified in the
RunTask itself
type PostTaskRunFn ¶
type PostTaskRunFn func(taskResult map[string]interface{})
PostTaskRunFn is a closure definition that provides option to act on an individual task's result
type RepeatWithResource ¶
type RepeatWithResource struct { // resources is a list of resources that will drive the repetition logic // of task execution // // NOTE: // This is typically a set of items which does not belong to MetaTask // category. Any random list of items that influences the repetition logic // should be set here. Resources []string `json:"resources"` // metas is a list of meta task info that will drive the repetition logic // of task execution Metas []MetaTaskProps `json:"metas"` }
RepeatWithResource provides properties that influence task execution's repetition behaviour
type RunOptions ¶
type RunOptions struct { TaskGroupRunner // contains filtered or unexported fields }
RunOptions represents the various properties required during run
func NewFallbackRunner ¶
func NewFallbackRunner(template string, values map[string]interface{}) (*RunOptions, error)
NewFallbackRunner returns a new instance of task group runner
type RunOptionsMiddleware ¶
type RunOptionsMiddleware func(given *RunOptions) (updated *RunOptions, err error)
RunOptionsMiddleware abstracts updating the given RunOptions instance
func UpdateTaskRunner ¶
func UpdateTaskRunner(updaters []RunOptionsMiddleware) RunOptionsMiddleware
UpdateTaskRunner updates the task runner instance by executing the instance against the list of updaters
func WithOutputTask ¶
func WithOutputTask(taskName string) RunOptionsMiddleware
WithOutputTask updates the given RunOptions instance with output task
func WithRunTaskList ¶
func WithRunTaskList(taskNames []string) RunOptionsMiddleware
WithRunTaskList updates the given RunOptions instance with list of RunTasks
func WithTaskFetcher ¶
func WithTaskFetcher(namespace string) RunOptionsMiddleware
WithTaskFetcher updates the given RunOptions instance with task fetcher instance
type RunTaskKind ¶
type RunTaskKind string
RunTaskKind represents type of runtask operation
const (
CommandKind RunTaskKind = "Command"
)
CommandKind is a runtask of type Command.
type TaskGroupRunner ¶
type TaskGroupRunner struct {
// contains filtered or unexported fields
}
TaskGroupRunner helps in running a set of Tasks in sequence
func NewTaskGroupRunner ¶
func NewTaskGroupRunner() *TaskGroupRunner
NewTaskGroupRunner returns a new task group.
func (*TaskGroupRunner) AddRunTask ¶
func (m *TaskGroupRunner) AddRunTask(runtask *v1alpha1.RunTask) (err error)
AddRunTask adds a task to the list of tasks to be run by this group runner.
func (*TaskGroupRunner) Run ¶
func (m *TaskGroupRunner) Run(values map[string]interface{}) (output []byte, err error)
Run will run all the defined tasks & will rollback in case of any error
NOTE: values is mutated (i.e. gets modified after each task execution) to let the task execution result be made available to the next task before execution of this next task
func (*TaskGroupRunner) SetFallback ¶
func (m *TaskGroupRunner) SetFallback(castemplate string)
SetFallback sets this runner with a fallback option in case this runner gets into some specific errors e.g. version mismatch error
func (*TaskGroupRunner) SetOutputTask ¶
func (m *TaskGroupRunner) SetOutputTask(runtask *v1alpha1.RunTask) (err error)
SetOutputTask sets this runner with a run task that will be used to return the output after successful execution of this runner.
NOTE:
This output format is specified in the provided run task.
type TaskPatch ¶
type TaskPatch struct { // Type determines the type of patch to be applied Type TaskPatchType `json:"type"` // Specs is a yaml document that provides the patch specifications // // Below is a sample patch as yaml document // “`yaml // spec: // template: // spec: // affinity: // nodeAffinity: // requiredDuringSchedulingIgnoredDuringExecution: // nodeSelectorTerms: // - matchExpressions: // - key: kubernetes.io/hostname // operator: In // values: // - amit-thinkpad-l470 // podAntiAffinity: null // “` Specs string `json:"pspec"` }
TaskPatch will consist of patch that gets applied against the task object
type TaskPatchType ¶
type TaskPatchType string
TaskPatchType is a custom type that holds the patch type
const ( // JsonTPT refers to a generic json patch type that is understood // by Kubernetes API as well JsonTPT TaskPatchType = "json" // MergeTPT refers to a generic json merge patch type that is // understood by Kubernetes API as well MergeTPT TaskPatchType = "merge" // StrategicTPT refers to a patch type that is understood // by Kubernetes API only StrategicTPT TaskPatchType = "strategic" )