From dce78eef298c28b0b80b6363aaf603b3ec4ff395 Mon Sep 17 00:00:00 2001 From: Manuel Aranda Date: Wed, 23 Oct 2024 08:03:55 +0200 Subject: [PATCH] refs #952. ogAgent. Create partition --- src/Controller/OgAgent/StatusAction.php | 21 +++++++++++++++++++ .../OgBoot/OgLive/SetDefaultAction.php | 7 +++++++ .../Webhook/InstallOgLiveResponseAction.php | 6 +++--- src/Entity/PxeTemplate.php | 7 +++++++ 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/Controller/OgAgent/StatusAction.php b/src/Controller/OgAgent/StatusAction.php index 76864f0..c042048 100644 --- a/src/Controller/OgAgent/StatusAction.php +++ b/src/Controller/OgAgent/StatusAction.php @@ -3,6 +3,7 @@ namespace App\Controller\OgAgent; use App\Entity\Client; +use App\Entity\Partition; use App\Model\OgLiveStatus; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; @@ -59,6 +60,26 @@ class StatusAction extends AbstractController ); } + $data = json_decode($response->getContent(), true); + + if (isset($data['cfg'])) { + foreach ($data['cfg'] as $cfg) { + $partitionEntity = $this->entityManager->getRepository(Partition::class) + ->findOneBy(['client' => $client, 'diskNumber' => $cfg['disk'], 'partitionNumber' => $cfg['par']]); + + if (!$partitionEntity) { + $partitionEntity = new Partition(); + } + + $partitionEntity->setClient($client); + $partitionEntity->setDiskNumber($cfg['disk']); + $partitionEntity->setPartitionNumber($cfg['par']); + $partitionEntity->setSize($cfg['tam']); + $partitionEntity->setMemoryUsage($cfg['uso']); + $this->entityManager->persist($partitionEntity); + } + } + $this->entityManager->persist($client); $this->entityManager->flush(); diff --git a/src/Controller/OgBoot/OgLive/SetDefaultAction.php b/src/Controller/OgBoot/OgLive/SetDefaultAction.php index b0d9698..3cf7184 100644 --- a/src/Controller/OgBoot/OgLive/SetDefaultAction.php +++ b/src/Controller/OgBoot/OgLive/SetDefaultAction.php @@ -38,6 +38,13 @@ class SetDefaultAction extends AbstractOgBootController $content = $this->createRequest($httpClient, 'PUT', $this->ogBootApiUrl.'/ogboot/v1/oglives/default', $params); + $oldDefaultOgLive = $this->entityManager->getRepository(OgLive::class)->findBy(['isDefault' => true]); + + foreach ($oldDefaultOgLive as $oldOgLive) { + $oldOgLive->setIsDefault(false); + $this->entityManager->persist($oldOgLive); + } + $data->setIsDefault(true); $entityManager->persist($data); $entityManager->flush(); diff --git a/src/Controller/OgBoot/OgLive/Webhook/InstallOgLiveResponseAction.php b/src/Controller/OgBoot/OgLive/Webhook/InstallOgLiveResponseAction.php index 2f4df6a..db90e58 100644 --- a/src/Controller/OgBoot/OgLive/Webhook/InstallOgLiveResponseAction.php +++ b/src/Controller/OgBoot/OgLive/Webhook/InstallOgLiveResponseAction.php @@ -82,9 +82,6 @@ class InstallOgLiveResponseAction extends AbstractController $ogLive->setStatus($status === self::OG_LIVE_INSTALL_SUCCESS ? OgLiveStatus::ACTIVE : OgLiveStatus::FAILED); $ogLive->setInstalled($status === self::OG_LIVE_INSTALL_SUCCESS); - $ogLive->setIsDefault(true); - - $this->entityManager->persist($ogLive); $oldDefaultOgLive = $this->entityManager->getRepository(OgLive::class)->findBy(['isDefault' => true]); @@ -93,6 +90,9 @@ class InstallOgLiveResponseAction extends AbstractController $this->entityManager->persist($oldOgLive); } + $ogLive->setIsDefault(true); + $this->entityManager->persist($ogLive); + $this->entityManager->flush(); } } \ No newline at end of file diff --git a/src/Entity/PxeTemplate.php b/src/Entity/PxeTemplate.php index 87b74b0..5a3efaa 100644 --- a/src/Entity/PxeTemplate.php +++ b/src/Entity/PxeTemplate.php @@ -3,6 +3,7 @@ namespace App\Entity; use App\Repository\PxeTemplateRepository; +use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; @@ -25,6 +26,12 @@ class PxeTemplate extends AbstractEntity #[ORM\OneToMany(mappedBy: 'template', targetEntity: Client::class)] private Collection $clients; + public function __construct() + { + parent::__construct(); + $this->clients = new ArrayCollection(); + } + public function getTemplateContent(): ?string { return $this->templateContent;