fix volume deletion for services

This commit is contained in:
ayntk-ai
2024-08-09 02:11:42 +02:00
parent 51071da700
commit 86a087056e
2 changed files with 26 additions and 22 deletions

View File

@@ -14,12 +14,10 @@ class DeleteService
{ {
try { try {
$server = data_get($service, 'server'); $server = data_get($service, 'server');
if ($deleteVolumes && $server->isFunctional()) {
if ($server->isFunctional()) {
$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();
@@ -33,12 +31,18 @@ class DeleteService
$storagesToDelete->push($storage); $storagesToDelete->push($storage);
} }
} }
foreach ($storagesToDelete as $storage) {
$commands[] = "docker volume rm -f $storage->name";
}
// Delete volumes if the flag is set // Execute all commands
if ($deleteVolumes) { if (!empty($commands)) {
foreach ($service->applications()->get() as $application) { foreach ($commands as $command) {
$persistentStorages = $application->persistentStorages()->get(); $result = instant_remote_process([$command], $server, false);
$application->delete_volumes($persistentStorages); if ($result !== 0) {
ray("Failed to execute: $command");
}
}
} }
} }
@@ -53,7 +57,7 @@ class DeleteService
// Execute all commands // Execute all commands
instant_remote_process($commands, $server, false); instant_remote_process($commands, $server, false);
}
} catch (\Exception $e) { } catch (\Exception $e) {
throw new \Exception($e->getMessage()); throw new \Exception($e->getMessage());
} finally { } finally {

View File

@@ -10,7 +10,7 @@
again.</strong><br><br></div> again.</strong><br><br></div>
<h4>Actions</h4> <h4>Actions</h4>
<x-forms.checkbox id="delete_volumes" wire:model="delete_volumes" label="Permanently delete associated volumes?"></x-forms.checkbox> <x-forms.checkbox id="delete_volumes" wire:model="delete_volumes" label="Permanently delete associated volumes?"></x-forms.checkbox>
<x-forms.checkbox id="delete_connected_networks" wire:model="delete_connected_networks" label="Permanently delete all connected networks, this includes predefined ones?"></x-forms.checkbox> <x-forms.checkbox id="delete_connected_networks" wire:model="delete_connected_networks" label="Permanently delete connected networks, predefined Networks are not deleted?"></x-forms.checkbox>
<x-forms.checkbox id="delete_configurations" wire:model="delete_configurations" label="Permanently delete configuration files from the server?"></x-forms.checkbox> <x-forms.checkbox id="delete_configurations" wire:model="delete_configurations" label="Permanently delete configuration files from the server?"></x-forms.checkbox>
<x-forms.checkbox id="delete_images" wire:model="delete_images" label="Permanently delete associated unused images?"></x-forms.checkbox> <x-forms.checkbox id="delete_images" wire:model="delete_images" label="Permanently delete associated unused images?"></x-forms.checkbox>
</x-modal-confirmation> </x-modal-confirmation>