+
Skip to content

rofinn/denvrpy

 
 

Repository files navigation

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

About

Denvr Cloud SDK for Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 94.2%
  • Jinja 5.6%
  • Shell 0.2%
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载