Add workers to servers (#547)

This commit is contained in:
Saeed Vaziry
2025-03-16 14:09:15 +01:00
committed by GitHub
parent 48ae561ea4
commit 72352aad8d
42 changed files with 603 additions and 454 deletions

View File

@ -0,0 +1,56 @@
<?php
namespace App\Actions\Worker;
use App\Enums\WorkerStatus;
use App\Models\Service;
use App\Models\Worker;
use App\SSH\Services\ProcessManager\ProcessManager;
class ManageWorker
{
public function start(Worker $worker): void
{
$worker->status = WorkerStatus::STARTING;
$worker->save();
dispatch(function () use ($worker): void {
/** @var Service $service */
$service = $worker->server->processManager();
/** @var ProcessManager $handler */
$handler = $service->handler();
$handler->start($worker->id, $worker->site_id);
$worker->status = WorkerStatus::RUNNING;
$worker->save();
})->onConnection('ssh');
}
public function stop(Worker $worker): void
{
$worker->status = WorkerStatus::STOPPING;
$worker->save();
dispatch(function () use ($worker): void {
/** @var Service $service */
$service = $worker->server->processManager();
/** @var ProcessManager $handler */
$handler = $service->handler();
$handler->stop($worker->id, $worker->site_id);
$worker->status = WorkerStatus::STOPPED;
$worker->save();
})->onConnection('ssh');
}
public function restart(Worker $worker): void
{
$worker->status = WorkerStatus::RESTARTING;
$worker->save();
dispatch(function () use ($worker): void {
/** @var Service $service */
$service = $worker->server->processManager();
/** @var ProcessManager $handler */
$handler = $service->handler();
$handler->restart($worker->id, $worker->site_id);
$worker->status = WorkerStatus::RUNNING;
$worker->save();
})->onConnection('ssh');
}
}