fix: service deletion fix

This commit is contained in:
Andras Bacsai
2024-01-30 08:26:33 +01:00
parent c3e2a741ea
commit 73d0948734

View File

@@ -10,36 +10,43 @@ class DeleteService
use AsAction; use AsAction;
public function handle(Service $service) public function handle(Service $service)
{ {
$server = data_get($service, 'server'); try {
if ($server->isFunctional()) { $server = data_get($service, 'server');
StopService::run($service); if ($server->isFunctional()) {
} StopService::run($service);
$storagesToDelete = collect([]); $storagesToDelete = collect([]);
$service->environment_variables()->delete(); $service->environment_variables()->delete();
$commands = []; $commands = [];
foreach ($service->applications()->get() as $application) { foreach ($service->applications()->get() as $application) {
$storages = $application->persistentStorages()->get(); $storages = $application->persistentStorages()->get();
foreach ($storages as $storage) { foreach ($storages as $storage) {
$storagesToDelete->push($storage); $storagesToDelete->push($storage);
} }
$application->forceDelete(); }
} foreach ($service->databases()->get() as $database) {
foreach ($service->databases()->get() as $database) { $storages = $database->persistentStorages()->get();
$storages = $database->persistentStorages()->get(); foreach ($storages as $storage) {
foreach ($storages as $storage) { $storagesToDelete->push($storage);
$storagesToDelete->push($storage); }
} }
$database->forceDelete(); foreach ($storagesToDelete as $storage) {
} $commands[] = "docker volume rm -f $storage->name";
if ($server->isFunctional()) { }
foreach ($storagesToDelete as $storage) { $commands[] = "docker rm -f $service->uuid";
$commands[] = "docker volume rm -f $storage->name";
}
$commands[] = "docker rm -f $service->uuid";
instant_remote_process($commands, $server, false); instant_remote_process($commands, $server, false);
}
} catch (\Exception $e) {
throw new \Exception($e->getMessage());
} finally {
foreach ($service->applications()->get() as $application) {
$application->forceDelete();
}
foreach ($service->databases()->get() as $database) {
$database->forceDelete();
}
$service->forceDelete();
} }
$service->forceDelete();
} }
} }