mirror of
https://github.com/goharbor/harbor.git
synced 2024-12-28 03:27:41 +01:00
Provide the function to update extra attributes in the task manager
Provide the function to update extra attributes in the task manager Signed-off-by: Wenkai Yin <yinw@vmware.com>
This commit is contained in:
parent
7b4c4b76e7
commit
923a538570
@ -55,10 +55,11 @@ type Scheduler interface {
|
||||
// The callback function needs to be registered first
|
||||
// The "vendorType" specifies the type of vendor (e.g. replication, scan, gc, retention, etc.),
|
||||
// and the "vendorID" specifies the ID of vendor if needed(e.g. policy ID for replication and retention).
|
||||
// The "params" is passed to the callback function as encoded json string, so the callback
|
||||
// The "callbackFuncParams" is passed to the callback function as encoded json string, so the callback
|
||||
// function must decode it before using
|
||||
// The customized attributes can be put into the "extraAttrs"
|
||||
Schedule(ctx context.Context, vendorType string, vendorID int64, cronType string,
|
||||
cron string, callbackFuncName string, params interface{}, extras map[string]interface{}) (int64, error)
|
||||
cron string, callbackFuncName string, callbackFuncParams interface{}, extraAttrs map[string]interface{}) (int64, error)
|
||||
// UnScheduleByID the schedule specified by ID
|
||||
UnScheduleByID(ctx context.Context, id int64) error
|
||||
// UnScheduleByVendor the schedule specified by vendor
|
||||
@ -85,7 +86,7 @@ type scheduler struct {
|
||||
}
|
||||
|
||||
func (s *scheduler) Schedule(ctx context.Context, vendorType string, vendorID int64, cronType string,
|
||||
cron string, callbackFuncName string, params interface{}, extras map[string]interface{}) (int64, error) {
|
||||
cron string, callbackFuncName string, callbackFuncParams interface{}, extraAttrs map[string]interface{}) (int64, error) {
|
||||
if len(vendorType) == 0 {
|
||||
return 0, fmt.Errorf("empty vendor type")
|
||||
}
|
||||
@ -108,13 +109,13 @@ func (s *scheduler) Schedule(ctx context.Context, vendorType string, vendorID in
|
||||
UpdateTime: now,
|
||||
}
|
||||
|
||||
paramsData, err := json.Marshal(params)
|
||||
paramsData, err := json.Marshal(callbackFuncParams)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
sched.CallbackFuncParam = string(paramsData)
|
||||
|
||||
extrasData, err := json.Marshal(extras)
|
||||
extrasData, err := json.Marshal(extraAttrs)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
@ -145,3 +145,17 @@ func (_m *mockTaskManager) Stop(ctx context.Context, id int64) error {
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// UpdateExtraAttrs provides a mock function with given fields: ctx, id, extraAttrs
|
||||
func (_m *mockTaskManager) UpdateExtraAttrs(ctx context.Context, id int64, extraAttrs map[string]interface{}) error {
|
||||
ret := _m.Called(ctx, id, extraAttrs)
|
||||
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, int64, map[string]interface{}) error); ok {
|
||||
r0 = rf(ctx, id, extraAttrs)
|
||||
} else {
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
@ -49,6 +49,8 @@ type Manager interface {
|
||||
// List the tasks according to the query
|
||||
// Query the "ExtraAttrs" by setting 'query.Keywords["ExtraAttrs.key"]="value"'
|
||||
List(ctx context.Context, query *q.Query) (tasks []*Task, err error)
|
||||
// Update the extra attributes of the specified task
|
||||
UpdateExtraAttrs(ctx context.Context, id int64, extraAttrs map[string]interface{}) (err error)
|
||||
// Get the log of the specified task
|
||||
GetLog(ctx context.Context, id int64) (log []byte, err error)
|
||||
// Count counts total of tasks according to the query.
|
||||
@ -210,6 +212,18 @@ func (m *manager) List(ctx context.Context, query *q.Query) ([]*Task, error) {
|
||||
return ts, nil
|
||||
}
|
||||
|
||||
func (m *manager) UpdateExtraAttrs(ctx context.Context, id int64, extraAttrs map[string]interface{}) error {
|
||||
data, err := json.Marshal(extraAttrs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return m.dao.Update(ctx, &dao.Task{
|
||||
ID: id,
|
||||
ExtraAttrs: string(data),
|
||||
UpdateTime: time.Time{},
|
||||
}, "ExtraAttrs", "UpdateTime")
|
||||
}
|
||||
|
||||
func (m *manager) GetLog(ctx context.Context, id int64) ([]byte, error) {
|
||||
task, err := m.dao.Get(ctx, id)
|
||||
if err != nil {
|
||||
|
@ -125,6 +125,13 @@ func (t *taskManagerTestSuite) TestGet() {
|
||||
t.dao.AssertExpectations(t.T())
|
||||
}
|
||||
|
||||
func (t *taskManagerTestSuite) TestUpdateExtraAttrs() {
|
||||
t.dao.On("Update", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
|
||||
err := t.mgr.UpdateExtraAttrs(nil, 1, map[string]interface{}{})
|
||||
t.Require().Nil(err)
|
||||
t.dao.AssertExpectations(t.T())
|
||||
}
|
||||
|
||||
func (t *taskManagerTestSuite) TestList() {
|
||||
t.dao.On("List", mock.Anything, mock.Anything).Return([]*dao.Task{
|
||||
{
|
||||
|
@ -62,20 +62,20 @@ func (_m *Scheduler) ListSchedules(ctx context.Context, query *q.Query) ([]*sche
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// Schedule provides a mock function with given fields: ctx, vendorType, vendorID, cronType, cron, callbackFuncName, params, extras
|
||||
func (_m *Scheduler) Schedule(ctx context.Context, vendorType string, vendorID int64, cronType string, cron string, callbackFuncName string, params interface{}, extras map[string]interface{}) (int64, error) {
|
||||
ret := _m.Called(ctx, vendorType, vendorID, cronType, cron, callbackFuncName, params, extras)
|
||||
// Schedule provides a mock function with given fields: ctx, vendorType, vendorID, cronType, cron, callbackFuncName, callbackFuncParams, extraAttrs
|
||||
func (_m *Scheduler) Schedule(ctx context.Context, vendorType string, vendorID int64, cronType string, cron string, callbackFuncName string, callbackFuncParams interface{}, extraAttrs map[string]interface{}) (int64, error) {
|
||||
ret := _m.Called(ctx, vendorType, vendorID, cronType, cron, callbackFuncName, callbackFuncParams, extraAttrs)
|
||||
|
||||
var r0 int64
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, int64, string, string, string, interface{}, map[string]interface{}) int64); ok {
|
||||
r0 = rf(ctx, vendorType, vendorID, cronType, cron, callbackFuncName, params, extras)
|
||||
r0 = rf(ctx, vendorType, vendorID, cronType, cron, callbackFuncName, callbackFuncParams, extraAttrs)
|
||||
} else {
|
||||
r0 = ret.Get(0).(int64)
|
||||
}
|
||||
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(context.Context, string, int64, string, string, string, interface{}, map[string]interface{}) error); ok {
|
||||
r1 = rf(ctx, vendorType, vendorID, cronType, cron, callbackFuncName, params, extras)
|
||||
r1 = rf(ctx, vendorType, vendorID, cronType, cron, callbackFuncName, callbackFuncParams, extraAttrs)
|
||||
} else {
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
@ -147,3 +147,17 @@ func (_m *Manager) Stop(ctx context.Context, id int64) error {
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// UpdateExtraAttrs provides a mock function with given fields: ctx, id, extraAttrs
|
||||
func (_m *Manager) UpdateExtraAttrs(ctx context.Context, id int64, extraAttrs map[string]interface{}) error {
|
||||
ret := _m.Called(ctx, id, extraAttrs)
|
||||
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, int64, map[string]interface{}) error); ok {
|
||||
r0 = rf(ctx, id, extraAttrs)
|
||||
} else {
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user