build-remote.pl: Allow a machine to refuse a build

Before selecting a machine, build-remote.pl will try to run the
command "nix-builds-inhibited" on the machine.  If this command exists
and returns a 0 exit code, then the machine won't be used.  It's up to
the user to provide this command, but it would typically be a script
that checks whether there is enough disk space and whether the load is
not too high.
This commit is contained in:
Eelco Dolstra 2013-05-10 01:09:46 +02:00
parent 2ee9da9e22
commit 78206f06ec

View file

@ -195,7 +195,9 @@ REQ: while (1) {
# Connect to the selected machine. # Connect to the selected machine.
@sshOpts = ("-i", $machine->{sshKeys}, "-x"); @sshOpts = ("-i", $machine->{sshKeys}, "-x");
$hostName = $machine->{hostName}; $hostName = $machine->{hostName};
last REQ if openSSHConnection $hostName; last REQ if
openSSHConnection($hostName) &&
system("ssh $hostName @sshOpts nix-builds-inhibited >/dev/null 2>&1") != 0;
warn "unable to open SSH connection to $hostName, trying other available machines...\n"; warn "unable to open SSH connection to $hostName, trying other available machines...\n";
$machine->{enabled} = 0; $machine->{enabled} = 0;