refs #631 - Modify paths in scripts and API

pull/1/head
Gerardo GIl Elizeire 2024-11-07 16:37:57 +01:00
parent fb0dff9598
commit f6064b962d
23 changed files with 198 additions and 164 deletions

View File

@ -8,7 +8,7 @@ Este repositorio GIT contiene la estructura de datos del repositorio de imágene
- **api** ------ API de ogRepository.
- **bin** ------ Scripts en Python 3 y binarios de gestión de ogRepository.
- **etc** ------ Ficheros y plantillas de configuración de ogRepository.
- **packets** - Paquetes cuya intalación es requerida.
- **packets** - Paquetes cuya instalación es requerida.
---
@ -16,7 +16,7 @@ Este repositorio GIT contiene la estructura de datos del repositorio de imágene
Paquetes APT requeridos:
- **uftp** (se puede instalar con "sudo DEBIAN_FRONTEND=noninteractive apt install uftp -y", para que no pida la ruta predeterminada)
- **udpcast** (se puede instalar con "sudo apt install ./udpcast_20230924_amd64.deb", apuntando al paquete, que debe descargarse previamente)
- **udpcast** (se puede instalar con "sudo apt install ./udpcast_20230924_amd64.deb", apuntando al paquete)
- **ctorrent** (se puede instalar con "sudo apt install ctorrent")
- **bittorrent** (se puede instalar con "sudo apt install bittorrent", pero previamente hay que añadir un repositorio de Debian)
- **bittornado** (se puede instalar con "sudo apt install bittornado", pero previamente hay que añadir un repositorio de Debian)
@ -28,14 +28,14 @@ Librerías Python requeridas:
- **flasgger** (se puede instalar con "sudo apt install python3-flasgger")
Para que todos los endpoints y scripts funcionen con la configuración actual deben existir los siguientes directorios:
- **/opt/opengnsys/images/**
- **/opt/opengnsys/images_trash/** (debe estar en la misma unidad que el anterior, o tardarán mucho las eliminaciones y restauraciones)
- **/opt/opengnsys/bin/** (aquí deben estar todos los scripts de Python, y el binario "udp-sender")
- **/opt/opengnsys/etc/** (aquí se guardan los archivos "repoinfo.json" y "trashinfo.json")
- **/opt/opengnsys/log/** (aquí se guardan los logs)
- **/opt/opengnsys/ogrepository/images/**
- **/opt/opengnsys/ogrepository/images_trash/** (debe estar en la misma partición que el anterior, o tardarán mucho las eliminaciones y restauraciones)
- **/opt/opengnsys/ogrepository/bin/** (aquí deben estar todos los scripts de Python, y el binario "udp-sender")
- **/opt/opengnsys/ogrepository/etc/** (aquí se guardan los archivos "repoinfo.json" y "trashinfo.json")
- **/opt/opengnsys/ogrepository/log/** (aquí se guardan los logs)
Y también debe existir el siguiente archivo:
- **/opt/opengnsys/etc/ogAdmRepo.cfg** (de aquí pilla la IP de ogRepository)
- **/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg** (de aquí pilla la IP de ogRepository)
---
@ -122,7 +122,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/stat
---
### Obtener Información de todas las Imágenes
Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/etc/trashinfo.json**" (que corresponde a las imágenes que fueron eliminadas, que estarán en la papelera).
Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (que corresponde a las imágenes que fueron eliminadas, que estarán en la papelera).
Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint.
**NOTA**: El script requiere que se le pase "all" como primer parámetro (que correspondería al nombre de la imagen) y "none" como segundo parámetro (que corresponderia al nombre del subdirectorio correspondiente a la OU). Esta transformación de parámetros se realiza en la API.
@ -142,7 +142,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
```json
{
"REPOSITORY": {
"directory": "/opt/opengnsys/images",
"directory": "/opt/opengnsys/ogrepository/images",
"images": [
{
"name": "Ubuntu24",
@ -191,7 +191,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
}
},
"TRASH": {
"directory": "/opt/opengnsys/images_trash",
"directory": "/opt/opengnsys/ogrepository/images_trash",
"images": [],
"ous": [
{
@ -228,7 +228,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
---
### Obtener Información de una Imagen concreta
Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/etc/trashinfo.json**" (en este último caso, si la imagen está en la papelera).
Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (en este último caso, si la imagen está en la papelera).
Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint.
**NOTA**: El script requiere que se le pase el nombre de la imagen (con extensión) como primer parámetro, y el subdirectorio correspondiente a la OU (o "none" si no es el caso) como segundo parámetro. Estos datos se obtienen en la API, a partir del ID de la imagen (que corresponde al contenido del archivo "full.sum"), y alli se realiza la transformación de parámetros.
@ -248,7 +248,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
- **Contenido:** Información de la imagen en formato JSON.
```json
{
"directory": "/opt/opengnsys/images",
"directory": "/opt/opengnsys/ogrepository/images",
"images": [
{
"name": "Windows10",
@ -279,7 +279,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
---
### Actualizar Información del Repositorio
Se actualizará la información de las imágenes almacenadas en el repositorio, reflejándola en el archivo "**/opt/opengnsys/etc/repoinfo.json**".
Se actualizará la información de las imágenes almacenadas en el repositorio, reflejándola en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**".
Se puede hacer con el script "**updateRepoInfo.py**", que debe ser llamado por el endpoint (y que es similar al script bash original "**checkrepo**").
Este endpoint es llamado por el script "**deleteImage.py**" (para actualizar la información cada vez que se elimine una imagen), y creemos que también debe ser llamado por ogCore u ogLive cada vez que se haya creado una imagen.
@ -423,7 +423,7 @@ Se puede hacer con el script "**exportImage.py**", que debe ser llamado por el e
**Cuerpo de la Solicitud (JSON):**
- **ID_img**: Identificador de la imagen (correspondiente al contenido del archivo "full.sum" asociado).
- **repo_ip**: Dirección IP del repositorio remoto (al que se exportrará la imagen).
- **user**: Usuario con el que acceder al repositorio remoto.
- **user**: Usuario con el que acceder al repositorio remoto.
**Ejemplo de Solicitud:**
@ -448,7 +448,7 @@ Se puede hacer con el script "**createTorrentSum.py**", que debe ser llamado por
**Cuerpo de la Solicitud (JSON):**
- **image**: Nombre de la imagen (con extensión).
- **ou_subdir**: Subdirectorio correspondiente a la OU (o "none" si no es el caso).
- **ou_subdir**: Subdirectorio correspondiente a la OU (o "none" si no es el caso).
**Ejemplo de Solicitud:**

View File

@ -82,7 +82,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/stat
---
### Obtener Información de todas las Imágenes
Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/etc/trashinfo.json**" (que corresponde a las imágenes que fueron eliminadas, que estarán en la papelera).
Se devolverá la informacion contenida en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" (que corresponde a todas las imágenes almacenadas en el repositorio), y en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (que corresponde a las imágenes que fueron eliminadas, que estarán en la papelera).
Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint.
**NOTA**: El script requiere que se le pase "all" como primer parámetro (que correspondería al nombre de la imagen) y "none" como segundo parámetro (que corresponderia al nombre del subdirectorio correspondiente a la OU). Esta transformación de parámetros se realiza en la API.
@ -102,7 +102,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
```json
{
"REPOSITORY": {
"directory": "/opt/opengnsys/images",
"directory": "/opt/opengnsys/ogrepository/images",
"images": [
{
"name": "Ubuntu24",
@ -151,7 +151,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
}
},
"TRASH": {
"directory": "/opt/opengnsys/images_trash",
"directory": "/opt/opengnsys/ogrepository/images_trash",
"images": [],
"ous": [
{
@ -188,7 +188,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
---
### Obtener Información de una Imagen concreta
Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/etc/trashinfo.json**" (en este último caso, si la imagen está en la papelera).
Se devolverá la informacion de la imagen especificada, que puede estar en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**" o en el archivo "**/opt/opengnsys/ogrepository/etc/trashinfo.json**" (en este último caso, si la imagen está en la papelera).
Se puede utilizar el script "**getRepoInfo.py**, que debe ser llamado por el endpoint.
**NOTA**: El script requiere que se le pase el nombre de la imagen (con extensión) como primer parámetro, y el subdirectorio correspondiente a la OU (o "none" si no es el caso) como segundo parámetro. Estos datos se obtienen en la API, a partir del ID de la imagen (que corresponde al contenido del archivo "full.sum"), y alli se realiza la transformación de parámetros.
@ -208,7 +208,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
- **Contenido:** Información de la imagen en formato JSON.
```json
{
"directory": "/opt/opengnsys/images",
"directory": "/opt/opengnsys/ogrepository/images",
"images": [
{
"name": "Windows10",
@ -239,7 +239,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
---
### Actualizar Información del Repositorio
Se actualizará la información de las imágenes almacenadas en el repositorio, reflejándola en el archivo "**/opt/opengnsys/etc/repoinfo.json**".
Se actualizará la información de las imágenes almacenadas en el repositorio, reflejándola en el archivo "**/opt/opengnsys/ogrepository/etc/repoinfo.json**".
Se puede hacer con el script "**updateRepoInfo.py**", que debe ser llamado por el endpoint (y que es similar al script bash original "**checkrepo**").
Este endpoint es llamado por el script "**deleteImage.py**" (para actualizar la información cada vez que se elimine una imagen), y creemos que también debe ser llamado por ogCore u ogLive cada vez que se haya creado una imagen.
@ -383,7 +383,7 @@ Se puede hacer con el script "**exportImage.py**", que debe ser llamado por el e
**Cuerpo de la Solicitud (JSON):**
- **ID_img**: Identificador de la imagen (correspondiente al contenido del archivo "full.sum" asociado).
- **repo_ip**: Dirección IP del repositorio remoto (al que se exportrará la imagen).
- **user**: Usuario con el que acceder al repositorio remoto.
- **user**: Usuario con el que acceder al repositorio remoto.
**Ejemplo de Solicitud:**
@ -408,7 +408,7 @@ Se puede hacer con el script "**createTorrentSum.py**", que debe ser llamado por
**Cuerpo de la Solicitud (JSON):**
- **image**: Nombre de la imagen (con extensión).
- **ou_subdir**: Subdirectorio correspondiente a la OU (o "none" si no es el caso).
- **ou_subdir**: Subdirectorio correspondiente a la OU (o "none" si no es el caso).
**Ejemplo de Solicitud:**

View File

@ -27,6 +27,7 @@ import paramiko
import logging
import threading
import requests
import random
# Imports para Swagger:
from flasgger import Swagger
import yaml
@ -36,10 +37,12 @@ import yaml
# VARIABLES
# --------------------------------------------------------------------------------------------
repo_path = '/opt/opengnsys/images/'
script_path = '/opt/opengnsys/bin'
repo_file = '/opt/opengnsys/etc/repoinfo.json'
trash_file = '/opt/opengnsys/etc/trashinfo.json'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
script_path = '/opt/opengnsys/ogrepository/bin'
repo_file = '/opt/opengnsys/ogrepository/etc/repoinfo.json'
trash_file = '/opt/opengnsys/ogrepository/etc/trashinfo.json'
ogcore_ip = '192.168.56.101' # En la versión final, se tendrá que pillar de una variable de entorno
"""
repo_path = '/home/user/images/'
@ -147,7 +150,7 @@ def search_process(process, string_to_search):
# ---------------------------------------------------------
def check_lock_local(image_file_path):
def check_lock_local(image_file_path, job_id):
""" Cada minuto comprueba si existe un archivo ".lock" asociado a la imagen que recibe como parámetro
(lo que significará que hay una tarea en curso), en el repositorio local.
Cuando no encuentre el archivo ".lock" lo comunicará a ogCore, llamando a un endpoint,
@ -158,9 +161,17 @@ def check_lock_local(image_file_path):
# Creamos un bucle infinito:
while True:
# Si ya no existe el archivo ".lock", imprimimos un mensaje en la API, y salimos del bucle:
# Si ya no existe el archivo ".lock", imprimimos un mensaje en la API, respondemos a ogCore y salimos del bucle:
if not os.path.exists(f"{image_file_path}.lock"):
app.logger.info("Task finalized (no .lock file)") # De momento solamente imprimimos un mensaje en la API (pero debe llamar a un endpoint)
app.logger.info("Task finalized (no .lock file)")
app.logger.info(f"Job_ID: {job_id}")
# Almacenamos en un diccionario los datos a enviar a ogCore:
data = {
'job_id': job_id
}
# Llamamos al endpoint de ogCore, enviando los datos (de momento comento la llamada, porque la función llama a un endpoint inexistente):
#recall_ogcore(data)
break
# Si aun existe el archivo ".lock", imprimimos un mensaje en la API:
else:
@ -172,7 +183,7 @@ def check_lock_local(image_file_path):
# ---------------------------------------------------------
def check_lock_remote(image_file_path, remote_host, remote_user):
def check_lock_remote(image_file_path, remote_host, remote_user, job_id):
""" Cada minuto comprueba si existe un archivo ".lock" asociado a la imagen que recibe como parámetro
(lo que significará que hay una tarea en curso), en un repositorio remoto (al que conecta por SSH/SFTP).
Cuando no encuentre el archivo ".lock" lo comunicará a ogCore, llamando a un endpoint,
@ -199,8 +210,16 @@ def check_lock_remote(image_file_path, remote_host, remote_user):
sftp_client.stat(f"{image_file_path}.lock")
app.logger.info("Task in process (.lock file exists)")
except IOError:
# Si ya no existe el archivo ".lock", imprimimos un mensaje en la API, y salimos del bucle:
app.logger.info("Task finalized (no .lock file)") # De momento solamente imprimimos un mensaje en la API (pero debe llamar a un endpoint)
# Si ya no existe el archivo ".lock", imprimimos un mensaje en la API, respondemos a ogCore y salimos del bucle:
app.logger.info("Task finalized (no .lock file)")
app.logger.info(f"Job_ID: {job_id}")
# Almacenamos en un diccionario los datos a enviar a ogCore:
data = {
'job_id': job_id
}
# Llamamos al endpoint de ogCore, enviando los datos (de momento comento la llamada, porque la función llama a un endpoint inexistente):
#recall_ogcore(data)
break
# Esperamos 1 minuto para volver a realizar la comprobación:
sleep(60)
@ -213,7 +232,7 @@ def check_lock_remote(image_file_path, remote_host, remote_user):
# ---------------------------------------------------------
def check_aux_files(image_file_path):
def check_aux_files(image_file_path, job_id):
""" Cada 10 segundos comprueba si se han creado todos los archivos auxiliares de la imagen que recibe como parámetro,
en cuyo caso lo comunicará a ogCore, llamando a un endpoint, y dejará de realizar la comprobación.
También obtiene el valor del archivo ".full.sum" (que corresonde al ID), y se lo comunica a ogCore.
@ -223,17 +242,18 @@ def check_aux_files(image_file_path):
# Si faltan archivos auxiliares por crear, imprimimos un mensaje en la API:
if not os.path.exists(f"{image_file_path}.size") or not os.path.exists(f"{image_file_path}.sum") or not os.path.exists(f"{image_file_path}.full.sum") or not os.path.exists(f"{image_file_path}.torrent") or not os.path.exists(f"{image_file_path}.info.checked"):
app.logger.info("Task in process (auxiliar files remaining)")
# Si ya se han creado todos los archivos auxiliares, imprimimos un mensaje en la API, y salimos del bucle:
# Si ya se han creado todos los archivos auxiliares, imprimimos un mensaje en la API, respondemos a ogCore y salimos del bucle:
else:
app.logger.info("Task finalized (all auxilar files created)") # De momento solamente imprimimos un mensaje en la API (pero debe llamar a un endpoint)
app.logger.info("Task finalized (all auxilar files created)")
# Obtenemos el valor del archivo "full.sum", que corresponde al ID, y lo imprimimos:
with open(f"{image_file_path}.full.sum", 'r') as file:
image_id = file.read().strip('\n')
app.logger.info(f"Job_ID: {job_id}")
app.logger.info(f"Image_ID: {image_id}")
# Almacenamos en un diccionario los datos a enviar a ogCore:
data = {
'job_id': 222, # Este no es un dato real (deberá pasarmelo ogCore previamente)
'job_id': job_id,
'image_id': image_id
}
# Llamamos al endpoint de ogCore, enviando los datos (de momento comento la llamada, porque la función llama a un endpoint inexistente):
@ -252,7 +272,7 @@ def recall_ogcore(data):
que estaba corriendo en un proceso independiente (no controlado por los endpoints).
"""
# Almacenamos la URL del endpoint de ogCore:
endpoint_url = 'http://192.168.56.101:8006//ogcore/v1/test'
endpoint_url = f"http://{ogcore_ip}:8006//ogcore/v1/test"
# Almacenamos los headers, y convertiomos "data" a JSON:
headers = {'content-type': 'application/json'}
@ -635,6 +655,7 @@ def import_image():
ou_subdir = json_data.get("ou_subdir")
remote_ip = json_data.get("repo_ip")
remote_user = json_data.get("user")
ogcore_ip = json_data.get("ogcore_ip")
# Evaluamos los parámetros obtenidos, para construir la ruta de la imagen:
if ou_subdir == "none":
@ -649,16 +670,20 @@ def import_image():
# Ejecutamos el script "importImage.py" (con los parámetros almacenados), y almacenamos el resultado (pero sin esperar a que termine el proceso):
result = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='UTF8')
# Generamos el ID para identificar el trabajo asíncrono:
job_id = '{}-{}'.format ('ImportImage', ''.join(random.choice('0123456789abcdef') for _ in range(8)))
# Evaluamos el resultado de la ejecución, y devolvemos una respuesta:
if result.returncode is None:
# Si el resultado es correcto, llamamos a la función "check_lock_local" en un hilo paralelo
# (para que compruebe si la imagen se ha acabado de importar exitosamente):
threading.Thread(target=check_lock_local, args=(image_file_path,)).start()
threading.Thread(target=check_lock_local, args=(image_file_path, job_id,)).start()
# Informamos que la imagen se está importando, y salimos del endpoint:
return jsonify({
"success": True,
"output": "Importing image..."
"output": "Importing image...",
"job_id": job_id
}), 200
else:
return jsonify({
@ -709,6 +734,7 @@ def export_image():
image_id = json_data.get("ID_img")
remote_ip = json_data.get("repo_ip")
remote_user = json_data.get("user")
ogcore_ip = json_data.get("ogcore_ip")
# Obtenemos el nombre y la extensión de la imagen (y el subdirectorio de OU, si fuera el caso):
param_dict = get_image_params(image_id, "repo")
@ -732,16 +758,20 @@ def export_image():
# Ejecutamos el script "exportImage.py" (con los parámetros almacenados), y almacenamos el resultado (pero sin esperar a que termine el proceso):
result = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='UTF8')
# Generamos el ID para identificar el trabajo asíncrono:
job_id = '{}-{}'.format ('ExportImage', ''.join(random.choice('0123456789abcdef') for _ in range(8)))
# Evaluamos el resultado de la ejecución, y devolvemos una respuesta:
if result.returncode is None:
# Si el resultado es correcto, llamamos a la función "check_lock_remote" en un hilo paralelo
# (para que compruebe si la imagen se ha acabado de exportar exitosamente):
threading.Thread(target=check_lock_remote, args=(f"{repo_path}{image_file_path}", remote_ip, remote_user,)).start()
threading.Thread(target=check_lock_remote, args=(f"{repo_path}{image_file_path}", remote_ip, remote_user, job_id,)).start()
# Informamos que la imagen se está exportando, y salimos del endpoint:
return jsonify({
"success": True,
"output": "Exporting image..."
"output": "Exporting image...",
"job_id": job_id
}), 200
else:
return jsonify({
@ -789,6 +819,7 @@ def create_torrent_sum():
json_data = json.loads(request.data)
image_name = json_data.get("image")
ou_subdir = json_data.get("ou_subdir")
ogcore_ip = json_data.get("ogcore_ip")
# Evaluamos los parámetros obtenidos, para construir la ruta de la imagen (relativa a "repo_path"):
if ou_subdir == "none":
@ -803,16 +834,20 @@ def create_torrent_sum():
# Ejecutamos el script "createTorrentSum.py" (con los parámetros almacenados), y almacenamos el resultado (pero sin esperar a que termine el proceso):
result = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='UTF8')
# Generamos el ID para identificar el trabajo asíncrono:
job_id = '{}-{}'.format ('CreateAuxiliarFiles', ''.join(random.choice('0123456789abcdef') for _ in range(8)))
# Evaluamos el resultado de la ejecución, y devolvemos una respuesta:
if result.returncode is None:
# Si el resultado es correcto, llamamos a la función "check_aux_files" en un hilo paralelo
# (para que compruebe si se han creado todos los archivos auxiliares exitosamente):
threading.Thread(target=check_aux_files, args=(f"{repo_path}{image_file_path}",)).start()
threading.Thread(target=check_aux_files, args=(f"{repo_path}{image_file_path}", job_id,)).start()
# Informamos que los archivos auxiliares se están creando, y salimos del endpoint:
return jsonify({
"success": True,
"output": "Creating auxiliar files..."
"output": "Creating auxiliar files...",
"job_id": job_id
}), 200
else:
return jsonify({

View File

@ -14,7 +14,7 @@ info:
Paquetes APT requeridos:
- **uftp** (se puede instalar con "sudo DEBIAN_FRONTEND=noninteractive apt install uftp -y", para que no pida la ruta predeterminada)
- **udpcast** (se puede instalar con "sudo apt install ./udpcast_20230924_amd64.deb", apuntando al paquete, que debe descargarse previamente)
- **udpcast** (se puede instalar con "sudo apt install ./udpcast_20230924_amd64.deb", apuntando al paquete)
- **ctorrent** (se puede instalar con "sudo apt install ctorrent")
- **bittorrent** (se puede instalar con "sudo apt install bittorrent", pero previamente hay que añadir un repositorio de Debian)
- **bittornado** (se puede instalar con "sudo apt install bittornado", pero previamente hay que añadir un repositorio de Debian)
@ -26,14 +26,14 @@ info:
- **flasgger** (se puede instalar con "sudo apt install python3-flasgger")
Para que todos los endpoints de la API funcionen con la configuración actual deben existir los siguientes directorios:
- **/opt/opengnsys/images/**
- **/opt/opengnsys/images_trash/** (debe estar en la misma unidad que el anterior, o tardarán mucho las eliminaciones y restauraciones)
- **/opt/opengnsys/bin/** (aquí deben estar todos los scripts de Python, y el binario "udp-sender")
- **/opt/opengnsys/etc/** (aquí se guardan los archivos "repoinfo.json" y "trashinfo.json")
- **/opt/opengnsys/log/** (aquí se guardan los logs)
- **/opt/opengnsys/ogrepository/images/**
- **/opt/opengnsys/ogrepository/images_trash/** (debe estar en la misma partición que el anterior, o tardarán mucho las eliminaciones y restauraciones)
- **/opt/opengnsys/ogrepository/bin/** (aquí deben estar todos los scripts de Python, y el binario "udp-sender")
- **/opt/opengnsys/ogrepository/etc/** (aquí se guardan los archivos "repoinfo.json" y "trashinfo.json")
- **/opt/opengnsys/ogrepository/log/** (aquí se guardan los logs)
Y también debe existir el siguiente archivo:
- **/opt/opengnsys/etc/ogAdmRepo.cfg** (de aquí pilla la IP de ogRepository)
- **/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg** (de aquí pilla la IP de ogRepository)
---
@ -238,7 +238,7 @@ paths:
properties:
directory:
type: string
example: "/opt/opengnsys/images"
example: "/opt/opengnsys/ogrepository/images"
images:
type: array
items:
@ -322,7 +322,7 @@ paths:
properties:
directory:
type: string
example: "/opt/opengnsys/images_trash"
example: "/opt/opengnsys/ogrepository/images_trash"
images:
type: array
items:
@ -424,7 +424,7 @@ paths:
properties:
directory:
type: string
example: "/opt/opengnsys/images"
example: "/opt/opengnsys/ogrepository/images"
images:
type: array
items:
@ -1528,7 +1528,7 @@ paths:
properties:
ID_img:
type: string
example: "image_id"
example: "22735b9070e4a8043371b8c6ae52b90d"
repo_ip:
type: string
description: "Dirección IP del repositorio remoto"
@ -1658,7 +1658,6 @@ paths:
example: "Windows10.img"
ou_subdir:
type: string
description: "Subdirectorio correspondiente a la OU (o 'none' si no es el caso)"
example: "none"
responses:
"200":

View File

@ -9,10 +9,10 @@ Este script comprueba la integridad de la imagen que recibe como parámetro, vol
------------
sys.argv[1] - Nombre completo de la imagen a chequear (con o sin ruta), pero incluyendo el subdirectorio correspondiente a la OU, si es el caso.
- Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img
- Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/images/ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
Sintaxis
----------
@ -21,10 +21,10 @@ sys.argv[1] - Nombre completo de la imagen a chequear (con o sin ruta), pero inc
Ejemplos
---------
./checkImage.py image1.img
./checkImage.py /opt/opengnsys/images/image1.img
./checkImage.py /opt/opengnsys/ogrepository/images/image1.img
./checkImage.py ou_subdir/image1.img
./checkImage.py /ou_subdir/image1.img
./checkImage.py /opt/opengnsys/images/ou_subdir/image1.img
./checkImage.py /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
"""
# --------------------------------------------------------------------------------------------
@ -41,7 +41,7 @@ import hashlib
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
# --------------------------------------------------------------------------------------------
@ -55,10 +55,10 @@ def show_help():
help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img
Ejemplo2: {script_name} /opt/opengnsys/images/image1.img
Ejemplo2: {script_name} /opt/opengnsys/ogrepository/images/image1.img
Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {script_name} /ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/images/ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
"""
print(help_text)

View File

@ -12,10 +12,10 @@ Debería ser llamado por ogCore u ogLive cada vez que se cree una imagen.
------------
sys.argv[1] - Nombre completo de la imagen (con o sin ruta), pero incluyendo el subdirectorio correspondiente a la OU, si es el caso.
- Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img
- Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/images/ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
Sintaxis
----------
@ -24,10 +24,10 @@ sys.argv[1] - Nombre completo de la imagen (con o sin ruta), pero incluyendo el
Ejemplos
---------
./createTorrentSum.py image1.img
./createTorrentSum.py /opt/opengnsys/images/image1.img
./createTorrentSum.py /opt/opengnsys/ogrepository/images/image1.img
./createTorrentSum.py ou_subdir/image1.img
./createTorrentSum.py /ou_subdir/image1.img
./createTorrentSum.py /opt/opengnsys/images/ou_subdir/image1.img
./createTorrentSum.py /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
"""
# --------------------------------------------------------------------------------------------
@ -45,9 +45,9 @@ import hashlib
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/'
config_file = '/opt/opengnsys/etc/ogAdmRepo.cfg'
update_repo_script = '/opt/opengnsys/bin/updateRepoInfo.py'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
config_file = '/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg'
update_repo_script = '/opt/opengnsys/ogrepository/bin/updateRepoInfo.py'
@ -62,10 +62,10 @@ def show_help():
help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img
Ejemplo2: {script_name} /opt/opengnsys/images/image1.img
Ejemplo2: {script_name} /opt/opengnsys/ogrepository/images/image1.img
Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {script_name} /ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/images/ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
"""
print(help_text)

View File

@ -11,10 +11,10 @@ Llama al script "updateRepoInfo.py", para actualizar la información del reposit
------------
sys.argv[1] - Nombre completo de la imagen a eliminar (con o sin ruta), pero incluyendo el subdirectorio correspondiente a la OU, si es el caso.
- Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img
- Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/images/ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
sys.argv[2] - Parámetro opcional para especificar que la eliminación sea permanente (sin papelera).
- Ejemplo: -p
@ -26,10 +26,10 @@ sys.argv[2] - Parámetro opcional para especificar que la eliminación sea perma
Ejemplos
---------
./deleteImage.py image1.img -p
./deleteImage.py /opt/opengnsys/images/image1.img -p
./deleteImage.py /opt/opengnsys/ogrepository/images/image1.img -p
./deleteImage.py ou_subdir/image1.img -p
./deleteImage.py /ou_subdir/image1.img
./deleteImage.py /opt/opengnsys/images/ou_subdir/image1.img
./deleteImage.py /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
"""
# --------------------------------------------------------------------------------------------
@ -49,9 +49,9 @@ import subprocess
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/'
trash_path = '/opt/opengnsys/images_trash/'
update_repo_script = '/opt/opengnsys/bin/updateRepoInfo.py'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
trash_path = '/opt/opengnsys/ogrepository/images_trash/'
update_repo_script = '/opt/opengnsys/ogrepository/bin/updateRepoInfo.py'
# --------------------------------------------------------------------------------------------
@ -66,10 +66,10 @@ def show_help():
help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name [-p]
Ejemplo1: {script_name} image1.img -p
Ejemplo2: {script_name} /opt/opengnsys/images/image1.img -p
Ejemplo2: {script_name} /opt/opengnsys/ogrepository/images/image1.img -p
Ejemplo3: {script_name} ou_subdir/image1.img -p
Ejemplo4: {script_name} /ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/images/ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
"""
print(help_text)

View File

@ -9,10 +9,10 @@ Llama al script "updateTrashInfo.py", para actualizar la información de las im
------------
sys.argv[1] - Nombre completo de la imagen a eliminar (con o sin ruta), pero incluyendo el subdirectorio correspondiente a la OU, si es el caso.
- Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images_trash/image1.img
- Ejemplo2: /opt/opengnsys/ogrepository/images_trash/image1.img
- Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/images_trash/ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/ogrepository/images_trash/ou_subdir/image1.img
Sintaxis
----------
@ -21,10 +21,10 @@ sys.argv[1] - Nombre completo de la imagen a eliminar (con o sin ruta), pero inc
Ejemplos
---------
./deleteTrashImage.py image1.img
./deleteTrashImage.py /opt/opengnsys/images_trash/image1.img
./deleteTrashImage.py /opt/opengnsys/ogrepository/images_trash/image1.img
./deleteTrashImage.py ou_subdir/image1.img
./deleteTrashImage.py /ou_subdir/image1.img
./deleteTrashImage.py /opt/opengnsys/images_trash/ou_subdir/image1.img
./deleteTrashImage.py /opt/opengnsys/ogrepository/images_trash/ou_subdir/image1.img
"""
# --------------------------------------------------------------------------------------------
@ -41,8 +41,8 @@ import subprocess
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
trash_path = '/opt/opengnsys/images_trash/'
update_trash_script = '/opt/opengnsys/bin/updateTrashInfo.py'
trash_path = '/opt/opengnsys/ogrepository/images_trash/' # No borrar la barra final
update_trash_script = '/opt/opengnsys/ogrepository/bin/updateTrashInfo.py'
# --------------------------------------------------------------------------------------------
@ -57,10 +57,10 @@ def show_help():
help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img
Ejemplo2: {script_name} /opt/opengnsys/images_trash/image1.img
Ejemplo2: {script_name} /opt/opengnsys/ogrepository/images_trash/image1.img
Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {script_name} /ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/images_trash/ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/ogrepository/images_trash/ou_subdir/image1.img
"""
print(help_text)

View File

@ -13,10 +13,10 @@ Librerías Python requeridas: "paramiko" (se puede instalar con "sudo apt instal
------------
sys.argv[1] - Nombre completo de la imagen a exportar (con o sin ruta), pero incluyendo el subdirectorio correspondiente a la OU, si es el caso.
- Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img
- Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/images/ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
sys.argv[2] - IP o hostname del repositorio remoto.
- Ejemplo1: 192.168.56.100
@ -33,10 +33,10 @@ sys.argv[3] - Usuario con el que conectar al repositorio remoto.
Ejemplos
---------
./exportImage.py image1.img 192.168.56.100 user
./exportImage.py /opt/opengnsys/images/image1.img 192.168.56.100 user
./exportImage.py /opt/opengnsys/ogrepository/images/image1.img 192.168.56.100 user
./exportImage.py ou_subdir/image1.img remote_hostname user
./exportImage.py /ou_subdir/image1.img remote_hostname root
./exportImage.py /opt/opengnsys/images/ou_subdir/image1.img remote_hostname root
./exportImage.py /opt/opengnsys/ogrepository/images/ou_subdir/image1.img remote_hostname root
"""
# --------------------------------------------------------------------------------------------
@ -57,7 +57,7 @@ import warnings
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
# --------------------------------------------------------------------------------------------
@ -71,10 +71,10 @@ def show_help():
help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name remote_host remote_user
Ejemplo1: {script_name} image1.img 192.168.56.100 user
Ejemplo2: {script_name} /opt/opengnsys/images/image1.img 192.168.56.100 user
Ejemplo2: {script_name} /opt/opengnsys/ogrepository/images/image1.img 192.168.56.100 user
Ejemplo3: {script_name} ou_subdir/image1.img remote_hostname user
Ejemplo4: {script_name} /ou_subdir/image1.img remote_hostname root
Ejemplo5: {script_name} /opt/opengnsys/images/ou_subdir/image1.img remote_hostname root
Ejemplo5: {script_name} /opt/opengnsys/ogrepository/images/ou_subdir/image1.img remote_hostname root
"""
print(help_text)

View File

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
"""
Este script obtiene y devuelve la interfaz de red asociada a la IP especificada en el archivo "/opt/opengnsys/etc/ogAdmRepo.cfg" (en la clave "IPlocal").
Este script obtiene y devuelve la interfaz de red asociada a la IP especificada en el archivo "/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg" (en la clave "IPlocal").
En principio, debería hacer lo mismo que el script bash original (cuyo nombre es "getRepoIface", a secas).
No recibe ningún parámetro, y siempre es llamado por otros scripts, que necesitan dicha interfaz (por ejemplo, "sendFileMcast").
@ -21,7 +21,7 @@ import struct
# VARIABLES
# --------------------------------------------------------------------------------------------
config_file = '/opt/opengnsys/etc/ogAdmRepo.cfg'
config_file = '/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg'
# --------------------------------------------------------------------------------------------

View File

@ -40,8 +40,8 @@ import json
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_file = '/opt/opengnsys/etc/repoinfo.json'
trash_file = '/opt/opengnsys/etc/trashinfo.json'
repo_file = '/opt/opengnsys/ogrepository/etc/repoinfo.json'
trash_file = '/opt/opengnsys/ogrepository/etc/trashinfo.json'
# --------------------------------------------------------------------------------------------

View File

@ -23,7 +23,7 @@ import sys
# VARIABLES
# --------------------------------------------------------------------------------------------
repo_path = '/opt/opengnsys/images/'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
# --------------------------------------------------------------------------------------------

View File

@ -23,7 +23,7 @@ import sys
# VARIABLES
# --------------------------------------------------------------------------------------------
repo_path = '/opt/opengnsys/images/'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
# --------------------------------------------------------------------------------------------

View File

@ -13,10 +13,10 @@ Librerías Python requeridas: "paramiko" (se puede instalar con "sudo apt instal
------------
sys.argv[1] - Nombre completo de la imagen a importar (con o sin ruta), pero incluyendo el subdirectorio correspondiente a la OU, si es el caso.
- Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img
- Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/images/ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
sys.argv[2] - IP o hostname del repositorio remoto.
- Ejemplo1: 192.168.56.100
@ -33,10 +33,10 @@ sys.argv[3] - Usuario con el que conectar al repositorio remoto.
Ejemplos
---------
./importImage.py image1.img 192.168.56.100 user
./importImage.py /opt/opengnsys/images/image1.img 192.168.56.100 user
./importImage.py /opt/opengnsys/ogrepository/images/image1.img 192.168.56.100 user
./importImage.py ou_subdir/image1.img remote_hostname user
./importImage.py /ou_subdir/image1.img remote_hostname root
./importImage.py /opt/opengnsys/images/ou_subdir/image1.img remote_hostname root
./importImage.py /opt/opengnsys/ogrepository/images/ou_subdir/image1.img remote_hostname root
"""
# --------------------------------------------------------------------------------------------
@ -57,8 +57,8 @@ import warnings
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/'
update_repo_script = '/opt/opengnsys/bin/updateRepoInfo.py'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
update_repo_script = '/opt/opengnsys/ogrepository/bin/updateRepoInfo.py'
# --------------------------------------------------------------------------------------------
@ -72,10 +72,10 @@ def show_help():
help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name remote_host remote_user
Ejemplo1: {script_name} image1.img 192.168.56.100 user
Ejemplo2: {script_name} /opt/opengnsys/images/image1.img 192.168.56.100 user
Ejemplo2: {script_name} /opt/opengnsys/ogrepository/images/image1.img 192.168.56.100 user
Ejemplo3: {script_name} ou_subdir/image1.img remote_hostname user
Ejemplo4: {script_name} /ou_subdir/image1.img remote_hostname root
Ejemplo5: {script_name} /opt/opengnsys/images/ou_subdir/image1.img remote_hostname root
Ejemplo5: {script_name} /opt/opengnsys/ogrepository/images/ou_subdir/image1.img remote_hostname root
"""
print(help_text)

View File

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
"""
Este script recupera la imagen que recibe como parámetro (y todos sus archivos asociados), moviendo los archivos a "/opt/opengnsys/images", desde la papelera
Este script recupera la imagen que recibe como parámetro (y todos sus archivos asociados), moviendo los archivos a "/opt/opengnsys/ogrepository/images", desde la papelera
(respetando el subdirectorio correspondiente a la OU, si fuera el caso).
Llama al script "updateRepoInfo.py", para actualizar la información del repositorio.
@ -10,10 +10,10 @@ Llama al script "updateRepoInfo.py", para actualizar la información del reposit
------------
sys.argv[1] - Nombre completo de la imagen a recuperar (con o sin ruta), pero incluyendo el subdirectorio correspondiente a la OU, si es el caso.
- Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images_trash/image1.img
- Ejemplo2: /opt/opengnsys/ogrepository/images_trash/image1.img
- Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/images_trash/ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/ogrepository/images_trash/ou_subdir/image1.img
Sintaxis
----------
@ -22,10 +22,10 @@ sys.argv[1] - Nombre completo de la imagen a recuperar (con o sin ruta), pero in
Ejemplos
---------
./recoverImage.py image1.img
./recoverImage.py /opt/opengnsys/images_trash/image1.img
./recoverImage.py /opt/opengnsys/ogrepository/images_trash/image1.img
./recoverImage.py ou_subdir/image1.img
./recoverImage.py /ou_subdir/image1.img
./recoverImage.py /opt/opengnsys/images_trash/ou_subdir/image1.img
./recoverImage.py /opt/opengnsys/ogrepository/images_trash/ou_subdir/image1.img
"""
# --------------------------------------------------------------------------------------------
@ -43,9 +43,9 @@ import subprocess
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/'
trash_path = '/opt/opengnsys/images_trash/'
update_repo_script = '/opt/opengnsys/bin/updateRepoInfo.py'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
trash_path = '/opt/opengnsys/ogrepository/images_trash/' # No borrar la barra final
update_repo_script = '/opt/opengnsys/ogrepository/bin/updateRepoInfo.py'
# --------------------------------------------------------------------------------------------
@ -59,10 +59,10 @@ def show_help():
help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img
Ejemplo2: {script_name} /opt/opengnsys/images_trash/image1.img
Ejemplo2: {script_name} /opt/opengnsys/ogrepository/images_trash/image1.img
Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {script_name} /ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/images_trash/ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/ogrepository/images_trash/ou_subdir/image1.img
"""
print(help_text)

View File

@ -37,7 +37,7 @@ import subprocess
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images'
repo_path = '/opt/opengnsys/ogrepository/images' # En este caso, no lleva barra final
# --------------------------------------------------------------------------------------------

View File

@ -38,11 +38,11 @@ import time
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images'
repo_path = '/opt/opengnsys/ogrepository/images' # En este caso, no lleva barra final
bttrack_port = 6969
bttrack_dfile = '/tmp/dstate'
bttrack_log = '/opt/opengnsys/log/bttrack.log'
bttrack_log = '/opt/opengnsys/ogrepository/log/bttrack.log'
bttrack_interval = 10
bttrack_allow_get = 0 # Este valor impide la descarga desde clientes no autorizados

View File

@ -9,10 +9,10 @@ En principio, debería hacer lo mismo que el script bash original (cuyo nombre e
------------
sys.argv[1] - Nombre completo de la imagen a enviar (con o sin ruta), pero incluyendo el subdirectorio correspondiente a la OU, si es el caso.
- Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img
- Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/images/ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
sys.argv[2] - Parámetros Multicast (en formato "Port:Duplex:IP:Mpbs:Nclients:Timeout")
- Ejemplo: 9000:full:239.194.17.2:70M:20:120
@ -24,10 +24,10 @@ sys.argv[2] - Parámetros Multicast (en formato "Port:Duplex:IP:Mpbs:Nclients:Ti
Ejemplos
---------
./sendFileMcast.py image1.img 9000:full:239.194.17.2:70M:20:120
./sendFileMcast.py /opt/opengnsys/images/image1.img 9000:full:239.194.17.2:70M:20:120
./sendFileMcast.py /opt/opengnsys/ogrepository/images/image1.img 9000:full:239.194.17.2:70M:20:120
./sendFileMcast.py ou_subdir/image1.img 9000:full:239.194.17.2:70M:20:120
./sendFileMcast.py /ou_subdir/image1.img 9000:full:239.194.17.2:70M:20:120
./sendFileMcast.py /opt/opengnsys/images/ou_subdir/image1.img 9000:full:239.194.17.2:70M:20:120
./sendFileMcast.py /opt/opengnsys/ogrepository/images/ou_subdir/image1.img 9000:full:239.194.17.2:70M:20:120
"""
# --------------------------------------------------------------------------------------------
@ -44,10 +44,10 @@ import subprocess
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/'
bin_path = '/opt/opengnsys/bin/'
repo_iface_script = '/opt/opengnsys/bin/getRepoIface.py'
log_file = '/opt/opengnsys/log/udpcast.log'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
bin_path = '/opt/opengnsys/ogrepository/bin/' # No borrar la barra final
repo_iface_script = '/opt/opengnsys/ogrepository/bin/getRepoIface.py'
log_file = '/opt/opengnsys/ogrepository/log/udpcast.log'
# --------------------------------------------------------------------------------------------
@ -61,10 +61,10 @@ def show_help():
help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name Port:Duplex:IP:Mpbs:Nclients:Timeout
Ejemplo1: {script_name} image1.img 9000:full-duplex:239.194.17.2:70M:20:120
Ejemplo2: {script_name} /opt/opengnsys/images/image1.img 9000:full-duplex:239.194.17.2:70M:20:120
Ejemplo2: {script_name} /opt/opengnsys/ogrepository/images/image1.img 9000:full-duplex:239.194.17.2:70M:20:120
Ejemplo3: {script_name} ou_subdir/image1.img 9000:full-duplex:239.194.17.2:70M:20:120
Ejemplo4: {script_name} /ou_subdir/image1.img 9000:full-duplex:239.194.17.2:70M:20:120
Ejemplo5: {script_name} /opt/opengnsys/images/ou_subdir/image1.img 9000:full-duplex:239.194.17.2:70M:20:120
Ejemplo5: {script_name} /opt/opengnsys/ogrepository/images/ou_subdir/image1.img 9000:full-duplex:239.194.17.2:70M:20:120
"""
print(help_text)

View File

@ -13,10 +13,10 @@ Paquetes APT requeridos: "uftp" (se puede instalar con "sudo apt install uftp").
------------
sys.argv[1] - Nombre completo de la imagen a enviar (con o sin ruta), pero incluyendo el subdirectorio correspondiente a la OU, si es el caso.
- Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img
- Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/images/ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
sys.argv[2] - Parámetros Multicast/Unicast (en formato "Port:IP:Bitrate")
- Ejemplo1: 9000:239.194.17.2:100M
@ -29,10 +29,10 @@ sys.argv[2] - Parámetros Multicast/Unicast (en formato "Port:IP:Bitrate")
Ejemplos
---------
./sendFileUFTP.py image1.img 9000:239.194.17.2:100M
./sendFileUFTP.py /opt/opengnsys/images/image1.img 9000:239.194.17.2:100M
./sendFileUFTP.py /opt/opengnsys/ogrepository/images/image1.img 9000:239.194.17.2:100M
./sendFileUFTP.py ou_subdir/image1.img 9000:192.168.56.101:1G
./sendFileUFTP.py /ou_subdir/image1.img 9000:192.168.56.101:1G
./sendFileUFTP.py /opt/opengnsys/images/ou_subdir/image1.img 9000:192.168.56.101:1G
./sendFileUFTP.py /opt/opengnsys/ogrepository/images/ou_subdir/image1.img 9000:192.168.56.101:1G
"""
# --------------------------------------------------------------------------------------------
@ -49,9 +49,9 @@ import subprocess
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
cache_path = '/opt/opengnsys/cache'
log_file = '/opt/opengnsys/log/uftp.log'
log_file = '/opt/opengnsys/ogrepository/log/uftp.log'
# --------------------------------------------------------------------------------------------
@ -65,10 +65,10 @@ def show_help():
help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name Port:IP:Bitrate
Ejemplo1: {script_name} image1.img 9000:239.194.17.2:100M
Ejemplo2: {script_name} /opt/opengnsys/images/image1.img 9000:239.194.17.2:100M
Ejemplo2: {script_name} /opt/opengnsys/ogrepository/images/image1.img 9000:239.194.17.2:100M
Ejemplo3: {script_name} ou_subdir/image1.img 9000:192.168.56.101:1G
Ejemplo4: {script_name} /ou_subdir/image1.img 9000:192.168.56.101:1G
Ejemplo5: {script_name} /opt/opengnsys/images/ou_subdir/image1.img 9000:192.168.56.101:1G
Ejemplo5: {script_name} /opt/opengnsys/ogrepository/images/ou_subdir/image1.img 9000:192.168.56.101:1G
"""
print(help_text)

View File

@ -10,10 +10,10 @@ Este script finaliza el proceso "udp-sender" asociado a la imagen que recibe com
------------
sys.argv[1] - Nombre completo de la imagen a cancelar su transmisión (con o sin ruta), pero incluyendo el subdirectorio correspondiente a la OU, si es el caso.
- Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img
- Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/images/ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
Sintaxis
----------
@ -22,10 +22,10 @@ sys.argv[1] - Nombre completo de la imagen a cancelar su transmisión (con o sin
Ejemplos
---------
./stopUDPcast.py image1.img
./stopUDPcast.py /opt/opengnsys/images/image1.img
./stopUDPcast.py /opt/opengnsys/ogrepository/images/image1.img
./stopUDPcast.py ou_subdir/image1.img
./stopUDPcast.py /ou_subdir/image1.img
./stopUDPcast.py /opt/opengnsys/images/ou_subdir/image1.img
./stopUDPcast.py /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
"""
# --------------------------------------------------------------------------------------------
@ -42,7 +42,7 @@ import subprocess
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
# --------------------------------------------------------------------------------------------
@ -56,10 +56,10 @@ def show_help():
help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img
Ejemplo2: {script_name} /opt/opengnsys/images/image1.img
Ejemplo2: {script_name} /opt/opengnsys/ogrepository/images/image1.img
Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {script_name} /ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/images/ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
"""
print(help_text)

View File

@ -10,10 +10,10 @@ Este script finaliza el proceso "uftp" asociado a la imagen que recibe como par
------------
sys.argv[1] - Nombre completo de la imagen a cancelar su transmisión (con o sin ruta), pero incluyendo el subdirectorio correspondiente a la OU, si es el caso.
- Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img
- Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/images/ou_subdir/image1.img
- Ejemplo5: /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
Sintaxis
----------
@ -22,10 +22,10 @@ sys.argv[1] - Nombre completo de la imagen a cancelar su transmisión (con o sin
Ejemplos
---------
./stopUDPcast.py image1.img
./stopUDPcast.py /opt/opengnsys/images/image1.img
./stopUDPcast.py /opt/opengnsys/ogrepository/images/image1.img
./stopUDPcast.py ou_subdir/image1.img
./stopUDPcast.py /ou_subdir/image1.img
./stopUDPcast.py /opt/opengnsys/images/ou_subdir/image1.img
./stopUDPcast.py /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
"""
# --------------------------------------------------------------------------------------------
@ -42,7 +42,7 @@ import subprocess
# --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/'
repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
# --------------------------------------------------------------------------------------------
@ -56,10 +56,10 @@ def show_help():
help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img
Ejemplo2: {script_name} /opt/opengnsys/images/image1.img
Ejemplo2: {script_name} /opt/opengnsys/ogrepository/images/image1.img
Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {script_name} /ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/images/ou_subdir/image1.img
Ejemplo5: {script_name} /opt/opengnsys/ogrepository/images/ou_subdir/image1.img
"""
print(help_text)

View File

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
"""
Este script actualiza la información de las imágenes del repositorio, reflejándola en el archivo "/opt/opengnsys/etc/repoinfo.json",
Este script actualiza la información de las imágenes del repositorio, reflejándola en el archivo "/opt/opengnsys/ogrepository/etc/repoinfo.json",
añadiendo información de las imágenes nuevas, y borrando la información de las imágenes que fueron eliminadas.
La información es obtenida desde archivos "<imagen_name>.info", que originalmente eran eliminados,
pero que en esta versión son renombrados a "<imagen_name>.info.checked", obteniendo la misma funcionalidad.
@ -27,9 +27,9 @@ import shutil
# VARIABLES
# --------------------------------------------------------------------------------------------
repo_path = '/opt/opengnsys/images'
info_file = '/opt/opengnsys/etc/repoinfo.json'
update_trash_script = '/opt/opengnsys/bin/updateTrashInfo.py'
repo_path = '/opt/opengnsys/ogrepository/images' # En este caso, no lleva barra final
info_file = '/opt/opengnsys/ogrepository/etc/repoinfo.json'
update_trash_script = '/opt/opengnsys/ogrepository/bin/updateTrashInfo.py'
# --------------------------------------------------------------------------------------------

View File

@ -2,10 +2,10 @@
# -*- coding: utf-8 -*-
"""
Este script actualiza la información de las imágenes de la papelera del repositorio, reflejándola en el archivo "/opt/opengnsys/etc/trashinfo.json",
Este script actualiza la información de las imágenes de la papelera del repositorio, reflejándola en el archivo "/opt/opengnsys/ogrepository/etc/trashinfo.json",
añadiendo información de las nuevas imágenes eliminadas, y borrando la información de las imágenes que fueron restauradas (o que ya no están en la papelera).
La información es obtenida desde archivos "<imagen_name>.info.checked", cuyo nombre original era "<imagen_name>.info"
(pero que fueron renombrados al ser insertada su información en el archivo ""/opt/opengnsys/etc/repoinfo.json", antes de ser eliminadas).
(pero que fueron renombrados al ser insertada su información en el archivo ""/opt/opengnsys/ogrepository/etc/repoinfo.json", antes de ser eliminadas).
No recibe ningún parámetro, y no necesita ser llamado explícitamente (porque lo llama el script "updateRepoInfo.py")".
"""
@ -27,8 +27,8 @@ import shutil
# VARIABLES
# --------------------------------------------------------------------------------------------
trash_path = '/opt/opengnsys/images_trash'
info_file = '/opt/opengnsys/etc/trashinfo.json'
trash_path = '/opt/opengnsys/ogrepository/images_trash' # En este caso, no lleva barra final
info_file = '/opt/opengnsys/ogrepository/etc/trashinfo.json'
# --------------------------------------------------------------------------------------------