For the complete documentation index, see llms.txt. This page is also available as Markdown.

Python SDK (pyvergeos)

Tự động hóa hạ tầng VergeOS với Python SDK pyvergeos — vòng đời VM, mạng, đa tenant, lưu trữ và khôi phục sau thảm họa từ các script Python.

Tính năng pyvergeos SDK cung cấp một giao diện kiểu Python, có chú thích kiểu cho toàn bộ VergeOS REST API. Thay vì tạo các yêu cầu HTTP thô, bạn làm việc với các trình quản lý tài nguyênclient.vms, client.networks, client.tenants — ánh xạ trực tiếp đến các đối tượng VergeOS. SDK xử lý xác thực, phân trang, thử lại và thăm dò tác vụ bất đồng bộ để các script tự động hóa của bạn luôn gọn gàng và tập trung vào logic nghiệp vụ.

Yêu cầu & Cài đặt

Điều kiện tiên quyết:

  • Python 3.9 hoặc mới hơn

  • VergeOS 26.0 hoặc mới hơn

  • Hoạt động trên Windows, macOS và Linux

Cài đặt từ PyPI (khuyến nghị):

pip install pyvergeos

Hoặc với uv (lựa chọn nhanh hơn):

uv add pyvergeos

Từ mã nguồn (phát triển):

git clone https://github.com/verge-io/pyvergeos.git
cd pyvergeos
pip install .

Xác thực

SDK hỗ trợ ba phương thức xác thực, mỗi phương thức phù hợp với các môi trường khác nhau.

Tên người dùng & Mật khẩu

Cách đơn giản nhất cho script tương tác và phát triển:

API Token

Cho tự động hóa sản xuất khi bạn có sẵn một API key đã tạo trước:

Biến môi trường

Cách được khuyến nghị cho môi trường sản xuất — giữ thông tin xác thực ngoài mã nguồn:

Trình quản lý ngữ cảnh

Luôn dùng trình quản lý ngữ cảnh trong mã sản xuất để đảm bảo kết nối được đóng đúng cách, ngay cả khi có ngoại lệ xảy ra:

Trình quản lý tài nguyên

Mỗi loại tài nguyên VergeOS đều được hiển thị thông qua một trình quản lý tài nguyên trên đối tượng client. Mỗi trình quản lý cung cấp list(), get(), create()và các phương thức hành động.

Máy ảo

client.vms — Tạo, cấu hình, điều khiển nguồn, nhân bản, snapshot và quản lý ổ đĩa/NIC cho VM.

Mạng

client.networks — Mạng ảo, quy tắc tường lửa, DHCP, DNS và quản lý nguồn mạng.

Tenants

client.tenants — Cấp phát đa thuê bao, cô lập tài nguyên, snapshot, khối lưu trữ và khối mạng.

NAS & Lưu trữ

client.nas — Dịch vụ NAS, volume, chia sẻ CIFS/NFS và đồng bộ volume.

Khôi phục sau thảm họa

client.dr — Snapshot đám mây, đồng bộ site và quy trình khôi phục.

Người dùng & Nhóm

client.users — Tài khoản người dùng, nhóm, quyền và quản lý khóa API.

Tác vụ & Giám sát

client.tasks — Theo dõi tác vụ bất đồng bộ, chờ đợi, thời gian chờ. Ngoài ra: cảnh báo và nhật ký.

Hệ thống & GPU

client.clusters, client.nodes, client.gpu — Thông tin cụm/nút, các tầng lưu trữ, quản lý thiết bị GPU.

Bảng tài nguyên đầy đủ

Danh mục
Tài nguyên khả dụng

Máy ảo

VM, ổ đĩa, NIC, snapshot

Mạng

Mạng, quy tắc tường lửa, DNS, DHCP, bí danh, máy chủ

VPN

Kết nối IPSec, giao diện và peer WireGuard

NAS/Lưu trữ

Dịch vụ NAS, volume, chia sẻ CIFS/NFS, đồng bộ volume

Tenants

Quản lý tenant, snapshot, khối lưu trữ, khối mạng

Người dùng & Nhóm

Người dùng, nhóm, quyền, khóa API

Hệ thống

