Small replacement fixes

This commit is contained in:
Lance Pioch 2024-03-16 18:54:57 -04:00
parent 521aa203b8
commit 2aa06fc009
2 changed files with 24 additions and 26 deletions

View File

@ -2,17 +2,20 @@
namespace App\Http\Controllers\Admin\Servers; namespace App\Http\Controllers\Admin\Servers;
use App\Exceptions\Http\Connection\DaemonConnectionException;
use Carbon\CarbonImmutable; use Carbon\CarbonImmutable;
use GuzzleHttp\Exception\TransferException;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\Server; use App\Models\Server;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Http;
use Lcobucci\JWT\Token\Plain;
use Prologue\Alerts\AlertsMessageBag; use Prologue\Alerts\AlertsMessageBag;
use App\Models\ServerTransfer; use App\Models\ServerTransfer;
use Illuminate\Database\ConnectionInterface; use Illuminate\Database\ConnectionInterface;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Services\Nodes\NodeJWTService; use App\Services\Nodes\NodeJWTService;
use App\Repositories\Eloquent\NodeRepository; use App\Repositories\Eloquent\NodeRepository;
use App\Repositories\Daemon\DaemonTransferRepository;
use App\Contracts\Repository\AllocationRepositoryInterface; use App\Contracts\Repository\AllocationRepositoryInterface;
class ServerTransferController extends Controller class ServerTransferController extends Controller
@ -24,12 +27,30 @@ class ServerTransferController extends Controller
private AlertsMessageBag $alert, private AlertsMessageBag $alert,
private AllocationRepositoryInterface $allocationRepository, private AllocationRepositoryInterface $allocationRepository,
private ConnectionInterface $connection, private ConnectionInterface $connection,
private DaemonTransferRepository $daemonTransferRepository,
private NodeJWTService $nodeJWTService, private NodeJWTService $nodeJWTService,
private NodeRepository $nodeRepository private NodeRepository $nodeRepository
) { ) {
} }
private function notify(Server $server, Plain $token): void
{
try {
Http::daemon($server->node)->post('/api/transfer', [
'json' => [
'server_id' => $server->uuid,
'url' => $server->node->getConnectionAddress() . "/api/servers/$server->uuid/archive",
'token' => 'Bearer ' . $token->toString(),
'server' => [
'uuid' => $server->uuid,
'start_on_completion' => false,
],
],
])->toPsrResponse();
} catch (TransferException $exception) {
throw new DaemonConnectionException($exception);
}
}
/** /**
* Starts a transfer of a server to a new node. * Starts a transfer of a server to a new node.
* *
@ -81,7 +102,7 @@ class ServerTransferController extends Controller
->handle($transfer->newNode, $server->uuid, 'sha256'); ->handle($transfer->newNode, $server->uuid, 'sha256');
// Notify the source node of the pending outgoing transfer. // Notify the source node of the pending outgoing transfer.
$this->daemonTransferRepository->setServer($server)->notify($transfer->newNode, $token); $this->notify($server, $token);
return $transfer; return $transfer;
}); });

View File

@ -3,9 +3,7 @@
namespace App\Http\Controllers\Api\Remote\Servers; namespace App\Http\Controllers\Api\Remote\Servers;
use App\Models\Server; use App\Models\Server;
use App\Repositories\Daemon\DaemonRepository;
use App\Repositories\Daemon\DaemonServerRepository; use App\Repositories\Daemon\DaemonServerRepository;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Http\Response; use Illuminate\Http\Response;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use App\Models\Allocation; use App\Models\Allocation;
@ -13,7 +11,6 @@ use Illuminate\Support\Facades\Log;
use App\Models\ServerTransfer; use App\Models\ServerTransfer;
use Illuminate\Database\ConnectionInterface; use Illuminate\Database\ConnectionInterface;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Lcobucci\JWT\Token\Plain;
use Symfony\Component\HttpKernel\Exception\ConflictHttpException; use Symfony\Component\HttpKernel\Exception\ConflictHttpException;
use App\Exceptions\Http\Connection\DaemonConnectionException; use App\Exceptions\Http\Connection\DaemonConnectionException;
@ -24,30 +21,10 @@ class ServerTransferController extends Controller
*/ */
public function __construct( public function __construct(
private ConnectionInterface $connection, private ConnectionInterface $connection,
private DaemonRepository $daemonRepository,
private DaemonServerRepository $daemonServerRepository, private DaemonServerRepository $daemonServerRepository,
) { ) {
} }
private function notify(DaemonRepository $repository, Server $server, Plain $token): void
{
try {
$repository->getHttpClient()->post('/api/transfer', [
'json' => [
'server_id' => $server->uuid,
'url' => $server->node->getConnectionAddress() . "/api/servers/$server->uuid/archive",
'token' => 'Bearer ' . $token->toString(),
'server' => [
'uuid' => $server->uuid,
'start_on_completion' => false,
],
],
]);
} catch (GuzzleException $exception) {
throw new DaemonConnectionException($exception);
}
}
/** /**
* The daemon notifies us about a transfer failure. * The daemon notifies us about a transfer failure.
* *