public function createVm($vmName, $osName, $homeFolder)
{
// what are we doing?
$log = usingLog()->startAction("start vagrant VM '{$vmName}', running guest OS '{$osName}', using Vagrantfile in '{$homeFolder}'");
// put the details into an array
$vmDetails = new BaseObject();
$vmDetails->hostId = $vmName;
$vmDetails->osName = $osName;
$vmDetails->homeFolder = $homeFolder;
$vmDetails->type = 'VagrantVm';
$vmDetails->sshUsername = 'vagrant';
$vmDetails->sshKeyFile = $this->determinePrivateKey($vmDetails);
$vmDetails->sshOptions = ["-i '" . $vmDetails->sshKeyFile . "'", "-o StrictHostKeyChecking=no", "-o UserKnownHostsFile=/dev/null", "-o LogLevel=quiet"];
$vmDetails->scpOptions = ["-i '" . $vmDetails->sshKeyFile . "'", "-o StrictHostKeyChecking=no"];
// create our host adapter
$host = HostLib::getHostAdapter($this->st, $vmDetails->type);
// create our virtual machine
$host->createHost($vmDetails);
// all done
$log->endAction();
}