mirror of
https://github.com/pelican-dev/panel.git
synced 2025-05-20 05:14:46 +02:00
Use BuildModificationService
on EditServer
(#1042)
* Use `BuildModificationService` on `EditServer` & make it throw if we can't reach wings * Use Node name on `EditServer` & `EditNode`
This commit is contained in:
parent
d79d461e7c
commit
839be53231
@ -599,7 +599,7 @@ class EditNode extends EditRecord
|
|||||||
$this->errored = true;
|
$this->errored = true;
|
||||||
|
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title(trans('admin/node.error_connecting'))
|
->title(trans('admin/node.error_connecting', ['node' => $record->name]))
|
||||||
->body(trans('admin/node.error_connecting_description'))
|
->body(trans('admin/node.error_connecting_description'))
|
||||||
->color('warning')
|
->color('warning')
|
||||||
->icon('tabler-database')
|
->icon('tabler-database')
|
||||||
|
@ -19,6 +19,7 @@ use App\Models\ServerVariable;
|
|||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Services\Databases\DatabaseManagementService;
|
use App\Services\Databases\DatabaseManagementService;
|
||||||
use App\Services\Eggs\EggChangerService;
|
use App\Services\Eggs\EggChangerService;
|
||||||
|
use App\Services\Servers\BuildModificationService;
|
||||||
use App\Services\Servers\RandomWordService;
|
use App\Services\Servers\RandomWordService;
|
||||||
use App\Services\Servers\ReinstallServerService;
|
use App\Services\Servers\ReinstallServerService;
|
||||||
use App\Services\Servers\ServerDeletionService;
|
use App\Services\Servers\ServerDeletionService;
|
||||||
@ -50,6 +51,7 @@ use Filament\Forms\Set;
|
|||||||
use Filament\Notifications\Notification;
|
use Filament\Notifications\Notification;
|
||||||
use Filament\Resources\Pages\EditRecord;
|
use Filament\Resources\Pages\EditRecord;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
use LogicException;
|
use LogicException;
|
||||||
use Webbingbrasil\FilamentCopyActions\Forms\Actions\CopyAction;
|
use Webbingbrasil\FilamentCopyActions\Forms\Actions\CopyAction;
|
||||||
@ -58,6 +60,15 @@ class EditServer extends EditRecord
|
|||||||
{
|
{
|
||||||
protected static string $resource = ServerResource::class;
|
protected static string $resource = ServerResource::class;
|
||||||
|
|
||||||
|
private bool $errored = false;
|
||||||
|
|
||||||
|
private BuildModificationService $buildModificationService;
|
||||||
|
|
||||||
|
public function boot(BuildModificationService $buildModificationService): void
|
||||||
|
{
|
||||||
|
$this->buildModificationService = $buildModificationService;
|
||||||
|
}
|
||||||
|
|
||||||
public function form(Form $form): Form
|
public function form(Form $form): Form
|
||||||
{
|
{
|
||||||
return $form
|
return $form
|
||||||
@ -947,6 +958,40 @@ class EditServer extends EditRecord
|
|||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function handleRecordUpdate(Model $record, array $data): Model
|
||||||
|
{
|
||||||
|
if (!$record instanceof Server) {
|
||||||
|
return $record;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->record = $this->buildModificationService->handle($record, $data, true);
|
||||||
|
|
||||||
|
return $this->record;
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
$this->errored = true;
|
||||||
|
|
||||||
|
Notification::make()
|
||||||
|
->title(trans('admin/server.notifications.error_connecting', ['node' => $record->node->name]))
|
||||||
|
->body(trans('admin/server.notifications.error_connecting_description'))
|
||||||
|
->color('warning')
|
||||||
|
->icon('tabler-database')
|
||||||
|
->warning()
|
||||||
|
->send();
|
||||||
|
|
||||||
|
return parent::handleRecordUpdate($record, $data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getSavedNotification(): ?Notification
|
||||||
|
{
|
||||||
|
if ($this->errored) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::getSavedNotification();
|
||||||
|
}
|
||||||
|
|
||||||
public function getRelationManagers(): array
|
public function getRelationManagers(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
@ -8,6 +8,7 @@ use App\Models\Allocation;
|
|||||||
use Illuminate\Database\ConnectionInterface;
|
use Illuminate\Database\ConnectionInterface;
|
||||||
use App\Exceptions\DisplayException;
|
use App\Exceptions\DisplayException;
|
||||||
use App\Repositories\Daemon\DaemonServerRepository;
|
use App\Repositories\Daemon\DaemonServerRepository;
|
||||||
|
use Exception;
|
||||||
use Illuminate\Http\Client\ConnectionException;
|
use Illuminate\Http\Client\ConnectionException;
|
||||||
|
|
||||||
class BuildModificationService
|
class BuildModificationService
|
||||||
@ -27,7 +28,7 @@ class BuildModificationService
|
|||||||
* @throws \Throwable
|
* @throws \Throwable
|
||||||
* @throws \App\Exceptions\DisplayException
|
* @throws \App\Exceptions\DisplayException
|
||||||
*/
|
*/
|
||||||
public function handle(Server $server, array $data): Server
|
public function handle(Server $server, array $data, ?bool $shouldThrow = false): Server
|
||||||
{
|
{
|
||||||
/** @var \App\Models\Server $server */
|
/** @var \App\Models\Server $server */
|
||||||
$server = $this->connection->transaction(function () use ($server, $data) {
|
$server = $this->connection->transaction(function () use ($server, $data) {
|
||||||
@ -66,6 +67,10 @@ class BuildModificationService
|
|||||||
$this->daemonServerRepository->setServer($server)->sync();
|
$this->daemonServerRepository->setServer($server)->sync();
|
||||||
} catch (ConnectionException $exception) {
|
} catch (ConnectionException $exception) {
|
||||||
logger()->warning($exception, ['server_id' => $server->id]);
|
logger()->warning($exception, ['server_id' => $server->id]);
|
||||||
|
|
||||||
|
if ($shouldThrow) {
|
||||||
|
throw $exception;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,6 +103,6 @@ return [
|
|||||||
'databases' => 'Databases',
|
'databases' => 'Databases',
|
||||||
'backups' => 'Backups',
|
'backups' => 'Backups',
|
||||||
|
|
||||||
'error_connecting' => 'Error connecting to the node',
|
'error_connecting' => 'Error connecting to :node',
|
||||||
'error_connecting_description' => 'The configuration could not be automatically updated on Wings, you will need to manually update the configuration file.',
|
'error_connecting_description' => 'The configuration could not be automatically updated on Wings, you will need to manually update the configuration file.',
|
||||||
];
|
];
|
||||||
|
@ -117,5 +117,7 @@ return [
|
|||||||
'invalid_port_body' => ':i is not in the valid port range between :portFloor-:portCeil',
|
'invalid_port_body' => ':i is not in the valid port range between :portFloor-:portCeil',
|
||||||
'already_exists' => 'Port already in use',
|
'already_exists' => 'Port already in use',
|
||||||
'already_exists_body' => ':i is already with an allocation',
|
'already_exists_body' => ':i is already with an allocation',
|
||||||
|
'error_connecting' => 'Error connecting to :node',
|
||||||
|
'error_connecting_description' => 'The configuration could not be automatically synced on Wings, you will need to manually restart the server.',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user