diff --git a/models/cloudbrain.go b/models/cloudbrain.go index ed5fd4ab0..f85229323 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1768,6 +1768,12 @@ func GetCloudbrainsNeededStopByRepoID(repoID int64) ([]*Cloudbrain, error) { return cloudBrains, err } +func GetCloudbrainsNeededDeleteByRepoID(repoID int64) ([]*Cloudbrain, error) { + cloudBrains := make([]*Cloudbrain, 0) + err := x.Where("repo_id=?", repoID).Find(&cloudBrains) + return cloudBrains, err +} + func GetCloudbrainsByDisplayJobName(repoID int64, jobType string, displayJobName string) ([]*Cloudbrain, error) { cloudBrains := make([]*Cloudbrain, 0) err := x.Cols("job_id", "job_name", "repo_id", "user_id", "job_type", "display_job_name").Where("repo_id=? AND job_type =? AND lower(display_job_name) = lower(?)", repoID, jobType, displayJobName).Find(&cloudBrains) diff --git a/models/repo.go b/models/repo.go index 5e11df2b6..d4e3df853 100755 --- a/models/repo.go +++ b/models/repo.go @@ -1788,7 +1788,6 @@ func DeleteRepository(doer *User, uid, repoID int64) error { // Delete dataset attachment record and remove related files deleteDatasetAttachmentByRepoId(sess, repoID) - if err = deleteBeans(sess, &Access{RepoID: repo.ID}, &Action{RepoID: repo.ID}, diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index f1f0205e2..1c6e2f4c4 100755 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -260,7 +260,7 @@ page_dev_yunlao_desc3=China computing power network (C²NET) phase I can realize page_dev_yunlao_desc4=Developers can freely select the corresponding computing resources according to the use needs, and can test the adaptability, performance, stability, etc. of the model in different hardware environments. page_dev_yunlao_desc5=If your model requires more computing resources, you can also apply for it separately. page_dev_yunlao_apply=Apply Separately -c2net_title=C²NET +c2net_title=China Computing Network c2net_desc=The artificial intelligence computing power network promotion alliance has access to 11 intelligent computing centers, with a total scale of 1924p. c2net_center=Center search=Search diff --git a/routers/api/v1/repo/cloudbrain.go b/routers/api/v1/repo/cloudbrain.go index a8c5762e4..b450b2e26 100755 --- a/routers/api/v1/repo/cloudbrain.go +++ b/routers/api/v1/repo/cloudbrain.go @@ -378,6 +378,7 @@ func CloudbrainDownloadLogFile(ctx *context.Context) { ctx.ServerError(err.Error(), err) return } + prefix := "/" + setting.CBCodePathPrefix + job.JobName + "/model" files, err := storage.GetOneLevelAllObjectUnderDirMinio(setting.Attachment.Minio.Bucket, prefix, "") if err != nil { @@ -398,7 +399,7 @@ func CloudbrainDownloadLogFile(ctx *context.Context) { ctx.ServerError("Get minio get SignedUrl failed", err) return } - http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusMovedPermanently) + http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusTemporaryRedirect) } } diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index c3c6c43cb..457f275ed 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -1245,6 +1245,15 @@ func StopJobsByRepoID(repoID int64) { StopJobs(cloudBrains) } +func DeleteJobsByRepoID(repoID int64) { + cloudBrains, err := models.GetCloudbrainsNeededDeleteByRepoID(repoID) + if err != nil { + log.Warn("Failed to get cloudBrain info", err) + return + } + DeleteJobs(cloudBrains) +} + /** */ @@ -1280,6 +1289,36 @@ func StopJobs(cloudBrains []*models.Cloudbrain) { } } +func DeleteJobs(cloudBrains []*models.Cloudbrain) { + for _, taskInfo := range cloudBrains { + err := models.DeleteJob(taskInfo) + if err != nil { + log.Warn("Failed to DeleteJob:", err) + return + } + if taskInfo.Type == models.TypeCloudBrainOne { + cloudbrain.DelCloudBrainJob(taskInfo.JobName) + DeleteCloudbrainJobStorage(taskInfo.JobName, models.TypeCloudBrainOne) + } + if taskInfo.Type == models.TypeCloudBrainTwo { + if taskInfo.JobType == string(models.JobTypeTrain) || taskInfo.JobType == string(models.JobTypeInference) { + + modelarts.DelTrainJob(taskInfo.JobID) + DeleteJobStorage(taskInfo.JobName) + } + if taskInfo.JobType == string(models.JobTypeDebug) { + modelarts.DelNotebook2(taskInfo.JobID) + } + } + if taskInfo.Type == models.TypeC2Net { + if taskInfo.JobType == string(models.JobTypeTrain) { + cloudbrain.DelCloudBrainJob(taskInfo.JobName) + DeleteCloudbrainJobStorage(taskInfo.JobName, models.TypeCloudBrainOne) + } + } + } +} + func retry(attempts int, sleep time.Duration, f func() error) (err error) { for i := 0; i < attempts; i++ { if i > 0 { @@ -1347,7 +1386,7 @@ func deleteCloudbrainJob(ctx *context.Context) error { return err } - deleteJobStorage(task.JobName, models.TypeCloudBrainOne) + DeleteCloudbrainJobStorage(task.JobName, models.TypeCloudBrainOne) return nil } @@ -1734,7 +1773,7 @@ func mkPathAndReadMeFile(path string, text string) error { return nil } -func deleteJobStorage(jobName string, cloudbrainType int) error { +func DeleteCloudbrainJobStorage(jobName string, cloudbrainType int) error { //delete local localJobPath := setting.JobPath + jobName err := os.RemoveAll(localJobPath) diff --git a/routers/repo/grampus.go b/routers/repo/grampus.go index abc2027d3..33e111df2 100755 --- a/routers/repo/grampus.go +++ b/routers/repo/grampus.go @@ -637,7 +637,7 @@ func deleteGrampusJob(ctx *context.Context) error { if task.ComputeResource == models.NPUResource { storageType = models.TypeCloudBrainTwo } - deleteJobStorage(task.JobName, storageType) + DeleteCloudbrainJobStorage(task.JobName, storageType) return nil } diff --git a/routers/repo/setting.go b/routers/repo/setting.go index b6297677a..11efdf275 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -504,7 +504,8 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) { return } log.Trace("Repository deleted: %s/%s", ctx.Repo.Owner.Name, repo.Name) - go StopJobsByRepoID(repo.ID) + // go StopJobsByRepoID(repo.ID) + go DeleteJobsByRepoID(repo.ID) ctx.Flash.Success(ctx.Tr("repo.settings.deletion_success")) ctx.Redirect(ctx.Repo.Owner.DashboardLink()) diff --git a/templates/repo/cloudbrain/trainjob/show.tmpl b/templates/repo/cloudbrain/trainjob/show.tmpl index 23fc92d62..ba299a7eb 100644 --- a/templates/repo/cloudbrain/trainjob/show.tmpl +++ b/templates/repo/cloudbrain/trainjob/show.tmpl @@ -499,7 +499,7 @@
+ href="/api/v1/repos/{{$.RepoRelPath}}/cloudbrain/{{.ID}}/download_log_file"> {{$.i18n.Tr "repo.modelarts.download_log"}} diff --git a/templates/repo/modelarts/notebook/show.tmpl b/templates/repo/modelarts/notebook/show.tmpl index b74e22775..65cfb68d9 100755 --- a/templates/repo/modelarts/notebook/show.tmpl +++ b/templates/repo/modelarts/notebook/show.tmpl @@ -441,7 +441,7 @@ {{.DatasetName}} {{.DatasetDownloadLink}} - 复制链接 + 复制链接 {{end}} diff --git a/templates/repo/modelarts/trainjob/version_new.tmpl b/templates/repo/modelarts/trainjob/version_new.tmpl index e5d4d954a..b9d24ba7a 100644 --- a/templates/repo/modelarts/trainjob/version_new.tmpl +++ b/templates/repo/modelarts/trainjob/version_new.tmpl @@ -160,6 +160,7 @@
+
{{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}} diff --git a/web_src/js/features/cloudbrainShow.js b/web_src/js/features/cloudbrainShow.js index 9c68722a7..73a8ed7b6 100644 --- a/web_src/js/features/cloudbrainShow.js +++ b/web_src/js/features/cloudbrainShow.js @@ -419,7 +419,7 @@ export default async function initCloudrainSow() { html += ""; html += ""; html += ""; - html += ""; + html += ""; if (data.Dirs[i].IsDir) { html += ""; } else {