From aee03d6a858f712adaa833cdb01e3f0543ed54b1 Mon Sep 17 00:00:00 2001 From: Manuel Aranda Date: Fri, 15 Nov 2024 09:09:35 +0100 Subject: [PATCH] refs #1088. Deploy Image --- src/Dto/Input/DeployImageInput.php | 45 ++++++++++++++++++++++++++ src/Model/DeployImageTypes.php | 22 ++++++++++++- src/Model/DeployMethodTypes.php | 24 +++++++++++++- src/Model/ImageStatus.php | 29 ++++++++++++++++- src/State/Processor/ImageProcessor.php | 4 +-- 5 files changed, 119 insertions(+), 5 deletions(-) diff --git a/src/Dto/Input/DeployImageInput.php b/src/Dto/Input/DeployImageInput.php index 1c889f3..af79406 100644 --- a/src/Dto/Input/DeployImageInput.php +++ b/src/Dto/Input/DeployImageInput.php @@ -2,7 +2,52 @@ namespace App\Dto\Input; +use ApiPlatform\Metadata\ApiProperty; +use App\Dto\Output\ClientOutput; +use App\Dto\Output\ImageOutput; +use App\Dto\Output\PartitionOutput; +use App\Validator\Constraints\OrganizationalUnitMulticastMode; +use App\Validator\Constraints\OrganizationalUnitMulticastPort; +use App\Validator\Constraints\OrganizationalUnitP2PMode; +use Symfony\Component\Serializer\Annotation\Groups; + class DeployImageInput { + #[Groups(['image:write'])] + #[ApiProperty(description: 'The type of the image deployment', example: "")] + public ?string $type = null; + + #[Groups(['image:write'])] + #[ApiProperty(description: 'The type of the image deployment', example: "")] + public ?string $method = null; + + #[Groups(['image:write'])] + #[ApiProperty(description: 'The client to deploy the image')] + public ?ClientOutput $client = null; + + #[Groups(['image:write'])] + #[ApiProperty(description: 'The partition to deploy the image')] + public ?PartitionOutput $partition = null; + + #[OrganizationalUnitP2PMode] + #[Groups(['image:write'])] + public ?string $p2pMode = null; + + #[Groups(['organizational-unit:write'])] + public ?int $p2pTime = null; + + #[Groups(['image:write'])] + public ?string $mcastIp = null; + + #[Groups(['image:write'])] + public ?int $mcastSpeed = null; + + #[OrganizationalUnitMulticastPort] + #[Groups(['image:write'])] + public ?int $mcastPort = null; + + #[OrganizationalUnitMulticastMode] + #[Groups(['image:write'])] + public ?string $mcastMode = null; } \ No newline at end of file diff --git a/src/Model/DeployImageTypes.php b/src/Model/DeployImageTypes.php index 85f6d2c..4146246 100644 --- a/src/Model/DeployImageTypes.php +++ b/src/Model/DeployImageTypes.php @@ -2,7 +2,27 @@ namespace App\Model; -class DeployImageTypes +final class DeployImageTypes { + public const string DEPLOY_IMAGE = 'deploy-image'; + public const string UPDATE_CACHE = 'update-cache'; + private const array DEPLOYMENT_IMAGE_TYPES = [ + self::DEPLOY_IMAGE => 'Unidad Organizativa', + self::UPDATE_CACHE => 'Grupo de aulas', + ]; + public static function getDeploymentImageTypes(): array + { + return self::DEPLOYMENT_IMAGE_TYPES; + } + + public static function getDeploymentImageType(string $type): ?string + { + return self::DEPLOYMENT_IMAGE_TYPES[$type] ?? null; + } + + public static function getDeploymentImageTypeKeys(): array + { + return array_keys(self::DEPLOYMENT_IMAGE_TYPES); + } } \ No newline at end of file diff --git a/src/Model/DeployMethodTypes.php b/src/Model/DeployMethodTypes.php index 51ad0cd..9eb464c 100644 --- a/src/Model/DeployMethodTypes.php +++ b/src/Model/DeployMethodTypes.php @@ -2,7 +2,29 @@ namespace App\Model; -class DeployMethodTypes +final class DeployMethodTypes { + public const string MULTICAST = 'multicast'; + public const string UNICAST = 'unicast'; + public const string TORRENT = 'torrent'; + private const array DEPLOYMENT_METHOD_TYPES = [ + self::MULTICAST => 'Multicast', + self::UNICAST => 'Unicast', + self::TORRENT => 'Torrent', + ]; + + public static function getDeploymentMethodTypes(): array + { + return self::DEPLOYMENT_METHOD_TYPES; + } + + public static function getDeploymentMethodType(string $type): ?string + { + return self::DEPLOYMENT_METHOD_TYPES[$type] ?? null; + } + public static function getDeploymentMethodTypeKeys(): array + { + return array_keys(self::DEPLOYMENT_METHOD_TYPES); + } } \ No newline at end of file diff --git a/src/Model/ImageStatus.php b/src/Model/ImageStatus.php index f59c244..d46af96 100644 --- a/src/Model/ImageStatus.php +++ b/src/Model/ImageStatus.php @@ -2,7 +2,34 @@ namespace App\Model; -class ImageStatus +final class ImageStatus { + public const string PENDING = 'pending'; + public const string IN_PROGRESS = 'in-progress'; + public const string SUCCESS = 'success'; + public const string TRASH = 'trash'; + public const string FAILED = 'failed'; + private const array STATUS = [ + self::PENDING => 'Pendiente', + self::IN_PROGRESS => 'En progreso', + self::TRASH => 'Papelera', + self::SUCCESS => 'Completado', + self::FAILED => 'Fallido', + ]; + + public static function getStatus(): array + { + return self::STATUS; + } + + public static function getImageStatus(string $status): ?string + { + return self::STATUS[$status] ?? null; + } + + public static function getStatusKeys(): array + { + return array_keys(self::STATUS); + } } \ No newline at end of file diff --git a/src/State/Processor/ImageProcessor.php b/src/State/Processor/ImageProcessor.php index 89ef94e..bcda6ed 100644 --- a/src/State/Processor/ImageProcessor.php +++ b/src/State/Processor/ImageProcessor.php @@ -9,7 +9,7 @@ use ApiPlatform\Metadata\Post; use ApiPlatform\Metadata\Put; use ApiPlatform\State\ProcessorInterface; use ApiPlatform\Validator\ValidatorInterface; -use App\Controller\OgAgent\CreateImageActionController; +use App\Controller\OgAgent\CreateImageAction; use App\Dto\Input\ImageInput; use App\Dto\Output\ImageOutput; use App\Repository\ImageRepository; @@ -19,7 +19,7 @@ readonly class ImageProcessor implements ProcessorInterface public function __construct( private ImageRepository $imageRepository, private ValidatorInterface $validator, - private CreateImageActionController $createImageActionController + private CreateImageAction $createImageActionController ) { }