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. - **api** ------ API de ogRepository.
- **bin** ------ Scripts en Python 3 y binarios de gestión de ogRepository. - **bin** ------ Scripts en Python 3 y binarios de gestión de ogRepository.
- **etc** ------ Ficheros y plantillas de configuració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: Paquetes APT requeridos:
- **uftp** (se puede instalar con "sudo DEBIAN_FRONTEND=noninteractive apt install uftp -y", para que no pida la ruta predeterminada) - **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") - **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) - **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) - **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") - **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: Para que todos los endpoints y scripts funcionen con la configuración actual deben existir los siguientes directorios:
- **/opt/opengnsys/images/** - **/opt/opengnsys/ogrepository/images/**
- **/opt/opengnsys/images_trash/** (debe estar en la misma unidad que el anterior, o tardarán mucho las eliminaciones y restauraciones) - **/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/bin/** (aquí deben estar todos los scripts de Python, y el binario "udp-sender") - **/opt/opengnsys/ogrepository/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/ogrepository/etc/** (aquí se guardan los archivos "repoinfo.json" y "trashinfo.json")
- **/opt/opengnsys/log/** (aquí se guardan los logs) - **/opt/opengnsys/ogrepository/log/** (aquí se guardan los logs)
Y también debe existir el siguiente archivo: 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 ### 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. 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. **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 ```json
{ {
"REPOSITORY": { "REPOSITORY": {
"directory": "/opt/opengnsys/images", "directory": "/opt/opengnsys/ogrepository/images",
"images": [ "images": [
{ {
"name": "Ubuntu24", "name": "Ubuntu24",
@ -191,7 +191,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
} }
}, },
"TRASH": { "TRASH": {
"directory": "/opt/opengnsys/images_trash", "directory": "/opt/opengnsys/ogrepository/images_trash",
"images": [], "images": [],
"ous": [ "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 ### 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. 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. **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. - **Contenido:** Información de la imagen en formato JSON.
```json ```json
{ {
"directory": "/opt/opengnsys/images", "directory": "/opt/opengnsys/ogrepository/images",
"images": [ "images": [
{ {
"name": "Windows10", "name": "Windows10",
@ -279,7 +279,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
--- ---
### Actualizar Información del Repositorio ### 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**"). 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. 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):** **Cuerpo de la Solicitud (JSON):**
- **ID_img**: Identificador de la imagen (correspondiente al contenido del archivo "full.sum" asociado). - **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). - **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:** **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):** **Cuerpo de la Solicitud (JSON):**
- **image**: Nombre de la imagen (con extensión). - **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:** **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 ### 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. 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. **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 ```json
{ {
"REPOSITORY": { "REPOSITORY": {
"directory": "/opt/opengnsys/images", "directory": "/opt/opengnsys/ogrepository/images",
"images": [ "images": [
{ {
"name": "Ubuntu24", "name": "Ubuntu24",
@ -151,7 +151,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
} }
}, },
"TRASH": { "TRASH": {
"directory": "/opt/opengnsys/images_trash", "directory": "/opt/opengnsys/ogrepository/images_trash",
"images": [], "images": [],
"ous": [ "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 ### 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. 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. **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. - **Contenido:** Información de la imagen en formato JSON.
```json ```json
{ {
"directory": "/opt/opengnsys/images", "directory": "/opt/opengnsys/ogrepository/images",
"images": [ "images": [
{ {
"name": "Windows10", "name": "Windows10",
@ -239,7 +239,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/imag
--- ---
### Actualizar Información del Repositorio ### 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**"). 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. 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):** **Cuerpo de la Solicitud (JSON):**
- **ID_img**: Identificador de la imagen (correspondiente al contenido del archivo "full.sum" asociado). - **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). - **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:** **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):** **Cuerpo de la Solicitud (JSON):**
- **image**: Nombre de la imagen (con extensión). - **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:** **Ejemplo de Solicitud:**

View File

@ -27,6 +27,7 @@ import paramiko
import logging import logging
import threading import threading
import requests import requests
import random
# Imports para Swagger: # Imports para Swagger:
from flasgger import Swagger from flasgger import Swagger
import yaml import yaml
@ -36,10 +37,12 @@ import yaml
# VARIABLES # VARIABLES
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
repo_path = '/opt/opengnsys/images/' repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
script_path = '/opt/opengnsys/bin' script_path = '/opt/opengnsys/ogrepository/bin'
repo_file = '/opt/opengnsys/etc/repoinfo.json' repo_file = '/opt/opengnsys/ogrepository/etc/repoinfo.json'
trash_file = '/opt/opengnsys/etc/trashinfo.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/' 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 """ 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. (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, 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: # Creamos un bucle infinito:
while True: 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"): 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 break
# Si aun existe el archivo ".lock", imprimimos un mensaje en la API: # Si aun existe el archivo ".lock", imprimimos un mensaje en la API:
else: 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 """ 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). (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, 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") sftp_client.stat(f"{image_file_path}.lock")
app.logger.info("Task in process (.lock file exists)") app.logger.info("Task in process (.lock file exists)")
except IOError: except IOError:
# 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:
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 break
# Esperamos 1 minuto para volver a realizar la comprobación: # Esperamos 1 minuto para volver a realizar la comprobación:
sleep(60) 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, """ 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. 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. 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: # 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"): 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)") 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: 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: # 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: with open(f"{image_file_path}.full.sum", 'r') as file:
image_id = file.read().strip('\n') image_id = file.read().strip('\n')
app.logger.info(f"Job_ID: {job_id}")
app.logger.info(f"Image_ID: {image_id}") app.logger.info(f"Image_ID: {image_id}")
# Almacenamos en un diccionario los datos a enviar a ogCore: # Almacenamos en un diccionario los datos a enviar a ogCore:
data = { data = {
'job_id': 222, # Este no es un dato real (deberá pasarmelo ogCore previamente) 'job_id': job_id,
'image_id': image_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): # 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). que estaba corriendo en un proceso independiente (no controlado por los endpoints).
""" """
# Almacenamos la URL del endpoint de ogCore: # 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: # Almacenamos los headers, y convertiomos "data" a JSON:
headers = {'content-type': 'application/json'} headers = {'content-type': 'application/json'}
@ -635,6 +655,7 @@ def import_image():
ou_subdir = json_data.get("ou_subdir") ou_subdir = json_data.get("ou_subdir")
remote_ip = json_data.get("repo_ip") remote_ip = json_data.get("repo_ip")
remote_user = json_data.get("user") 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: # Evaluamos los parámetros obtenidos, para construir la ruta de la imagen:
if ou_subdir == "none": 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): # 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') 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: # Evaluamos el resultado de la ejecución, y devolvemos una respuesta:
if result.returncode is None: if result.returncode is None:
# Si el resultado es correcto, llamamos a la función "check_lock_local" en un hilo paralelo # 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): # (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: # Informamos que la imagen se está importando, y salimos del endpoint:
return jsonify({ return jsonify({
"success": True, "success": True,
"output": "Importing image..." "output": "Importing image...",
"job_id": job_id
}), 200 }), 200
else: else:
return jsonify({ return jsonify({
@ -709,6 +734,7 @@ def export_image():
image_id = json_data.get("ID_img") image_id = json_data.get("ID_img")
remote_ip = json_data.get("repo_ip") remote_ip = json_data.get("repo_ip")
remote_user = json_data.get("user") 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): # 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") 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): # 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') 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: # Evaluamos el resultado de la ejecución, y devolvemos una respuesta:
if result.returncode is None: if result.returncode is None:
# Si el resultado es correcto, llamamos a la función "check_lock_remote" en un hilo paralelo # 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): # (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: # Informamos que la imagen se está exportando, y salimos del endpoint:
return jsonify({ return jsonify({
"success": True, "success": True,
"output": "Exporting image..." "output": "Exporting image...",
"job_id": job_id
}), 200 }), 200
else: else:
return jsonify({ return jsonify({
@ -789,6 +819,7 @@ def create_torrent_sum():
json_data = json.loads(request.data) json_data = json.loads(request.data)
image_name = json_data.get("image") image_name = json_data.get("image")
ou_subdir = json_data.get("ou_subdir") 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"): # Evaluamos los parámetros obtenidos, para construir la ruta de la imagen (relativa a "repo_path"):
if ou_subdir == "none": 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): # 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') 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: # Evaluamos el resultado de la ejecución, y devolvemos una respuesta:
if result.returncode is None: if result.returncode is None:
# Si el resultado es correcto, llamamos a la función "check_aux_files" en un hilo paralelo # 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): # (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: # Informamos que los archivos auxiliares se están creando, y salimos del endpoint:
return jsonify({ return jsonify({
"success": True, "success": True,
"output": "Creating auxiliar files..." "output": "Creating auxiliar files...",
"job_id": job_id
}), 200 }), 200
else: else:
return jsonify({ return jsonify({

View File

@ -14,7 +14,7 @@ info:
Paquetes APT requeridos: Paquetes APT requeridos:
- **uftp** (se puede instalar con "sudo DEBIAN_FRONTEND=noninteractive apt install uftp -y", para que no pida la ruta predeterminada) - **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") - **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) - **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) - **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") - **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: Para que todos los endpoints de la API funcionen con la configuración actual deben existir los siguientes directorios:
- **/opt/opengnsys/images/** - **/opt/opengnsys/ogrepository/images/**
- **/opt/opengnsys/images_trash/** (debe estar en la misma unidad que el anterior, o tardarán mucho las eliminaciones y restauraciones) - **/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/bin/** (aquí deben estar todos los scripts de Python, y el binario "udp-sender") - **/opt/opengnsys/ogrepository/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/ogrepository/etc/** (aquí se guardan los archivos "repoinfo.json" y "trashinfo.json")
- **/opt/opengnsys/log/** (aquí se guardan los logs) - **/opt/opengnsys/ogrepository/log/** (aquí se guardan los logs)
Y también debe existir el siguiente archivo: 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: properties:
directory: directory:
type: string type: string
example: "/opt/opengnsys/images" example: "/opt/opengnsys/ogrepository/images"
images: images:
type: array type: array
items: items:
@ -322,7 +322,7 @@ paths:
properties: properties:
directory: directory:
type: string type: string
example: "/opt/opengnsys/images_trash" example: "/opt/opengnsys/ogrepository/images_trash"
images: images:
type: array type: array
items: items:
@ -424,7 +424,7 @@ paths:
properties: properties:
directory: directory:
type: string type: string
example: "/opt/opengnsys/images" example: "/opt/opengnsys/ogrepository/images"
images: images:
type: array type: array
items: items:
@ -1528,7 +1528,7 @@ paths:
properties: properties:
ID_img: ID_img:
type: string type: string
example: "image_id" example: "22735b9070e4a8043371b8c6ae52b90d"
repo_ip: repo_ip:
type: string type: string
description: "Dirección IP del repositorio remoto" description: "Dirección IP del repositorio remoto"
@ -1658,7 +1658,6 @@ paths:
example: "Windows10.img" example: "Windows10.img"
ou_subdir: ou_subdir:
type: string type: string
description: "Subdirectorio correspondiente a la OU (o 'none' si no es el caso)"
example: "none" example: "none"
responses: responses:
"200": "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. 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 - Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img - Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img - Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /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 Sintaxis
---------- ----------
@ -21,10 +21,10 @@ sys.argv[1] - Nombre completo de la imagen a chequear (con o sin ruta), pero inc
Ejemplos Ejemplos
--------- ---------
./checkImage.py image1.img ./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 /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__) 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""" help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img 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 Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {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) 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. 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 - Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img - Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img - Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /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 Sintaxis
---------- ----------
@ -24,10 +24,10 @@ sys.argv[1] - Nombre completo de la imagen (con o sin ruta), pero incluyendo el
Ejemplos Ejemplos
--------- ---------
./createTorrentSum.py image1.img ./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 /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__) script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/' repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
config_file = '/opt/opengnsys/etc/ogAdmRepo.cfg' config_file = '/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg'
update_repo_script = '/opt/opengnsys/bin/updateRepoInfo.py' update_repo_script = '/opt/opengnsys/ogrepository/bin/updateRepoInfo.py'
@ -62,10 +62,10 @@ def show_help():
help_text = f""" help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img 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 Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {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) 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. 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 - Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img - Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img - Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /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). sys.argv[2] - Parámetro opcional para especificar que la eliminación sea permanente (sin papelera).
- Ejemplo: -p - Ejemplo: -p
@ -26,10 +26,10 @@ sys.argv[2] - Parámetro opcional para especificar que la eliminación sea perma
Ejemplos Ejemplos
--------- ---------
./deleteImage.py image1.img -p ./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 -p
./deleteImage.py /ou_subdir/image1.img ./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__) script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/' repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
trash_path = '/opt/opengnsys/images_trash/' trash_path = '/opt/opengnsys/ogrepository/images_trash/'
update_repo_script = '/opt/opengnsys/bin/updateRepoInfo.py' update_repo_script = '/opt/opengnsys/ogrepository/bin/updateRepoInfo.py'
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
@ -66,10 +66,10 @@ def show_help():
help_text = f""" help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name [-p] Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name [-p]
Ejemplo1: {script_name} image1.img -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 Ejemplo3: {script_name} ou_subdir/image1.img -p
Ejemplo4: {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) 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. 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 - Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images_trash/image1.img - Ejemplo2: /opt/opengnsys/ogrepository/images_trash/image1.img
- Ejemplo3: ou_subdir/image1.img - Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /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 Sintaxis
---------- ----------
@ -21,10 +21,10 @@ sys.argv[1] - Nombre completo de la imagen a eliminar (con o sin ruta), pero inc
Ejemplos Ejemplos
--------- ---------
./deleteTrashImage.py image1.img ./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 /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__) script_name = os.path.basename(__file__)
trash_path = '/opt/opengnsys/images_trash/' trash_path = '/opt/opengnsys/ogrepository/images_trash/' # No borrar la barra final
update_trash_script = '/opt/opengnsys/bin/updateTrashInfo.py' update_trash_script = '/opt/opengnsys/ogrepository/bin/updateTrashInfo.py'
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
@ -57,10 +57,10 @@ def show_help():
help_text = f""" help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img 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 Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {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) 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. 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 - Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img - Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img - Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /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. sys.argv[2] - IP o hostname del repositorio remoto.
- Ejemplo1: 192.168.56.100 - Ejemplo1: 192.168.56.100
@ -33,10 +33,10 @@ sys.argv[3] - Usuario con el que conectar al repositorio remoto.
Ejemplos Ejemplos
--------- ---------
./exportImage.py image1.img 192.168.56.100 user ./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 user
./exportImage.py /ou_subdir/image1.img remote_hostname root ./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__) 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""" help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name remote_host remote_user 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 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 Ejemplo3: {script_name} ou_subdir/image1.img remote_hostname user
Ejemplo4: {script_name} /ou_subdir/image1.img remote_hostname root 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) print(help_text)

View File

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*- # -*- 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). 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"). 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 # 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__) script_name = os.path.basename(__file__)
repo_file = '/opt/opengnsys/etc/repoinfo.json' repo_file = '/opt/opengnsys/ogrepository/etc/repoinfo.json'
trash_file = '/opt/opengnsys/etc/trashinfo.json' trash_file = '/opt/opengnsys/ogrepository/etc/trashinfo.json'
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------

View File

@ -23,7 +23,7 @@ import sys
# VARIABLES # 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 # 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. 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 - Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img - Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img - Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /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. sys.argv[2] - IP o hostname del repositorio remoto.
- Ejemplo1: 192.168.56.100 - Ejemplo1: 192.168.56.100
@ -33,10 +33,10 @@ sys.argv[3] - Usuario con el que conectar al repositorio remoto.
Ejemplos Ejemplos
--------- ---------
./importImage.py image1.img 192.168.56.100 user ./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 user
./importImage.py /ou_subdir/image1.img remote_hostname root ./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__) script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/' repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
update_repo_script = '/opt/opengnsys/bin/updateRepoInfo.py' update_repo_script = '/opt/opengnsys/ogrepository/bin/updateRepoInfo.py'
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
@ -72,10 +72,10 @@ def show_help():
help_text = f""" help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name remote_host remote_user 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 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 Ejemplo3: {script_name} ou_subdir/image1.img remote_hostname user
Ejemplo4: {script_name} /ou_subdir/image1.img remote_hostname root 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) print(help_text)

View File

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*- # -*- 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). (respetando el subdirectorio correspondiente a la OU, si fuera el caso).
Llama al script "updateRepoInfo.py", para actualizar la información del repositorio. 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. 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 - Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images_trash/image1.img - Ejemplo2: /opt/opengnsys/ogrepository/images_trash/image1.img
- Ejemplo3: ou_subdir/image1.img - Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /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 Sintaxis
---------- ----------
@ -22,10 +22,10 @@ sys.argv[1] - Nombre completo de la imagen a recuperar (con o sin ruta), pero in
Ejemplos Ejemplos
--------- ---------
./recoverImage.py image1.img ./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 /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__) script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/' repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
trash_path = '/opt/opengnsys/images_trash/' trash_path = '/opt/opengnsys/ogrepository/images_trash/' # No borrar la barra final
update_repo_script = '/opt/opengnsys/bin/updateRepoInfo.py' update_repo_script = '/opt/opengnsys/ogrepository/bin/updateRepoInfo.py'
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
@ -59,10 +59,10 @@ def show_help():
help_text = f""" help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img 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 Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {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) print(help_text)

View File

@ -37,7 +37,7 @@ import subprocess
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
script_name = os.path.basename(__file__) 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__) 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_port = 6969
bttrack_dfile = '/tmp/dstate' bttrack_dfile = '/tmp/dstate'
bttrack_log = '/opt/opengnsys/log/bttrack.log' bttrack_log = '/opt/opengnsys/ogrepository/log/bttrack.log'
bttrack_interval = 10 bttrack_interval = 10
bttrack_allow_get = 0 # Este valor impide la descarga desde clientes no autorizados 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. 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 - Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img - Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img - Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /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") sys.argv[2] - Parámetros Multicast (en formato "Port:Duplex:IP:Mpbs:Nclients:Timeout")
- Ejemplo: 9000:full:239.194.17.2:70M:20:120 - 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 Ejemplos
--------- ---------
./sendFileMcast.py image1.img 9000:full:239.194.17.2:70M:20:120 ./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 /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__) script_name = os.path.basename(__file__)
repo_path = '/opt/opengnsys/images/' repo_path = '/opt/opengnsys/ogrepository/images/' # No borrar la barra final
bin_path = '/opt/opengnsys/bin/' bin_path = '/opt/opengnsys/ogrepository/bin/' # No borrar la barra final
repo_iface_script = '/opt/opengnsys/bin/getRepoIface.py' repo_iface_script = '/opt/opengnsys/ogrepository/bin/getRepoIface.py'
log_file = '/opt/opengnsys/log/udpcast.log' log_file = '/opt/opengnsys/ogrepository/log/udpcast.log'
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
@ -61,10 +61,10 @@ def show_help():
help_text = f""" help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name Port:Duplex:IP:Mpbs:Nclients:Timeout 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 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 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 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) 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. 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 - Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img - Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img - Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /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") sys.argv[2] - Parámetros Multicast/Unicast (en formato "Port:IP:Bitrate")
- Ejemplo1: 9000:239.194.17.2:100M - Ejemplo1: 9000:239.194.17.2:100M
@ -29,10 +29,10 @@ sys.argv[2] - Parámetros Multicast/Unicast (en formato "Port:IP:Bitrate")
Ejemplos Ejemplos
--------- ---------
./sendFileUFTP.py image1.img 9000:239.194.17.2:100M ./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 /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__) 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' 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""" help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name Port:IP:Bitrate 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 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 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 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) 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. 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 - Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img - Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img - Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /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 Sintaxis
---------- ----------
@ -22,10 +22,10 @@ sys.argv[1] - Nombre completo de la imagen a cancelar su transmisión (con o sin
Ejemplos Ejemplos
--------- ---------
./stopUDPcast.py image1.img ./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 /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__) 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""" help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img 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 Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {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) 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. 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 - Ejemplo1: image1.img
- Ejemplo2: /opt/opengnsys/images/image1.img - Ejemplo2: /opt/opengnsys/ogrepository/images/image1.img
- Ejemplo3: ou_subdir/image1.img - Ejemplo3: ou_subdir/image1.img
- Ejemplo4: /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 Sintaxis
---------- ----------
@ -22,10 +22,10 @@ sys.argv[1] - Nombre completo de la imagen a cancelar su transmisión (con o sin
Ejemplos Ejemplos
--------- ---------
./stopUDPcast.py image1.img ./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 /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__) 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""" help_text = f"""
Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name Sintaxis: {script_name} [ou_subdir/]image_name|/image_path/image_name
Ejemplo1: {script_name} image1.img 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 Ejemplo3: {script_name} ou_subdir/image1.img
Ejemplo4: {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) print(help_text)

View File

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*- # -*- 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. 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, 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. pero que en esta versión son renombrados a "<imagen_name>.info.checked", obteniendo la misma funcionalidad.
@ -27,9 +27,9 @@ import shutil
# VARIABLES # VARIABLES
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
repo_path = '/opt/opengnsys/images' repo_path = '/opt/opengnsys/ogrepository/images' # En este caso, no lleva barra final
info_file = '/opt/opengnsys/etc/repoinfo.json' info_file = '/opt/opengnsys/ogrepository/etc/repoinfo.json'
update_trash_script = '/opt/opengnsys/bin/updateTrashInfo.py' update_trash_script = '/opt/opengnsys/ogrepository/bin/updateTrashInfo.py'
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------

View File

@ -2,10 +2,10 @@
# -*- coding: utf-8 -*- # -*- 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). 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" 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")". 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 # VARIABLES
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
trash_path = '/opt/opengnsys/images_trash' trash_path = '/opt/opengnsys/ogrepository/images_trash' # En este caso, no lleva barra final
info_file = '/opt/opengnsys/etc/trashinfo.json' info_file = '/opt/opengnsys/ogrepository/etc/trashinfo.json'
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------