Fix non-static declarative jobsets

With the current implementation, if ANY hash was found inside the decl
spec, the spec would be treated as static. This is problematic since
`inputs` is a hash and hence any configuration would be handled as a
static one.
This fixes the code to match the documentation and only switch to static
processing when ALL values are hashes.
This commit is contained in:
Janne Heß 2020-09-13 18:19:20 +02:00
parent b5d7ed2e99
commit 24acb9d6bb
No known key found for this signature in database
GPG key ID: 69165158F05265DF

View file

@ -573,7 +573,14 @@ sub checkJobsetWrapped {
die "Declarative specification file $declFile not valid JSON: $@\n" if $@; die "Declarative specification file $declFile not valid JSON: $@\n" if $@;
if (ref $declSpec eq "HASH") { if (ref $declSpec eq "HASH") {
if (grep ref $_ eq "HASH", values %$declSpec) { my $isStatic = 1;
foreach my $elem (values %$declSpec) {
if (ref $elem ne "HASH") {
$isStatic = 0;
last;
}
}
if ($isStatic) {
# Since all of its keys are hashes, assume the json document # Since all of its keys are hashes, assume the json document
# itself is the entire set of jobs # itself is the entire set of jobs
handleDeclarativeJobsetJson($db, $project, $declSpec); handleDeclarativeJobsetJson($db, $project, $declSpec);