refs #1030 Adds to reservations bootfilename and next server when is modified the subnet to fix priority problem that allows to use global configuration when bootfilename and next server is defined in subnet
testing/og-dhcp-API/pipeline/head There was a failure building this commit Details

nginx_conf
Luis Gerardo Romero Garcia 2024-10-23 13:38:37 +02:00
parent aaacfe1286
commit 0b6e6f7893
1 changed files with 54 additions and 4 deletions

View File

@ -707,11 +707,14 @@ public function modifyDhcpSubnet(Request $request): JsonResponse
// Calcular el gateway añadiendo .1 al final de la subred
$gateway = preg_replace('/\d+$/', '1', $address);
// Obtener la subred actual para mantener las reservas existentes
$existingSubnet = $response[0]['arguments']['Dhcp4']['subnet4'][$subnetIndex];
// Modificar la subred existente
$newSubnet = [
"id" => $subnetId,
"subnet" => $subnetName,
"reservations" => [],
"reservations" => $existingSubnet['reservations'], // Mantener las reservas existentes
"option-data" => [
[
"name" => "routers",
@ -721,16 +724,37 @@ public function modifyDhcpSubnet(Request $request): JsonResponse
]
];
// Añadir next-server si está presente
// Añadir next-server si está presente, o eliminarlo de las reservas si no está
if ($nextServer) {
$newSubnet["next-server"] = $nextServer;
} else {
// Eliminar next-server de las reservas si no está presente
foreach ($newSubnet['reservations'] as &$reservation) {
unset($reservation['next-server']);
}
}
// Añadir boot-file-name si está presente
// Añadir boot-file-name si está presente, o eliminarlo de las reservas si no está
if ($bootFileName) {
$newSubnet["boot-file-name"] = $bootFileName;
} else {
// Eliminar boot-file-name de las reservas si no está presente
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; // Actualizar el next-server del host
}
if ($bootFileName) {
$reservation['boot-file-name'] = $bootFileName; // Actualizar el boot-file-name del host
}
}
// Reemplazar la subred en la configuración
$response[0]['arguments']['Dhcp4']['subnet4'][$subnetIndex] = $newSubnet;
// Eliminar el campo 'hash' si existe
@ -770,6 +794,8 @@ public function modifyDhcpSubnet(Request $request): JsonResponse
return new JsonResponse(['error' => "Error al obtener la configuración de Kea DHCP: " . $e->getMessage()], 500);
}
}
/**
* @OA\Get(
@ -978,6 +1004,15 @@ public function addDhcpHost(Request $request, $subnetId): JsonResponse
foreach ($response[0]['arguments']['Dhcp4']['subnet4'] as &$subnet) {
if ($subnet['id'] == $subnetId) {
$subnetFound = true;
// Añadir boot-file-name y next-server de la subred si están definidos
if (isset($subnet['boot-file-name'])) {
$newHost['boot-file-name'] = $subnet['boot-file-name'];
}
if (isset($subnet['next-server'])) {
$newHost['next-server'] = $subnet['next-server'];
}
if (!isset($subnet['reservations'])) {
$subnet['reservations'] = [];
}
@ -1049,6 +1084,7 @@ public function addDhcpHost(Request $request, $subnetId): JsonResponse
}
/**
* @OA\Delete(
* path="/ogdhcp/v1/subnets/{subnetId}/hosts",
@ -1309,9 +1345,24 @@ public function updateDhcpHost(Request $request, $subnetId): JsonResponse
foreach ($subnet['reservations'] as &$reservation) {
if ($reservation['hw-address'] == $oldMacAddress) {
$hostFound = true;
// Conservar boot-file-name y next-server si existen en el host original
$bootFileName = $reservation['boot-file-name'] ?? $subnet['boot-file-name'] ?? null;
$nextServer = $reservation['next-server'] ?? $subnet['next-server'] ?? null;
// Actualizar los valores del host
$reservation['hw-address'] = $macAddress;
$reservation['ip-address'] = $address;
$reservation['hostname'] = $host;
// Restaurar boot-file-name y next-server si estaban definidos
if ($bootFileName !== null) {
$reservation['boot-file-name'] = $bootFileName;
}
if ($nextServer !== null) {
$reservation['next-server'] = $nextServer;
}
$updatedHost = $reservation;
break;
}
@ -1360,7 +1411,6 @@ public function updateDhcpHost(Request $request, $subnetId): JsonResponse
}
}
/**
* @OA\Get(
* path="/ogdhcp/v1/backup",