chore: add get_server_dcoker_image_details

This commit is contained in:
davidhorvat 2024-12-05 20:43:31 +01:00
parent 40bf9e22b1
commit 8cab528551
3 changed files with 26 additions and 4 deletions

View file

@ -2,15 +2,16 @@
namespace App\Actions\Docker;
use Illuminate\Database\Eloquent\Collection;
use Lorisleiva\Actions\Concerns\AsAction;
class GetServerDockerImageDetails
{
use AsAction;
public static function run()
public static function run($server, $imageId)
{
$result = instant_remote_process(["docker inspect --format 'json' --type=image {$imageId}"], $server);
return json_decode($result, true);
}
}

View file

@ -2,6 +2,7 @@
namespace App\Http\Controllers\Api;
use App\Actions\Docker\GetServerDockerImageDetails;
use App\Actions\Docker\ListServerDockerImages;
use App\Http\Controllers\Controller;
use App\Models\Server;
@ -26,6 +27,24 @@ class DockerController extends Controller
return response()->json(['error' => 'server is not reachable.'], 403);
}
return response()->json(ListServerDockerImages::run($server));
return ListServerDockerImages::run($server);
}
public function get_server_dcoker_image_details($server_uuid, $id)
{
$query = Server::query();
$server = $query->where('uuid', $server_uuid)->first();
if (!$server) {
return response()->json(['error' => 'server not found'], 404);
}
$isReachable = (bool) $server->settings->is_reachable;
// If the server is reachable, send the reachable notification if it was sent before
if ($isReachable !== true) {
return response()->json(['error' => 'server is not reachable.'], 403);
}
return response()->json(GetServerDockerImageDetails::run($server, $id));
}
}

View file

@ -130,10 +130,12 @@ Route::group([
Route::match(['get', 'post'], '/services/{uuid}/restart', [ServicesController::class, 'action_restart'])->middleware([IgnoreReadOnlyApiToken::class]);
Route::match(['get', 'post'], '/services/{uuid}/stop', [ServicesController::class, 'action_stop'])->middleware([IgnoreReadOnlyApiToken::class]);
Route::get('/docker/images/{server_uuid}', [DockerController::class, 'list_server_docker_images']);
Route::get('/docker/{server_uuid}/images', [DockerController::class, 'list_server_docker_images']);
Route::get('/docker/{server_uuid}/image/{id}', [DockerController::class, 'get_server_dcoker_image_details']);
});
Route::group([
'prefix' => 'v1',
], function () {