Base Deployment Controller
REST API para la gestión básica de un deployment.
Características
- Gestión del deployment: Inicia, detiene y borrar el deploy (
compose.yaml) - Gestión de variables de entorno: Lee configuración de
x-env-varsencompose.yamly permite actualizar valores en.env - Control de contenedores: Inicia, detiene y reinicia contenedores del deploy
- Logs en tiempo real: WebSocket para streaming de logs de contenedores
- Validación de tipos: Valida automáticamente valores según schemas (regex, rangos, enums)
Requisitos
- Python 3.8+
- Docker y Docker Compose
Instalación
# Crear entorno virtual
python3 -m venv .venv
source .venv/bin/activate
# Instalar como librería
pip install base-deployment-controller
Uso
Iniciar el servidor (demo)
# Ejecutar la app demo desde la raíz del repo
python3 main.py
El servidor estará disponible en http://localhost:8000
Uso como librería
Uso básico (factory)
from base_deployment_controller import create_app
app = create_app(
compose_file="compose.yaml",
env_file=".env",
)
Uso avanzado (builder + routers personalizados)
from fastapi import APIRouter
from base_deployment_controller import AppBuilder
custom_router = APIRouter(prefix="/custom")
builder = AppBuilder("compose.yaml", ".env")
app = builder.register_router(custom_router).build()
API Endpoints
GET /
Obtiene información sobre el deploy:
curl http://localhost:8000/
POST /up|down|kill|stop
Controla el deploy:
# Levanta todos los servicio del deploy
curl -X POST http://localhost:8000/up
GET /envs
Obtiene todas las variables de entorno con sus valores actuales:
curl http://localhost:8000/envs
PUT /envs
Actualiza variables de entorno. Usa recreate_services (por defecto true) para controlar si se recrean los servicios afectados.
# Actualización múltiple
curl -X PUT http://localhost:8000/envs \
-H "Content-Type: application/json" \
-d '{"variables": {"MCC": "214", "MNC": "07"}, "recreate_services": false}'
GET /containers
Lista el estado de todos los contenedores:
curl http://localhost:8000/containers
GET SSE /containers/events
Información en tiempo real sobre los cambios de estado de los contenedores (SSE):
curl -N http://localhost:8000/containers/events
POST /containers/{name}/start|stop|restart
Controla un contenedor específico:
# Reiniciar el MME
curl -X POST http://localhost:8000/containers/mme/restart
WebSocket /containers/{container_name}/logs
Logs en tiempo real via WebSocket:
const ws = new WebSocket('ws://localhost:8000/containers/mme/logs');
ws.onmessage = (event) => {
console.log(event.data);
};
Documentación Interactiva
FastAPI genera automáticamente documentación interactiva:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
Arquitectura
Configuración de Tres Niveles
- compose.yaml: Define servicios y dependencias
- x-env-vars: Schema maestro con validaciones
- .env: Valores en tiempo de ejecución
Validación de Tipos
Las variables se validan según el schema de x-env-vars:
- String con regex:
"string:0;^\d{3}$"- MCC debe ser 3 dígitos - Integer con rango:
"integer:0;2048"- MAX_NUM_UE entre 0-2048 - Enum:
"enum:tun,tap"- UPF_TUNTAP_MODE solo acepta tun o tap
Seguridad
- Solo permite actualizar variables existentes en el schema
- No permite agregar nuevas variables
- No permite eliminar variables
- Valida todos los valores antes de escribir en
.env
Licencia
Este proyecto es parte del controlador de despliegue 5G de Tknika.
Release files for base-deployment-controller 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| base_deployment_controller-0.4.1.tar.gz | 32.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| base_deployment_controller-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 68.7 kB
Release files / base_deployment_controller-0.4.1.tar.gz
| Download URL | base_deployment_controller-0.4.1.tar.gz |
|---|---|
| Size | 32.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
240e36b0980499621aa2bddb66bbd351a5a73b131c8ea5bc03d9f06dd61042b5
|
|
BLAKE2b-256 checksum How to use checksums |
222f5753932e778956258c9d470f2d8bda778e43c2ed890a0f664a76649b359b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Release files / base_deployment_controller-0.4.1-py3-none-any.whl
| Download URL | base_deployment_controller-0.4.1-py3-none-any.whl |
|---|---|
| Size | 36.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
11eaf6e9a925893c31ea21b91d7ed981ca6af6b4ce001dd6e41dd39ac0f398ff
|
|
BLAKE2b-256 checksum How to use checksums |
7619c15702d553b36bea059f1458a9c83f6a385ee8f87887e4b55a4a20021254
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|