Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pkg/frame/controller/consister.go
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ func (r *Consist) syncEmployees(ctx context.Context, employer client.Object, exp
needRecordEmployees := lifecycleOptionsImplemented && lifecycleOptions.FollowPodOpsLifeCycle() && lifecycleOptions.NeedRecordLifecycleFinalizerCondition()
if needRecordEmployees {
if employer.GetAnnotations()[lifecycleFinalizerRecordedAnnoKey] != "" {
selectedEmployees, err := r.adapter.GetSelectedEmployeeNames(ctx, employer)
selectedEmployees, err := lifecycleOptions.GetSelectedEmployeeNames(ctx, employer)
if err != nil {
return false, false, CUDEmployeeResults{}, fmt.Errorf("GetSelectedEmployeeNames failed, err: %s", err.Error())
}
Expand Down Expand Up @@ -297,7 +297,7 @@ func (r *Consist) ensureExpectedFinalizer(ctx context.Context, employer client.O
return true, nil
}

selectedEmployeeNames, err := r.adapter.GetSelectedEmployeeNames(ctx, employer)
selectedEmployeeNames, err := lifecycleOptions.GetSelectedEmployeeNames(ctx, employer)
if err != nil {
return false, fmt.Errorf("get selected employees' names failed, err: %s", err.Error())
}
Expand Down
16 changes: 8 additions & 8 deletions pkg/frame/controller/resourceconsist_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,14 +254,6 @@ func (r *Consist) Reconcile(ctx context.Context, request reconcile.Request) (rec
}
}

if syncEmployerFailedExist || syncEmployeeFailedExist {
requeueOptions, requeueOptionsImplemented := r.adapter.(ReconcileRequeueOptions)
if requeueOptionsImplemented {
return reconcile.Result{RequeueAfter: requeueOptions.EmployeeSyncRequeueInterval()}, nil
}
return reconcile.Result{}, fmt.Errorf("employer or employees synced failed exist")
}

if recordOptions, ok := r.adapter.(StatusRecordOptions); ok {
err = recordOptions.RecordStatuses(ctx, employer, cudEmployerResults, cudEmployeeResults)
if err != nil {
Expand All @@ -272,5 +264,13 @@ func (r *Consist) Reconcile(ctx context.Context, request reconcile.Request) (rec
}
}

if syncEmployerFailedExist || syncEmployeeFailedExist {
requeueOptions, requeueOptionsImplemented := r.adapter.(ReconcileRequeueOptions)
if requeueOptionsImplemented {
return reconcile.Result{RequeueAfter: requeueOptions.EmployeeSyncRequeueInterval()}, nil
}
return reconcile.Result{}, fmt.Errorf("employer or employees synced failed exist")
}

return reconcile.Result{}, nil
}
11 changes: 6 additions & 5 deletions pkg/frame/controller/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,11 @@ type ReconcileLifecycleOptions interface {
// NeedRecordLifecycleFinalizerCondition only needed for those adapters that follow PodOpsLifecycle,
// in the case of employment relationship might change and resources in backend provider might be changed by others.
NeedRecordLifecycleFinalizerCondition() bool

// GetSelectedEmployeeNames returns employees' names selected by employer
// note: in multi cluster case, if adapters deployed in fed and employees are under local, the format of employeeName
// should be "employeeName" + "#" + "clusterName"
GetSelectedEmployeeNames(ctx context.Context, employer client.Object) ([]string, error)
}

type ReconcileRequeueOptions interface {
Expand All @@ -99,11 +104,6 @@ type ReconcileRequeueOptions interface {
type ReconcileAdapter interface {
GetControllerName() string

// GetSelectedEmployeeNames returns employees' names selected by employer
// note: in multi cluster case, if adapters deployed in fed and employees are under local, the format of employeeName
// should be "employeeName" + "#" + "clusterName"
GetSelectedEmployeeNames(ctx context.Context, employer client.Object) ([]string, error)

// GetExpectedEmployer and GetCurrentEmployer return expect/current status of employer from related backend provider
GetExpectedEmployer(ctx context.Context, employer client.Object) ([]IEmployer, error)
GetCurrentEmployer(ctx context.Context, employer client.Object) ([]IEmployer, error)
Expand Down Expand Up @@ -134,6 +134,7 @@ type IEmployee interface {
// GetEmployeeName returns employee's name
// note: in multi cluster case, if adapters deployed in fed and employees are under local, the format of employeeName
// should be "employeeName" + "#" + "clusterName"
// GetEmployeeName need to be implemented if follow Lifecycle
GetEmployeeName() string
GetEmployeeStatuses() interface{}
EmployeeEqual(employee IEmployee) (bool, error)
Expand Down
Loading