Skip to main content

Python SDK for the VergeOS REST API

Project description

pyvergeos

Python SDK for the VergeOS REST API.

PyPI version Python 3.9+ License: MIT

Overview

pyvergeos provides a Pythonic interface for managing VergeOS infrastructure. It abstracts the VergeOS REST API behind a clean, type-annotated SDK suitable for automation, tooling, and integration development.

Installation

pip install pyvergeos

# Or with uv
uv add pyvergeos

Quick Start

from pyvergeos import VergeClient

# Connect to VergeOS
client = VergeClient(
    host="192.168.1.100",
    username="admin",
    password="secret",
    verify_ssl=False  # For self-signed certificates
)

# List all VMs
for vm in client.vms.list():
    print(f"{vm.name}: {vm.ram}MB RAM, {vm.cpu_cores} cores")

# Get a specific VM
vm = client.vms.get(name="web-server")

# Power operations
vm.power_on()
vm.power_off()

# Create a VM
new_vm = client.vms.create(
    name="test-vm",
    ram=2048,
    cpu_cores=2,
    os_family="linux"
)

# Cleanup
client.disconnect()

Context Manager

with VergeClient(host="192.168.1.100", token="api-token") as client:
    vms = client.vms.list_running()

Authentication

Username/Password

client = VergeClient(
    host="192.168.1.100",
    username="admin",
    password="secret"
)

API Token

client = VergeClient(
    host="192.168.1.100",
    token="your-api-token"
)

Environment Variables

export VERGE_HOST=192.168.1.100
export VERGE_USERNAME=admin
export VERGE_PASSWORD=secret
client = VergeClient.from_env()

Features

Virtual Machines

# List, filter, create, update, delete
vms = client.vms.list(os_family="linux", name="web-*")
vm = client.vms.create(name="test", ram=2048, cpu_cores=2)

# Power operations
vm.power_on()
vm.power_off()
vm.reset()

# Snapshots
vm.snapshot(retention=86400, quiesce=True)

# Clone
clone = vm.clone(name="test-clone")

# Drives and NICs
vm.drives.add(name="data", size=50*1024*1024*1024)
vm.nics.add(network=network.key)

Networks

# Create and manage virtual networks
network = client.networks.create(
    name="app-network",
    network_address="10.10.1.0/24",
    ip_address="10.10.1.1",
    dhcp_enabled=True
)

network.power_on()
network.apply_rules()

# Firewall rules
network.rules.create(name="Allow SSH", action="accept", protocol="tcp", dest_port=22)

Tenants

tenant = client.tenants.create(name="customer-a")
tenant.power_on()

Filtering

# Keyword arguments
vms = client.vms.list(status="running", name="prod-*")

# OData filter string
vms = client.vms.list(filter="os_family eq 'linux' and ram gt 2048")

# Filter builder
from pyvergeos.filters import Filter
f = Filter().eq("os_family", "linux").and_().gt("ram", 2048)
vms = client.vms.list(filter=str(f))

Task Waiting

result = vm.snapshot()
task = client.tasks.wait(result["task"], timeout=300)

Error Handling

from pyvergeos.exceptions import NotFoundError, AuthenticationError, TaskTimeoutError

try:
    vm = client.vms.get(name="nonexistent")
except NotFoundError:
    print("VM not found")

try:
    task = client.tasks.wait(task_id, timeout=60)
except TaskTimeoutError as e:
    print(f"Task {e.task_id} timed out")

Requirements

  • Python 3.9+
  • VergeOS 26.0+

License

MIT License - see LICENSE for details.

Contributing

Contributions welcome! Please read the contributing guidelines before submitting PRs.

Related Projects

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

pyvergeos-0.1.0.tar.gz (494.5 kB view details)

Uploaded Source

Built Distribution

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

pyvergeos-0.1.0-py3-none-any.whl (235.8 kB view details)

Uploaded Python 3

File details

Details for the file pyvergeos-0.1.0.tar.gz.

File metadata

  • Download URL: pyvergeos-0.1.0.tar.gz
  • Upload date:
  • Size: 494.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.15

File hashes

Hashes for pyvergeos-0.1.0.tar.gz
Algorithm Hash digest
SHA256 105014b0b8a548b907c5869bff24fcfaf4251838d076609286d1fe5c26432347
MD5 5a5336e8233572422f680caf85236729
BLAKE2b-256 73e486ecbf1eb9204b9756d648b0b3cbc7a399d79f021517c09d825957566ed0

See more details on using hashes here.

File details

Details for the file pyvergeos-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pyvergeos-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 235.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.15

File hashes

Hashes for pyvergeos-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7cf995f05f1e9f679aff042a71966c89659f11ab2a433d23d7f07117c9ccc7e0
MD5 47dac0eef3327008bdb308a938a285d7
BLAKE2b-256 dfeb227898959a329815cebc7b913fb941295ddd5599bba994264a2fdd48788b

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