From a2e0ced9060790d04871d0bec93912dece53ec05 Mon Sep 17 00:00:00 2001 From: Manuel Aranda Date: Wed, 19 Mar 2025 15:45:07 +0100 Subject: [PATCH] refs #1731. New endpoint integration. Convert image to virtual --- config/api_platform/ImageImageRepository.yaml | 8 +++ config/packages/framework.yaml | 1 + .../Image/ConvertImageToVirtualAction.php | 65 +++++++++++++++++++ src/Dto/Input/ConvertImageToVirtualInput.php | 15 +++++ src/Model/CommandTypes.php | 10 +-- .../Utils/SimplifyOgLiveFilenameService.php | 28 ++++++++ 6 files changed, 123 insertions(+), 4 deletions(-) create mode 100644 src/Controller/OgRepository/Image/ConvertImageToVirtualAction.php create mode 100644 src/Dto/Input/ConvertImageToVirtualInput.php create mode 100644 src/Service/Utils/SimplifyOgLiveFilenameService.php diff --git a/config/api_platform/ImageImageRepository.yaml b/config/api_platform/ImageImageRepository.yaml index ff64ea0..279d72a 100644 --- a/config/api_platform/ImageImageRepository.yaml +++ b/config/api_platform/ImageImageRepository.yaml @@ -56,6 +56,14 @@ resources: uriTemplate: /image-image-repositories/{uuid}/backup-image controller: App\Controller\OgRepository\Image\BackupImageAction + convert_image_to_virtual_image_ogrepository: + shortName: OgRepository Server + class: ApiPlatform\Metadata\Post + method: POST + input: App\Dto\Input\ConvertImageToVirtualInput + uriTemplate: /image-image-repositories/{uuid}/convert-image-to-virtual + controller: App\Controller\OgRepository\Image\ConvertImageToVirtualAction + trash_delete_image_ogrepository: shortName: OgRepository Server description: Delete Image in OgRepository diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index 5b303be..b6cfd9e 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -12,6 +12,7 @@ framework: handler_id: null cookie_secure: auto cookie_samesite: lax + storage_factory_id: session.storage.factory.native #esi: true #fragments: true diff --git a/src/Controller/OgRepository/Image/ConvertImageToVirtualAction.php b/src/Controller/OgRepository/Image/ConvertImageToVirtualAction.php new file mode 100644 index 0000000..898e67f --- /dev/null +++ b/src/Controller/OgRepository/Image/ConvertImageToVirtualAction.php @@ -0,0 +1,65 @@ +getImage(); + + if (!$image->getName()) { + throw new ValidatorException('Name is required'); + } + + $params = [ + 'json' => [ + 'ID_img' => $imageImageRepository->getImageFullsum(), + 'vm_extension' => 'opengnsys' + ] + ]; + + $this->logger->info('Convert image to virtual', ['image' => $image->getName()]); + + $repository = $imageImageRepository->getRepository(); + + $content = $this->createRequest('PUT', 'http://'.$repository->getIp().':8006/ogrepository/v1/images/virtual', $params); + + $inputData = [ + 'imageName' => $image->getName(), + 'repositoryUuid' => $repository->getUuid(), + 'imageImageRepositoryUuid' => $imageImageRepository->getUuid(), + 'ID_img' => $imageImageRepository->getImageFullsum(), + ]; + + $this->createService->__invoke($image->getClient(), CommandTypes::CONVERT_IMAGE_TO_VIRTUAL, TraceStatus::IN_PROGRESS, $content['job_id'], $inputData); + + $imageImageRepository->setStatus(ImageStatus::TRANSFERRING); + $this->entityManager->persist($imageImageRepository); + $this->entityManager->flush(); + + return new JsonResponse(data: $content, status: Response::HTTP_OK); + } +} \ No newline at end of file diff --git a/src/Dto/Input/ConvertImageToVirtualInput.php b/src/Dto/Input/ConvertImageToVirtualInput.php new file mode 100644 index 0000000..d1d0e84 --- /dev/null +++ b/src/Dto/Input/ConvertImageToVirtualInput.php @@ -0,0 +1,15 @@ + 'Update Cache', self::CREATE_IMAGE => 'Create Image', self::CONVERT_IMAGE => 'Convert Image', - self::CREATE_IMAGE_AUX_FILE => 'Crear fichero auxiliar en repositorio', - self::BACKUP_IMAGE => 'Crear backup de imagen', - self::IMPORT_IMAGE => 'Importar imagen', - self::EXPORT_IMAGE => 'Exportar imagen', + self::CONVERT_IMAGE_TO_VIRTUAL => 'Convert Image to Virtual', + self::CREATE_IMAGE_AUX_FILE => 'Create Image Aux File', + self::BACKUP_IMAGE => 'Backup Image', + self::IMPORT_IMAGE => 'Import image', + self::EXPORT_IMAGE => 'Export image', self::POWER_ON => 'Encender', self::REBOOT => 'Reiniciar', self::SHUTDOWN => 'Apagar', diff --git a/src/Service/Utils/SimplifyOgLiveFilenameService.php b/src/Service/Utils/SimplifyOgLiveFilenameService.php new file mode 100644 index 0000000..2ac5d0c --- /dev/null +++ b/src/Service/Utils/SimplifyOgLiveFilenameService.php @@ -0,0 +1,28 @@ +