Remove the Errors page

[?]
Oct 3, 2013, 1:00 PM
G2WXEQHE6WCBN25VLO6XF3FJAOCJLMRKYOIQLETGIWTR6ON2AIVAC

Dependencies

  • [2] NRSKJPP4 makeLink -> menuItem
  • [3] VG4QG336 Remove tablesorter
  • [4] AK2UZDS2 Jobset page: Add a new tab to show job status in a matrix
  • [5] KXGOUX7P * Creating releases.
  • [6] LSZLZHJY Allow users to edit their own settings
  • [7] CQTN62OH Die tabs die
  • [8] 3EGKZC3C hydra: in jobstatus pages, allow maintainer query argument to show only the packages you are maintaining
  • [9] AS2OXLRM * Editing releases.
  • [10] SZYDW2DG hydra: added some user admin
  • [11] P5X4P6VK * Renaming "release sets" to "views" (not finished yet). Having
  • [12] 5DSDXORD hydra: missing plain.tt
  • [13] VH5ZABDR Add a page to show the latest evaluations for the entire server
  • [14] 4UUKWXDF Jobset page: Show last evaluation time
  • [15] J3RYO2CU Remove the jobs status page
  • [16] LFVXESGI Remove already disabled jobstatus code
  • [17] OEPUOUNB Using twitter bootstrap for more consistent looks for Hydra
  • [18] AKAZKCR6 * At top-level and for each project, provide two channels: "latest"
  • [19] N4ODPYP7 Job page: Remove channel tab
  • [20] QTC3SYBM Jobset page: Load the jobs and status tabs on demand
  • [21] JY7BXXOP Split viewing and editing a project
  • [22] 6GEU36HW Remove obsolete CSS classes
  • [23] JARRBLZD Bootstrapify the Hydra forms (except the project and jobset edit pages)
  • [24] FV2M6MOT hydra: use autoconf/-make
  • [25] CQQSJLON On aggregate job pages, show a matrix showing all the constituent builds
  • [26] IHU3IMC6 Revert changeset 4399683fa0e9abb64f63affc7caca7f77abea1b7, make jobset options available to project members as well
  • [27] WRIU3S5E * UI for cloning builds (not functional yet).
  • [28] 6FRLEP4P first try for timeline of last 24 hours in hydra
  • [29] OR5SJ42Y Show releases in a tab on the project page
  • [30] GIWHL67V Remove the job status pages
  • [31] D7X6XTKQ Integrate the "Job status" and "All jobs" tabs
  • [32] D7PL2VWU Move more actions from the top bar
  • [33] U72VNKRU Remove unused file
  • [34] JOVVHIJX Remove all entry points to modify machines
  • [35] RI4S7SYT * Job status: show the active jobs.
  • [36] J7EE2XZA Fix a huge performance regression in the jobstatus page
  • [37] ZD5AEKWM * Job status / error pages: show only active jobs.
  • [38] NEQ4BISO Add bootstrap.zip
  • [39] FPK5LF53 * Put the project-related actions in a separate controller. Put the
  • [40] HPEG2RHV Merge the BuildResultInfo table into the Builds table
  • [41] TRDGNILT Remove unused file
  • [42] 7ZQAHJQM Fix indentation
  • [43] UWVMQIAC * Refactoring.
  • [44] RBNQKATL * Adding persistant releases. A release is a named set of builds.
  • [45] 4JS4DWHD All/recent builds -> Latest builds
  • [46] OX6NYJDV Split viewing and editing a jobset
  • [47] XDDCO6CH * hydra: add dependency list with links to logfiles
  • [48] QL55ECJ6 - adapted ui for hydra, more in line with nixos.org website
  • [49] DEMSSSB2 * Controller for jobs which inherits all actions in ListBuilds. So
  • [50] Q4VDOA76 Replace last 5 builds on jobset page with last 5 evaluations. Moved hide/unhide and evaluate options to jobset topmenu.
  • [51] SMTMFEKE hydra: add missing templates
  • [52] LKPVSUCI Builds page: Remove redundant tab titles
  • [53] EVYSAFB2 Transpose the aggregate constituents table
  • [54] X5UVREJY * PostgreSQL compatibility.
  • [55] EFWN7JBV * Added a status page that shows all the currently executing build steps.
  • [56] HU5DPGCV There is only one channel, so drop the "(latest)" suffix
  • [57] 36M6DGIT Show the runtime/build dependencies in the build page
  • [58] 3JBUMW3E forgot to commit a file
  • [59] RSEGBU6C Hydra/20: Jobset clone feature
  • [60] PZL3SZM3 Give every page a consistent title
  • [61] 64IV56HI Replace bootstrap tarball
  • [62] TCHEWSZL * The "latest" channel shouldn't contain inactive jobs.
  • [63] AH2YD57S * More database hackery.
  • [64] SJN2QPWH * Big speed-up of the job status page and the channel generation (such
  • [65] RAKTHYAI * In the job status and error pages, show when the status of a job
  • [66] G5YSUSNZ In build tables, hide the project, jobset and/or job name if they're constant
  • [67] GEL2WHSU Move channel link to top menu of Project and Jobset.
  • [68] ZWCTAZGL added newsitems, added some admin options to clear various caches.
  • [69] KKJNJHO5 Update bootstrap to 2.0.3
  • [70] ODNCGFQ5 * Improved the navigation bar: don't include all projects (since that
  • [71] U4TD3AIQ Add support for viewing jobset evaluations
  • [72] D5QIOJGP * Move everything up one directory.
  • [73] 3PNG7NIB Remove trailing whitespace
  • [74] 75XUS62Y * Added a page to quickly see all failed builds and failed evaluations
  • [75] R2PON6R7 Allow non-admin users to see the machine status page
  • [76] HZWUT4YN Allow users to reproduce builds on their own systems
  • [77] 2DTJNAMX Allow project members to create jobsets, regression introduced by bootstrap make-over. Currently all logged in users see these options, however, only on performing the action the privileges are checked. Need to change that in the future.
  • [78] UICHT2PS Add a search feature
  • [79] 2BUX775I * More release -> view.
  • [80] Z4KRJX4Q * In the last succeeded / job status queries, use the Builds.isCurrent
  • [*] 3HZY24CX * Make jobsets viewable under
  • [*] J5UVLXOK * Start of a basic Catalyst web interface.

Change contents

  • edit in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 8
    [5.77][5.77:123](),[5.123][5.812:813](),[5.813][5.7:65](),[5.7][5.7:65](),[5.65][5.165:166](),[5.326][5.165:166](),[5.165][5.165:166](),[5.166][5.0:49](),[5.49][5.66:149](),[5.603][5.66:149](),[5.149][5.50:176](),[5.167][5.0:59](),[5.176][5.0:59](),[5.741][5.0:59](),[5.59][5.787:800](),[5.787][5.787:800](),[5.800][5.327:349](),[5.166][5.327:349](),[5.349][5.0:1](),[5.1][5.166:167](),[5.349][5.166:167](),[5.166][5.166:167](),[5.3][5.4:69](),[5.4][5.4:69](),[5.69][5.814:841](),[5.841][5.97:534](),[5.97][5.97:534](),[5.534][5.177:250](),[5.63][5.330:332](),[5.86][5.330:332](),[5.170][5.330:332](),[5.250][5.330:332](),[5.490][5.330:332](),[5.630][5.330:332](),[5.879][5.330:332](),[5.330][5.330:332]()
    sub getJobStatus {
    my ($self, $c) = @_;
    my $maintainer = $c->request->params->{"maintainer"};
    my $latest = $c->stash->{jobStatus}->search(
    defined $maintainer ? { maintainers => { like => "%$maintainer%" } } : {},
    { '+select' => ["me.statusChangeId", "me.statusChangeTime"]
    , '+as' => ["statusChangeId", "statusChangeTime"]
    , order_by => "coalesce(statusChangeTime, 0) desc"
    });
    return $latest;
    }
    # A convenient way to see all the errors - i.e. things demanding
    # attention - at a glance.
    sub errors : Chained('get_builds') PathPart Args(0) {
    my ($self, $c) = @_;
    $c->stash->{template} = 'errors.tt';
    $c->stash->{brokenJobsets} =
    [$c->stash->{allJobsets}->search({errormsg => {'!=' => ''}})]
    if defined $c->stash->{allJobsets};
    $c->stash->{brokenJobs} =
    [$c->stash->{allJobs}->search({errormsg => {'!=' => ''}})]
    if defined $c->stash->{allJobs};
    $c->stash->{brokenBuilds} =
    [getJobStatus($self, $c)->search({buildStatus => {'!=' => 0}})];
    }
  • replacement in src/lib/Hydra/Controller/Job.pm at line 43
    [5.234][5.0:123](),[5.123][5.357:556](),[5.357][5.357:556]()
    { aggregate => { -in => $job->builds->search({}, { columns => ["id"], order_by => "id desc", rows => 15 })->as_query } },
    { join => 'aggregateconstituents_constituents',
    columns => ['id', 'job', 'finished', 'buildstatus'],
    +select => ['aggregateconstituents_constituents.aggregate'],
    +as => ['aggregate']
    });
    [5.234]
    [5.556]
    { aggregate => { -in => $job->builds->search({}, { columns => ["id"], order_by => "id desc", rows => 15 })->as_query } },
    { join => 'aggregateconstituents_constituents',
    columns => ['id', 'job', 'finished', 'buildstatus'],
    +select => ['aggregateconstituents_constituents.aggregate'],
    +as => ['aggregate']
    });
  • replacement in src/lib/Hydra/Controller/Job.pm at line 53
    [5.643][5.643:681](),[5.681][5.124:198](),[5.198][4.0:81](),[4.81][5.819:852](),[5.819][5.819:852]()
    my $jobName = $b->get_column('job');
    $aggregates->{$b->get_column('aggregate')}->{constituents}->{$jobName} =
    { id => $b->id, finished => $b->finished, buildstatus => $b->buildstatus };
    $constituentJobs{$jobName} = 1;
    [5.643]
    [5.199]
    my $jobName = $b->get_column('job');
    $aggregates->{$b->get_column('aggregate')}->{constituents}->{$jobName} =
    { id => $b->id, finished => $b->finished, buildstatus => $b->buildstatus };
    $constituentJobs{$jobName} = 1;
  • replacement in src/lib/Hydra/Controller/Job.pm at line 60
    [5.248][5.248:410]()
    # FIXME: could be done in one query.
    $aggregates->{$agg}->{build} =
    $c->model('DB::Builds')->find({id => $agg}, {columns => [@buildListColumns]}) or die;
    [5.248]
    [5.852]
    # FIXME: could be done in one query.
    $aggregates->{$agg}->{build} =
    $c->model('DB::Builds')->find({id => $agg}, {columns => [@buildListColumns]}) or die;
  • edit in src/lib/Hydra/Controller/Job.pm at line 76
    [5.578][5.804:850]()
    $c->stash->{allJobs} = $c->stash->{job_};
  • edit in src/lib/Hydra/Controller/Jobset.pm at line 188
    [5.946][5.984:1090]()
    $c->stash->{allJobsets} = $c->stash->{jobset_};
    $c->stash->{allJobs} = $c->stash->{jobset}->jobs;
  • edit in src/lib/Hydra/Controller/Project.pm at line 207
    [5.1267][5.1091:1207]()
    $c->stash->{allJobsets} = $c->stash->{project}->jobsets;
    $c->stash->{allJobs} = $c->stash->{project}->jobs;
  • edit in src/lib/Hydra/Controller/Root.pm at line 154
    [5.1491][5.1208:1314]()
    $c->stash->{allJobsets} = $c->model('DB::Jobsets');
    $c->stash->{allJobs} = $c->model('DB::Jobs');
  • file deletion: errors.tt (----------)
    [5.1486][5.3038:3071](),[5.3071][5.1442:1442]()
    [% WRAPPER layout.tt title="Errors" %]
    [% PROCESS common.tt %]
    <p>This page provides a quick way to see how FUBARed your packages
    are. It shows job expressions that don’t evaluate properly and jobs
    that don’t build.</p>
    [% haveErrors = 0 %]
    [% IF brokenJobsets && brokenJobsets.size > 0; haveErrors = 1 %]
    <h2>Evaluation errors in jobsets</h2>
    <table class="table table-condensed table-striped">
    <thead>
    <tr>
    <th>Name</th>
    <th>Error</th>
    </tr>
    </thead>
    <tdata>
    [% FOREACH j IN brokenJobsets %]
    <tr>
    <td>[% INCLUDE renderFullJobsetName project=j.project.name jobset=j.name %]</td>
    <td>
    <pre class="error">[% HTML.escape(j.errormsg) %]</pre>
    </td>
    </tr>
    [% END %]
    </tdata>
    </table>
    [% END %]
    [% IF brokenJobs && brokenJobs.size > 0; haveErrors = 1 %]
    <h2>Evaluation errors in jobs</h2>
    <table class="table table-condensed table-striped">
    <thead>
    <tr>
    <th>Name</th>
    <th>Error</th>
    </tr>
    </thead>
    <tdata>
    [% FOREACH j IN brokenJobs %]
    <tr>
    <td>[% INCLUDE renderFullJobName project=j.project.name jobset=j.jobset.name job=j.name %]</td>
    <td>
    <pre class="error">[% HTML.escape(j.errormsg) %]</pre>
    </td>
    </tr>
    [% END %]
    </tdata>
    </table>
    [% END %]
    [% IF brokenBuilds && brokenBuilds.size > 0; haveErrors = 1 %]
    <h2>Broken builds</h2>
    [% INCLUDE renderBuildList builds=brokenBuilds showStatusChange=1 hideProjectName=project hideJobsetName=jobset hideJobName=job %]
    [% END %]
    [% IF !haveErrors %]
    <p><strong>There are currently no problems.</strong></p>
    [% END %]
    [% END %]
  • edit in src/root/topbar.tt at line 36
    [5.11768][5.11768:11892]()
    [% INCLUDE menuItem uri = c.uri_for(c.controller('Project').action_for('errors'), [project.name]) title = "Errors" %]
  • edit in src/root/topbar.tt at line 53
    [5.12981][2.233:259](),[2.259][5.13007:13133](),[5.13007][5.13007:13133]()
    [% INCLUDE menuItem
    uri = c.uri_for(c.controller('Jobset').action_for('errors'), [project.name, jobset.name])
    title = "Errors" %]
  • edit in src/root/topbar.tt at line 67
    [5.281][2.314:340](),[2.367][5.14040:14173](),[5.14040][5.14040:14173]()
    [% INCLUDE menuItem
    uri = c.uri_for(c.controller('Job').action_for('errors'), [project.name, jobset.name, job.name])
    title = "Errors" %]