refs #875 #863 #949 #943 #969 Adds env variable ogcoreIp, changes command script to use the ogcoreIp, changes getTemplate to standardize output, adds pxe endpoint to format mac

oglivecli-no-daemon
Luis Gerardo Romero Garcia 2024-10-18 13:29:30 +00:00
parent 8264459a6b
commit d34f1dd22e
4 changed files with 62 additions and 50 deletions

3
.env
View File

@ -15,8 +15,9 @@
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
###> symfony/framework-bundle ###
APP_ENV=prod
APP_ENV=dev
APP_SECRET=d423d1302b974417d415b10bcde25767
OGCORE_API_URL="https://172.17.8.90:8443"
###< symfony/framework-bundle ###
###> doctrine/doctrine-bundle ###

View File

@ -10,6 +10,8 @@ services:
_defaults:
autowire: true # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
bind:
$ogCoreApiUrl: '%env(OGCORE_API_URL)%'
# makes classes in src/ available to be used as services
# this creates a service per class whose id is the fully-qualified class name

View File

@ -15,10 +15,9 @@ class OgLiveInstallCommand extends Command
protected static $defaultName = 'oglive:install';
private $curlRequestService;
private $httpClient;
private $params;
private $logger;
public function __construct(CurlRequestService $curlRequestService, HttpClientInterface $httpClient, ParameterBagInterface $params, LoggerInterface $logger)
public function __construct(CurlRequestService $curlRequestService, HttpClientInterface $httpClient, LoggerInterface $logger, protected readonly string $ogCoreApiUrl)
{
parent::__construct();
$this->curlRequestService = $curlRequestService;
@ -27,8 +26,7 @@ class OgLiveInstallCommand extends Command
'verify_peer' => false, // Ignorar la verificación del certificado SSL
'verify_host' => false, // Ignorar la verificación del nombre del host
]);
$this->params = $params;
$this->logger = $logger; // Añadimos el logger
$this->logger = $logger; // Añadimos el logger
}
protected function configure()
@ -94,9 +92,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
$this->logger->info('Installation completed with details', ['installResult' => $installResult]);
$this->logger->info('Webhook data to be sent: ', ['webhookData' => $webhookData]);
// Obtener la URL del webhook desde el archivo .env
$webhookUrl = "https://172.17.8.90:8443/og-lives/install/webhook";
#$webhookUrl = "https://172.17.8.90:8443/og-lives/install/webhook";
$webhookUrl = "{$this->ogCoreApiUrl}/og-lives/install/webhook";
// Log: enviando datos al webhook
$this->logger->info('Sending data to webhook', ['webhookUrl' => $webhookUrl, 'webhookData' => $webhookData]);

View File

@ -1163,51 +1163,63 @@ public function createBootFile(Request $request): JsonResponse
return new JsonResponse(['message' => 'El archivo de arranque se eliminó correctamente'], Response::HTTP_OK);
}
/**
* @Route("/ogboot/v1/pxe-templates", methods={"GET"})
* @OA\Get(
* path="/ogboot/v1/pxe-templates",
* summary="Obtener todas las plantillas PXE",
* description="Obtiene una lista de todas las plantillas de arranque PXE disponibles.",
* @OA\Response(
* response=200,
* description="Lista de plantillas de arranque PXE",
* @OA\JsonContent(
* type="object",
* @OA\Property(property="success", type="string", example="Lista de plantillas obtenida con éxito"),
* @OA\Property(
* property="message",
* type="array",
* @OA\Items(type="string", example="mi_plantilla.ipxe")
* )
* )
* ),
* @OA\Response(
* response=500,
* description="Error interno del servidor",
* @OA\JsonContent(
* type="object",
* @OA\Property(property="error", type="string", example="SERVER_ERROR"),
* @OA\Property(property="message", type="string", example="Directorio de plantillas no encontrado")
* )
* )
* )
*/
public function getAllTemplates(): JsonResponse
{
$templateDir = '/opt/ogboot/tftpboot/ipxe_scripts/templates';
/**
* @Route("/ogboot/v1/pxe-templates", methods={"GET"})
* @OA\Get(
* path="/ogboot/v1/pxe-templates",
* summary="Obtener todas las plantillas PXE",
* description="Obtiene una lista de todas las plantillas de arranque PXE disponibles.",
* @OA\Response(
* response=200,
* description="Lista de plantillas de arranque PXE",
* @OA\JsonContent(
* type="object",
* @OA\Property(
* property="templates",
* type="array",
* @OA\Items(type="string", example="mi_plantilla.ipxe")
* )
* )
* ),
* @OA\Response(
* response=500,
* description="Error interno del servidor"
* )
* )
*/
public function getAllTemplates(): JsonResponse
{
$templateDir = '/opt/ogboot/tftpboot/ipxe_scripts/templates';
// Verificar si el directorio existe
if (!is_dir($templateDir)) {
return new JsonResponse(['error' => 'Directorio de plantillas no encontrado'], Response::HTTP_INTERNAL_SERVER_ERROR);
}
// Obtener la lista de archivos en el directorio
$files = scandir($templateDir);
// Filtrar los archivos válidos (excluir directorios y archivos ocultos)
$templates = array_filter($files, function ($file) use ($templateDir) {
return !in_array($file, ['.', '..']) && !is_dir($templateDir . '/' . $file);
});
return new JsonResponse(['templates' => array_values($templates)], Response::HTTP_OK);
// Verificar si el directorio existe
if (!is_dir($templateDir)) {
return new JsonResponse(
['error' => 'SERVER_ERROR', 'message' => 'Directorio de plantillas no encontrado'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
// Obtener la lista de archivos en el directorio
$files = scandir($templateDir);
// Filtrar los archivos válidos (excluir directorios y archivos ocultos)
$templates = array_filter($files, function ($file) use ($templateDir) {
return !in_array($file, ['.', '..']) && !is_dir($templateDir . '/' . $file);
});
// Formatear la respuesta siguiendo el estándar
return new JsonResponse(
['success' => 'Lista de plantillas obtenida con éxito', 'message' => array_values($templates)],
Response::HTTP_OK
);
}
/**
* @Route("/ogboot/v1/pxe-templates/{templateName}", name="get_template", methods={"GET"})
* @OA\Get(