diff --git a/src/Controller/DeployImageAction.php b/src/Controller/DeployImageAction.php index 4ca8fc1..5e6d798 100644 --- a/src/Controller/DeployImageAction.php +++ b/src/Controller/DeployImageAction.php @@ -45,6 +45,10 @@ class DeployImageAction extends AbstractController */ public function __invoke(DeployImageInput $input, ImageImageRepository $image): JsonResponse { + if ($image->getStatus() !== ImageStatus::SUCCESS) { + return new BadRequestHttpException('Image is not ready to be deployed'); + } + $this->validator->validate($input); $clientJobs = []; diff --git a/src/Controller/OgRepository/AbstractOgRepositoryController.php b/src/Controller/OgRepository/AbstractOgRepositoryController.php index 80824e2..148c8fc 100644 --- a/src/Controller/OgRepository/AbstractOgRepositoryController.php +++ b/src/Controller/OgRepository/AbstractOgRepositoryController.php @@ -48,19 +48,48 @@ abstract class AbstractOgRepositoryController extends AbstractController 'timeout' => 30, ]); + $this->logger->info('Sending HTTP request', [ + 'method' => $method, + 'url' => $url, + 'params' => $params + ]); + try { $response = $this->httpClient->request($method, $url, $params); - return json_decode($response->getContent(), true); + $content = $response->getContent(); + $decodedContent = json_decode($content, true); + + $this->logger->info('HTTP response received successfully', [ + 'method' => $method, + 'url' => $url, + 'status_code' => $response->getStatusCode(), + 'response_size' => strlen($content), + 'decoded_content' => $decodedContent + ]); + + return $decodedContent; } catch (ClientExceptionInterface | ServerExceptionInterface $e) { - $this->logger->error(sprintf('Client/Server error in request to %s: %s', $url, $e->getMessage())); + $statusCode = $e->getResponse()?->getStatusCode() ?? Response::HTTP_INTERNAL_SERVER_ERROR; + + $this->logger->error('Client/server error in HTTP request', [ + 'method' => $method, + 'url' => $url, + 'error' => $e->getMessage(), + 'status_code' => $statusCode, + 'response_content' => $e->getResponse()?->getContent(false) + ]); return [ - 'code' => Response::HTTP_INTERNAL_SERVER_ERROR, + 'code' => $statusCode, 'error' => $e->getMessage(), - 'details' => $e->getMessage(), + 'details' => $e->getResponse()?->getContent(false) ?? $e->getMessage(), ]; } catch (TransportExceptionInterface $e) { - $this->logger->error(sprintf('Transport error in request to %s: %s', $url, $e->getMessage())); + $this->logger->error('Transport error in HTTP request', [ + 'method' => $method, + 'url' => $url, + 'error' => $e->getMessage() + ]); return [ 'code' => Response::HTTP_INTERNAL_SERVER_ERROR, diff --git a/src/Controller/OgRepository/Webhook/ResponseController.php b/src/Controller/OgRepository/Webhook/ResponseController.php index b8451f8..f334d30 100644 --- a/src/Controller/OgRepository/Webhook/ResponseController.php +++ b/src/Controller/OgRepository/Webhook/ResponseController.php @@ -26,6 +26,12 @@ class ResponseController extends AbstractOgRepositoryController public function repositoryWebhook(Request $request): JsonResponse { $data = json_decode($request->getContent(), true); + + $this->logger->info('Webhook data received', [ + 'payload' => $data, + 'raw_content' => $request->getContent(), + 'headers' => $request->headers->all() + ]); if (!isset($data['job_id'])) { return $this->jsonResponseError('Invalid request', Response::HTTP_BAD_REQUEST);