SDK de Python (pyvergeos)
Automatiza la infraestructura de VergeOS con el SDK de Python pyvergeos: ciclo de vida de VM, redes, multitenencia, almacenamiento y recuperación ante desastres desde scripts de Python.
La pyvergeos El SDK proporciona una interfaz de estilo Python, con anotaciones de tipo, para toda la API REST de VergeOS. En lugar de crear solicitudes HTTP en bruto, trabajas con gestores de recursos — client.vms, client.networks, client.tenants — que se asignan directamente a objetos de VergeOS. El SDK se encarga de la autenticación, la paginación, los reintentos y el sondeo de tareas asíncronas para que tus scripts de automatización se mantengan limpios y centrados en la lógica de negocio.
Requisitos e instalación
Requisitos previos:
Python 3.9 o superior
VergeOS 26.0 o superior
Funciona en Windows, macOS y Linux
Instalar desde PyPI (recomendado):
pip install pyvergeosO con uv (alternativa más rápida):
uv add pyvergeosDesde el código fuente (desarrollo):
git clone https://github.com/verge-io/pyvergeos.git
cd pyvergeos
pip install .Autenticación
El SDK admite tres métodos de autenticación, cada uno adecuado para distintos entornos.
Nombre de usuario y contraseña
La forma más simple para scripts interactivos y desarrollo:
Token de API
Para automatización en producción cuando ya tienes una clave API generada previamente:
Variables de entorno
La forma recomendada para producción — mantiene las credenciales fuera del código fuente:
Gestor de contexto
Usa siempre el gestor de contexto en el código de producción para garantizar que las conexiones se cierren correctamente, incluso cuando ocurran excepciones:
Gestores de recursos
Cada tipo de recurso de VergeOS se expone a través de un gestor de recursos en el objeto cliente. Cada gestor proporciona métodos coherentes list(), get(), create()y métodos de acción.
Máquinas virtuales
client.vms — Crea, configura, controla la energía, clona, toma instantáneas y administra discos/NICs para las VM.
Redes
client.networks — Redes virtuales, reglas de firewall, DHCP, DNS y control de energía de la red.
Inquilinos
client.tenants — Aprovisionamiento multi-tenant, aislamiento de recursos, instantáneas, bloques de almacenamiento y bloques de red.
NAS y almacenamiento
client.nas — Servicios NAS, volúmenes, comparticiones CIFS/NFS y sincronización de volúmenes.
Recuperación ante desastres
client.dr — Instantáneas en la nube, sincronización de sitios y flujos de recuperación.
Usuarios y grupos
client.users — Cuentas de usuario, grupos, permisos y gestión de claves API.
Tareas y monitorización
client.tasks — Seguimiento asíncrono de tareas, espera y tiempos de espera. También: alarmas y registros.
Sistema y GPU
client.clusters, client.nodes, client.gpu — Información de clústeres/nodos, niveles de almacenamiento y gestión de dispositivos GPU.
Tabla completa de recursos
Máquinas virtuales
VM, discos, NIC, instantáneas
Redes
Redes, reglas de firewall, DNS, DHCP, alias, hosts
VPN
Conexiones IPSec, interfaces WireGuard y peers
NAS/Almacenamiento
Servicios NAS, volúmenes, comparticiones CIFS/NFS, sincronizaciones de volúmenes
Inquilinos
Gestión de tenants, instantáneas, bloques de almacenamiento, bloques de red
Usuarios y grupos
Usuarios, grupos, permisos, claves API
Sistema
Clústeres, nodos, niveles de almacenamiento, certificados
Supervisión
Alarmas, registros, tareas
Copias de seguridad y recuperación ante desastres
Perfiles de instantáneas, instantáneas en la nube, sitios, sincronizaciones de sitios
Filtrado de recursos
El SDK ofrece tres enfoques para filtrar recursos, desde argumentos de palabra clave simples hasta un generador completo de filtros OData.
Argumentos de palabra clave
La forma más simple para filtros básicos: pasa directamente los nombres de los campos:
Cadenas de filtro OData
Para consultas complejas, pasa expresiones de filtro OData en bruto:
Generador de filtros (API fluida)
Construye filtros programáticamente con seguridad de tipos y autocompletado:
Operadores de filtro disponibles:
.eq()
eq
Filter().eq("status", "running")
.ne()
ne
Filter().ne("os_family", "windows")
.gt()
gt
Filter().gt("ram", 4096)
.lt()
lt
Filter().lt("cpu_cores", 8)
.ge()
ge
Filter().ge("ram", 2048)
.le()
le
Filter().le("ram", 8192)
.and_()
y
Encadena varias condiciones
.or_()
o
Combina condiciones alternativas
Gestión de tareas asíncronas
Muchas operaciones de VergeOS — instantáneas, clones, migraciones — se ejecutan asíncronamente y devuelven un ID de tarea de inmediato. El SDK proporciona un gestor de tareas para consultar la finalización:
Si la tarea no se completa dentro del tiempo de espera, se TaskTimeoutError lanza con la task_id propiedad para que puedas comprobar el estado más tarde:
Manejo de errores
El SDK proporciona una jerarquía estructurada de excepciones para que puedas capturar modos de fallo específicos:
VergeError
Excepción base para todos los errores del SDK
AuthenticationError
Credenciales inválidas o token caducado
NotFoundError
El recurso solicitado no existe
ConflictError
Conflicto de estado del recurso (por ejemplo, la VM ya está en ejecución)
ValidationError
Valores de parámetros no válidos
TaskTimeoutError
La tarea no se completó dentro del tiempo de espera
TaskError
La tarea falló durante la ejecución
Configuración de reintentos
El SDK reintenta automáticamente los errores transitorios (HTTP 429, 500, 502, 503, 504) con retroceso exponencial:
Establece retry_total=0 para desactivar por completo los reintentos en operaciones sensibles al tiempo.
Cambio de contexto de tenant
pyvergeos puede conectarse a contextos de tenant desde el sistema anfitrión, lo que permite scripts de automatización centralizados que gestionan recursos en varios tenants:
Esto es especialmente valioso para MSPs y proveedores de servicios que necesitan automatizar el aprovisionamiento en docenas o cientos de entornos de tenant desde un único script.
Ejemplos prácticos
Gestión del ciclo de vida de las VM
Red con reglas de firewall
Operaciones masivas con filtrado
Informe de inventario multi-tenant
Notas importantes
Seguridad en subprocesos
El cliente pyvergeos no es seguro para subprocesos. Si necesitas operaciones concurrentes, crea instancias separadas de VergeClient para cada subproceso. Para cargas de trabajo verdaderamente paralelas, considera el govergeos SDK de Go, diseñado para su uso concurrente con goroutines.
Recursos adicionales
Repositorio de GitHub — Código fuente, incidencias y contribuciones
Paquete de PyPI — Última versión e historial de versiones
Última actualización
¿Te fue útil?