Implement node deletion properly, fixes #173
This commit is contained in:
parent
0e89ecb427
commit
723b608e0c
|
@ -253,20 +253,22 @@ class NodesController extends Controller
|
||||||
|
|
||||||
public function deleteNode(Request $request, $id)
|
public function deleteNode(Request $request, $id)
|
||||||
{
|
{
|
||||||
$node = Models\Node::findOrFail($id);
|
try {
|
||||||
$servers = Models\Server::where('node', $id)->count();
|
$repo = new NodeRepository;
|
||||||
if ($servers > 0) {
|
$repo->delete($id);
|
||||||
Alert::danger('You cannot delete a node with servers currently attached to it.')->flash();
|
Alert::success('Successfully deleted the requested node from the panel.')->flash();
|
||||||
|
return redirect()->route('admin.nodes');
|
||||||
|
} catch (DisplayException $e) {
|
||||||
|
Alert::danger($e->getMessage())->flash();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Log::error($e);
|
||||||
|
Alert::danger('An unhandled exception occured while attempting to delete this node. Please try again.')->flash();
|
||||||
|
}
|
||||||
|
|
||||||
return redirect()->route('admin.nodes.view', [
|
return redirect()->route('admin.nodes.view', [
|
||||||
'id' => $id,
|
'id' => $id,
|
||||||
'tab' => 'tab_delete'
|
'tab' => 'tab_delete'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$node->delete();
|
|
||||||
Alert::success('Node successfully deleted.')->flash();
|
|
||||||
return redirect()->route('admin.nodes');
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,8 +229,30 @@ class NodeRepository {
|
||||||
|
|
||||||
public function delete($id)
|
public function delete($id)
|
||||||
{
|
{
|
||||||
// @TODO: add logic;
|
$node = Models\Node::findOrFail($id);
|
||||||
return true;
|
if (Models\Server::where('node', $id)->count() > 0) {
|
||||||
|
throw new DisplayException('You cannot delete a node with servers currently attached to it.');
|
||||||
|
}
|
||||||
|
|
||||||
|
DB::beginTransaction();
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Unlink Database Servers
|
||||||
|
Models\DatabaseServer::where('linked_node', $node->id)->update([
|
||||||
|
'linked_node' => null,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Delete Allocations
|
||||||
|
Models\Allocation::where('node', $node->id)->delete();
|
||||||
|
|
||||||
|
// Delete Node
|
||||||
|
$node->delete();
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
DB::rollback();
|
||||||
|
throw $ex;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue