* Job status: show the active jobs.

[?]
Mar 13, 2009, 5:32 PM
RI4S7SYT3QKWCR2OBQ3RGVHWHRBGB6PKIEVGZYITV3FF6PF3CT6QC

Dependencies

  • [2] S5PV6IIM * Represent jobs explicitly in the DB.
  • [3] UWVMQIAC * Refactoring.
  • [4] M552HLIA * Support variant builds.
  • [5] 3E6IP3R3 * Add the name of the jobset to ReleaseSetJobs, otherwise we can't
  • [6] SHZLOM5M * eval-jobs -> hydra_eval_jobs.
  • [7] FPK5LF53 * Put the project-related actions in a separate controller. Put the
  • [8] 7UJ5YV4V * Provide a channel for each project containing all the latest
  • [9] LBNVQXUB * Build the /build stuff in a separate controller.
  • [10] DEMSSSB2 * Controller for jobs which inherits all actions in ListBuilds. So
  • [11] 3HZY24CX * Make jobsets viewable under
  • [12] AKAZKCR6 * At top-level and for each project, provide two channels: "latest"
  • [*] J5UVLXOK * Start of a basic Catalyst web interface.
  • [*] N22GPKYT * Put info about logs / build products in the DB.

Change contents

  • replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 13
    [4.44][4.249:330](),[4.249][4.249:330]()
    $c->stash->{latestBuilds} = getLatestBuilds($c, $c->stash->{allBuilds}, {});
    [4.44]
    [4.330]
    my $jobs = $c->stash->{allJobs};
    $c->stash->{latestBuilds} =
    getLatestBuilds($c, ref $jobs eq "ARRAY" ? $jobs : scalar $jobs->search({active => 1}), {});
  • replacement in src/lib/Hydra/Base/Controller/ListBuilds.pm at line 46
    [4.289][4.289:386]()
    getChannelData($c, getLatestBuilds($c, $c->stash->{allBuilds}, {buildStatus => 0}));
    [4.289]
    [4.386]
    getChannelData($c, getLatestBuilds($c, scalar $c->stash->{allJobs}->search({active => 1}), {buildStatus => 0}));
  • edit in src/lib/Hydra/Controller/Job.pm at line 30
    [3.419]
    [4.799]
    #$c->stash->{allJobs} = # !!! horribly hacky
    # $c->stash->{job}->jobset->jobs->search({name => $c->stash->{job}->name});
    $c->stash->{allJobs} = [$c->stash->{job}];
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 32
    [4.963][4.963:1029]()
    $c->stash->{allBuilds} =
    $c->stash->{jobset}->builds;
    [4.963]
    [4.1029]
    $c->stash->{allBuilds} = $c->stash->{jobset}->builds;
    $c->stash->{allJobs} = $c->stash->{jobset}->jobs;
  • edit in src/lib/Hydra/Controller/Project.pm at line 228
    [3.1034]
    [3.1034]
    $c->stash->{allJobs} = $c->stash->{project}->jobs;
  • edit in src/lib/Hydra/Controller/Root.pm at line 226
    [4.9650]
    [4.774]
    $c->stash->{allJobs} = $c->model('DB::Jobs');
  • replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 48
    [4.10525][4.10525:10565]()
    my ($c, $builds, $extraAttrs) = @_;
    [4.10525]
    [4.10565]
    my ($c, $jobs, $extraAttrs) = @_;
  • replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 52
    [4.10585][4.81:177](),[4.177][4.10684:10710](),[4.10684][4.10684:10710](),[4.10710][4.178:233](),[4.233][2.0:47](),[2.47][4.266:305](),[4.266][4.266:305](),[4.305][4.10841:11075](),[4.10841][4.10841:11075]()
    foreach my $build ($builds->search({},
    {group_by => ['project', 'job', 'system']}))
    {
    my $attrs =
    { project => $build->get_column('project')
    , job => $build->get_column('job')
    , system => $build->system
    , finished => 1
    };
    my ($build) = $builds->search({ %$attrs, %$extraAttrs },
    { join => 'resultInfo', order_by => 'timestamp DESC', rows => 1 } );
    push @res, $build if defined $build;
    [4.10585]
    [4.11075]
    # !!! this could be done more efficiently.
    foreach my $job (ref $jobs eq "ARRAY" ? @{$jobs} : $jobs->all) {
    foreach my $system ($job->builds->search({}, {select => ['system'], distinct => 1})) {
    my ($build) = $job->builds->search(
    { finished => 1, system => $system->system, %$extraAttrs },
    { join => 'resultInfo', order_by => 'timestamp DESC', rows => 1 });
    push @res, $build if defined $build;
    }
  • edit in src/script/hydra_scheduler.pl at line 358
    [2.6214][2.6214:6254]()
    print $jobInDB->name, "\n";