diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 977a4ed65..c1c01b581 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1767,6 +1767,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/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/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 @@