Skip to main content

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-vars en compose.yaml y 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

  1. compose.yaml: Define servicios y dependencias
  2. x-env-vars: Schema maestro con validaciones
  3. .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)

Source distribution for base-deployment-controller 0.4.1
File Size Uploaded
base_deployment_controller-0.4.1.tar.gz 32.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for base-deployment-controller 0.4.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page