Refactor service and resource deletion logic
This commit is contained in:
parent
cc641d8cba
commit
795c8abf64
@ -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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,25 +30,30 @@ class DeleteResourceJob implements ShouldQueue, ShouldBeEncrypted
|
|||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$this->resource->delete();
|
|
||||||
switch ($this->resource->type()) {
|
switch ($this->resource->type()) {
|
||||||
case 'application':
|
case 'application':
|
||||||
StopApplication::run($this->resource);
|
StopApplication::run($this->resource);
|
||||||
|
$this->resource->forceDelete();
|
||||||
break;
|
break;
|
||||||
case 'standalone-postgresql':
|
case 'standalone-postgresql':
|
||||||
StopDatabase::run($this->resource);
|
StopDatabase::run($this->resource);
|
||||||
|
$this->resource->forceDelete();
|
||||||
break;
|
break;
|
||||||
case 'standalone-redis':
|
case 'standalone-redis':
|
||||||
StopDatabase::run($this->resource);
|
StopDatabase::run($this->resource);
|
||||||
|
$this->resource->forceDelete();
|
||||||
break;
|
break;
|
||||||
case 'standalone-mongodb':
|
case 'standalone-mongodb':
|
||||||
StopDatabase::run($this->resource);
|
StopDatabase::run($this->resource);
|
||||||
|
$this->resource->forceDelete();
|
||||||
break;
|
break;
|
||||||
case 'standalone-mysql':
|
case 'standalone-mysql':
|
||||||
StopDatabase::run($this->resource);
|
StopDatabase::run($this->resource);
|
||||||
|
$this->resource->forceDelete();
|
||||||
break;
|
break;
|
||||||
case 'standalone-mariadb':
|
case 'standalone-mariadb':
|
||||||
StopDatabase::run($this->resource);
|
StopDatabase::run($this->resource);
|
||||||
|
$this->resource->forceDelete();
|
||||||
break;
|
break;
|
||||||
case 'service':
|
case 'service':
|
||||||
DeleteService::dispatch($this->resource);
|
DeleteService::dispatch($this->resource);
|
||||||
@ -57,8 +62,6 @@ class DeleteResourceJob implements ShouldQueue, ShouldBeEncrypted
|
|||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
send_internal_notification('ContainerStoppingJob failed with: ' . $e->getMessage());
|
send_internal_notification('ContainerStoppingJob failed with: ' . $e->getMessage());
|
||||||
throw $e;
|
throw $e;
|
||||||
} finally {
|
|
||||||
$this->resource->forceDelete();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,8 @@ class Danger extends Component
|
|||||||
public function delete()
|
public function delete()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
DeleteResourceJob::dispatchSync($this->resource);
|
$this->resource->delete();
|
||||||
|
DeleteResourceJob::dispatch($this->resource);
|
||||||
return redirect()->route('project.resource.index', [
|
return redirect()->route('project.resource.index', [
|
||||||
'project_uuid' => $this->projectUuid,
|
'project_uuid' => $this->projectUuid,
|
||||||
'environment_name' => $this->environmentName
|
'environment_name' => $this->environmentName
|
||||||
|
Loading…
x
Reference in New Issue
Block a user