forked from lix-project/hydra
hydra-api: flesh out Jobset schema
* made all columns available via the API (except for forceeval) * renamed flakeref to flake to unify the API with the database schema * renamed inputs to jobsetinputs to unify the API with the database schema
This commit is contained in:
parent
0c8d016a38
commit
2600810551
|
@ -306,35 +306,7 @@ paths:
|
|||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
'description':
|
||||
description: a description of the jobset
|
||||
type: string
|
||||
checkinterval:
|
||||
description: interval (in seconds) in which to check for evaluation
|
||||
type: integer
|
||||
enabled:
|
||||
description: when true the jobset gets scheduled for evaluation
|
||||
type: boolean
|
||||
visible:
|
||||
description: when true the jobset is visible in the web frontend
|
||||
type: boolean
|
||||
keepnr:
|
||||
description: number or evaluations to keep
|
||||
type: integer
|
||||
nixexprinput:
|
||||
description: the name of the jobset input which contains the nixexprpath
|
||||
type: string
|
||||
nixexprpath:
|
||||
nullable: true
|
||||
description: the path to the file to evaluate
|
||||
type: string
|
||||
inputs:
|
||||
description: inputs for this jobset
|
||||
type: object
|
||||
additionalProperties:
|
||||
$ref: '#/components/schemas/JobsetInput'
|
||||
$ref: '#/components/schemas/Jobset'
|
||||
responses:
|
||||
'201':
|
||||
description: jobset creation response
|
||||
|
@ -590,26 +562,76 @@ components:
|
|||
Jobset:
|
||||
type: object
|
||||
properties:
|
||||
fetcherrormsg:
|
||||
name:
|
||||
description: the name of the jobset
|
||||
type: string
|
||||
project:
|
||||
description: the project this jobset belongs to
|
||||
type: string
|
||||
description:
|
||||
nullable: true
|
||||
description: contains the error message when there was a problem fetching sources for a jobset
|
||||
description: a description of the jobset
|
||||
type: string
|
||||
nixexprinput:
|
||||
nullable: true
|
||||
description: the name of the jobset input which contains the nixexprpath
|
||||
type: string
|
||||
errormsg:
|
||||
description: contains the stderr output of the nix-instantiate command
|
||||
type: string
|
||||
emailoverride:
|
||||
description: email address to send notices to instead of the package maintainer (can be a comma separated list)
|
||||
type: string
|
||||
nixexprpath:
|
||||
nullable: true
|
||||
description: the path to the file to evaluate
|
||||
type: string
|
||||
errormsg:
|
||||
nullable: true
|
||||
description: contains the stderr output of the nix-instantiate command
|
||||
type: string
|
||||
errortime:
|
||||
nullable: true
|
||||
description: timestamp associated with errormsg
|
||||
type: integer
|
||||
lastcheckedtime:
|
||||
nullable: true
|
||||
description: the last time the evaluator looked at this jobset
|
||||
type: integer
|
||||
triggertime:
|
||||
nullable: true
|
||||
description: set to the time we were triggered by a push event
|
||||
type: integer
|
||||
enabled:
|
||||
description: when set to true the jobset gets scheduled for evaluation
|
||||
description: 0 is disabled, 1 is enabled, 2 is one-shot, and 3 is one-at-a-time
|
||||
type: integer
|
||||
enableemail:
|
||||
description: when true the jobset sends emails when previously-successful builds fail
|
||||
type: boolean
|
||||
hidden:
|
||||
description: when false the jobset is visible in the web frontend
|
||||
type: boolean
|
||||
emailoverride:
|
||||
description: email address to send notices to instead of the package maintainer (can be a comma separated list)
|
||||
type: string
|
||||
keepnr:
|
||||
description: number or evaluations to keep
|
||||
type: integer
|
||||
checkinterval:
|
||||
description: interval (in seconds) in which to check for evaluation
|
||||
type: integer
|
||||
schedulingshares:
|
||||
description: how many shares to be allocated to the jobset
|
||||
type: integer
|
||||
fetcherrormsg:
|
||||
nullable: true
|
||||
description: contains the error message when there was a problem fetching sources for a jobset
|
||||
type: string
|
||||
startime:
|
||||
nullable: true
|
||||
description: set to the time the latest evaluation started (if one is currently running)
|
||||
type: integer
|
||||
type:
|
||||
description: the type of the jobset
|
||||
type: string
|
||||
flake:
|
||||
nullable: true
|
||||
description: the flake uri to evaluate
|
||||
type: string
|
||||
jobsetinputs:
|
||||
description: inputs configured for this jobset
|
||||
type: object
|
||||
|
|
|
@ -231,7 +231,7 @@ sub updateJobset {
|
|||
if ($type == 0) {
|
||||
($nixExprPath, $nixExprInput) = nixExprPathFromParams $c;
|
||||
} elsif ($type == 1) {
|
||||
$flake = trim($c->stash->{params}->{"flakeref"});
|
||||
$flake = trim($c->stash->{params}->{"flake"});
|
||||
error($c, "Invalid flake URI ‘$flake’.") if $flake !~ /^[a-zA-Z]/;
|
||||
} else {
|
||||
error($c, "Invalid jobset type.");
|
||||
|
@ -270,8 +270,8 @@ sub updateJobset {
|
|||
$jobset->jobsetinputs->delete;
|
||||
|
||||
if ($type == 0) {
|
||||
foreach my $name (keys %{$c->stash->{params}->{inputs}}) {
|
||||
my $inputData = $c->stash->{params}->{inputs}->{$name};
|
||||
foreach my $name (keys %{$c->stash->{params}->{jobsetinputs}}) {
|
||||
my $inputData = $c->stash->{params}->{jobsetinputs}->{$name};
|
||||
my $type = $inputData->{type};
|
||||
my $value = $inputData->{value};
|
||||
my $emailresponsible = defined $inputData->{emailresponsible} ? 1 : 0;
|
||||
|
|
|
@ -412,12 +412,30 @@ __PACKAGE__->add_column(
|
|||
|
||||
my %hint = (
|
||||
columns => [
|
||||
"errortime",
|
||||
"lastcheckedtime",
|
||||
"triggertime",
|
||||
"enabled",
|
||||
"errormsg",
|
||||
"fetcherrormsg",
|
||||
"emailoverride",
|
||||
"keepnr",
|
||||
"checkinterval",
|
||||
"schedulingshares",
|
||||
"starttime"
|
||||
],
|
||||
string_columns => [
|
||||
"name",
|
||||
"project",
|
||||
"description",
|
||||
"nixexprinput",
|
||||
"nixexprpath",
|
||||
"nixexprinput"
|
||||
"errormsg",
|
||||
"emailoverride",
|
||||
"fetcherrormsg",
|
||||
"type",
|
||||
"flake"
|
||||
],
|
||||
boolean_columns => [
|
||||
"enableemail",
|
||||
"hidden"
|
||||
],
|
||||
eager_relations => {
|
||||
jobsetinputs => "name"
|
||||
|
|
|
@ -46,8 +46,8 @@
|
|||
<thead>
|
||||
<tr><th></th><th>Input name</th><th>Type</th><th style="width: 50%">Value</th><th>Notify committers</th></tr>
|
||||
</thead>
|
||||
<tbody class="inputs">
|
||||
[% inputs = createFromEval ? eval.jobsetevalinputs : jobset.jobsetinputs; FOREACH input IN inputs %]
|
||||
<tbody class="jobsetinputs">
|
||||
[% jobsetinputs = createFromEval ? eval.jobsetevalinputs : jobset.jobsetinputs; FOREACH input IN jobsetinputs %]
|
||||
[% INCLUDE renderJobsetInput input=input baseName="input-$input.name" %]
|
||||
[% END %]
|
||||
<tr>
|
||||
|
@ -111,9 +111,9 @@
|
|||
</div>
|
||||
|
||||
<div class="form-group row show-on-flake">
|
||||
<label class="col-form-label col-sm-3" for="editjobsetflakeref">Flake URI</label>
|
||||
<label class="col-form-label col-sm-3" for="editjobsetflake">Flake URI</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="editjobsetflakeref" name="flakeref" [% HTML.attributes(value => jobset.flake) %]/>
|
||||
<input type="text" class="form-control" id="editjobsetflake" name="flake" [% HTML.attributes(value => jobset.flake) %]/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -220,8 +220,8 @@
|
|||
|
||||
$("#submit-jobset").click(function() {
|
||||
var formElements = $(this).parents("form").serializeArray();
|
||||
var data = { 'inputs': {} };
|
||||
var inputs = {};
|
||||
var data = { 'jobsetinputs': {} };
|
||||
var jobsetinputs = {};
|
||||
for (var i = 0; formElements.length > i; i++) {
|
||||
var elem = formElements[i];
|
||||
var match = elem.name.match(/^input-([\w-]+)-(\w+)$/);
|
||||
|
@ -233,13 +233,13 @@
|
|||
|
||||
if (baseName === "template") continue;
|
||||
|
||||
if (!(baseName in inputs))
|
||||
inputs[baseName] = {};
|
||||
if (!(baseName in jobsetinputs))
|
||||
jobsetinputs[baseName] = {};
|
||||
|
||||
if (param === "name")
|
||||
data.inputs[elem.value] = inputs[baseName];
|
||||
data.jobsetinputs[elem.value] = jobsetinputs[baseName];
|
||||
else
|
||||
inputs[baseName][param] = elem.value;
|
||||
jobsetinputs[baseName][param] = elem.value;
|
||||
}
|
||||
}
|
||||
redirectJSON({
|
||||
|
|
Loading…
Reference in a new issue