diff --git a/app/Actions/Service/DeleteService.php b/app/Actions/Service/DeleteService.php index 2d2c10ccb..c42a8ec4a 100644 --- a/app/Actions/Service/DeleteService.php +++ b/app/Actions/Service/DeleteService.php @@ -10,8 +10,10 @@ class DeleteService use AsAction; public function handle(Service $service) { - StopService::run($service); $server = data_get($service, 'server'); + if ($server->isFunctional()) { + StopService::run($service); + } $storagesToDelete = collect([]); $service->environment_variables()->delete(); diff --git a/app/Jobs/DeleteResourceJob.php b/app/Jobs/DeleteResourceJob.php index cf7c6462a..a29c87c09 100644 --- a/app/Jobs/DeleteResourceJob.php +++ b/app/Jobs/DeleteResourceJob.php @@ -31,11 +31,16 @@ public function handle() { try { $server = $this->resource->destination->server; + $this->resource->delete(); if (!$server->isFunctional()) { - $this->resource->forceDelete(); + if ($this->resource->type() === 'service') { + ray('dispatching delete service'); + DeleteService::dispatch($this->resource); + } else { + $this->resource->forceDelete(); + } return 'Server is not functional'; } - $this->resource->delete(); switch ($this->resource->type()) { case 'application': StopApplication::run($this->resource); diff --git a/app/Models/Server.php b/app/Models/Server.php index 948177ae3..dcbb0dde3 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -198,7 +198,7 @@ public function isServerReady(int $tries = 3) foreach ($this->databases() as $database) { $database->update(['status' => 'exited']); } - foreach ($this->services() as $service) { + foreach ($this->services()->get() as $service) { $apps = $service->applications()->get(); $dbs = $service->databases()->get(); foreach ($apps as $app) {