forked from lix-project/hydra
Fix transition from declarative non-flake to flake jobset
The database has these constraints: check ((type = 0) = (nixExprInput is not null and nixExprPath is not null)), check ((type = 1) = (flake is not null)), which prevented switching to flakes in a declarative jobspec, since the nixexpr{path,input} fields were not nulled in such an update Co-Authored-By: Graham Christensen <graham@grahamc.com>
This commit is contained in:
parent
6d047c286f
commit
1d45b63516
|
@ -49,6 +49,18 @@ sub updateDeclarativeJobset {
|
||||||
$update{$key} = $declSpec->{$key};
|
$update{$key} = $declSpec->{$key};
|
||||||
delete $declSpec->{$key};
|
delete $declSpec->{$key};
|
||||||
}
|
}
|
||||||
|
# Ensure jobset constraints are met, only have nixexpr{path,input} or
|
||||||
|
# flakes set if the type is 0 or 1 respectively. So in the update we need
|
||||||
|
# to null the field of the other type.
|
||||||
|
if (defined $update{type}) {
|
||||||
|
if ($update{type} == 0) {
|
||||||
|
$update{flake} = undef;
|
||||||
|
} elsif ($update{type} == 1) {
|
||||||
|
$update{nixexprpath} = undef;
|
||||||
|
$update{nixexprinput} = undef;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$db->txn_do(sub {
|
$db->txn_do(sub {
|
||||||
my $jobset = $project->jobsets->update_or_create(\%update);
|
my $jobset = $project->jobsets->update_or_create(\%update);
|
||||||
$jobset->jobsetinputs->delete;
|
$jobset->jobsetinputs->delete;
|
||||||
|
|
Loading…
Reference in a new issue