base-deployment-controller 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,184 @@
1
+ Metadata-Version: 2.4
2
+ Name: base-deployment-controller
3
+ Version: 0.1.0
4
+ Summary: REST API to control the basic operations of a deployment
5
+ Author: Tknika
6
+ License: Creative Commons Atribución-NoComercial (CC BY-NC)
7
+ Classifier: Development Status :: 3 - Alpha
8
+ Classifier: Intended Audience :: Developers
9
+ Requires-Python: >=3.8
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: fastapi>=0.128.0
12
+ Requires-Dist: uvicorn[standard]>=0.40.0
13
+ Requires-Dist: python-dotenv>=1.2.1
14
+ Requires-Dist: pyyaml>=6.0.3
15
+ Requires-Dist: websockets>=16.0
16
+ Requires-Dist: python-on-whales>=0.80.0
17
+ Provides-Extra: dev
18
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
19
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
20
+ Requires-Dist: requests>=2.31.0; extra == "dev"
21
+
22
+ # Base Deployment Controller
23
+
24
+ REST API para la gestión básica de un deployment.
25
+
26
+ ## Características
27
+
28
+ - **Gestión del deployment**: Inicia, detiene y borrar el deploy (`compose.yaml`)
29
+ - **Gestión de variables de entorno**: Lee configuración de `x-env-vars` en `compose.yaml` y permite actualizar valores en `.env`
30
+ - **Control de contenedores**: Inicia, detiene y reinicia contenedores del deploy
31
+ - **Logs en tiempo real**: WebSocket para streaming de logs de contenedores
32
+ - **Validación de tipos**: Valida automáticamente valores según schemas (regex, rangos, enums)
33
+
34
+ ## Requisitos
35
+
36
+ - Python 3.8+
37
+ - Docker y Docker Compose
38
+
39
+ ## Instalación
40
+
41
+ ```bash
42
+ # Crear entorno virtual
43
+ python3 -m venv .venv
44
+ source .venv/bin/activate
45
+
46
+ # Instalar como librería
47
+ pip install base-deployment-controller
48
+ ```
49
+
50
+ ## Uso
51
+
52
+ ### Iniciar el servidor (demo)
53
+
54
+ ```bash
55
+ # Ejecutar la app demo desde la raíz del repo
56
+ python3 main.py
57
+ ```
58
+
59
+ El servidor estará disponible en `http://localhost:8000`
60
+
61
+ ### Uso como librería
62
+
63
+ #### Uso básico (factory)
64
+
65
+ ```python
66
+ from base_deployment_controller import create_app
67
+
68
+ app = create_app(
69
+ compose_file="compose.yaml",
70
+ env_file=".env",
71
+ )
72
+ ```
73
+
74
+ #### Uso avanzado (builder + routers personalizados)
75
+
76
+ ```python
77
+ from fastapi import APIRouter
78
+ from base_deployment_controller import AppBuilder
79
+
80
+ custom_router = APIRouter(prefix="/custom")
81
+
82
+ builder = AppBuilder("compose.yaml", ".env")
83
+ app = builder.register_router(custom_router).build()
84
+ ```
85
+
86
+ ### API Endpoints
87
+
88
+ #### GET /
89
+ Obtiene información sobre el deploy:
90
+
91
+ ```bash
92
+ curl http://localhost:8000/
93
+ ```
94
+
95
+ #### POST /up|down|stop
96
+ Controla el deploy:
97
+
98
+ ```bash
99
+ # Levanta todos los servicio del deploy
100
+ curl -X POST http://localhost:8000/up
101
+ ```
102
+
103
+ #### GET /envs
104
+ Obtiene todas las variables de entorno con sus valores actuales:
105
+
106
+ ```bash
107
+ curl http://localhost:8000/envs
108
+ ```
109
+
110
+ #### PUT /envs
111
+ Actualiza variables de entorno. Usa `restart_services` (por defecto `true`) para controlar si se reinician los servicios afectados.
112
+
113
+ ```bash
114
+ # Actualización múltiple
115
+ curl -X PUT http://localhost:8000/envs \
116
+ -H "Content-Type: application/json" \
117
+ -d '{"variables": {"MCC": "214", "MNC": "07"}, "restart_services": false}'
118
+ ```
119
+
120
+ #### GET /containers
121
+ Lista el estado de todos los contenedores:
122
+
123
+ ```bash
124
+ curl http://localhost:8000/containers
125
+ ```
126
+
127
+ #### POST /containers/{name}/start|stop|restart
128
+ Controla un contenedor específico:
129
+
130
+ ```bash
131
+ # Reiniciar el MME
132
+ curl -X POST http://localhost:8000/containers/mme/restart
133
+ ```
134
+
135
+ #### WebSocket /containers/{container_name}/logs
136
+ Logs en tiempo real via WebSocket:
137
+
138
+ ```javascript
139
+ const ws = new WebSocket('ws://localhost:8000/containers/mme/logs');
140
+ ws.onmessage = (event) => {
141
+ console.log(event.data);
142
+ };
143
+ ```
144
+
145
+ #### GET /ping
146
+ Health check del servicio:
147
+
148
+ ```bash
149
+ curl http://localhost:8000/ping
150
+ ```
151
+
152
+ ## Documentación Interactiva
153
+
154
+ FastAPI genera automáticamente documentación interactiva:
155
+
156
+ - **Swagger UI**: http://localhost:8000/docs
157
+ - **ReDoc**: http://localhost:8000/redoc
158
+
159
+ ## Arquitectura
160
+
161
+ ### Configuración de Tres Niveles
162
+
163
+ 1. **compose.yaml**: Define servicios y dependencias
164
+ 2. **x-env-vars**: Schema maestro con validaciones
165
+ 3. **.env**: Valores en tiempo de ejecución
166
+
167
+ ## Validación de Tipos
168
+
169
+ Las variables se validan según el schema de `x-env-vars`:
170
+
171
+ - **String con regex**: `"string:0;^\d{3}$"` - MCC debe ser 3 dígitos
172
+ - **Integer con rango**: `"integer:0;2048"` - MAX_NUM_UE entre 0-2048
173
+ - **Enum**: `"enum:tun,tap"` - UPF_TUNTAP_MODE solo acepta tun o tap
174
+
175
+ ## Seguridad
176
+
177
+ - Solo permite actualizar variables existentes en el schema
178
+ - No permite agregar nuevas variables
179
+ - No permite eliminar variables
180
+ - Valida todos los valores antes de escribir en `.env`
181
+
182
+ ## Licencia
183
+
184
+ Este proyecto es parte del controlador de despliegue 5G de Tknika.
@@ -0,0 +1,17 @@
1
+ base_deployment_controller/__init__.py,sha256=1mvqShjmMTmJTYF7PLWBNwXPTtk-0Qba2Q6cQRYGRRs,1722
2
+ base_deployment_controller/builder.py,sha256=VLwUTuIaeHdiMU1MZkVN4wo6NH2tsHLu6Ir-cWR2aOA,2938
3
+ base_deployment_controller/models/__init__.py,sha256=a_mKXUYVzyeMuy4fCdGsYs9YWXC4UicDlT449wsj3TA,839
4
+ base_deployment_controller/models/compose.py,sha256=BWkABpPjT70cRPKlHSqbnlAHSSUbLmxM67fHjNW844g,364
5
+ base_deployment_controller/models/container.py,sha256=5Wy1Vf3c_YsnJxMYzsRt982DEr1hY1_k18TCjSouuIo,1195
6
+ base_deployment_controller/models/deployment.py,sha256=LnayxI_975PPK2cjwJXhLnMHJU53a5JtDpboM2tpN4Q,1902
7
+ base_deployment_controller/models/environment.py,sha256=qFDti4aUqK_BuJQz-QHZ1LpnvS2ACh-LRwW7HtlGztc,1542
8
+ base_deployment_controller/routers/__init__.py,sha256=Oe96tG8Jcw1S6m40Di68DkCr3UbjSEruFikk9bocj4c,238
9
+ base_deployment_controller/routers/container.py,sha256=L2xYBVZf398DkmXr5Qu6U7Up2sYLY-DxS7ZOx5Xh50I,15433
10
+ base_deployment_controller/routers/deployment.py,sha256=7tOXkNrhRXbVFKUqBDmqp_rSojzqecAzU8yP1AqbNbo,9623
11
+ base_deployment_controller/routers/environment.py,sha256=3uq8WSYAz2cZOW4LLvPaVBBDITn6OfSU8v-Q2YUFjwQ,6439
12
+ base_deployment_controller/services/__init__.py,sha256=kiU1CafpZEhO2V0Z1YSv4SW7gi8gvhf7-cPHSh4ETJo,127
13
+ base_deployment_controller/services/config.py,sha256=jMJXrNvznNoCciFbb_kCQee6XMqV7ouVpo2ql6oIqaU,21165
14
+ base_deployment_controller-0.1.0.dist-info/METADATA,sha256=w9ufhsCAU7nmSe_x8l0DUVDeBDqadJDiXZDdDcwaLck,4483
15
+ base_deployment_controller-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
16
+ base_deployment_controller-0.1.0.dist-info/top_level.txt,sha256=L43ihN7K4QcA-cdy6KnHcBJOtI-zceJ9Zqh5z1kgia0,27
17
+ base_deployment_controller-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ base_deployment_controller