mirror of
https://github.com/pelican-dev/panel.git
synced 2025-09-08 22:18:46 +02:00
Remove DaemonPowerRepository
This commit is contained in:
parent
925ab26fb4
commit
9556d3a90e
@ -3,11 +3,11 @@
|
||||
namespace App\Console\Commands\Server;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Illuminate\Validation\Factory as ValidatorFactory;
|
||||
use App\Repositories\Daemon\DaemonPowerRepository;
|
||||
use Exception;
|
||||
|
||||
class BulkPowerActionCommand extends Command
|
||||
@ -19,7 +19,7 @@ class BulkPowerActionCommand extends Command
|
||||
|
||||
protected $description = 'Perform bulk power management on large groupings of servers or nodes at once.';
|
||||
|
||||
public function handle(DaemonPowerRepository $powerRepository, ValidatorFactory $validator): void
|
||||
public function handle(DaemonServerRepository $serverRepository, ValidatorFactory $validator): void
|
||||
{
|
||||
$action = $this->argument('action');
|
||||
$nodes = empty($this->option('nodes')) ? [] : explode(',', $this->option('nodes'));
|
||||
@ -52,7 +52,7 @@ class BulkPowerActionCommand extends Command
|
||||
|
||||
$bar = $this->output->createProgressBar($count);
|
||||
|
||||
$this->getQueryBuilder($servers, $nodes)->get()->each(function ($server, int $index) use ($action, $powerRepository, &$bar): mixed {
|
||||
$this->getQueryBuilder($servers, $nodes)->get()->each(function ($server, int $index) use ($action, $serverRepository, &$bar): mixed {
|
||||
$bar->clear();
|
||||
|
||||
if (!$server instanceof Server) {
|
||||
@ -60,7 +60,7 @@ class BulkPowerActionCommand extends Command
|
||||
}
|
||||
|
||||
try {
|
||||
$powerRepository->setServer($server)->send($action);
|
||||
$serverRepository->setServer($server)->power($action);
|
||||
} catch (Exception $exception) {
|
||||
$this->output->error(trans('command/messages.server.power.action_failed', [
|
||||
'name' => $server->name,
|
||||
|
@ -7,7 +7,7 @@ use App\Facades\Activity;
|
||||
use App\Models\Permission;
|
||||
use App\Models\Server;
|
||||
use App\Models\ServerVariable;
|
||||
use App\Repositories\Daemon\DaemonPowerRepository;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use Closure;
|
||||
use Exception;
|
||||
use Filament\Actions\Action;
|
||||
@ -76,7 +76,7 @@ class GSLTokenSchema implements FeatureSchemaInterface
|
||||
->prefix(fn () => '{{' . $serverVariable->variable->env_variable . '}}')
|
||||
->helperText(fn () => empty($serverVariable->variable->description) ? '—' : $serverVariable->variable->description),
|
||||
])
|
||||
->action(function (array $data, DaemonPowerRepository $powerRepository) use ($server, $serverVariable) {
|
||||
->action(function (array $data, DaemonServerRepository $serverRepository) use ($server, $serverVariable) {
|
||||
/** @var Server $server */
|
||||
$server = Filament::getTenant();
|
||||
try {
|
||||
@ -98,7 +98,7 @@ class GSLTokenSchema implements FeatureSchemaInterface
|
||||
->log();
|
||||
}
|
||||
|
||||
$powerRepository->setServer($server)->send('restart');
|
||||
$serverRepository->setServer($server)->power('restart');
|
||||
|
||||
Notification::make()
|
||||
->title('GSL Token updated')
|
||||
|
@ -6,7 +6,7 @@ use App\Extensions\Features\FeatureSchemaInterface;
|
||||
use App\Facades\Activity;
|
||||
use App\Models\Permission;
|
||||
use App\Models\Server;
|
||||
use App\Repositories\Daemon\DaemonPowerRepository;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use Exception;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Facades\Filament;
|
||||
@ -59,7 +59,7 @@ class JavaVersionSchema implements FeatureSchemaInterface
|
||||
->preload()
|
||||
->native(false),
|
||||
])
|
||||
->action(function (array $data, DaemonPowerRepository $powerRepository) use ($server) {
|
||||
->action(function (array $data, DaemonServerRepository $serverRepository) use ($server) {
|
||||
try {
|
||||
$new = $data['image'];
|
||||
$original = $server->image;
|
||||
@ -71,7 +71,7 @@ class JavaVersionSchema implements FeatureSchemaInterface
|
||||
->log();
|
||||
}
|
||||
|
||||
$powerRepository->setServer($server)->send('restart');
|
||||
$serverRepository->setServer($server)->power('restart');
|
||||
|
||||
Notification::make()
|
||||
->title('Docker image updated')
|
||||
|
@ -5,7 +5,7 @@ namespace App\Extensions\Features\Schemas;
|
||||
use App\Extensions\Features\FeatureSchemaInterface;
|
||||
use App\Models\Server;
|
||||
use App\Repositories\Daemon\DaemonFileRepository;
|
||||
use App\Repositories\Daemon\DaemonPowerRepository;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use Exception;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Facades\Filament;
|
||||
@ -35,14 +35,14 @@ class MinecraftEulaSchema implements FeatureSchemaInterface
|
||||
->modalHeading('Minecraft EULA')
|
||||
->modalDescription(new HtmlString(Blade::render('By pressing "I Accept" below you are indicating your agreement to the <x-filament::link href="https://minecraft.net/eula" target="_blank">Minecraft EULA </x-filament::link>.')))
|
||||
->modalSubmitActionLabel('I Accept')
|
||||
->action(function (DaemonFileRepository $fileRepository, DaemonPowerRepository $powerRepository) {
|
||||
->action(function (DaemonFileRepository $fileRepository, DaemonServerRepository $serverRepository) {
|
||||
try {
|
||||
/** @var Server $server */
|
||||
$server = Filament::getTenant();
|
||||
|
||||
$fileRepository->setServer($server)->putContent('eula.txt', 'eula=true');
|
||||
|
||||
$powerRepository->setServer($server)->send('restart');
|
||||
$serverRepository->setServer($server)->power('restart');
|
||||
|
||||
Notification::make()
|
||||
->title('Minecraft EULA accepted')
|
||||
|
@ -8,7 +8,7 @@ use App\Filament\Components\Tables\Columns\ServerEntryColumn;
|
||||
use App\Filament\Server\Pages\Console;
|
||||
use App\Models\Permission;
|
||||
use App\Models\Server;
|
||||
use App\Repositories\Daemon\DaemonPowerRepository;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use App\Traits\Filament\CanCustomizeHeaderActions;
|
||||
use App\Traits\Filament\CanCustomizeHeaderWidgets;
|
||||
use Filament\Notifications\Notification;
|
||||
@ -38,11 +38,11 @@ class ListServers extends ListRecords
|
||||
|
||||
public const WARNING_THRESHOLD = 0.7;
|
||||
|
||||
private DaemonPowerRepository $daemonPowerRepository;
|
||||
private DaemonServerRepository $daemonServerRepository;
|
||||
|
||||
public function boot(): void
|
||||
{
|
||||
$this->daemonPowerRepository = new DaemonPowerRepository();
|
||||
$this->daemonServerRepository = new DaemonServerRepository();
|
||||
}
|
||||
|
||||
/** @return Stack[] */
|
||||
@ -204,7 +204,7 @@ class ListServers extends ListRecords
|
||||
public function powerAction(Server $server, string $action): void
|
||||
{
|
||||
try {
|
||||
$this->daemonPowerRepository->setServer($server)->send($action);
|
||||
$this->daemonServerRepository->setServer($server)->power($action);
|
||||
|
||||
Notification::make()
|
||||
->title(trans('server/dashboard.power_actions'))
|
||||
|
@ -5,9 +5,9 @@ namespace App\Http\Controllers\Api\Client\Servers;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Models\Server;
|
||||
use App\Facades\Activity;
|
||||
use App\Repositories\Daemon\DaemonPowerRepository;
|
||||
use App\Http\Controllers\Api\Client\ClientApiController;
|
||||
use App\Http\Requests\Api\Client\Servers\SendPowerRequest;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use Dedoc\Scramble\Attributes\Group;
|
||||
use Illuminate\Http\Client\ConnectionException;
|
||||
|
||||
@ -17,7 +17,7 @@ class PowerController extends ClientApiController
|
||||
/**
|
||||
* PowerController constructor.
|
||||
*/
|
||||
public function __construct(private DaemonPowerRepository $repository)
|
||||
public function __construct(private DaemonServerRepository $repository)
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
@ -31,7 +31,7 @@ class PowerController extends ClientApiController
|
||||
*/
|
||||
public function index(SendPowerRequest $request, Server $server): Response
|
||||
{
|
||||
$this->repository->setServer($server)->send(
|
||||
$this->repository->setServer($server)->power(
|
||||
$request->input('signal')
|
||||
);
|
||||
|
||||
|
@ -5,11 +5,11 @@ namespace App\Jobs\Schedule;
|
||||
use App\Jobs\Job;
|
||||
use Carbon\CarbonImmutable;
|
||||
use App\Models\Task;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use App\Services\Backups\InitiateBackupService;
|
||||
use App\Repositories\Daemon\DaemonPowerRepository;
|
||||
use App\Services\Files\DeleteFilesService;
|
||||
use Exception;
|
||||
use Illuminate\Http\Client\ConnectionException;
|
||||
@ -31,7 +31,7 @@ class RunTaskJob extends Job implements ShouldQueue
|
||||
*/
|
||||
public function handle(
|
||||
InitiateBackupService $backupService,
|
||||
DaemonPowerRepository $powerRepository,
|
||||
DaemonServerRepository $serverRepository,
|
||||
DeleteFilesService $deleteFilesService
|
||||
): void {
|
||||
// Do not process a task that is not set to active, unless it's been manually triggered.
|
||||
@ -57,7 +57,7 @@ class RunTaskJob extends Job implements ShouldQueue
|
||||
try {
|
||||
switch ($this->task->action) {
|
||||
case Task::ACTION_POWER:
|
||||
$powerRepository->setServer($server)->send($this->task->payload);
|
||||
$serverRepository->setServer($server)->power($this->task->payload);
|
||||
break;
|
||||
case Task::ACTION_COMMAND:
|
||||
$server->send($this->task->payload);
|
||||
|
@ -1,21 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repositories\Daemon;
|
||||
|
||||
use Illuminate\Http\Client\ConnectionException;
|
||||
use Illuminate\Http\Client\Response;
|
||||
|
||||
class DaemonPowerRepository extends DaemonRepository
|
||||
{
|
||||
/**
|
||||
* Sends a power action to the server instance.
|
||||
*
|
||||
* @throws ConnectionException
|
||||
*/
|
||||
public function send(string $action): Response
|
||||
{
|
||||
return $this->getHttpClient()->post("/api/servers/{$this->server->uuid}/power",
|
||||
['action' => $action],
|
||||
);
|
||||
}
|
||||
}
|
@ -8,6 +8,7 @@ use Exception;
|
||||
use Filament\Notifications\Notification;
|
||||
use Illuminate\Http\Client\ConnectionException;
|
||||
use Illuminate\Http\Client\RequestException;
|
||||
use Illuminate\Http\Client\Response;
|
||||
|
||||
class DaemonServerRepository extends DaemonRepository
|
||||
{
|
||||
@ -149,4 +150,16 @@ class DaemonServerRepository extends DaemonRepository
|
||||
->throw()
|
||||
->json('data');
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a power action to the server instance.
|
||||
*
|
||||
* @throws ConnectionException
|
||||
*/
|
||||
public function power(string $action): Response
|
||||
{
|
||||
return $this->getHttpClient()->post("/api/servers/{$this->server->uuid}/power",
|
||||
['action' => $action],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ namespace App\Tests\Integration\Api\Client\Server;
|
||||
|
||||
use Illuminate\Http\Response;
|
||||
use App\Models\Permission;
|
||||
use App\Repositories\Daemon\DaemonPowerRepository;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use App\Tests\Integration\Api\Client\ClientApiIntegrationTestCase;
|
||||
use PHPUnit\Framework\Attributes\DataProvider;
|
||||
|
||||
@ -49,8 +49,8 @@ class PowerControllerTest extends ClientApiIntegrationTestCase
|
||||
#[DataProvider('validPowerActionDataProvider')]
|
||||
public function test_action_can_be_sent_to_server(string $action, string $permission): void
|
||||
{
|
||||
$service = \Mockery::mock(DaemonPowerRepository::class);
|
||||
$this->app->instance(DaemonPowerRepository::class, $service);
|
||||
$service = \Mockery::mock(DaemonServerRepository::class);
|
||||
$this->app->instance(DaemonServerRepository::class, $service);
|
||||
|
||||
[$user, $server] = $this->generateTestAccount([$permission]);
|
||||
|
||||
@ -60,7 +60,7 @@ class PowerControllerTest extends ClientApiIntegrationTestCase
|
||||
}))
|
||||
->andReturnSelf()
|
||||
->getMock()
|
||||
->expects('send')
|
||||
->expects('power')
|
||||
->with(trim($action));
|
||||
|
||||
$this->actingAs($user)
|
||||
|
@ -10,8 +10,8 @@ use App\Models\Server;
|
||||
use App\Models\Schedule;
|
||||
use Illuminate\Support\Facades\Bus;
|
||||
use App\Jobs\Schedule\RunTaskJob;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use App\Tests\Integration\IntegrationTestCase;
|
||||
use App\Repositories\Daemon\DaemonPowerRepository;
|
||||
use Illuminate\Http\Client\ConnectionException;
|
||||
use PHPUnit\Framework\Attributes\DataProvider;
|
||||
|
||||
@ -84,13 +84,13 @@ class RunTaskJobTest extends IntegrationTestCase
|
||||
'continue_on_failure' => false,
|
||||
]);
|
||||
|
||||
$mock = \Mockery::mock(DaemonPowerRepository::class);
|
||||
$this->instance(DaemonPowerRepository::class, $mock);
|
||||
$mock = \Mockery::mock(DaemonServerRepository::class);
|
||||
$this->instance(DaemonServerRepository::class, $mock);
|
||||
|
||||
$mock->expects('setServer')->with(\Mockery::on(function ($value) use ($server) {
|
||||
return $value instanceof Server && $value->id === $server->id;
|
||||
}))->andReturnSelf();
|
||||
$mock->expects('send')->with('start');
|
||||
$mock->expects('power')->with('start');
|
||||
|
||||
Bus::dispatchSync(new RunTaskJob($task, $isManualRun));
|
||||
|
||||
@ -117,10 +117,10 @@ class RunTaskJobTest extends IntegrationTestCase
|
||||
'continue_on_failure' => $continueOnFailure,
|
||||
]);
|
||||
|
||||
$mock = \Mockery::mock(DaemonPowerRepository::class);
|
||||
$this->instance(DaemonPowerRepository::class, $mock);
|
||||
$mock = \Mockery::mock(DaemonServerRepository::class);
|
||||
$this->instance(DaemonServerRepository::class, $mock);
|
||||
|
||||
$mock->expects('setServer->send')->andThrow(new ConnectionException());
|
||||
$mock->expects('setServer->power')->andThrow(new ConnectionException());
|
||||
|
||||
if (!$continueOnFailure) {
|
||||
$this->expectException(ConnectionException::class);
|
||||
|
Loading…
x
Reference in New Issue
Block a user