The Python SDK for Cudo Compute distributed compute platform.
Project description
A Python SDK for interacting with the Cudo Compute REST API. Manage virtual machines, storage, networks, and other cloud resources programmatically.
Features
- ๐ Async/Await Support - Built on
httpxfor efficient async operations - ๐ Type Safe - Comprehensive type hints with Pydantic models
- ๐ฆ Full API Coverage - Complete support for VMs, storage, networking, and more
- ๐งช Well Tested - 112 tests with 78% code coverage
- ๐ Great Documentation - Detailed docs with examples
Installation
Using pip
pip install cudo-compute-sdk
Using uv (recommended)
uv add cudo-compute-sdk
Quick Start
Basic Usage
import asyncio
from cudo_compute_sdk import CudoComputeSDK
async def main():
# Initialize the SDK with your API key
sdk = CudoComputeSDK(api_key="your-api-key-here")
try:
# List all projects
projects = await sdk.list_projects()
print(f"Found {len(projects)} projects")
# List VMs in a project
vms = await sdk.list_vms(project_id="my-project")
for vm in vms:
print(f"VM: {vm.id} - State: {vm.state}")
finally:
# Clean up
await sdk.close()
asyncio.run(main())
Creating a Virtual Machine
async def create_vm_example():
sdk = CudoComputeSDK(api_key="your-api-key")
try:
vm = await sdk.create_vm(
project_id="my-project",
vm_id="my-vm-001",
data_center_id="gb-bournemouth-1",
machine_type="standard",
boot_disk_image_id="ubuntu-2204-lts",
vcpus=2,
memory_gib=4,
gpus=0,
ssh_key_source="SSH_KEY_SOURCE_USER"
)
print(f"Created VM: {vm.id}")
print(f"IP Address: {vm.external_ip_address}")
finally:
await sdk.close()
Managing Storage
async def storage_example():
sdk = CudoComputeSDK(api_key="your-api-key")
try:
# Create a disk
disk = await sdk.create_disk(
project_id="my-project",
disk_id="data-disk-001",
data_center_id="gb-bournemouth-1",
size_gib=100
)
# Attach to VM
await sdk.attach_disk(
project_id="my-project",
disk_id="data-disk-001",
vm_id="my-vm-001"
)
print(f"Created and attached disk: {disk.id}")
finally:
await sdk.close()
API Key Setup
- Log in to Cudo Compute
- Navigate to your account settings
- Generate an API key
- Set it as an environment variable:
export CUDO_API_KEY="your-api-key-here"
Then use it in your code:
import os
from cudo_compute_sdk import CudoComputeSDK
sdk = CudoComputeSDK(api_key=os.getenv("CUDO_API_KEY"))
Documentation
Visit the full project documentation: Cudo Compute SDK Docs
Key Sections
- Installation Guide - Detailed setup instructions
- Usage Examples - Common use cases and examples
- API Reference - Complete API documentation
- Architecture - SDK design and patterns
- Troubleshooting - Common issues and solutions
Supported Operations
Virtual Machines
- Create, start, stop, reboot, terminate VMs
- Resize VMs (CPU, memory)
- List and get VM details
- Connect via web console
- Monitor VM metrics
Data Centers & Machine Types
- List available data centers
- Get machine type specifications
- Query pricing information
Storage
- Create and manage disks
- Attach/detach disks to VMs
- Create and manage NFS volumes
- Manage VM images (public and private)
Networking
- Create and manage virtual networks
- Configure security groups and rules
- Manage SSH keys
Projects & Billing
- List and manage projects
- View billing account information
Development
Setup Development Environment
# Clone the repository
git clone https://github.com/vantagecompute/cudo-compute-sdk.git
cd cudo-compute-sdk
# Install dependencies
uv sync --extra dev
# Run tests
just unit
# Run type checking
just typecheck
# Format code
just fmt
# Run linter
just lint
Running Tests
# Run all unit tests with coverage
just unit
# Run tests with verbose output
uv run pytest tests/unit -v
# Run specific test file
uv run pytest tests/unit/test_sdk.py -v
Project Structure
cudo-compute-sdk/
โโโ cudo_compute_sdk/
โ โโโ __init__.py # Main SDK implementation
โ โโโ schema.py # Pydantic models for API data
โโโ tests/
โ โโโ unit/
โ โโโ test_sdk.py # SDK method tests
โ โโโ test_schema.py # Schema model tests
โโโ docusaurus/ # Documentation site
โโโ justfile # Development task runner
โโโ pyproject.toml # Project configuration
โโโ README.md
Contributing
We welcome contributions! Here's how to get started:
-
Fork the repository
git clone https://github.com/your-username/cudo-compute-sdk.git
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Write tests for new functionality
- Ensure all tests pass:
just unit - Run type checking:
just typecheck - Format code:
just fmt
-
Commit your changes
git commit -m "feat: add your feature description"
-
Push and create a Pull Request
git push origin feature/your-feature-name
Coding Standards
- Python 3.12+ required
- Type hints on all public methods
- Docstrings for all public methods (Google style)
- Tests for all new functionality
- 80%+ test coverage for new code
Development Commands
just unit # Run unit tests with coverage
just typecheck # Run static type checking
just fmt # Format code with ruff
just lint # Run linters (codespell + ruff)
just docs-dev # Start documentation dev server
just docs-build # Build documentation
Requirements
- Python 3.12 or higher
- Dependencies:
httpx>= 0.28.1 (async HTTP client)pydantic>= 2.0.0 (data validation)
License
This project is licensed under the Apache License 2.0.
See the LICENSE file for details.
Key Points
- โ Free to use, modify, and distribute
- โ Commercial use permitted
- โ Patent rights granted
- โ Must include license and copyright notice
- โ Changes must be documented
Support
- ๐ Documentation: https://vantagecompute.github.io/cudo-compute-sdk
- ๐ Bug Reports: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- ๐ง Email: support@vantagecompute.ai
Acknowledgments
Built with:
- httpx - Async HTTP client
- Pydantic - Data validation
- pytest - Testing framework
- Docusaurus - Documentation
Copyright
Copyright 2025 Vantage Compute Corporation
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Made with โค๏ธ by Vantage Compute
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cudo_compute_sdk-0.0.2.tar.gz.
File metadata
- Download URL: cudo_compute_sdk-0.0.2.tar.gz
- Upload date:
- Size: 43.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b09602cfd96e0084923c7b3189815b9fceb243b3a8e7b2757a17f8554418b6ff
|
|
| MD5 |
5c21bba06746843ec2b3a8dafd5a54c3
|
|
| BLAKE2b-256 |
08630ffbcc9d2711498fd27e036a35abb2f5ef191d0460e43969d4430d4fade1
|
File details
Details for the file cudo_compute_sdk-0.0.2-py3-none-any.whl.
File metadata
- Download URL: cudo_compute_sdk-0.0.2-py3-none-any.whl
- Upload date:
- Size: 21.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb9af22a1002e4169b14bc5ebb9ebcc10550c4e099bd0eb2d7b2646092e2c0c4
|
|
| MD5 |
8c35ed8512c1911b45be1b8b07672aec
|
|
| BLAKE2b-256 |
4b5ff7cf7939b39f5aee0c93c0dffb1c786730e70fce7f2aa55dab17eae7b81f
|