|
|
@@ -1,13 +1,15 @@ |
|
|
|
package container_builder |
|
|
|
|
|
|
|
import ( |
|
|
|
"path" |
|
|
|
"strings" |
|
|
|
|
|
|
|
"code.gitea.io/gitea/entity" |
|
|
|
"code.gitea.io/gitea/models" |
|
|
|
"code.gitea.io/gitea/modules/log" |
|
|
|
"code.gitea.io/gitea/routers/response" |
|
|
|
"code.gitea.io/gitea/services/ai_task_service/context" |
|
|
|
"path" |
|
|
|
"strings" |
|
|
|
"code.gitea.io/gitea/services/ai_task_service/storage_helper" |
|
|
|
) |
|
|
|
|
|
|
|
type DatasetBuilder struct { |
|
|
@@ -41,6 +43,38 @@ func (b *DatasetBuilder) Build(ctx *context.CreationContext) ([]entity.Container |
|
|
|
return nil, response.PARTIAL_DATASETS_NOT_AVAILABLE |
|
|
|
} |
|
|
|
var data []entity.ContainerData |
|
|
|
|
|
|
|
//如果是智算GPU调试任务,需要把dataset文件夹也挂载,这样提交镜像时才不会把dataset下的文件提交到镜像中 |
|
|
|
if ctx.Request.Cluster == entity.C2Net && ctx.Request.JobType == models.JobTypeDebug && ctx.Request.ComputeSource.Name == models.GPU { |
|
|
|
log.Info("mount dataset directory.") |
|
|
|
jobName := ctx.Request.JobName |
|
|
|
storageTypes := b.Opts.AcceptStorageType |
|
|
|
uploader := storage_helper.SelectUploaderFromStorageType(storageTypes[0]) |
|
|
|
remoteDir := path.Join(uploader.GetJobDefaultObjectKeyPrefix(jobName), b.Opts.GetLocalPath()) |
|
|
|
err := uploader.MKDIR(remoteDir) |
|
|
|
if err != nil { |
|
|
|
log.Error("MKDIR err.displayJobName = %s err=%v", ctx.Request.DisplayJobName, err) |
|
|
|
return nil, response.NewBizError(err) |
|
|
|
} |
|
|
|
|
|
|
|
datasetDirectoryObjectKey := remoteDir |
|
|
|
if !strings.HasSuffix(remoteDir, "/") { |
|
|
|
datasetDirectoryObjectKey = remoteDir + "/" |
|
|
|
} |
|
|
|
data = append(data, entity.ContainerData{ |
|
|
|
ContainerPath: b.Opts.ContainerPath, |
|
|
|
Name: "dataset", |
|
|
|
ReadOnly: false, |
|
|
|
ObjectKey: datasetDirectoryObjectKey, |
|
|
|
RealPath: uploader.GetRealPath(remoteDir), |
|
|
|
Bucket: uploader.GetBucket(), |
|
|
|
EndPoint: uploader.GetEndpoint(), |
|
|
|
GetBackEndpoint: uploader.GetEndpoint(), |
|
|
|
IsDir: true, |
|
|
|
StorageType: storageTypes[0], |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
for _, datasetInfo := range datasetInfos { |
|
|
|
var name, objectKey, s3DownloadUrl string |
|
|
|
//如果不是压缩包,那么文件名是去掉后缀以后的数据集名称 |
|
|
|