Python SDK for the Denvr Cloud API
Project description
denvr
A Python SDK for interacting with Denvr Cloud.
This package is largely autogenerated from our Denvr Cloud API Spec
Installation
pip install denvr
Quickstart
Getting started with the denvr
python sdk just involves loading and calling the client
builder function, which returns a Client
object for each denvr service (e.g., clusters
, vpcs
, servers/virtual
).
import json
from denvr.client import client
virtual = client('servers/virtual')
Lets start by fetching some of Denvr's VM configurations.
We'll use json.dumps
to make the output a bit easier to read.
print(json.dumps(virtual.get_configurations(), indent=2))
{
"items": [
{
"id": 5,
"user_friendly_name": "A100_40GB_PCIe_1x",
"name": "A100_40GB_PCIe_1x",
"description": null,
"os_version": "20.04",
"os_type": "Ubuntu",
"storage": 1700,
"gpu_type": "nvidia.com/A100PCIE40GB",
"gpu_family": "NVIDIA A100",
"gpu_brand": "Nvidia",
"gpu_name": "A100 40GB PCIe",
"type": "nvidia.com/A100PCIE40GB",
"brand_family": "NVIDIA A100",
"brand": "Nvidia",
"text_name": "A100 40GB PCIe",
"gpus": 1,
"vcpus": 14,
"memory": 112,
"price": 2.05,
"compute_network": null,
"is_gpu_platform": true,
"clusters": [
"Hou1",
"Msc1"
]
},
{
"id": 6,
"user_friendly_name": "A100_40GB_PCIe_2x",
"name": "A100_40GB_PCIe_2x",
"description": null,
"os_version": "20.04",
"os_type": "Ubuntu",
"storage": 3400,
"gpu_type": "nvidia.com/A100PCIE40GB",
"gpu_family": "NVIDIA A100",
"gpu_brand": "Nvidia",
"gpu_name": "A100 40GB PCIe",
"type": "nvidia.com/A100PCIE40GB",
"brand_family": "NVIDIA A100",
"brand": "Nvidia",
"text_name": "A100 40GB PCIe",
"gpus": 2,
"vcpus": 28,
"memory": 224,
"price": 4.1,
"compute_network": null,
"is_gpu_platform": true,
"clusters": [
"Hou1",
"Msc1"
]
},
...
Next we'll try Creating a new virtual machine:
print(json.dumps(
virtual.create_server(
name="api-test",
rpool="on-demand",
vpc="denvr",
configuration="H100_80GB_SXM_8x",
cluster="Hou1",
ssh_keys=["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAA..."],
operating_system_image="Ubuntu 22.04.4 LTS",
root_disk_size=500,
),
indent=2
))
{
"username": "rory@denvrdata.com",
"tenancy_name": "denvr",
"rpool": "on-demand",
"direct_attached_storage_persisted": false,
"id": "api-test",
"namespace": "denvr",
"configuration": "H100_80GB_SXM_8x",
"storage": 20000,
"gpu_type": "nvidia.com/H100SXM480GB",
"gpus": 8,
"vcpus": 200,
"memory": 940,
"ip": "",
"private_ip": "172.16.0.84",
"image": "Ubuntu_22.04.4_LTS",
"cluster": "Hou1",
"status": "na",
"storage_type": "na"
}
Similarly, we can also fetch info about a specific vm.
print(json.dumps(
virtual.get_server(
id='rofinn-intel-dev',
namespace='denvr',
cluster='Hou1'
),
indent=2
))
{
"username": "rory@denvrdata.com",
"tenancy_name": "denvr",
"rpool": "reserved-denvr",
"direct_attached_storage_persisted": false,
"id": "rofinn-intel-dev",
"namespace": "denvr",
"configuration": "15",
"storage": 27000,
"gpu_type": "intel/GAUDI2",
"gpus": 8,
"vcpus": 152,
"memory": 940,
...
"image": "habana-1.16.2",
"cluster": "Hou1",
"status": "ONLINE",
"storage_type": "na"
}
A different example using our applications service.
print(json.dumps(
app.create_catalog_application(
name="api-test",
cluster="Msc1",
hardware_package_name="g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",
application_catalog_item_name="jupyter-notebook",
application_catalog_item_version="python-3.11.9",
resource_pool="on-demand",
jupyter_token="abc123"
),
indent=2
))
{
"id": "api-test",
"cluster": "Msc1",
"status": null,
"tenant": "denvr",
"created_by": "rory@denvrdata.com",
"private_ip": "172.16.0.180",
"public_ip": "",
"resource_pool": "on-demand",
"dns": "",
"ssh_username": "",
"application_catalog_item_name": "jupyter-notebook",
"application_catalog_item_version_name": "python-3.11.9",
"hardware_package_name": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",
"persisted_direct_attached_storage": false,
"personal_shared_storage": false,
"tenant_shared_storage": false
}
print(json.dumps(app.get_applications(), indent=2))
{
"items": [
{
"id": "api-test",
"cluster": "Msc1",
"status": "ONLINE",
"tenant": "denvr",
"createdBy": "rory@denvrdata.com",
"privateIp": "172.16.0.180",
"publicIp": "130.250.171.126",
"resourcePool": "on-demand",
"dns": "https://YYC-130-250-171-126.cloud.denvrdata.com/",
"sshUsername": "",
"applicationCatalogItemName": "jupyter-notebook",
"applicationCatalogItemVersionName": "python-3.11.9",
"hardwarePackageName": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",
"persistedDirectAttachedStorage": false,
"personalSharedStorage": false,
"tenantSharedStorage": false
}
]
}
Using a Waiter
from denvr.waiters import waiter
create_app = waiter(app.create_catalog_application)
response = create_app(
name="api-test",
cluster="Msc1",
hardware_package_name="g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",
application_catalog_item_name="jupyter-notebook",
application_catalog_item_version="python-3.11.9",
resource_pool="on-demand",
jupyter_token="abc123"
)
print(json.dumps(response, indent=2))
{
"instance_details": {
"id": "api-test",
"cluster": "Msc1",
"status": "ONLINE",
"privateIp": "172.16.0.100",
"publicIp": "130.250.171.177",
"imageCmdOverride": null,
"environmentVariables": {
"USERNAME": "ubuntu",
"JUPYTER_TOKEN": "abc123",
"DIRECT_ATTACHED_STORAGE": "True"
},
"readinessWatcherPort": 443,
"createdBy": "rory.finnegan@denvrdata.com",
"tenant": "denvr",
"resourcePool": "on-demand",
"creationTime": "2025-04-09T01:15:35Z",
"lastUpdated": "2025-04-09T01:15:35+00:00",
"dns": "https://yyc-130-250-171-177.cloud.denvrdata.com/",
"persistedDirectAttachedStorage": false,
"personalSharedStorage": false,
"tenantSharedStorage": false
},
"application_catalog_item": {
"name": "jupyter-notebook",
"applicationSourceDetailsUrl": null,
"versions": [
{
"name": "python-3.11.9",
"imageUrl": "quay.io/jupyter/base-notebook:python-3.11.9",
"imageLastPushDate": "2024-07-14T07:00:00+00:00",
"platform": "NVIDIA",
"launchType": "jupyter",
"releaseNotesUrl": "https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html"
}
]
},
"hardware_package": {
"name": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",
"description": "1x A100 40 GB PCIe GPU, 14 vCPUs, 112GB RAM",
"gpuCount": 1,
"gpuType": "nvidia.com/A100PCIE40GB",
"gpuBrand": "NVIDIA",
"gpuName": "NVIDIA A100",
"vcpusCount": 14,
"memoryGb": 112,
"directAttachedStorageGb": 1700,
"pricePerHour": 1.15
}
}
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file denvr-0.4.0.tar.gz
.
File metadata
- Download URL: denvr-0.4.0.tar.gz
- Upload date:
- Size: 104.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
50abbd4a158d696b6726daf4859b8efbf7bdf3cfbd5ad40ddf158d007a427bef
|
|
MD5 |
7a25253d01432304944d9a2971f44685
|
|
BLAKE2b-256 |
f476c0d027d0216aaba3681af19b6de542a8268326acaa0418005a9a3e75ac8d
|
Provenance
The following attestation bundles were made for denvr-0.4.0.tar.gz
:
Publisher:
release.yml
on denvrdata/denvrpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1
-
Predicate type:
https://docs.pypi.org/attestations/publish/v1
-
Subject name:
denvr-0.4.0.tar.gz
-
Subject digest:
50abbd4a158d696b6726daf4859b8efbf7bdf3cfbd5ad40ddf158d007a427bef
- Sigstore transparency entry: 273945504
- Sigstore integration time:
-
Permalink:
denvrdata/denvrpy@9e9c71aae58c6914b550a6c84db2228dc8438447
-
Branch / Tag:
refs/tags/v0.4.0
- Owner: https://github.com/denvrdata
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com
-
Runner Environment:
github-hosted
-
Publication workflow:
release.yml@9e9c71aae58c6914b550a6c84db2228dc8438447
-
Trigger Event:
push
-
Statement type:
File details
Details for the file denvr-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: denvr-0.4.0-py3-none-any.whl
- Upload date:
- Size: 20.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
01f1d1a36dec13b3e3e7ce3f9f1a59f25949c2c6c41e611a643085de023d8856
|
|
MD5 |
1e5d1e586389903d8637fa973f2677c5
|
|
BLAKE2b-256 |
cc1ad08c3757f884f16d873fd3d4fe2dc7278af86f17c9693436063a6e331d46
|
Provenance
The following attestation bundles were made for denvr-0.4.0-py3-none-any.whl
:
Publisher:
release.yml
on denvrdata/denvrpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1
-
Predicate type:
https://docs.pypi.org/attestations/publish/v1
-
Subject name:
denvr-0.4.0-py3-none-any.whl
-
Subject digest:
01f1d1a36dec13b3e3e7ce3f9f1a59f25949c2c6c41e611a643085de023d8856
- Sigstore transparency entry: 273945517
- Sigstore integration time:
-
Permalink:
denvrdata/denvrpy@9e9c71aae58c6914b550a6c84db2228dc8438447
-
Branch / Tag:
refs/tags/v0.4.0
- Owner: https://github.com/denvrdata
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com
-
Runner Environment:
github-hosted
-
Publication workflow:
release.yml@9e9c71aae58c6914b550a6c84db2228dc8438447
-
Trigger Event:
push
-
Statement type: