Skip to content

Commit fc300eb

Browse files
committed
初步描述控制器
1 parent 80fb705 commit fc300eb

File tree

3 files changed

+40
-6
lines changed

3 files changed

+40
-6
lines changed

pkg/apis/jobflow/v1alpha1/types.go

+6-3
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,16 @@ type JobFlowSpec struct {
2424
}
2525

2626
type Flow struct {
27+
// job name, namespace 就是默认 namespace
2728
Name string `json:"name"`
28-
// cd
29-
JobTemplate v1.JobSpec `json:"jobTemplate"`
30-
Dependencies []string `json:"dependencies"`
29+
// 用于赋值
30+
JobTemplate v1.JobSpec `json:"jobTemplate"`
31+
// 依赖项
32+
Dependencies []string `json:"dependencies"`
3133
}
3234

3335
type JobFlowStatus struct {
36+
// 用于存储 map 是 name/namespace 的方式 或是只要 name就行
3437
JobStatusList map[string]v1.JobStatus `json:"jobStatusList,omitempty"`
3538
}
3639

pkg/apis/jobflow/v1alpha1/zz_generated.deepcopy.go

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/controller/controller.go

+33-3
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,24 @@ package controller
22

33
import (
44
"context"
5+
"fmt"
56
"github.com/go-logr/logr"
7+
jobflowv1alpha1 "github.com/myoperator/jobflowoperator/pkg/apis/jobflow/v1alpha1"
8+
v1 "k8s.io/api/core/v1"
9+
"k8s.io/apimachinery/pkg/api/errors"
610
"k8s.io/apimachinery/pkg/runtime"
11+
"k8s.io/client-go/tools/record"
12+
"k8s.io/klog/v2"
713
"sigs.k8s.io/controller-runtime/pkg/client"
814
"sigs.k8s.io/controller-runtime/pkg/reconcile"
15+
"time"
916
)
1017

1118
type JobFlowController struct {
12-
client client.Client
13-
Scheme *runtime.Scheme
14-
log logr.Logger
19+
client client.Client
20+
Scheme *runtime.Scheme
21+
Recorder record.EventRecorder
22+
log logr.Logger
1523
}
1624

1725
func NewJobFlowController(client client.Client, log logr.Logger, scheme *runtime.Scheme) *JobFlowController {
@@ -25,5 +33,27 @@ func NewJobFlowController(client client.Client, log logr.Logger, scheme *runtime
2533
// Reconcile 调协 loop
2634
func (r *JobFlowController) Reconcile(ctx context.Context, req reconcile.Request) (reconcile.Result, error) {
2735

36+
klog.Info("start jobFlow Reconcile..........")
37+
klog.Info(fmt.Sprintf("req.%v", req))
38+
39+
// load JobFlow by namespace
40+
jobFlow := &jobflowv1alpha1.JobFlow{}
41+
time.Sleep(time.Second)
42+
err := r.client.Get(ctx, req.NamespacedName, jobFlow)
43+
if err != nil {
44+
// If no instance is found, it will be returned directly
45+
if errors.IsNotFound(err) {
46+
klog.Info(fmt.Sprintf("not found jobFlow : %v", req.Name))
47+
return reconcile.Result{}, nil
48+
}
49+
klog.Error(err, err.Error())
50+
r.Recorder.Eventf(jobFlow, v1.EventTypeWarning, "Created", err.Error())
51+
return reconcile.Result{}, err
52+
}
53+
54+
// 启动 依序启动 job 任务
55+
56+
// 改变 job 状态
57+
2858
return reconcile.Result{}, nil
2959
}

0 commit comments

Comments
 (0)