diff --git a/src/Controller/OgAgent/CheckPartitionSizesAction.php b/src/Controller/OgAgent/CheckPartitionSizesAction.php new file mode 100644 index 0000000..2131efd --- /dev/null +++ b/src/Controller/OgAgent/CheckPartitionSizesAction.php @@ -0,0 +1,118 @@ +partitions; + + if (empty($partitions)) { + throw new BadRequestHttpException('Partitions is required'); + } + + $this->logger->info('Input received', [ + 'partitions_count' => count($partitions), + 'input_type' => gettype($input), + 'partitions_type' => gettype($partitions) + ]); + + $disks = []; + foreach ($partitions as $index => $partition) { + $diskNumber = $partition->diskNumber; + + $partitionEntity = $this->entityManager->getRepository(Partition::class)->findOneBy([ + 'client' => $client, + 'partitionNumber' => $partition->partitionNumber, + 'diskNumber' => $partition->diskNumber, + ]); + + if ($partitionEntity) { + $partitionEntity->setClient($client); + $this->entityManager->persist($partitionEntity); + } + + if (!isset($disks[$diskNumber])) { + $disks[$diskNumber] = [ + 'diskData' => [], + 'partitionData' => [] + ]; + } + + $disks[$diskNumber]['diskData'] = [ + 'dis' => (string) $diskNumber, + 'tch' => (string) ($partition->size * 1024), + ]; + + $disks[$diskNumber]['partitionData'][] = [ + 'par' => (string) $partition->partitionNumber, + 'cpt' => $partition->partitionCode, + 'sfi' => $partition->filesystem, + 'tam' => (string) (integer) ($partition->size * 1024), + 'ope' => $partition->format ? "1" : "0", + ]; + } + + foreach ($disks as $diskNumber => $diskInfo) { + $data = []; + if (!empty($diskInfo['diskData'])) { + $data[] = $diskInfo['diskData']; + } + $data = array_merge($data, $diskInfo['partitionData']); + + $result = [ + "nfn" => "Configurar", + "dsk" => (string) $diskNumber, + "cfg" => $data, + "check-sizes" => "true", + "ids" => "0" + ]; + + $response = $this->createRequest( + method: 'POST', + url: 'https://'.$client->getIp().':8000/opengnsys/Configurar', + params: [ + 'json' => $result, + ], + token: $client->getToken(), + ); + + } + + return new JsonResponse(data: $response, status: Response::HTTP_OK); + } +} diff --git a/src/Dto/Input/CheckPartitionSizesInput.php b/src/Dto/Input/CheckPartitionSizesInput.php new file mode 100644 index 0000000..f2fd184 --- /dev/null +++ b/src/Dto/Input/CheckPartitionSizesInput.php @@ -0,0 +1,17 @@ +