feat: cleanup queue

This commit is contained in:
Andras Bacsai 2024-02-08 12:47:00 +01:00
parent 037ba3ff79
commit 548304765c
3 changed files with 18 additions and 3 deletions

View File

@ -14,13 +14,19 @@ use Illuminate\Support\Facades\Http;
class Init extends Command class Init extends Command
{ {
protected $signature = 'app:init {--full-cleanup}'; protected $signature = 'app:init {--full-cleanup} {--cleanup-deployments}';
protected $description = 'Cleanup instance related stuffs'; protected $description = 'Cleanup instance related stuffs';
public function handle() public function handle()
{ {
$this->alive(); $this->alive();
$full_cleanup = $this->option('full-cleanup'); $full_cleanup = $this->option('full-cleanup');
$cleanup_deployments = $this->option('cleanup-deployments');
if ($cleanup_deployments) {
echo "Running cleanup deployments.\n";
$this->cleanup_in_progress_application_deployments();
return;
}
if ($full_cleanup) { if ($full_cleanup) {
echo "Running init cleanupsg.\n"; echo "Running init cleanupsg.\n";
@ -122,8 +128,9 @@ class Init extends Command
// Cleanup any failed deployments // Cleanup any failed deployments
try { try {
$halted_deployments = ApplicationDeploymentQueue::where('status', '==', ApplicationDeploymentStatus::IN_PROGRESS)->where('status', '==', ApplicationDeploymentStatus::QUEUED)->get(); $queued_inprogress_deployments = ApplicationDeploymentQueue::whereIn('status', [ApplicationDeploymentStatus::IN_PROGRESS->value, ApplicationDeploymentStatus::QUEUED->value])->get();
foreach ($halted_deployments as $deployment) { foreach ($queued_inprogress_deployments as $deployment) {
ray($deployment->id, $deployment->status);
echo "Cleaning up deployment: {$deployment->id}\n"; echo "Cleaning up deployment: {$deployment->id}\n";
$deployment->status = ApplicationDeploymentStatus::FAILED->value; $deployment->status = ApplicationDeploymentStatus::FAILED->value;
$deployment->save(); $deployment->save();

View File

@ -6,6 +6,7 @@ use App\Models\ApplicationDeploymentQueue;
use App\Models\Project; use App\Models\Project;
use App\Models\Server; use App\Models\Server;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Artisan;
use Livewire\Component; use Livewire\Component;
class Dashboard extends Component class Dashboard extends Component
@ -19,6 +20,12 @@ class Dashboard extends Component
$this->projects = Project::ownedByCurrentTeam()->get(); $this->projects = Project::ownedByCurrentTeam()->get();
$this->get_deployments(); $this->get_deployments();
} }
public function cleanup_queue()
{
Artisan::queue('app:init', [
'--cleanup-deployments' => 'true'
]);
}
public function get_deployments() public function get_deployments()
{ {
$this->deployments_per_server = ApplicationDeploymentQueue::whereIn("status", ["in_progress", "queued"])->whereIn("server_id", $this->servers->pluck("id"))->get([ $this->deployments_per_server = ApplicationDeploymentQueue::whereIn("status", ["in_progress", "queued"])->whereIn("server_id", $this->servers->pluck("id"))->get([

View File

@ -106,6 +106,7 @@
@if (count($deployments_per_server) > 0) @if (count($deployments_per_server) > 0)
<x-loading /> <x-loading />
@endif @endif
<x-forms.button wire:click='cleanup_queue'>Cleanup Queues</x-forms.button>
</div> </div>
<div wire:poll.1000ms="get_deployments" class="grid grid-cols-1"> <div wire:poll.1000ms="get_deployments" class="grid grid-cols-1">
@forelse ($deployments_per_server as $server_name => $deployments) @forelse ($deployments_per_server as $server_name => $deployments)