Cụm, nút, các tầng lưu trữ, chứng chỉ

Giám sát

Cảnh báo, nhật ký, tác vụ

Sao lưu & DR

Hồ sơ snapshot, snapshot đám mây, site, đồng bộ site

Lọc tài nguyên

SDK cung cấp ba cách để lọc tài nguyên, từ các tham số từ khóa đơn giản đến một trình tạo bộ lọc OData đầy đủ.

Tham số từ khóa

Cách đơn giản nhất cho các bộ lọc cơ bản — truyền trực tiếp tên trường:

Chuỗi lọc OData

Đối với các truy vấn phức tạp, hãy truyền trực tiếp biểu thức lọc OData:

Trình tạo bộ lọc (Fluent API)

Xây dựng bộ lọc bằng lập trình với an toàn kiểu và tự động hoàn thành:

Các toán tử lọc khả dụng:

Phương thức
Toán tử OData
Ví dụ

.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_()

Nối nhiều điều kiện

.or_()

hoặc

Kết hợp các điều kiện thay thế

Xử lý tác vụ bất đồng bộ

Nhiều thao tác VergeOS — snapshot, nhân bản, di chuyển — chạy bất đồng bộ và trả về ngay một task ID. SDK cung cấp trình quản lý tác vụ để thăm dò trạng thái hoàn thành:

Nếu tác vụ không hoàn thành trong thời gian chờ, TaskTimeoutError sẽ được ném ra cùng với thuộc tính task_id để bạn có thể kiểm tra trạng thái sau:

Xử lý lỗi

SDK cung cấp một hệ thống ngoại lệ có cấu trúc để bạn có thể bắt các chế độ lỗi cụ thể:

Ngoại lệ
Mô tả

VergeError

Ngoại lệ cơ sở cho mọi lỗi của SDK

AuthenticationError

Thông tin xác thực không hợp lệ hoặc token đã hết hạn

NotFoundError

Tài nguyên được yêu cầu không tồn tại

ConflictError

Xung đột trạng thái tài nguyên (ví dụ: VM đã chạy)

ValidationError

Giá trị tham số không hợp lệ

TaskTimeoutError

Tác vụ không hoàn thành trong thời gian chờ

TaskError

Tác vụ thất bại trong quá trình thực thi

Cấu hình thử lại

SDK tự động thử lại các lỗi tạm thời (HTTP 429, 500, 502, 503, 504) với cơ chế backoff lũy tiến:

Đặt retry_total=0 để tắt hoàn toàn việc thử lại cho các thao tác nhạy cảm về thời gian.

Chuyển đổi ngữ cảnh Tenant

pyvergeos có thể kết nối vào các ngữ cảnh tenant từ hệ thống host, cho phép các script tự động hóa tập trung quản lý tài nguyên trên nhiều tenant:

Điều này đặc biệt hữu ích cho Các MSP và nhà cung cấp dịch vụ cần tự động hóa việc cấp phát trên hàng chục hoặc hàng trăm môi trường tenant từ một script duy nhất.

Ví dụ thực tế

Quản lý vòng đời VM

Mạng với quy tắc tường lửa

Thao tác hàng loạt với lọc

Báo cáo kiểm kê đa tenant

Ghi chú quan trọng

Bạn đang chuyển từ VMware hay Nutanix?

pyvergeos cung cấp ba mẫu sử dụng đáng biết ngay từ đầu:

  • Lọc — một Filter() fluent tạo ra các biểu thức kiểu OData (.eq(), .gt(), .and_(), .or_()), hoặc bạn có thể truyền một chuỗi OData thô vào list(filter=...).

  • Thăm dò tác vụ — các thao tác bất đồng bộ trả về một tham chiếu tác vụ; client.tasks.wait(task_id, timeout=...) chặn cho đến khi hoàn tất và ném TaskTimeoutError khi hết thời gian chờ.

  • Ngữ cảnh tenanttenant.connect() trả về một client nằm trong phạm vi tenant, vì vậy cùng một script có thể điều khiển hệ thống host và bất kỳ tenant con nào mà không cần kết nối lại tới một endpoint khác.

Tài nguyên bổ sung

Cập nhật lần cuối

Nội dung này có hữu ích không?