public function buildDefinitionFor($env)
{
// our return value
$provDef = new ProvisioningDefinition();
// what are we doing?
$log = usingLog()->startAction("build dsbuild provisioning definition");
// add in each machine in the environment
foreach ($env->details->machines as $hostId => $machine) {
usingProvisioningDefinition($provDef)->addHost($hostId);
foreach ($machine->roles as $role) {
usingProvisioningDefinition($provDef)->addRole($role)->toHost($hostId);
}
if (isset($machine->params)) {
$params = [];
foreach ($machine->params as $paramName => $paramValue) {
$params[$paramName] = fromConfig()->get('hosts.' . $hostId . '.params.' . $paramName);
}
if (count($params)) {
usingProvisioningDefinition($provDef)->addParams($params)->toHost($hostId);
}
}
}
// all done
$log->endAction($provDef);
return $provDef;
}