forked from lix-project/hydra
Allow a per-jobset check interval
This allows checking a jobset (say) at most once a day. It's also possible to disable polling by setting the interval to 0. This is useful for jobsets that use push notification or are manually evaluated.
This commit is contained in:
parent
edaeb892e7
commit
e96916533f
8 changed files with 33 additions and 7 deletions
|
@ -206,7 +206,8 @@ sub updateJobset {
|
|||
, enableemail => defined $c->request->params->{enableemail} ? 1 : 0
|
||||
, emailoverride => trim($c->request->params->{emailoverride}) || ""
|
||||
, hidden => defined $c->request->params->{visible} ? 0 : 1
|
||||
, keepnr => trim($c->request->params->{keepnr}) || 3
|
||||
, keepnr => int(trim($c->request->params->{keepnr})) || 3
|
||||
, checkinterval => int(trim($c->request->params->{checkinterval}))
|
||||
, triggertime => $jobset->triggertime // time()
|
||||
});
|
||||
|
||||
|
|
|
@ -100,6 +100,12 @@ __PACKAGE__->table("Jobsets");
|
|||
default_value: 3
|
||||
is_nullable: 0
|
||||
|
||||
=head2 checkinterval
|
||||
|
||||
data_type: 'integer'
|
||||
default_value: 300
|
||||
is_nullable: 0
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->add_columns(
|
||||
|
@ -131,6 +137,8 @@ __PACKAGE__->add_columns(
|
|||
{ data_type => "text", is_nullable => 0 },
|
||||
"keepnr",
|
||||
{ data_type => "integer", default_value => 3, is_nullable => 0 },
|
||||
"checkinterval",
|
||||
{ data_type => "integer", default_value => 300, is_nullable => 0 },
|
||||
);
|
||||
|
||||
=head1 PRIMARY KEY
|
||||
|
@ -252,7 +260,7 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-02-25 19:10:12
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SvBgR0iH9NjVH4jvBATYPA
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-05-02 14:50:55
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:q4amPCWRoWMThnRa/n/y1w
|
||||
|
||||
1;
|
||||
|
|
|
@ -83,6 +83,17 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">Check interval</label>
|
||||
<div class="controls">
|
||||
<div class="input-append">
|
||||
<input type="number" class="span3" name="checkinterval" [% HTML.attributes(value => jobset.checkinterval) %]></input>
|
||||
<span class="add-on">sec</span>
|
||||
</div>
|
||||
<span class="help-inline">(0 to disable polling)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label class="checkbox">
|
||||
|
|
|
@ -120,6 +120,10 @@
|
|||
<th>Enabled:</th>
|
||||
<td>[% jobset.enabled ? "Yes" : "No" %]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Check interval:</th>
|
||||
<td>[% jobset.checkinterval || "<em>disabled</em>" %]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Enable email notification:</th>
|
||||
<td>[% jobset.enableemail ? "Yes" : "No" %]</td>
|
||||
|
|
|
@ -268,11 +268,12 @@ sub checkSomeJobset {
|
|||
{ join => 'project', order_by => [ 'triggertime' ], rows => 1 });
|
||||
|
||||
# Otherwise, check the jobset that hasn't been checked for the
|
||||
# longest time (but don't check more often than the minimal check
|
||||
# interval).
|
||||
# longest time (but don't check more often than the jobset's
|
||||
# minimal check interval).
|
||||
($jobset) = $db->resultset('Jobsets')->search(
|
||||
{ 'project.enabled' => 1, 'me.enabled' => 1,
|
||||
, -or => [ 'lastcheckedtime' => undef, 'lastcheckedtime' => { '<', time() - $minCheckInterval } ] },
|
||||
, 'checkinterval' => { '!=', 0 }
|
||||
, -or => [ 'lastcheckedtime' => undef, 'lastcheckedtime' => { '<', \ (time() . " - me.checkinterval") } ] },
|
||||
{ join => 'project', order_by => [ 'lastcheckedtime nulls first' ], rows => 1 })
|
||||
unless defined $jobset;
|
||||
|
||||
|
|
|
@ -60,6 +60,7 @@ create table Jobsets (
|
|||
hidden integer not null default 0,
|
||||
emailOverride text not null,
|
||||
keepnr integer not null default 3,
|
||||
checkInterval integer not null default 300, -- minimum time in seconds between polls (0 = disable polling)
|
||||
primary key (project, name),
|
||||
foreign key (project) references Projects(name) on delete cascade on update cascade
|
||||
#ifdef SQLITE
|
||||
|
|
|
@ -1,2 +1 @@
|
|||
|
||||
create index IndexBuildOutputsOnPath on BuildOutputs(path);
|
||||
|
|
1
src/sql/upgrade-13.sql
Normal file
1
src/sql/upgrade-13.sql
Normal file
|
@ -0,0 +1 @@
|
|||
alter table Jobsets add column checkInterval integer not null default 300;
|
Loading…
Reference in a new issue