Changeset 16208 for trunk/HeuristicLab.Services.Hive/3.3/HiveService.cs
- Timestamp:
- 10/03/18 07:18:26 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/HeuristicLab.Services.Hive/3.3/HiveService.cs
r16203 r16208 520 520 521 521 public void UpdateJobState(Guid jobId, DT.JobState jobState) { 522 RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 523 AuthorizationManager.AuthorizeForJob(jobId, DT.Permission.Full); 522 if (jobState != JobState.StatisticsPending) return; // only process requests for "StatisticsPending" 523 524 RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 525 bool isAdministrator = RoleVerifier.IsInRole(HiveRoles.Administrator); 526 var currentUserId = UserManager.CurrentUserId; 527 524 528 var pm = PersistenceManager; 525 529 using (new PerformanceLogger("UpdateJobState")) { 526 530 var jobDao = pm.JobDao; 531 var projectDao = pm.ProjectDao; 527 532 pm.UseTransaction(() => { 528 533 var job = jobDao.GetById(jobId); 529 534 if (job != null) { 535 536 var administrationGrantedProjects = projectDao 537 .GetAdministrationGrantedProjectsForUser(currentUserId) 538 .ToList(); 539 540 // check if user is an admin, or granted to administer a job-parenting project,... 541 if (!isAdministrator && !administrationGrantedProjects.Contains(job.Project)) 542 AuthorizationManager.AuthorizeForJob(jobId, DT.Permission.Full); // ... or job owner 543 544 // note: allow solely state changes from "Online" to "StatisticsPending" = deletion request by user for HiveStatisticGenerator 530 545 var jobStateEntity = jobState.ToEntity(); 531 // note: allow solely state changes from "Online" to "StatisticsPending" = deletion request by user for HiveStatisticGenerator532 // and from "StatisticsPending" to "DeletionPending" = deletion request by HiveStatisticGenerator for EventManager533 546 if (job.State == DA.JobState.Online && jobStateEntity == DA.JobState.StatisticsPending) { 534 547 job.State = jobStateEntity; … … 540 553 } 541 554 pm.SubmitChanges(); 542 } else if (job.State == DA.JobState.StatisticsPending && jobStateEntity == DA.JobState.DeletionPending) {543 job.State = jobStateEntity;544 pm.SubmitChanges();545 555 } 546 556 } … … 561 571 var projectDao = pm.ProjectDao; 562 572 pm.UseTransaction(() => { 573 var administrationGrantedProjects = projectDao 574 .GetAdministrationGrantedProjectsForUser(currentUserId) 575 .ToList(); 576 563 577 foreach (var jobId in jobIds) { 564 578 var job = jobDao.GetById(jobId); 565 579 if (job != null) { 566 580 567 var administrationGrantedProjects = projectDao 568 .GetAdministrationGrantedProjectsForUser(currentUserId) 569 .ToList(); 570 571 // check if user is granted to administer the job-parenting project 572 if (isAdministrator || administrationGrantedProjects.Contains(job.Project)) { 573 // note: allow solely state changes from "Online" to "StatisticsPending" = deletion request by user for HiveStatisticGenerator 574 if (job.State == DA.JobState.Online) { 575 job.State = DA.JobState.StatisticsPending; 576 foreach (var task in job.Tasks 577 .Where(x => x.State == DA.TaskState.Waiting 578 || x.State == DA.TaskState.Paused 579 || x.State == DA.TaskState.Offline)) { 580 task.State = DA.TaskState.Aborted; 581 } 582 pm.SubmitChanges(); 581 // check if user is an admin, or granted to administer a job-parenting project,... 582 if (!isAdministrator && !administrationGrantedProjects.Contains(job.Project)) 583 AuthorizationManager.AuthorizeForJob(jobId, DT.Permission.Full); // ... or job owner 584 585 // note: allow solely state changes from "Online" to "StatisticsPending" = deletion request by user for HiveStatisticGenerator 586 var jobStateEntity = jobState.ToEntity(); 587 if (job.State == DA.JobState.Online && jobStateEntity == DA.JobState.StatisticsPending) { 588 job.State = jobStateEntity; 589 foreach (var task in job.Tasks 590 .Where(x => x.State == DA.TaskState.Waiting 591 || x.State == DA.TaskState.Paused 592 || x.State == DA.TaskState.Offline)) { 593 task.State = DA.TaskState.Aborted; 583 594 } 584 } 595 pm.SubmitChanges(); 596 } 585 597 } 586 598 }
Note: See TracChangeset
for help on using the changeset viewer.