Jobset.pm: Factor out build->eval mapping.
[?]
Apr 26, 2015, 5:37 AM
TNIHMBCRFZO4FPMVYCQGPVFHRRYMXF24FPIUX2Q6SSHPDZYOEJ5QCDependencies
- [2]
MNKXBLNCReturn 410 Gone (rather than 500) if an output is no longer available - [3]
XA4U3RP6Jobset job tab: Show eval date rather than eval ID - [4]
TFPS7WQ2Jobset.pm: Detect channels by isChannel attribute. - [5]
ZWKPXRWYJobset.pm: Don't show channels in "Jobs" tab. - [6]
J3RYO2CURemove the jobs status page - [7]
TJPIS3UPhydra: minor improvements in hydra ui - [8]
RX7USXWQjobset: Add a new "channels" tab. - [9]
D7X6XTKQIntegrate the "Job status" and "All jobs" tabs - [10]
QTC3SYBMJobset page: Load the jobs and status tabs on demand - [11]
XU4PKY3UBy default, show the first 250 jobs only - [12]
Z6FOXDECUse more flash messages - [13]
ZI535LI6* hydra: 'new' UI for project/jobset/job/build - [14]
6QRHXIM3* Speed up the jobset index page. Especially the query to get the - [15]
CQTN62OHDie tabs die - [16]
YVVIXELLMake channels a product type instead of subtype. - [17]
UMFB2767Hydra/64: Leaving number of builds empty gives DBIx error - [18]
GEADFVZ5hydra-queue-runner: Improved scheduling - [19]
AK2UZDS2Jobset page: Add a new tab to show job status in a matrix - [*]
3HZY24CX* Make jobsets viewable under - [*]
LBNVQXUB* Build the /build stuff in a separate controller. - [*]
SSMN5MPTRemove dead code - [*]
KAZWI5G4* hydra: buildpage, show changes since last build/successful build - [*]
LGNML7VJDon't use a prepared statement for the active build steps query - [*]
3PNG7NIBRemove trailing whitespace
Change contents
- edit in src/lib/Hydra/Controller/Jobset.pm at line 110
my @evals = $c->stash->{jobset}->jobsetevals->search({ hasnewbuilds => 1}, { order_by => "id desc", rows => 20 }); - replacement in src/lib/Hydra/Controller/Jobset.pm at line 111
my $evals = {};my %jobs;my $nrBuilds = 0;my ($evals, $builds) = searchBuildsAndEvalsForJobset($c->stash->{jobset},{ job => { ilike => $filter }, ischannel => 0 },10000); - edit in src/lib/Hydra/Controller/Jobset.pm at line 117[6.611]→[6.611:687](∅→∅),[6.687]→[5.0:61](∅→∅),[5.61]→[6.756:826](∅→∅),[6.96]→[6.756:826](∅→∅),[6.756]→[6.756:826](∅→∅),[6.826]→[6.198:281](∅→∅),[6.281]→[3.0:119](∅→∅),[3.119]→[6.328:524](∅→∅),[6.192]→[6.328:524](∅→∅),[6.328]→[6.328:524](∅→∅),[6.524]→[6.1858:1864](∅→∅),[6.1096]→[6.1858:1864](∅→∅),[6.1915]→[6.1858:1864](∅→∅),[6.2291]→[6.1858:1864](∅→∅),[6.1858]→[6.1858:1864](∅→∅),[6.1864]→[6.1097:1098](∅→∅)
foreach my $eval (@evals) {my @builds = $eval->builds->search({ job => { ilike => $filter }, ischannel => 0 },{ columns => ['id', 'job', 'finished', 'buildstatus'] });foreach my $b (@builds) {my $jobName = $b->get_column('job');$evals->{$eval->id}->{timestamp} = $eval->timestamp;$evals->{$eval->id}->{jobs}->{$jobName} ={ id => $b->id, finished => $b->finished, buildstatus => $b->buildstatus };$jobs{$jobName} = 1;$nrBuilds++;}last if $nrBuilds >= 10000;} - replacement in src/lib/Hydra/Controller/Jobset.pm at line 120
next if defined $jobs{$job->name};$c->stash->{inactiveJobs}->{$job->name} = $jobs{$job->name} = 1;next if defined $builds->{$job->name};$c->stash->{inactiveJobs}->{$job->name} = $builds->{$job->name} = 1; - replacement in src/lib/Hydra/Controller/Jobset.pm at line 126
my @jobs = sort (keys %jobs);my @jobs = sort (keys %$builds); - edit in src/lib/Hydra/Controller/Jobset.pm at line 133
# XXX: Pretty much a rip-off of jobs-tab, make it DRY! - replacement in src/lib/Hydra/Controller/Jobset.pm at line 137
my @evals = $c->stash->{jobset}->jobsetevals->search({ hasnewbuilds => 1},{ order_by => "id desc", rows => 20 }my ($evals, $builds) = searchBuildsAndEvalsForJobset($c->stash->{jobset},{ ischannel => 1 } - edit in src/lib/Hydra/Controller/Jobset.pm at line 141
my $evals = {};my %channels; - edit in src/lib/Hydra/Controller/Jobset.pm at line 142
foreach my $eval (@evals) {my @builds = $eval->builds->search({ ischannel => 1 },{ columns => ['id', 'job', 'finished', 'buildstatus'] });foreach my $b (@builds) {my $jobName = $b->get_column('job');$evals->{$eval->id}->{timestamp} = $eval->timestamp;$evals->{$eval->id}->{channels}->{$jobName} = {id => $b->id,finished => $b->finished,buildstatus => $b->buildstatus};$channels{$jobName} = 1;}} - replacement in src/lib/Hydra/Controller/Jobset.pm at line 143
my @channels = sort (keys %channels);my @channels = sort (keys %$builds); - edit in src/lib/Hydra/Helper/CatalystUtils.pm at line 13
searchBuildsAndEvalsForJobset - edit in src/lib/Hydra/Helper/CatalystUtils.pm at line 87
sub searchBuildsAndEvalsForJobset {my ($jobset, $condition, $maxBuilds) = @_;my @evals = $jobset->jobsetevals->search({ hasnewbuilds => 1},{ order_by => "id desc",rows => 20});my $evals = {};my %builds;my $nrBuilds = 0; - edit in src/lib/Hydra/Helper/CatalystUtils.pm at line 102[25.370][26.2562]
foreach my $eval (@evals) {my @allBuilds = $eval->builds->search($condition,{ columns => ['id', 'job', 'finished', 'buildstatus'] }); - edit in src/lib/Hydra/Helper/CatalystUtils.pm at line 108[26.2563][22.3710]
foreach my $b (@allBuilds) {my $jobName = $b->get_column('job');$evals->{$eval->id}->{timestamp} = $eval->timestamp;$evals->{$eval->id}->{builds}->{$jobName} = {id => $b->id,finished => $b->finished,buildstatus => $b->buildstatus};$builds{$jobName} = 1;$nrBuilds++;}last if $maxBuilds && $nrBuilds >= $maxBuilds;}return ($evals, \%builds);} - replacement in src/root/jobset-channels-tab.tt at line 27
<td>[% r = evals.$eval.channels.$chan; IF r.id %]<a href="[% c.uri_for('/build' r.id) %]">[% INCLUDE renderBuildStatusIcon size=16 build=r %]</a>[% END %]</td><td>[% r = evals.$eval.builds.$chan; IF r.id %]<a href="[% c.uri_for('/build' r.id) %]">[% INCLUDE renderBuildStatusIcon size=16 build=r %]</a>[% END %]</td> - replacement in src/root/jobset-jobs-tab.tt at line 62
<td>[% r = evals.$eval.jobs.$j; IF r.id %]<a href="[% c.uri_for('/build' r.id) %]">[% INCLUDE renderBuildStatusIcon size=16 build=r %]</a>[% END %]</td><td>[% r = evals.$eval.builds.$j; IF r.id %]<a href="[% c.uri_for('/build' r.id) %]">[% INCLUDE renderBuildStatusIcon size=16 build=r %]</a>[% END %]</td>