Use more nix::Machine fields

The upstream fields were made to match Hydra, so we can get rid of the
extra fields temporary added in
70e5469303.
This commit is contained in:
John Ericson 2024-01-24 20:14:31 -05:00
parent 2bdbf51d7d
commit 449eb2d873
3 changed files with 9 additions and 19 deletions

View file

@ -231,11 +231,11 @@ system_time State::doDispatch()
sort(machinesSorted.begin(), machinesSorted.end(), sort(machinesSorted.begin(), machinesSorted.end(),
[](const MachineInfo & a, const MachineInfo & b) -> bool [](const MachineInfo & a, const MachineInfo & b) -> bool
{ {
float ta = std::round(a.currentJobs / a.machine->speedFactorFloat); float ta = std::round(a.currentJobs / a.machine->speedFactor);
float tb = std::round(b.currentJobs / b.machine->speedFactorFloat); float tb = std::round(b.currentJobs / b.machine->speedFactor);
return return
ta != tb ? ta < tb : ta != tb ? ta < tb :
a.machine->speedFactorFloat != b.machine->speedFactorFloat ? a.machine->speedFactorFloat > b.machine->speedFactorFloat : a.machine->speedFactor != b.machine->speedFactor ? a.machine->speedFactor > b.machine->speedFactor :
a.currentJobs > b.currentJobs; a.currentJobs > b.currentJobs;
}); });

View file

@ -155,16 +155,16 @@ void State::parseMachines(const std::string & contents)
auto machine = std::make_shared<::Machine>(nix::Machine { auto machine = std::make_shared<::Machine>(nix::Machine {
// `storeUri`, not yet used // `storeUri`, not yet used
"", "",
// `systemTypes`, not yet used // `systemTypes`
{}, tokenizeString<StringSet>(tokens[1], ","),
// `sshKey` // `sshKey`
tokens[2] == "-" ? "" : tokens[2], tokens[2] == "-" ? "" : tokens[2],
// `maxJobs` // `maxJobs`
tokens[3] != "" tokens[3] != ""
? string2Int<MaxJobs>(tokens[3]).value() ? string2Int<MaxJobs>(tokens[3]).value()
: 1, : 1,
// `speedFactor`, not yet used // `speedFactor`
1, atof(tokens[4].c_str()),
// `supportedFeatures` // `supportedFeatures`
std::move(supportedFeatures), std::move(supportedFeatures),
// `mandatoryFeatures` // `mandatoryFeatures`
@ -176,8 +176,6 @@ void State::parseMachines(const std::string & contents)
}); });
machine->sshName = tokens[0]; machine->sshName = tokens[0];
machine->systemTypesSet = tokenizeString<StringSet>(tokens[1], ",");
machine->speedFactorFloat = atof(tokens[4].c_str());
/* Re-use the State object of the previous machine with the /* Re-use the State object of the previous machine with the
same name. */ same name. */
@ -638,7 +636,7 @@ void State::dumpStatus(Connection & conn)
json machine = { json machine = {
{"enabled", m->enabled}, {"enabled", m->enabled},
{"systemTypes", m->systemTypesSet}, {"systemTypes", m->systemTypes},
{"supportedFeatures", m->supportedFeatures}, {"supportedFeatures", m->supportedFeatures},
{"mandatoryFeatures", m->mandatoryFeatures}, {"mandatoryFeatures", m->mandatoryFeatures},
{"nrStepsDone", s->nrStepsDone.load()}, {"nrStepsDone", s->nrStepsDone.load()},

View file

@ -244,14 +244,6 @@ struct Machine : nix::Machine
we are not yet used to, but once we are, we don't need this. */ we are not yet used to, but once we are, we don't need this. */
std::string sshName; std::string sshName;
/* TODO Get rid once `nix::Machine::systemTypes` is a set not
vector. */
std::set<std::string> systemTypesSet;
/* TODO Get rid once `nix::Machine::systemTypes` is a `float` not
an `int`. */
float speedFactorFloat = 1.0;
struct State { struct State {
typedef std::shared_ptr<State> ptr; typedef std::shared_ptr<State> ptr;
counter currentJobs{0}; counter currentJobs{0};
@ -278,7 +270,7 @@ struct Machine : nix::Machine
{ {
/* Check that this machine is of the type required by the /* Check that this machine is of the type required by the
step. */ step. */
if (!systemTypesSet.count(step->drv->platform == "builtin" ? nix::settings.thisSystem : step->drv->platform)) if (!systemTypes.count(step->drv->platform == "builtin" ? nix::settings.thisSystem : step->drv->platform))
return false; return false;
/* Check that the step requires all mandatory features of this /* Check that the step requires all mandatory features of this