Skip to content

Commit c7068b8

Browse files
committed
Add events when rescheduling jobs
1 parent 8602012 commit c7068b8

2 files changed

Lines changed: 32 additions & 3 deletions

File tree

api/ui/job.php

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,19 @@ public function patch() {
6464
if (isset($this->request['status'])) {
6565
$oldStatus = $job->getStatus();
6666
$job->setStatus($this->request['status']);
67-
$event = new Event(0, "Job status changed", date('Y-m-d H:i:s'),
68-
"Job of evaluation '" . $evaluation->getName() . "' running in environment '" . $job->getEnvironment() . "' changed from " . Util::getStatusText($oldStatus) . " to " . Util::getStatusText($job->getStatus()) . ".",
69-
Define::EVENT_JOB, $job->getId(), ($auth->isLoggedIn()) ? $auth->getUserID() : null, null);
67+
if ($job->getStatus() == Define::JOB_STATUS_SCHEDULED) {
68+
$event = new Event(0, "Job has been rescheduled", date('Y-m-d H:i:s'),
69+
"Job of evaluation '" . $evaluation->getName() . "' running in environment '" . $job->getEnvironment() . "' has been rescheduled. Previous status has been: " . Util::getStatusText($oldStatus),
70+
Define::EVENT_JOB, $job->getId(), ($auth->isLoggedIn()) ? $auth->getUserID() : null, null);
71+
} else if ($job->getStatus() == Define::JOB_STATUS_ABORTED) {
72+
$event = new Event(0, "Job has been aborted", date('Y-m-d H:i:s'),
73+
"Job of evaluation '" . $evaluation->getName() . "' running in environment '" . $job->getEnvironment() . "' has been aborted. Previous status has been: " . Util::getStatusText($oldStatus),
74+
Define::EVENT_JOB, $job->getId(), ($auth->isLoggedIn()) ? $auth->getUserID() : null, null);
75+
} else {
76+
$event = new Event(0, "Job status changed", date('Y-m-d H:i:s'),
77+
"Job of evaluation '" . $evaluation->getName() . "' running in environment '" . $job->getEnvironment() . "' has manually been changed from " . Util::getStatusText($oldStatus) . " to " . Util::getStatusText($job->getStatus()) . ".",
78+
Define::EVENT_JOB, $job->getId(), ($auth->isLoggedIn()) ? $auth->getUserID() : null, null);
79+
}
7080
Factory::getEventFactory()->save($event);
7181
if ($this->request['status'] == Define::JOB_STATUS_SCHEDULED) {
7282
$job->setCurrentPhase(null);

controllers/evaluation.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
use DBA\Job;
3333
use DBA\ProjectUser;
3434
use DBA\QueryFilter;
35+
use DBA\Event;
3536

3637
class Evaluation_Controller extends Controller {
3738

@@ -111,12 +112,30 @@ public function detail() {
111112
$qF1 = new ContainFilter(Job::STATUS, [Define::JOB_STATUS_FAILED, Define::JOB_STATUS_ABORTED]);
112113
$qF2 = new QueryFilter(Job::EVALUATION_ID, $evaluation->getId(), "=");
113114
$uS = new UpdateSet(Job::STATUS, Define::JOB_STATUS_SCHEDULED);
115+
$jobs = Factory::getJobFactory()->filter([Factory::FILTER => [$qF1, $qF2]]); // For events, we need the old status
114116
Factory::getJobFactory()->massUpdate([Factory::FILTER => [$qF1, $qF2], Factory::UPDATE => $uS]);
117+
// Add events
118+
$auth = Auth_Library::getInstance();
119+
foreach ($jobs as $job) {
120+
$event = new Event(0, "Job has been rescheduled", date('Y-m-d H:i:s'),
121+
"Job of evaluation '" . $evaluation->getName() . "' running in environment '" . $job->getEnvironment() . "' has been rescheduled. Previous status has been: " . Util::getStatusText($job->getStatus()),
122+
Define::EVENT_JOB, $job->getId(), ($auth->isLoggedIn()) ? $auth->getUserID() : null, null);
123+
Factory::getEventFactory()->save($event);
124+
}
115125
} else if (!empty($this->post['abort']) && $this->post['abort'] == 'all') {
116126
$qF1 = new ContainFilter(Job::STATUS, [Define::JOB_STATUS_SCHEDULED, Define::JOB_STATUS_SETUP, Define::JOB_STATUS_RUNNING, Define::JOB_STATUS_FAILED]);
117127
$qF2 = new QueryFilter(Job::EVALUATION_ID, $evaluation->getId(), "=");
118128
$uS = new UpdateSet(Job::STATUS, Define::JOB_STATUS_ABORTED);
129+
$jobs = Factory::getJobFactory()->filter([Factory::FILTER => [$qF1, $qF2]]); // For events, we need the old status
119130
Factory::getJobFactory()->massUpdate([Factory::FILTER => [$qF1, $qF2], Factory::UPDATE => $uS]);
131+
// Add events
132+
$auth = Auth_Library::getInstance();
133+
foreach ($jobs as $job) {
134+
$event = new Event(0, "Job has been aborted", date('Y-m-d H:i:s'),
135+
"Job of evaluation '" . $evaluation->getName() . "' running in environment '" . $job->getEnvironment() . "' has been aborted. Previous status has been: " . Util::getStatusText($job->getStatus()),
136+
Define::EVENT_JOB, $job->getId(), ($auth->isLoggedIn()) ? $auth->getUserID() : null, null);
137+
Factory::getEventFactory()->save($event);
138+
}
120139
} else if (!empty($this->post['star'])) {
121140
if ($evaluation->getIsStarred()) {
122141
throw new ProcessException("Evaluation is already starred!");

0 commit comments

Comments
 (0)