Show whether a job still exists

In the dashboard and on the job page, indicate whether the job appears
in the latest jobset eval. That way, the user gets some indication if
a job has accidentally disappeared (e.g. due to an evaluation error).
This commit is contained in:
Eelco Dolstra 2014-04-08 18:49:10 +02:00
parent 4471cae07e
commit be63c50560
3 changed files with 20 additions and 2 deletions

View file

@ -8,7 +8,7 @@ __PACKAGE__->config(
TEMPLATE_EXTENSION => '.tt', TEMPLATE_EXTENSION => '.tt',
PRE_CHOMP => 1, PRE_CHOMP => 1,
POST_CHOMP => 1, POST_CHOMP => 1,
expose_methods => [qw/buildLogExists buildStepLogExists/]); expose_methods => [qw/buildLogExists buildStepLogExists jobExists/]);
sub buildLogExists { sub buildLogExists {
my ($self, $c, $build) = @_; my ($self, $c, $build) = @_;
@ -22,4 +22,15 @@ sub buildStepLogExists {
return defined findLog($c, $step->drvpath, @outPaths); return defined findLog($c, $step->drvpath, @outPaths);
} }
# Check whether the given job is a member of the most recent jobset
# evaluation.
sub jobExists {
my ($self, $c, $job) = @_;
my $latestEval = $job->jobset->jobsetevals->search(
{ hasnewbuilds => 1},
{ rows => 1, order_by => ["id desc"] })->single;
return 0 if !defined $latestEval; # can't happen
return scalar($latestEval->builds->search({ job => $job->name })) != 0;
}
1; 1;

View file

@ -22,7 +22,7 @@
<tdata> <tdata>
[% FOREACH j IN starredJobs %] [% FOREACH j IN starredJobs %]
<tr> <tr>
<td>[% INCLUDE renderFullJobName project=j.job.get_column('project') jobset=j.job.get_column('jobset') job=j.job.name %]</td> <td><span class="[% IF !jobExists(j.job) %]disabled-job[% END %]">[% INCLUDE renderFullJobName project=j.job.get_column('project') jobset=j.job.get_column('jobset') job=j.job.name %]</span></td>
[% FOREACH b IN j.builds %] [% FOREACH b IN j.builds %]
<td><a href="[% c.uri_for('/build' b.id) %]">[% INCLUDE renderBuildStatusIcon size=16 build=b %]</a></td> <td><a href="[% c.uri_for('/build' b.id) %]">[% INCLUDE renderBuildStatusIcon size=16 build=b %]</a></td>
[% END %] [% END %]

View file

@ -5,6 +5,13 @@
[% PROCESS common.tt %] [% PROCESS common.tt %]
[% hideProjectName=1 hideJobsetName=1 hideJobName=1 %] [% hideProjectName=1 hideJobsetName=1 hideJobName=1 %]
[% IF !jobExists(job) %]
<div class="alert alert-warning">This job is not a member of the <a
href="[%c.uri_for('/jobset' project.name jobset.name
'evals')%]">latest evaluation</a> of its jobset. This means it was
removed or had an evaluation error.</div>
[% END %]
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<li class="active"><a href="#tabs-status" data-toggle="tab">Status</a></li> <li class="active"><a href="#tabs-status" data-toggle="tab">Status</a></li>
[% IF constituentJobs.size > 0 %] [% IF constituentJobs.size > 0 %]