Skip to main content

REST API to control the basic operations of a deployment

Project description

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 restart_services (por defecto true) para controlar si se reinician 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"}, "restart_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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

base_deployment_controller-0.2.0.tar.gz (26.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

base_deployment_controller-0.2.0-py3-none-any.whl (31.5 kB view details)

Uploaded Python 3

File details

Details for the file base_deployment_controller-0.2.0.tar.gz.

File metadata

File hashes

Hashes for base_deployment_controller-0.2.0.tar.gz
Algorithm Hash digest
SHA256 23fc2fe431e8baabdc605355a090de43c11e93ad5ead76670a3482d99d0b97f1
MD5 dd72785fba248b2cae3bed2f88271dc3
BLAKE2b-256 818974bac08f2b9debc97cb66b4a850327fd8a54ed2fd88c9c3841b0b5e64f31

See more details on using hashes here.

File details

Details for the file base_deployment_controller-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for base_deployment_controller-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 770d3ecf1dadd638be6f24fe59442768d749d2be12d88c3bfd942999dc311134
MD5 a19df26e85e18c5c190ae85cdeb54c6a
BLAKE2b-256 ac1d5d80d5c2391f8203a7bee5cb9ac25e055fca7b9ca179c0b54e3e4a60d385

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page