Skip to main content

denvr

A Python SDK for interacting with Denvr Cloud.

GitHub Actions Workflow Status Coveralls Swagger Validator Denvrpy Docs Denvr Dataworks Docs Denvr Dataworks Registration


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
  }
}

Release files for denvr 0.5.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 denvr 0.5.0
File Size Uploaded
denvr-0.5.0.tar.gz 105.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for denvr 0.5.0
File Interpreter ABI Platform
denvr-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 125.8 kB

Release files / denvr-0.5.0.tar.gz

Download URL denvr-0.5.0.tar.gz
Size 105.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c30c2bae96be11ff6e6fc55559012de218b07354259e5ce4224dbac11966642c
BLAKE2b-256 checksum
How to use checksums
55d3085034ffd1bc7960b6472328a2b69711a4bb700583ef19e10b05c18b9f6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

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 Aug 20, 2025.

Transparency log

Release files / denvr-0.5.0-py3-none-any.whl

Download URL denvr-0.5.0-py3-none-any.whl
Size 20.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a87dbce556458237ff36fe2447f3d6f1dfbb52e4b292f07301488ff5bc62defa
BLAKE2b-256 checksum
How to use checksums
51c4958bf130148342e86836535e70f93a4560426ad3acc502ee7a4230e81703
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

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 Aug 20, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.1

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