diff --git a/modules/storage/minio_ext.go b/modules/storage/minio_ext.go index 167cd0488..9e9c91573 100755 --- a/modules/storage/minio_ext.go +++ b/modules/storage/minio_ext.go @@ -116,6 +116,39 @@ func GenMultiPartSignedUrl(uuid string, uploadId string, partNumber int, partSiz } +func MinioPathCopy(bucketName string, srcPath string, destPath string) (int64, error) { + _, core, err := getClients() + var count int64 + count = 0 + if err != nil { + log.Error("getClients failed:", err.Error()) + return count, err + } + delimiter := "" + marker := "" + for { + output, err := core.ListObjects(bucketName, srcPath, marker, delimiter, 1000) + if err == nil { + for _, val := range output.Contents { + srcObjectName := val.Key + destObjectName := destPath + srcObjectName[len(srcPath):] + log.Info("srcObjectName=" + srcObjectName + " destObjectName=" + destObjectName) + core.CopyObject(bucketName, srcObjectName, bucketName, destObjectName, val.UserMetadata) + count++ + } + if output.IsTruncated { + marker = output.NextMarker + } else { + break + } + } else { + log.Info("list error." + err.Error()) + return 0, err + } + } + return count, nil +} + func NewMultiPartUpload(uuid string) (string, error) { _, core, err := getClients() if err != nil { diff --git a/routers/repo/ai_model_manage.go b/routers/repo/ai_model_manage.go index e2040e0d2..ed882ffd7 100644 --- a/routers/repo/ai_model_manage.go +++ b/routers/repo/ai_model_manage.go @@ -39,7 +39,6 @@ func saveModelByParameters(jobId string, versionName string, name string, versio modelPath := id var lastNewModelId string var modelSize int64 - cloudType := models.TypeCloudBrainTwo log.Info("find task name:" + aiTask.JobName) aimodels := models.QueryModelByName(name, aiTask.RepoID) @@ -53,7 +52,7 @@ func saveModelByParameters(jobId string, versionName string, name string, versio } } } - cloudType = aiTask.Type + cloudType := aiTask.Type //download model zip //train type if cloudType == models.TypeCloudBrainTwo { modelPath, modelSize, err = downloadModelFromCloudBrainTwo(id, aiTask.JobName, "", aiTask.TrainUrl) @@ -61,6 +60,8 @@ func saveModelByParameters(jobId string, versionName string, name string, versio log.Info("download model from CloudBrainTwo faild." + err.Error()) return err } + } else if cloudType == models.TypeCloudBrainOne { + } accuracy := make(map[string]string) accuracy["F1"] = "" @@ -199,6 +200,18 @@ func downloadModelFromCloudBrainTwo(modelUUID string, jobName string, parentDir return dataActualPath, size, nil } +func downloadModelFromCloudBrainOne(modelUUID string, jobName string, parentDir string, trainUrl string) (string, int64, error) { + modelActualPath := storage.GetMinioPath(jobName, "/model/") + destKeyNamePrefix := Model_prefix + models.AttachmentRelativePath(modelUUID) + "/" + size, err := storage.MinioPathCopy(setting.Bucket, modelActualPath, destKeyNamePrefix) + if err == nil { + dataActualPath := setting.Bucket + "/" + destKeyNamePrefix + return dataActualPath, size, nil + } else { + return "", 0, nil + } +} + func DeleteModel(ctx *context.Context) { log.Info("delete model start.") id := ctx.Query("ID")