@@ -1767,6 +1767,12 @@ func GetCloudbrainsNeededStopByRepoID(repoID int64) ([]*Cloudbrain, error) { | |||||
return cloudBrains, err | 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) { | func GetCloudbrainsByDisplayJobName(repoID int64, jobType string, displayJobName string) ([]*Cloudbrain, error) { | ||||
cloudBrains := make([]*Cloudbrain, 0) | 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) | 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) | ||||
@@ -1788,7 +1788,6 @@ func DeleteRepository(doer *User, uid, repoID int64) error { | |||||
// Delete dataset attachment record and remove related files | // Delete dataset attachment record and remove related files | ||||
deleteDatasetAttachmentByRepoId(sess, repoID) | deleteDatasetAttachmentByRepoId(sess, repoID) | ||||
if err = deleteBeans(sess, | if err = deleteBeans(sess, | ||||
&Access{RepoID: repo.ID}, | &Access{RepoID: repo.ID}, | ||||
&Action{RepoID: repo.ID}, | &Action{RepoID: repo.ID}, | ||||
@@ -1245,6 +1245,15 @@ func StopJobsByRepoID(repoID int64) { | |||||
StopJobs(cloudBrains) | 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) { | func retry(attempts int, sleep time.Duration, f func() error) (err error) { | ||||
for i := 0; i < attempts; i++ { | for i := 0; i < attempts; i++ { | ||||
if i > 0 { | if i > 0 { | ||||
@@ -1347,7 +1386,7 @@ func deleteCloudbrainJob(ctx *context.Context) error { | |||||
return err | return err | ||||
} | } | ||||
deleteJobStorage(task.JobName, models.TypeCloudBrainOne) | |||||
DeleteCloudbrainJobStorage(task.JobName, models.TypeCloudBrainOne) | |||||
return nil | return nil | ||||
} | } | ||||
@@ -1734,7 +1773,7 @@ func mkPathAndReadMeFile(path string, text string) error { | |||||
return nil | return nil | ||||
} | } | ||||
func deleteJobStorage(jobName string, cloudbrainType int) error { | |||||
func DeleteCloudbrainJobStorage(jobName string, cloudbrainType int) error { | |||||
//delete local | //delete local | ||||
localJobPath := setting.JobPath + jobName | localJobPath := setting.JobPath + jobName | ||||
err := os.RemoveAll(localJobPath) | err := os.RemoveAll(localJobPath) | ||||
@@ -637,7 +637,7 @@ func deleteGrampusJob(ctx *context.Context) error { | |||||
if task.ComputeResource == models.NPUResource { | if task.ComputeResource == models.NPUResource { | ||||
storageType = models.TypeCloudBrainTwo | storageType = models.TypeCloudBrainTwo | ||||
} | } | ||||
deleteJobStorage(task.JobName, storageType) | |||||
DeleteCloudbrainJobStorage(task.JobName, storageType) | |||||
return nil | return nil | ||||
} | } | ||||
@@ -504,7 +504,8 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) { | |||||
return | return | ||||
} | } | ||||
log.Trace("Repository deleted: %s/%s", ctx.Repo.Owner.Name, repo.Name) | 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.Flash.Success(ctx.Tr("repo.settings.deletion_success")) | ||||
ctx.Redirect(ctx.Repo.Owner.DashboardLink()) | ctx.Redirect(ctx.Repo.Owner.DashboardLink()) | ||||
@@ -160,6 +160,7 @@ | |||||
<div id="select-multi-dataset"> | <div id="select-multi-dataset"> | ||||
</div> | </div> | ||||
<span class="tooltips" style="margin-left: 11.5rem;margin-bottom: 1rem;"></span> | |||||
<div class="inline unite min_title field"> | <div class="inline unite min_title field"> | ||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.run_parameter"}}</label> | <label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.run_parameter"}}</label> | ||||
<span id="add_run_para" style="margin-left: 0.5rem;cursor:pointer;color: rgba(3, 102, 214, 100);font-size: 14px;line-height: 26px;font-family: SourceHanSansSC-medium;"><i class="plus square outline icon"></i>{{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}}</span> | <span id="add_run_para" style="margin-left: 0.5rem;cursor:pointer;color: rgba(3, 102, 214, 100);font-size: 14px;line-height: 26px;font-family: SourceHanSansSC-medium;"><i class="plus square outline icon"></i>{{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}}</span> | ||||
@@ -419,7 +419,7 @@ export default async function initCloudrainSow() { | |||||
html += "</a>"; | html += "</a>"; | ||||
html += "</span>"; | html += "</span>"; | ||||
html += "</td>"; | html += "</td>"; | ||||
html += "<td class='message seven wide'>"; | |||||
html += "<td class='message1 seven wide'>"; | |||||
if (data.Dirs[i].IsDir) { | if (data.Dirs[i].IsDir) { | ||||
html += "<span class='truncate has-emoji'></span>"; | html += "<span class='truncate has-emoji'></span>"; | ||||
} else { | } else { | ||||