Skip to main content

Python SDK for Apache CloudStack API

Project description

Apache CloudStack Python SDK

A Python SDK for the Apache CloudStack API that provides a simple and type-safe interface to manage resources.

Features

  • 🔐 Type-Safe - Built with Pydantic for request/response validation
  • 🚀 Async Support - Built on httpx for modern async HTTP requests
  • 📦 Easy Configuration - Simple configuration management
  • 🧪 Well Tested - Comprehensive test suite with pytest
  • 🔄 Automatic Retry - Built-in retry logic with exponential backoff
  • 🔑 Request Signing - Automatic HMAC-SHA1 request signing
  • 💻 CLI Tool - Command-line interface for quick operations

Requirements

  • Python >= 3.12

Installation

pip install py-acs-sdk

Getting Started

Basic Setup

from acs_sdk import ApacheCloudStackClient, ApacheCloudStackConfig

# Create a configuration
config = ApacheCloudStackConfig(
    endpoint="https://your-cloudstack-endpoint/api",
    api_key="your_api_key",
    api_secret="your_api_secret"
)

# Initialize the CloudStack client
client = ApacheCloudStackClient(config)

Making API Calls

# List users
response = client.call('listUsers')

# Get user with parameters
user_response = client.call('getUser', {'userid': '123'})

# Don't forget to close the client
client.close()

Async API Calls

import asyncio
from acs_sdk import ApacheCloudStackAsyncClient, ApacheCloudStackConfig

async def main():
    config = ApacheCloudStackConfig(
        endpoint="https://your-cloudstack-endpoint/api",
        api_key="your_api_key",
        api_secret="your_api_secret"
    )
    
    async with ApacheCloudStackAsyncClient(config) as client:
        response = await client.call_async('listUsers')
        print(response)

asyncio.run(main())

Command-Line Interface (CLI)

The SDK includes a CLI tool for quick operations without writing code.

Setup Environment Variables

export CLOUDSTACK_ENDPOINT="https://your-cloudstack-endpoint/api"
export CLOUDSTACK_API_KEY="your_api_key"
export CLOUDSTACK_API_SECRET="your_api_secret"

Available Commands

# List all regions
acs list-regions

# List all users
acs list-users

# View help
acs --help
acs list-regions --help

CLI Options

You can also provide options directly:

acs --endpoint "https://..." --api-key "..." --api-secret "..." list-regions

Project Structure

src/
├── acs_sdk/
│   ├── client/            # HTTP client implementation
│   ├── core/              # Retry logic and request signing
│   ├── schemas/           # Configuration schemas
│   ├── exceptions/        # Custom exceptions
│   └── cli.py             # Command-line interface
tests/
├── unit/                  # Unit tests
└── conftest.py           # Pytest configuration

Development

Setup Development Environment

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies with dev tools
pip install -e ".[dev]"

Running Tests

# Run all tests with coverage
pytest

# Run specific test file
pytest tests/unit/test_client.py

# Run with coverage report
pytest --cov=acs_sdk --cov-report=html

Code Structure

  • Client - Handles HTTP requests to Apache CloudStack API
  • Core - Retry logic and request signing utilities
  • Schemas - Pydantic models for configuration validation
  • CLI - Command-line interface for CloudStack operations

Dependencies

  • httpx (>=0.28.1) - Modern HTTP client for async support
  • pydantic (>=2.12.5) - Data validation and serialization
  • click (>=8.3.1) - Command-line interface creation

License

MIT

Author

Vimal Saini - vimal.saini25@gmail.com

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

py_acs_sdk-1.0.3.tar.gz (58.8 kB view details)

Uploaded Source

Built Distribution

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

py_acs_sdk-1.0.3-py3-none-any.whl (84.3 kB view details)

Uploaded Python 3

File details

Details for the file py_acs_sdk-1.0.3.tar.gz.

File metadata

  • Download URL: py_acs_sdk-1.0.3.tar.gz
  • Upload date:
  • Size: 58.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for py_acs_sdk-1.0.3.tar.gz
Algorithm Hash digest
SHA256 a5006b2be23cf094dd91f3f6030eda460b9b5ea4ba6573cb71f66686645d7498
MD5 1732675b289d9a134d1090f6501ffa8d
BLAKE2b-256 1e0e5bae8d7226464500a180c1339549690a0f945327061edc83f98c3fb406d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for py_acs_sdk-1.0.3.tar.gz:

Publisher: release.yml on vimal-dev/acs-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file py_acs_sdk-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: py_acs_sdk-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 84.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for py_acs_sdk-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e2caebe3d7191096180a5c392ce96ab3dab5fea95f4e34439b9b7d59ecf12ff1
MD5 e83f582e789ffd96b4e0a24d9686d97c
BLAKE2b-256 6b600bf99e54ce7125ed2c499c3b5838313ee70479a92f34b1f022f06886be47

See more details on using hashes here.

Provenance

The following attestation bundles were made for py_acs_sdk-1.0.3-py3-none-any.whl:

Publisher: release.yml on vimal-dev/acs-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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