refs #1204 Fix missing comprobations in update subnet
testing/og-dhcp-API/pipeline/head There was a failure building this commit
Details
testing/og-dhcp-API/pipeline/head There was a failure building this commit
Details
parent
24ddbead96
commit
394a71134c
|
@ -904,14 +904,15 @@ public function addDhcpSubnet(Request $request): JsonResponse
|
|||
* )
|
||||
* )
|
||||
*/
|
||||
|
||||
public function modifyDhcpSubnet(Request $request): JsonResponse
|
||||
{
|
||||
$subnetId = (int) $request->get('subnetId');
|
||||
$operation = 'modifyDhcpSubnet';
|
||||
$component = 'ogdhcp';
|
||||
$subnetId = (int) $request->get('subnetId');
|
||||
|
||||
try {
|
||||
$input = json_decode($request->getContent(), false);
|
||||
$input = json_decode($request->getContent());
|
||||
$mask = htmlspecialchars($input->mask);
|
||||
$address = htmlspecialchars($input->address);
|
||||
|
||||
|
@ -935,7 +936,6 @@ public function modifyDhcpSubnet(Request $request): JsonResponse
|
|||
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
|
||||
return new JsonResponse(['error' => "Falta un parámetro requerido: $paramFaltante"], Response::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
$this->logger->error(json_encode([
|
||||
'severity' => 'ERROR',
|
||||
'operation' => $operation,
|
||||
|
@ -983,7 +983,7 @@ public function modifyDhcpSubnet(Request $request): JsonResponse
|
|||
$newSubnet = [
|
||||
"id" => $subnetId,
|
||||
"subnet" => $subnetName,
|
||||
"reservations" => $existingSubnet['reservations'],
|
||||
"reservations" => $existingSubnet['reservations'], // Mantener las reservas existentes
|
||||
"option-data" => [
|
||||
[
|
||||
"name" => "routers",
|
||||
|
@ -993,15 +993,38 @@ public function modifyDhcpSubnet(Request $request): JsonResponse
|
|||
]
|
||||
];
|
||||
|
||||
// Añadir next-server si está presente, o eliminarlo de las reservas si no está
|
||||
if ($nextServer) {
|
||||
$newSubnet["next-server"] = $nextServer;
|
||||
} else {
|
||||
foreach ($newSubnet['reservations'] as &$reservation) {
|
||||
unset($reservation['next-server']);
|
||||
}
|
||||
}
|
||||
|
||||
// Añadir boot-file-name si está presente, o eliminarlo de las reservas si no está
|
||||
if ($bootFileName) {
|
||||
$newSubnet["boot-file-name"] = $bootFileName;
|
||||
} else {
|
||||
foreach ($newSubnet['reservations'] as &$reservation) {
|
||||
unset($reservation['boot-file-name']);
|
||||
}
|
||||
}
|
||||
|
||||
// Actualizar las reservas con los nuevos valores de next-server y boot-file-name
|
||||
foreach ($newSubnet['reservations'] as &$reservation) {
|
||||
if ($nextServer) {
|
||||
$reservation['next-server'] = $nextServer;
|
||||
}
|
||||
if ($bootFileName) {
|
||||
$reservation['boot-file-name'] = $bootFileName;
|
||||
}
|
||||
}
|
||||
|
||||
// Reemplazar la subred en la configuración
|
||||
$response[0]['arguments']['Dhcp4']['subnet4'][$subnetIndex] = $newSubnet;
|
||||
|
||||
// Eliminar el campo 'hash' si existe
|
||||
if (isset($response[0]['arguments']['hash'])) {
|
||||
unset($response[0]['arguments']['hash']);
|
||||
}
|
||||
|
@ -1025,16 +1048,27 @@ public function modifyDhcpSubnet(Request $request): JsonResponse
|
|||
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
|
||||
return new JsonResponse(['error' => $errorText], Response::HTTP_BAD_REQUEST);
|
||||
} else {
|
||||
$responseSuccess = "Subred modificada correctamente";
|
||||
$this->logger->info(json_encode([
|
||||
'severity' => 'INFO',
|
||||
'operation' => $operation,
|
||||
'component' => $component,
|
||||
'http_code' => Response::HTTP_OK,
|
||||
'desc' => $responseSuccess,
|
||||
'params' => ['subnet_id' => $subnetId]
|
||||
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
|
||||
return new JsonResponse(['success' => $responseSuccess], Response::HTTP_OK);
|
||||
$responseWrite = $this->curlKeaService->executeCurlCommand('config-write', $configuration);
|
||||
if ($responseWrite == false || $responseWrite[0]["result"] != 0) {
|
||||
return new JsonResponse(['error' => "Error al escribir en la configuración en Kea DHCP: " . $responseWrite[0]["text"]], 400);
|
||||
} else {
|
||||
// Volvemos a consultar la configuración para devolver la subred modificada
|
||||
$updatedResponse = $this->curlKeaService->executeCurlCommand('config-get');
|
||||
$updatedSubnet = array_filter($updatedResponse[0]['arguments']['Dhcp4']['subnet4'], function ($subnet) use ($subnetId) {
|
||||
return $subnet['id'] == $subnetId;
|
||||
});
|
||||
|
||||
$responseSuccess = "Subred modificada correctamente";
|
||||
$this->logger->info(json_encode([
|
||||
'severity' => 'INFO',
|
||||
'operation' => $operation,
|
||||
'component' => $component,
|
||||
'http_code' => Response::HTTP_OK,
|
||||
'desc' => $responseSuccess,
|
||||
'params' => ['subnet_id' => $subnetId]
|
||||
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
|
||||
return new JsonResponse(['success' => $responseSuccess], Response::HTTP_OK);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$errorText = "Error configuración de Kea inválida: " . $responseTest[0]["text"];
|
||||
|
@ -1062,7 +1096,6 @@ public function modifyDhcpSubnet(Request $request): JsonResponse
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @OA\Get(
|
||||
|
|
Loading…
Reference in New Issue