SDK Python (pyvergeos)
Automatisez l’infrastructure VergeOS avec le SDK Python pyvergeos — cycle de vie des VM, réseau, multi-locataire, stockage et reprise après sinistre depuis des scripts Python.
Le pyvergeos Le SDK fournit une interface typée, de style Python, pour l’ensemble de l’API REST VergeOS. Plutôt que de créer des requêtes HTTP brutes, vous travaillez avec des gestionnaires de ressources — client.vms, client.networks, client.tenants — qui correspondent directement aux objets VergeOS. Le SDK gère l’authentification, la pagination, les nouvelles tentatives et le sondage des tâches asynchrones afin que vos scripts d’automatisation restent propres et centrés sur la logique métier.
Prérequis et installation
Prérequis :
Python 3.9 ou version ultérieure
VergeOS 26.0 ou version ultérieure
Fonctionne sur Windows, macOS et Linux
Installer depuis PyPI (recommandé) :
pip install pyvergeosOu avec uv (alternative plus rapide) :
uv add pyvergeosDepuis les sources (développement) :
git clone https://github.com/verge-io/pyvergeos.git
cd pyvergeos
pip install .Authentification
Le SDK prend en charge trois méthodes d’authentification, chacune adaptée à des environnements différents.
Nom d’utilisateur et mot de passe
L’approche la plus simple pour les scripts interactifs et le développement :
Jeton API
Pour l’automatisation en production, lorsque vous disposez d’une clé API pré-générée :
Variables d’environnement
L’approche recommandée pour la production — elle garde les identifiants hors du code स्रोत :
Gestionnaire de contexte
Utilisez toujours le gestionnaire de contexte dans le code de production afin de garantir que les connexions sont correctement fermées, même lorsque des exceptions se produisent :
Gestionnaires de ressources
Chaque type de ressource VergeOS est exposé via un gestionnaire de ressources sur l’objet client. Chaque gestionnaire fournit des méthodes cohérentes list(), get(), create(), et des méthodes d’action.
Machines virtuelles
client.vms — Crée, configure, contrôle l’alimentation, clone, prend des instantanés et gère les disques/cartes réseau des VM.
Réseaux
client.networks — Réseaux virtuels, règles de pare-feu, DHCP, DNS et gestion de l’alimentation du réseau.
Locataires
client.tenants — Provisioning multi-locataire, isolement des ressources, instantanés, blocs de stockage et blocs réseau.
NAS et stockage
client.nas — Services NAS, volumes, partages CIFS/NFS et synchronisation des volumes.
Récupération après sinistre
client.dr — Instantanés cloud, synchronisation des sites et workflows de récupération.
Utilisateurs et groupes
client.users — Comptes utilisateurs, groupes, permissions et gestion des clés API.
Tâches et supervision
client.tasks — Suivi asynchrone des tâches, attente, délais d’expiration. Aussi : alarmes et journaux.
Système et GPU
client.clusters, client.nodes, client.gpu — Informations sur les clusters/nœuds, niveaux de stockage, gestion des périphériques GPU.
Table complète des ressources
Machines virtuelles
VM, disques, cartes réseau, instantanés
Réseau
Réseaux, règles de pare-feu, DNS, DHCP, alias, hôtes
VPN
Connexions IPSec, interfaces et pairs WireGuard
NAS/Stockage
Services NAS, volumes, partages CIFS/NFS, synchronisations de volumes
Locataires
Gestion des locataires, instantanés, blocs de stockage, blocs réseau
Utilisateurs et groupes
Utilisateurs, groupes, permissions, clés API
Système
Clusters, nœuds, niveaux de stockage, certificats
Surveillance
Alarmes, journaux, tâches
Sauvegarde et reprise après sinistre
Profils d’instantanés, instantanés cloud, sites, synchronisations de sites
Filtrage des ressources
Le SDK propose trois approches pour filtrer les ressources, des simples arguments de mot-clé à un constructeur de filtres OData complet.
Arguments de mots-clés
L’approche la plus simple pour les filtres de base — passez directement les noms de champs :
Chaînes de filtre OData
Pour les requêtes complexes, passez des expressions de filtre OData brutes :
Constructeur de filtres (API fluide)
Construisez des filtres par programme avec sécurité de type et auto-complétion :
Opérateurs de filtre 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_()
et
Enchaîner plusieurs conditions
.or_()
ou
Combiner des conditions alternatives
Gestion des tâches asynchrones
De nombreuses opérations VergeOS — instantanés, clones, migrations — s’exécutent de manière asynchrone et renvoient immédiatement un ID de tâche. Le SDK fournit un gestionnaire de tâches pour interroger l’achèvement :
Si la tâche ne se termine pas avant l’expiration du délai, une TaskTimeoutError est levée avec la task_id propriété afin que vous puissiez vérifier l’état plus tard :
Gestion des erreurs
Le SDK fournit une hiérarchie structurée d’exceptions afin que vous puissiez intercepter des modes d’échec spécifiques :
VergeError
Exception de base pour toutes les erreurs du SDK
AuthenticationError
Identifiants invalides ou jeton expiré
NotFoundError
La ressource demandée n’existe pas
ConflictError
Conflit d’état de la ressource (par ex., VM déjà en cours d’exécution)
ValidationError
Valeurs de paramètres invalides
TaskTimeoutError
La tâche ne s’est pas terminée avant l’expiration du délai
TaskError
La tâche a échoué pendant l’exécution
Configuration des nouvelles tentatives
Le SDK réessaie automatiquement les erreurs transitoires (HTTP 429, 500, 502, 503, 504) avec une temporisation exponentielle :
Définissez retry_total=0 pour désactiver complètement les nouvelles tentatives pour les opérations sensibles au temps.
Changement de contexte de locataire
pyvergeos peut se connecter dans des contextes de locataire depuis le système hôte, ce qui permet des scripts d’automatisation centralisés qui gèrent des ressources sur plusieurs locataires :
C’est particulièrement utile pour Les MSP et les fournisseurs de services qui doivent automatiser le provisioning sur des dizaines ou des centaines d’environnements locataires à partir d’un seul script.
Exemples pratiques
Gestion du cycle de vie des VM
Réseau avec règles de pare-feu
Opérations en masse avec filtrage
Rapport d’inventaire multi-locataire
Remarques importantes
Sécurité des threads
Le client pyvergeos n’est pas sûr pour les threads. Si vous avez besoin d’opérations concurrentes, créez des VergeClient instances séparées pour chaque thread. Pour de véritables charges de travail parallèles, envisagez le SDK Go govergeos qui est conçu pour une utilisation concurrente avec des goroutines.
Ressources supplémentaires
Dépôt GitHub — code source, problèmes et contributions
Paquet PyPI — dernière version publiée et historique des versions
Mis à jour
Ce contenu vous a-t-il été utile ?