pkg/task/example/example_task.go

93 lines
2.2 KiB
Go

/*
* Tencent is pleased to support the open source community by making Blueking Container Service available.
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
* Licensed under the MIT License (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
* http://opensource.org/licenses/MIT
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language governing permissions and
* limitations under the License.
*/
// Package main xxx
package main
import (
"fmt"
istep "git.ifooth.com/common/pkg/task/steps/iface"
"git.ifooth.com/common/pkg/task/types"
)
/******************************************************************
************ 构建演示任务 ***********
******************************************************************/
var (
// ExampleTask task
ExampleTask types.TaskName = "测试任务"
// TestTask task for test
TestTask types.TaskType = "TestTask"
)
// NewExampleTask build example task
func NewExampleTask(a, b string) *Example {
return &Example{
a: a,
b: b,
}
}
// Example task
type Example struct {
a string
b string
}
// Name 任务名称
func (st *Example) Name() string {
return ExampleTask.String()
}
// Type 任务类型
func (st *Example) Type() string {
return TestTask.String()
}
// Steps 构建任务step
func (st *Example) Steps() []*types.Step {
steps := make([]*types.Step, 0)
// step1: sum step
step1 := SumStep{}.BuildStep([]istep.KeyValue{
{
Key: sumA,
Value: st.a,
},
{
Key: sumB,
Value: st.b,
},
}, types.WithMaxExecutionSeconds(10))
// step2: hello step
step2 := HelloStep{}.BuildStep(nil)
steps = append(steps, step1, step2)
return steps
}
// BuildTask build task
func (st *Example) BuildTask(info types.TaskInfo, opts ...types.TaskOption) (*types.Task, error) {
t := types.NewTask(info, opts...)
if len(st.Steps()) == 0 {
return nil, fmt.Errorf("task steps empty")
}
t.Steps = st.Steps()
t.CurrentStep = t.Steps[0].GetName()
return t, nil
}