mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 06:09:39 +08:00
fix: batch cache image (#22313)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
This commit is contained in:
@@ -582,18 +582,12 @@ func (manager *SCachedimageManager) PerformCacheImage(
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "FetchStoragecachesByFilters")
|
||||
}
|
||||
errs := make([]error, 0)
|
||||
for i := range storageCaches {
|
||||
err := storageCaches[i].StartImageCacheTask(ctx, userCred, api.CacheImageInput{
|
||||
ImageId: cimg.Id,
|
||||
PreCache: true,
|
||||
})
|
||||
if err != nil {
|
||||
errs = append(errs, err)
|
||||
}
|
||||
}
|
||||
if len(errs) > 0 {
|
||||
return nil, errors.Wrap(errors.NewAggregate(errs), "StartImageCacheTask")
|
||||
err = StoragecacheManager.StartImageCacheTask(ctx, userCred, storageCaches, api.CacheImageInput{
|
||||
ImageId: cimg.Id,
|
||||
PreCache: true,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "StoragecacheManager.StartImageCacheTask")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -393,6 +393,22 @@ func (sc *SStoragecache) getCachedImageSize() int64 {
|
||||
return size
|
||||
}
|
||||
|
||||
func (manager *SStoragecacheManager) StartImageCacheTask(ctx context.Context, userCred mcclient.TokenCredential, scs []SStoragecache, input api.CacheImageInput) error {
|
||||
objs := make([]db.IStandaloneModel, len(scs))
|
||||
inputs := make([]api.CacheImageInput, len(scs))
|
||||
for i := range scs {
|
||||
objs[i] = &scs[i]
|
||||
inputs[i] = input
|
||||
}
|
||||
params := jsonutils.NewDict()
|
||||
params.Add(jsonutils.Marshal(inputs), "params")
|
||||
task, err := taskman.TaskManager.NewParallelTask(ctx, "StorageBatchCacheImageTask", objs, userCred, params, input.ParentTaskId, "", nil)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "NewParallelTask")
|
||||
}
|
||||
return task.ScheduleRun(nil)
|
||||
}
|
||||
|
||||
func (sc *SStoragecache) StartImageCacheTask(ctx context.Context, userCred mcclient.TokenCredential, input api.CacheImageInput) error {
|
||||
StoragecachedimageManager.Register(ctx, userCred, sc.Id, input.ImageId, "")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user