From 9a96b04e7fe33c4b9e88a2a06a419c528fc6353e Mon Sep 17 00:00:00 2001 From: Manuel Aranda Date: Thu, 10 Apr 2025 09:53:28 +0200 Subject: [PATCH] refs #1864. Added ssh_port and user in imageRepository --- migrations/Version20250408140101.php | 31 ++++++++++++++++++ .../OgRepository/Image/BackupImageAction.php | 4 ++- .../OgRepository/Image/TransferAction.php | 3 +- .../Image/TransferGlobalAction.php | 3 +- src/Dto/Input/ImageRepositoryInput.php | 14 +++++++- src/Dto/Output/ImageImageRepositoryOutput.php | 4 +++ src/Dto/Output/ImageRepositoryOutput.php | 8 +++++ src/Entity/ImageImageRepository.php | 15 +++++++++ src/Entity/ImageRepository.php | 32 +++++++++++++++++++ 9 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 migrations/Version20250408140101.php diff --git a/migrations/Version20250408140101.php b/migrations/Version20250408140101.php new file mode 100644 index 0000000..f84d86c --- /dev/null +++ b/migrations/Version20250408140101.php @@ -0,0 +1,31 @@ +addSql('ALTER TABLE image_repository ADD user VARCHAR(255) DEFAULT NULL, ADD ssh_port VARCHAR(255) DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE image_repository DROP user, DROP ssh_port'); + } +} diff --git a/src/Controller/OgRepository/Image/BackupImageAction.php b/src/Controller/OgRepository/Image/BackupImageAction.php index 8f8662d..51e76b4 100644 --- a/src/Controller/OgRepository/Image/BackupImageAction.php +++ b/src/Controller/OgRepository/Image/BackupImageAction.php @@ -32,6 +32,7 @@ class BackupImageAction extends AbstractOgRepositoryController public function __invoke(BackupImageInput $input, ImageImageRepository $imageImageRepository): JsonResponse { $image = $imageImageRepository->getImage(); + $repository = $imageImageRepository->getRepository(); if (!$image->getName()) { throw new ValidatorException('Name is required'); @@ -41,8 +42,9 @@ class BackupImageAction extends AbstractOgRepositoryController 'json' => [ 'ID_img' => $imageImageRepository->getImageFullsum(), 'repo_ip' => $input->repoIp, + 'ssh_port' => $repository->getSshPort() ?? '22', 'remote_path' => $input->remotePath, - 'user' => 'opengnsys' + 'user' => $repository->getUser() ?? 'opengnsys', ] ]; diff --git a/src/Controller/OgRepository/Image/TransferAction.php b/src/Controller/OgRepository/Image/TransferAction.php index c0513bb..b0707d4 100644 --- a/src/Controller/OgRepository/Image/TransferAction.php +++ b/src/Controller/OgRepository/Image/TransferAction.php @@ -47,7 +47,8 @@ class TransferAction extends AbstractOgRepositoryController 'json' => [ 'image' => $image->getName().'.img', 'repo_ip' => $imageImageRepository->getRepository()->getIp(), - 'user' => 'opengnsys', + 'user' => $repository->getUser(), + 'ssh_port' => $repository->getSshPort() ] ]; diff --git a/src/Controller/OgRepository/Image/TransferGlobalAction.php b/src/Controller/OgRepository/Image/TransferGlobalAction.php index c69ff48..0e4b31f 100644 --- a/src/Controller/OgRepository/Image/TransferGlobalAction.php +++ b/src/Controller/OgRepository/Image/TransferGlobalAction.php @@ -48,7 +48,8 @@ class TransferGlobalAction extends AbstractOgRepositoryController 'json' => [ 'image' => $image->getName().'.img', 'repo_ip' => $imageImageRepository->getRepository()->getIp(), - 'user' => 'opengnsys', + 'user' => $repository->getUser(), + 'ssh_port' => $repository->getSshPort() ] ]; diff --git a/src/Dto/Input/ImageRepositoryInput.php b/src/Dto/Input/ImageRepositoryInput.php index 96e20b7..56623e1 100644 --- a/src/Dto/Input/ImageRepositoryInput.php +++ b/src/Dto/Input/ImageRepositoryInput.php @@ -27,11 +27,19 @@ final class ImageRepositoryInput #[ApiProperty(description: 'The IP of the repository', example: "")] public ?string $ip = null; - #[Groups(['repository:write'])] #[ApiProperty(description: 'The comments of the repository', example: "Repository 1 comments")] public ?string $comments = null; + #[Assert\NotBlank] + #[Groups(['repository:write'])] + #[ApiProperty(description: 'The user of the repository', example: "Repository user")] + public ?string $user = 'opengnsys'; + + #[Groups(['repository:write'])] + #[ApiProperty(description: 'The sshPort of the repository', example: "Repository ssh port")] + public ?string $sshPort = '22'; + public function __construct(?ImageRepository $repository = null) { @@ -42,6 +50,8 @@ final class ImageRepositoryInput $this->name = $repository->getName(); $this->ip = $repository->getIp(); $this->comments = $repository->getComments(); + $this->user = $repository->getUser(); + $this->sshPort = $repository->getSshPort(); } public function createOrUpdateEntity(?ImageRepository $repository = null): ImageRepository @@ -53,6 +63,8 @@ final class ImageRepositoryInput $repository->setName($this->name); $repository->setIp($this->ip); $repository->setComments($this->comments); + $repository->setUser($this->user); + $repository->setSshPort($this->sshPort); return $repository; } diff --git a/src/Dto/Output/ImageImageRepositoryOutput.php b/src/Dto/Output/ImageImageRepositoryOutput.php index 013b4f3..9d4c4a0 100644 --- a/src/Dto/Output/ImageImageRepositoryOutput.php +++ b/src/Dto/Output/ImageImageRepositoryOutput.php @@ -18,6 +18,9 @@ class ImageImageRepositoryOutput extends AbstractOutput #[Groups(['image-image-repository:read', 'image:read'])] public string $status; + #[Groups(['image-image-repository:read', 'image:read'])] + public string $name; + #[Groups(['image-image-repository:read', 'image:read'])] public ?string $imageFullsum = null; @@ -50,6 +53,7 @@ class ImageImageRepositoryOutput extends AbstractOutput $this->imageRepository = new ImageRepositoryOutput($imageImageRepository->getRepository()); } + $this->name = $imageImageRepository->getName(); $this->version = $imageImageRepository->getVersion(); $this->status = $imageImageRepository->getStatus(); $this->imageFullsum = $imageImageRepository->getImageFullsum(); diff --git a/src/Dto/Output/ImageRepositoryOutput.php b/src/Dto/Output/ImageRepositoryOutput.php index daf72e3..44445b6 100644 --- a/src/Dto/Output/ImageRepositoryOutput.php +++ b/src/Dto/Output/ImageRepositoryOutput.php @@ -18,6 +18,12 @@ class ImageRepositoryOutput extends AbstractOutput #[Groups(['repository:read'])] public ?string $comments = ''; + #[Groups(['repository:read'])] + public ?string $sshPort = ''; + + #[Groups(['repository:read'])] + public ?string $user = ''; + #[Groups(['repository:read'])] public \DateTime $createdAt; @@ -31,6 +37,8 @@ class ImageRepositoryOutput extends AbstractOutput $this->name = $imageRepository->getName(); $this->ip = $imageRepository->getIp(); $this->comments = $imageRepository->getComments(); + $this->sshPort = $imageRepository->getSshPort(); + $this->user = $imageRepository->getUser(); $this->createdAt = $imageRepository->getCreatedAt(); $this->createdBy = $imageRepository->getCreatedBy(); } diff --git a/src/Entity/ImageImageRepository.php b/src/Entity/ImageImageRepository.php index fa95665..6de9f49 100644 --- a/src/Entity/ImageImageRepository.php +++ b/src/Entity/ImageImageRepository.php @@ -35,6 +35,9 @@ class ImageImageRepository extends AbstractEntity #[ORM\Column(length: 255, nullable: true)] private ?string $description = null; + #[ORM\Column(length: 255)] + private ?string $name = null; + public function getImage(): ?Image { return $this->image; @@ -130,4 +133,16 @@ class ImageImageRepository extends AbstractEntity return $this; } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } } diff --git a/src/Entity/ImageRepository.php b/src/Entity/ImageRepository.php index 1dc49fe..7588190 100644 --- a/src/Entity/ImageRepository.php +++ b/src/Entity/ImageRepository.php @@ -10,6 +10,8 @@ use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: ImageRepositoryRepository::class)] class ImageRepository extends AbstractEntity { + const string DEFAULT_USER = 'opengnsys'; + use NameableTrait; #[ORM\Column(length: 255)] @@ -24,6 +26,12 @@ class ImageRepository extends AbstractEntity #[ORM\OneToMany(mappedBy: 'repository', targetEntity: ImageImageRepository::class)] private Collection $imageImageRepositories; + #[ORM\Column(length: 255, nullable: true)] + private ?string $user = self::DEFAULT_USER; + + #[ORM\Column(length: 255, nullable: true)] + private ?string $sshPort = null; + public function __construct() { parent::__construct(); @@ -83,4 +91,28 @@ class ImageRepository extends AbstractEntity return $this; } + + public function getUser(): ?string + { + return $this->user; + } + + public function setUser(?string $user): static + { + $this->user = $user; + + return $this; + } + + public function getSshPort(): ?string + { + return $this->sshPort; + } + + public function setSshPort(?string $sshPort): static + { + $this->sshPort = $sshPort; + + return $this; + } }