machine-status: Read /etc/nix.machines instead of using the BuildMachines table
This commit is contained in:
@ -74,12 +74,14 @@ sub status :Local {
|
||||
|
||||
sub machines :Local Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
$c->stash->{machines} = [$c->model('DB::BuildMachines')->search(
|
||||
{},
|
||||
{ order_by => ["enabled DESC", "hostname"]
|
||||
, '+select' => ["(select bs.stoptime from buildsteps as bs where bs.machine = (me.username || '\@' || me.hostname) and not bs.stoptime is null order by bs.stoptime desc limit 1)"]
|
||||
, '+as' => ['idle']
|
||||
})];
|
||||
my $machines = getMachines;
|
||||
my $idles = $c->model('DB::BuildSteps')->search(
|
||||
{ stoptime => { '!=', undef } },
|
||||
{ select => [ 'machine', { max => 'stoptime', -as => 'max_stoptime' }], group_by => "machine" });
|
||||
while (my $idle = $idles->next) {
|
||||
${$machines}{$idle->machine}{'idle'} = $idle->max_stoptime;
|
||||
}
|
||||
$c->stash->{machines} = $machines;
|
||||
$c->stash->{steps} = [ $c->model('DB::BuildSteps')->search(
|
||||
{ finished => 0, 'me.busy' => 1, 'build.busy' => 1, },
|
||||
{ join => [ 'build' ]
|
||||
|
@ -16,7 +16,7 @@ our @EXPORT = qw(
|
||||
getViewResult getLatestSuccessfulViewResult
|
||||
jobsetOverview removeAsciiEscapes getDrvLogPath logContents
|
||||
getMainOutput
|
||||
getEvals);
|
||||
getEvals getMachines);
|
||||
|
||||
|
||||
sub getHydraHome {
|
||||
@ -373,5 +373,33 @@ sub getEvals {
|
||||
return [@res];
|
||||
}
|
||||
|
||||
sub getMachines {
|
||||
my $machinesConf = $ENV{"NIX_REMOTE_SYSTEMS"} || "/etc/nix.machines";
|
||||
|
||||
# Read the list of machines.
|
||||
my %machines = ();
|
||||
if (-e $machinesConf) {
|
||||
open CONF, "<$machinesConf" or die;
|
||||
while (<CONF>) {
|
||||
chomp;
|
||||
s/\#.*$//g;
|
||||
next if /^\s*$/;
|
||||
my @tokens = split /\s/, $_;
|
||||
my @supportedFeatures = split(/,/, $tokens[5] || "");
|
||||
my @mandatoryFeatures = split(/,/, $tokens[6] || "");
|
||||
$machines{$tokens[0]} =
|
||||
{ systemTypes => [ split(/,/, $tokens[1]) ]
|
||||
, sshKeys => $tokens[2]
|
||||
, maxJobs => int($tokens[3])
|
||||
, speedFactor => 1.0 * (defined $tokens[4] ? int($tokens[4]) : 1)
|
||||
, supportedFeatures => [ @supportedFeatures, @mandatoryFeatures ]
|
||||
, mandatoryFeatures => [ @mandatoryFeatures ]
|
||||
};
|
||||
}
|
||||
close CONF;
|
||||
}
|
||||
return \%machines;
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
|
Reference in New Issue
Block a user