diff --git a/config/api_platform/ImageImageRepository.yaml b/config/api_platform/ImageImageRepository.yaml index 05fd121..ff64ea0 100644 --- a/config/api_platform/ImageImageRepository.yaml +++ b/config/api_platform/ImageImageRepository.yaml @@ -88,7 +88,7 @@ resources: description: Export Image in OgRepository class: ApiPlatform\Metadata\Post method: POST - input: App\Dto\Input\ExportImportImageRepositoryInput + input: App\Dto\Input\TransferGlobalImageInput uriTemplate: /image-image-repositories/{uuid}/transfer-image controller: App\Controller\OgRepository\Image\TransferAction @@ -101,6 +101,15 @@ resources: uriTemplate: /image-image-repositories/server/{uuid}/status controller: App\Controller\OgRepository\Image\GetStatusAction + transfer_global_image_repository: + shortName: OgRepository Server + description: Transfer Global Image in OgRepository + class: ApiPlatform\Metadata\Post + method: POST + input: false + uriTemplate: /image-image-repositories/server/{uuid}/transfer-global + controller: App\Controller\OgRepository\Image\TransferGlobalAction + properties: App\Entity\ImageImageRepository: id: diff --git a/src/Controller/OgRepository/Image/TransferAction.php b/src/Controller/OgRepository/Image/TransferAction.php index a0eadac..c0513bb 100644 --- a/src/Controller/OgRepository/Image/TransferAction.php +++ b/src/Controller/OgRepository/Image/TransferAction.php @@ -4,6 +4,7 @@ namespace App\Controller\OgRepository\Image; use App\Controller\OgRepository\AbstractOgRepositoryController; use App\Dto\Input\ExportImportImageRepositoryInput; +use App\Dto\Input\TransferGlobalImageInput; use App\Entity\Image; use App\Entity\ImageImageRepository; use App\Entity\ImageRepository; @@ -28,7 +29,7 @@ class TransferAction extends AbstractOgRepositoryController * @throws RedirectionExceptionInterface * @throws ClientExceptionInterface */ - public function __invoke(ExportImportImageRepositoryInput $input, ImageImageRepository $imageImageRepository): JsonResponse + public function __invoke(TransferGlobalImageInput $input, ImageImageRepository $imageImageRepository): JsonResponse { $repositories = $input->repositories; @@ -45,7 +46,7 @@ class TransferAction extends AbstractOgRepositoryController $params = [ 'json' => [ 'image' => $image->getName().'.img', - 'repo_ip' => $image->getClient()->getRepository()->getIp(), + 'repo_ip' => $imageImageRepository->getRepository()->getIp(), 'user' => 'opengnsys', ] ]; diff --git a/src/Controller/OgRepository/Image/TransferIsGlobalAction.php b/src/Controller/OgRepository/Image/TransferGlobalAction.php similarity index 68% rename from src/Controller/OgRepository/Image/TransferIsGlobalAction.php rename to src/Controller/OgRepository/Image/TransferGlobalAction.php index d1d6c7f..795967a 100644 --- a/src/Controller/OgRepository/Image/TransferIsGlobalAction.php +++ b/src/Controller/OgRepository/Image/TransferGlobalAction.php @@ -21,7 +21,7 @@ use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; #[AsController] -class TransferIsGlobalAction extends AbstractOgRepositoryController +class TransferGlobalAction extends AbstractOgRepositoryController { /** * @throws TransportExceptionInterface @@ -29,26 +29,17 @@ class TransferIsGlobalAction extends AbstractOgRepositoryController * @throws RedirectionExceptionInterface * @throws ClientExceptionInterface */ - public function __invoke(?array $repositories = [], Image $image): JsonResponse + public function __invoke(ImageImageRepository $imageImageRepository): JsonResponse { + $repositories = $this->entityManager->getRepository(ImageRepository::class)->findAll(); + foreach ($repositories as $repository) { - try { - $imageImageRepository = $this->entityManager->getRepository(ImageImageRepository::class)->findOneBy(['image' => $image, 'repository' => $repository]); - - if ($imageImageRepository) { - $content = $this->createRequest('GET', 'http://'.$repository->getIp().':8006/ogrepository/v1/images/'.$imageImageRepository->getImageFullsum()); - - $this->logger->info('Image already exists', ['image' => $imageImageRepository->getImage()->getName(), 'repository' => $repository->getIp()]); - continue; - } - } catch ( \Exception $e) { - - } + $image = $imageImageRepository->getImage(); $params = [ 'json' => [ 'image' => $image->getName().'.img', - 'repo_ip' => $image->getClient()->getRepository()->getIp(), + 'repo_ip' => $imageImageRepository->getRepository()->getIp(), 'user' => 'opengnsys', ] ]; @@ -64,13 +55,13 @@ class TransferIsGlobalAction extends AbstractOgRepositoryController $inputData = [ 'imageName' => $image->getName(), 'imageUuid' => $image->getUuid(), - //'imageImageRepositoryUuid' => $imageImageRepository?->getUuid(), + 'imageImageRepositoryUuid' => $imageImageRepository?->getUuid(), 'repositoryUuid' => $repository->getUuid(), ]; $this->createService->__invoke($image->getClient(), CommandTypes::TRANSFER_IMAGE, TraceStatus::IN_PROGRESS, $content['job_id'], $inputData); - //$imageImageRepository->setStatus(ImageStatus::TRANSFERRING); + $imageImageRepository->setStatus(ImageStatus::TRANSFERRING); $this->entityManager->persist($image); $this->entityManager->flush(); } diff --git a/src/Dto/Input/TransferGlobalImageInput.php b/src/Dto/Input/TransferGlobalImageInput.php new file mode 100644 index 0000000..7193d13 --- /dev/null +++ b/src/Dto/Input/TransferGlobalImageInput.php @@ -0,0 +1,18 @@ +source !== 'input') { $response = $this->createImageActionController->__invoke($image); - } else { - if ($data->isGlobal === true) { - $repositories = $this->imageRepositoryRepository->findAll(); - $this->transferActionController->__invoke($repositories, $image); - } } $this->imageRepository->save($image);