Python-SDK (pyvergeos)
Automatisieren Sie die VergeOS-Infrastruktur mit dem pyvergeos-Python-SDK — VM-Lebenszyklus, Netzwerk, Multi-Tenancy, Speicher und Disaster Recovery aus Python-Skripten heraus.
Das pyvergeos Das SDK bietet eine Python-ähnliche, typannotierte Schnittstelle für die gesamte VergeOS-REST-API. Anstatt rohe HTTP-Anfragen zu erstellen, arbeiten Sie mit Ressourcenmanagern — client.vms, client.networks, client.tenants — die direkt auf VergeOS-Objekte abgebildet werden. Das SDK übernimmt Authentifizierung, Paginierung, Wiederholungsversuche und das Polling asynchroner Aufgaben, damit Ihre Automatisierungsskripte sauber und auf die Geschäftslogik fokussiert bleiben.
Voraussetzungen & Installation
Voraussetzungen:
Python 3.9 oder höher
VergeOS 26.0 oder höher
Läuft auf Windows, macOS und Linux
Installation von PyPI (empfohlen):
pip install pyvergeosOder mit uv (schnellere Alternative):
uv add pyvergeosAus dem Quellcode (Entwicklung):
git clone https://github.com/verge-io/pyvergeos.git
cd pyvergeos
pip install .Authentifizierung
Das SDK unterstützt drei Authentifizierungsmethoden, die jeweils für unterschiedliche Umgebungen geeignet sind.
Benutzername & Passwort
Der einfachste Ansatz für interaktive Skripte und die Entwicklung:
API-Token
Für Produktionsautomatisierung, wenn Sie einen vorab erzeugten API-Schlüssel haben:
Umgebungsvariablen
Der empfohlene Ansatz für die Produktion — hält Zugangsdaten aus dem Quellcode heraus:
Kontextmanager
Verwenden Sie in Produktionscode immer den Kontextmanager, um sicherzustellen, dass Verbindungen ordnungsgemäß geschlossen werden, auch wenn Ausnahmen auftreten:
Ressourcenmanager
Jeder VergeOS-Ressourcentyp wird über einen Ressourcenmanager am Client-Objekt bereitgestellt. Jeder Manager bietet konsistente list(), get(), create()- und Aktionsmethoden.
Virtuelle Maschinen
client.vms — VMs erstellen, konfigurieren, ein-/ausschalten, klonen, Snapshots erstellen und Laufwerke/NICs verwalten.
Netzwerke
client.networks — Virtuelle Netzwerke, Firewall-Regeln, DHCP, DNS und Netzwerk-Energieverwaltung.
Mandanten
client.tenants — Mandantenübergreifende Bereitstellung, Ressourcenisolierung, Snapshots, Speicher- und Netzwerkblöcke.
NAS & Speicher
client.nas — NAS-Dienste, Volumes, CIFS/NFS-Freigaben und Volumesynchronisierung.
Notfallwiederherstellung
client.dr — Cloud-Snapshots, Standort-Synchronisierung und Wiederherstellungs-Workflows.
Benutzer & Gruppen
client.users — Benutzerkonten, Gruppen, Berechtigungen und API-Schlüsselverwaltung.
Aufgaben & Monitoring
client.tasks — Verfolgung asynchroner Aufgaben, Warten, Timeouts. Außerdem: Alarme und Protokolle.
System & GPU
client.clusters, client.nodes, client.gpu — Cluster-/Knoteninformationen, Speicherebenen, GPU-Geräteverwaltung.
Vollständige Ressourcentabelle
Virtuelle Maschinen
VMs, Laufwerke, NICs, Snapshots
Netzwerk
Netzwerke, Firewall-Regeln, DNS, DHCP, Aliase, Hosts
VPN
IPSec-Verbindungen, WireGuard-Schnittstellen und Peers
NAS/Speicher
NAS-Dienste, Volumes, CIFS/NFS-Freigaben, Volumesynchronisierungen
Mandanten
Mandantenverwaltung, Snapshots, Speicherblöcke, Netzwerkblöcke
Benutzer & Gruppen
Benutzer, Gruppen, Berechtigungen, API-Schlüssel
System
Cluster, Knoten, Speicherebenen, Zertifikate
Überwachung
Alarme, Protokolle, Aufgaben
Backup & DR
Snapshot-Profile, Cloud-Snapshots, Standorte, Standort-Synchronisierungen
Ressourcen filtern
Das SDK bietet drei Ansätze zum Filtern von Ressourcen, von einfachen Schlüsselwortargumenten bis hin zu einem vollständigen OData-Filter-Builder.
Schlüsselwortargumente
Der einfachste Ansatz für grundlegende Filter — Feldnamen direkt übergeben:
OData-Filterzeichenfolgen
Für komplexe Abfragen rohe OData-Filterausdrücke übergeben:
Filter-Builder (Fluent API)
Filter programmgesteuert mit Typsicherheit und Autovervollständigung erstellen:
Verfügbare Filteroperatoren:
.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_()
und
Mehrere Bedingungen verketten
.or_()
oder
Alternative Bedingungen kombinieren
Asynchrone Aufgabenverarbeitung
Viele VergeOS-Operationen — Snapshots, Klone, Migrationen — laufen asynchron und geben sofort eine Aufgaben-ID zurück. Das SDK stellt einen Aufgabenmanager zum Abfragen des Abschlusses bereit:
Wenn die Aufgabe innerhalb des Timeouts nicht abgeschlossen wird, wird ein TaskTimeoutError ausgelöst, mit der task_id -Eigenschaft, damit Sie den Status später prüfen können:
Fehlerbehandlung
Das SDK bietet eine strukturierte Ausnahmehierarchie, sodass Sie bestimmte Fehlermodi gezielt abfangen können:
VergeError
Basisausnahme für alle SDK-Fehler
AuthenticationError
Ungültige Anmeldedaten oder abgelaufenes Token
NotFoundError
Angeforderte Ressource existiert nicht
ConflictError
Konflikt im Ressourcenstatus (z. B. VM läuft bereits)
ValidationError
Ungültige Parameterwerte
TaskTimeoutError
Aufgabe wurde nicht innerhalb des Timeouts abgeschlossen
TaskError
Aufgabe ist während der Ausführung fehlgeschlagen
Retry-Konfiguration
Das SDK wiederholt vorübergehende Fehler automatisch (HTTP 429, 500, 502, 503, 504) mit exponentiellem Backoff:
Setzen Sie retry_total=0 um Wiederholungen für zeitkritische Vorgänge vollständig zu deaktivieren.
Mandanten-Kontextwechsel
pyvergeos kann in Mandantenkontexte verbinden vom Host-System aus und ermöglicht zentrale Automatisierungsskripte, die Ressourcen über mehrere Mandanten hinweg verwalten:
Dies ist besonders wertvoll für MSPs und Dienstanbieter die die Bereitstellung über Dutzende oder Hunderte von Mandantenumgebungen mit einem einzigen Skript automatisieren müssen.
Praktische Beispiele
Verwaltung des VM-Lebenszyklus
Netzwerk mit Firewall-Regeln
Massenoperationen mit Filterung
Mandantenübergreifender Inventarbericht
Wichtige Hinweise
Thread-Sicherheit
Der pyvergeos-Client ist nicht threadsicher. Wenn Sie parallele Vorgänge benötigen, erstellen Sie separate VergeClient -Instanzen für jeden Thread. Für wirklich parallele Workloads sollten Sie das govergeos Go-SDK in Betracht ziehen, das für die gleichzeitige Nutzung mit Goroutinen ausgelegt ist.
Zusätzliche Ressourcen
GitHub-Repository — Quellcode, Issues und Beiträge
PyPI-Paket — Neueste Version und Versionsverlauf
Zuletzt aktualisiert
War das hilfreich?