2009-03-04 17:24:08 +00:00
|
|
|
package Hydra::Controller::Job;
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
use base 'Hydra::Base::Controller::ListBuilds';
|
|
|
|
use Hydra::Helper::Nix;
|
|
|
|
use Hydra::Helper::CatalystUtils;
|
|
|
|
|
|
|
|
|
2009-03-12 23:46:17 +00:00
|
|
|
sub job : Chained('/') PathPart('job') CaptureArgs(3) {
|
|
|
|
my ($self, $c, $projectName, $jobsetName, $jobName) = @_;
|
|
|
|
|
2009-04-08 22:08:00 +00:00
|
|
|
$c->stash->{job_} = $c->model('DB::Jobs')->search({project => $projectName, jobset => $jobsetName, name => $jobName});
|
|
|
|
$c->stash->{job} = $c->stash->{job_}->single
|
2009-03-13 15:41:19 +00:00
|
|
|
or notFound($c, "Job $projectName:$jobsetName:$jobName doesn't exist.");
|
|
|
|
$c->stash->{project} = $c->stash->{job}->project;
|
|
|
|
$c->stash->{jobset} = $c->stash->{job}->jobset;
|
2009-03-04 17:24:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2009-04-02 16:15:57 +00:00
|
|
|
sub overview : Chained('job') PathPart('') Args(0) {
|
|
|
|
my ($self, $c) = @_;
|
|
|
|
|
|
|
|
$c->stash->{template} = 'job.tt';
|
|
|
|
|
2010-02-09 12:35:20 +00:00
|
|
|
#getBuildStats($c, scalar $c->stash->{job}->builds);
|
2009-04-07 15:49:02 +00:00
|
|
|
|
2010-01-08 11:50:55 +00:00
|
|
|
$c->stash->{currentBuilds} = [$c->stash->{job}->builds->search({iscurrent => 1}, { join => 'resultInfo', '+select' => ["resultInfo.releasename", "resultInfo.buildstatus"]
|
|
|
|
, '+as' => ["releasename", "buildstatus"], order_by => 'system' })];
|
2010-04-23 08:17:15 +00:00
|
|
|
|
2010-08-02 12:32:15 +00:00
|
|
|
$c->stash->{lastBuilds} = [$c->stash->{job}->builds->search({ finished => 1 }, { join => 'resultInfo', '+select' => ["resultInfo.releasename", "resultInfo.buildstatus"]
|
|
|
|
, '+as' => ["releasename", "buildstatus"], order_by => 'timestamp DESC', rows => 5 })];
|
2010-04-23 08:17:15 +00:00
|
|
|
|
2010-10-18 12:06:59 +00:00
|
|
|
$c->stash->{runningBuilds} = [$c->stash->{job}->builds->search({busy => 1}, { join => ['schedulingInfo', 'project'] , order_by => ["priority DESC", "timestamp"]
|
2010-04-23 08:17:15 +00:00
|
|
|
, '+select' => ['project.enabled', 'schedulingInfo.priority', 'schedulingInfo.disabled', 'schedulingInfo.busy']
|
|
|
|
, '+as' => ['enabled', 'priority', 'disabled', 'busy'] })];
|
|
|
|
|
2009-10-02 16:06:28 +00:00
|
|
|
$c->stash->{systems} = [$c->stash->{job}->builds->search({iscurrent => 1}, {select => ["system"], distinct => 1})];
|
2009-04-02 16:15:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2009-03-04 17:24:08 +00:00
|
|
|
# Hydra::Base::Controller::ListBuilds needs this.
|
|
|
|
sub get_builds : Chained('job') PathPart('') CaptureArgs(0) {
|
|
|
|
my ($self, $c) = @_;
|
2009-03-13 15:41:19 +00:00
|
|
|
$c->stash->{allBuilds} = $c->stash->{job}->builds;
|
2009-04-03 15:37:21 +00:00
|
|
|
$c->stash->{jobStatus} = $c->model('DB')->resultset('JobStatusForJob')
|
|
|
|
->search({}, {bind => [$c->stash->{project}->name, $c->stash->{jobset}->name, $c->stash->{job}->name]});
|
2009-04-08 22:08:00 +00:00
|
|
|
$c->stash->{allJobs} = $c->stash->{job_};
|
2009-04-03 15:37:21 +00:00
|
|
|
$c->stash->{latestSucceeded} = $c->model('DB')->resultset('LatestSucceededForJob')
|
|
|
|
->search({}, {bind => [$c->stash->{project}->name, $c->stash->{jobset}->name, $c->stash->{job}->name]});
|
2009-03-04 17:24:08 +00:00
|
|
|
$c->stash->{channelBaseName} =
|
2009-03-13 15:41:19 +00:00
|
|
|
$c->stash->{project}->name . "-" . $c->stash->{jobset}->name . "-" . $c->stash->{job}->name;
|
2009-03-04 17:24:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
1;
|