Skip to main content

CloudStack Proxmox VE Extension

Tests PyPI Python versions

An Apache CloudStack Orchestrator extension that manages virtual machines on Proxmox VE.

CloudStack invokes the extension as a command line program, passing an action and the path to a JSON payload; the extension talks to the Proxmox API and writes a single JSON document to stdout. Everything is implemented on top of the Python standard library, so the extension has no runtime dependencies and runs with the management server's system interpreter.

Installation

pip install cloudstack-extension-proxmox-ngine

This provides the cloudstack-extension-proxmox command. CloudStack expects to find an executable inside the extension directory, so link the command into place:

mkdir -p /usr/share/cloudstack-management/extensions/Proxmox-Ngine
ln -s "$(command -v cloudstack-extension-proxmox)" \
      /usr/share/cloudstack-management/extensions/Proxmox-Ngine/proxmox.sh

Register the extension in CloudStack (Extensions → Add Extension, type Orchestrator) and add the Proxmox connection details as extension or host details.

Usage

cloudstack-extension-proxmox <action> <payload.json> [timeout-seconds]
Action Description
prepare Reserve the next free VM ID and return it as proxmox_vmid
create Clone a template or install from an ISO, attach the NICs and start the VM
start, stop, reboot, delete Power and lifecycle operations
status, statuses Power state of one VM, or of every VM on the node
getconsole Issue a one time VNC ticket for the console proxy
listsnapshots, createsnapshot, restoresnapshot, deletesnapshot Snapshot management

stop and delete are idempotent: a VM that no longer exists is reported as success.

Payload

The payload is written by CloudStack. The fields the extension reads are:

Path Meaning
externaldetails.host.url / .extension.url Proxmox API base URL (host wins)
externaldetails.host.user, .token, .secret API token credentials
externaldetails.host.node Proxmox node name
externaldetails.host.network_bridge Bridge the VM NICs attach to
externaldetails.host.verify_tls_certificate Verify the API certificate (default true)
externaldetails.virtualmachine.template_type ISO or anything else for a template clone
externaldetails.virtualmachine.template_id Template VM ID to clone
externaldetails.virtualmachine.iso_path, .iso_os_type, .disk_size_gb ISO installation
externaldetails.virtualmachine.storage, .is_full_clone Storage and clone mode
cloudstack.vm.details VM name, CPU, memory and NICs from the service offering
parameters.snap_name, .snap_description, .snap_save_memory Snapshot action inputs

As a library

from cloudstack_extension_proxmox_ngine import ProxmoxManager

manager = ProxmoxManager.from_config_file("payload.json")
print(manager.status())
# {'status': 'success', 'power_state': 'poweron'}

Operations return the CloudStack result document and raise ProxmoxError on failure.

Development

The project uses uv:

uv sync --group dev
uv run pytest              # tests with coverage
uv run black --check .     # formatting
uv run ruff check .        # linting
uv run mypy                # type checking

Pull requests run the same checks on Python 3.10 through 3.14.

License

Apache License 2.0 — see LICENSE.

Metadata

Release files for cloudstack-extension-proxmox-ngine 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cloudstack-extension-proxmox-ngine 0.2.0
File Size Uploaded
cloudstack_extension_proxmox_ngine-0.2.0.tar.gz 25.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cloudstack-extension-proxmox-ngine 0.2.0
File Interpreter ABI Platform
cloudstack_extension_proxmox_ngine-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 49.9 kB

Release files / cloudstack_extension_proxmox_ngine-0.2.0.tar.gz

Download URL cloudstack_extension_proxmox_ngine-0.2.0.tar.gz
Size 25.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1c9b717c1e6c767debfcb0de0045aa7b279162352acb1a50f93ae1e93a5e9ecc
BLAKE2b-256 checksum
How to use checksums
fc2991f23585610c0a9d4286aa43a39698c18d19a657980cc819f6e9ba7878f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / cloudstack_extension_proxmox_ngine-0.2.0-py3-none-any.whl

Download URL cloudstack_extension_proxmox_ngine-0.2.0-py3-none-any.whl
Size 24.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2a5fb3bf88c9784b936edddfd70730e23aeae7b02770448e9c5a5a7e5f3429d5
BLAKE2b-256 checksum
How to use checksums
0607c3a8af57b2d83a1408ae2161769339281f05ae6f5ed0f8267394a8137d04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page