Add delete server support as well as fix a few other bugs

Also a few JS fixes to make things work better and not clear the
console every time the server is booted
This commit is contained in:
Dane Everitt 2016-01-03 23:16:03 -05:00
parent 9d2d726992
commit 4fe4881f77
7 changed files with 167 additions and 53 deletions

View file

@ -524,4 +524,55 @@ class ServerRepository
}
public function deleteServer($id, $force)
{
$server = Models\Server::findOrFail($id);
$node = Models\Node::findOrFail($server->node);
DB::beginTransaction();
// Delete Allocations
Models\Allocation::where('assigned_to', $server->id)->update([
'assigned_to' => null
]);
// Remove Variables
Models\ServerVariables::where('server_id', $server->id)->delete();
// Remove SubUsers
Models\Subuser::where('server_id', $server->id)->delete();
// Remove Permissions
Models\Permission::where('server_id', $server->id)->delete();
// Remove Downloads
Models\Download::where('server', $server->uuid)->delete();
try {
$client = Models\Node::guzzleRequest($server->node);
$client->request('DELETE', '/servers', [
'headers' => [
'X-Access-Token' => $node->daemonSecret,
'X-Access-Server' => $server->uuid
]
]);
$server->delete();
DB::commit();
return true;
} catch (\GuzzleHttp\Exception\TransferException $ex) {
if ($force === 'force') {
$server->delete();
DB::commit();
return true;
} else {
DB::rollBack();
Log::error($ex);
throw new DisplayException('An error occured while attempting to delete the server on the daemon: ' . $ex->getMessage());
}
} catch (\Exception $ex) {
DB::rollBack();
throw $ex;
}
}
}