getIp()) { throw new ValidatorException('IP is required'); } try { $response = $this->httpClient->request('POST', 'https://' . $client->getIp() . ':8000/ogAdmClient/status', [ 'verify_peer' => false, 'verify_host' => false, 'timeout' => 10, 'headers' => [ 'Content-Type' => 'application/json', ], 'json' => [], ]); $statusCode = $response->getStatusCode(); $client->setStatus($statusCode === Response::HTTP_OK ? ClientStatus::OG_LIVE : ClientStatus::OFF); } catch (TransportExceptionInterface $e) { $client->setStatus(ClientStatus::OFF); return new JsonResponse( data: ['error' => $e->getMessage()], status: Response::HTTP_INTERNAL_SERVER_ERROR ); } $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(); } if (isset($cfg['soi']) && $cfg['soi'] !== '') { $operativeSystem = $this->entityManager->getRepository(OperativeSystem::class) ->findOneBy(['name' => $cfg['soi']]); if (!$operativeSystem) { $operativeSystem = new OperativeSystem(); $operativeSystem->setName($cfg['soi']); $this->entityManager->persist($operativeSystem); } $partitionEntity->setOperativeSystem($operativeSystem); } $partitionEntity->setClient($client); $partitionEntity->setDiskNumber($cfg['disk']); $partitionEntity->setPartitionNumber($cfg['par']); $partitionEntity->setSize($cfg['tam']); $partitionEntity->setMemoryUsage(((int) $cfg['uso']) * 100); $this->entityManager->persist($partitionEntity); } } $this->entityManager->persist($client); $this->entityManager->flush(); return new JsonResponse(status: Response::HTTP_OK); } }