diff --git a/config/api_platform/ImageRepository.yaml b/config/api_platform/ImageRepository.yaml index f8879bb..d1d04d7 100644 --- a/config/api_platform/ImageRepository.yaml +++ b/config/api_platform/ImageRepository.yaml @@ -55,6 +55,24 @@ resources: uriTemplate: /image-repositories/server/{uuid}/status controller: App\Controller\OgRepository\StatusAction + export_image_ogrepository: + shortName: OgRepository Server + description: Export Image in OgRepository + class: ApiPlatform\Metadata\Post + method: POST + input: App\Dto\Input\ExportImportImageRepositoryInput + uriTemplate: /image-repositories/{uuid}/export-image + controller: App\Controller\OgRepository\Image\ExportAction + + import_image_ogrepository: + shortName: OgRepository Server + description: Export Image in OgRepository + class: ApiPlatform\Metadata\Post + method: POST + input: App\Dto\Input\ExportImportImageRepositoryInput + uriTemplate: /image-repositories/{uuid}/import-image + controller: App\Controller\OgRepository\Image\ImportAction + properties: App\Entity\ImageRepository: id: diff --git a/src/Controller/OgRepository/Image/ExportAction.php b/src/Controller/OgRepository/Image/ExportAction.php new file mode 100644 index 0000000..705c23e --- /dev/null +++ b/src/Controller/OgRepository/Image/ExportAction.php @@ -0,0 +1,56 @@ +images; + + foreach ($images as $imageEntity) { + /** @var Image $image */ + $image = $imageEntity->getEntity(); + + if (!$image->getImageFullsum()) { + throw new ValidatorException('Fullsum is required'); + } + + $params = [ + 'json' => [ + 'ID_img' => $image->getImageFullsum(), + 'repo_ip' => $repository->getIp(), + 'user' => 'opengnsys', + ] + ]; + + $content = $this->createRequest('PUT', 'http://'.$image->getRepository()->getIp().':8006/ogrepository/v1/repo/images', $params); + + $image->setRepository($repository); + $this->entityManager->persist($image); + $this->entityManager->flush(); + } + + return new JsonResponse(data: [], status: Response::HTTP_OK); + } +} \ No newline at end of file diff --git a/src/Controller/OgRepository/Image/ImportAction.php b/src/Controller/OgRepository/Image/ImportAction.php new file mode 100644 index 0000000..7d0a7fa --- /dev/null +++ b/src/Controller/OgRepository/Image/ImportAction.php @@ -0,0 +1,56 @@ +images; + + foreach ($images as $imageEntity) { + /** @var Image $image */ + $image = $imageEntity->getEntity(); + + if (!$image->getImageFullsum()) { + throw new ValidatorException('Fullsum is required'); + } + + $params = [ + 'json' => [ + 'image' => $image->getName(), + 'repo_ip' => $repository->getIp(), + 'user' => 'opengnsys', + ] + ]; + + $content = $this->createRequest('POST', 'http://'.$image->getRepository()->getIp().':8006/ogrepository/v1/repo/images', $params); + + $image->setRepository($repository); + $this->entityManager->persist($image); + $this->entityManager->flush(); + } + + return new JsonResponse(data: [], status: Response::HTTP_OK); + } +} \ No newline at end of file diff --git a/src/Dto/Input/ExportImportImageRepositoryInput.php b/src/Dto/Input/ExportImportImageRepositoryInput.php new file mode 100644 index 0000000..690500b --- /dev/null +++ b/src/Dto/Input/ExportImportImageRepositoryInput.php @@ -0,0 +1,18 @@ +