Skip to main content

DataRobot Pulumi Utils

PyPI versions license

datarobot-pulumi-utils is a Python helper library for provisioning DataRobot resources with Pulumi. It builds on the official pulumi-datarobot provider and adds typed configuration models, custom resources for operations the provider does not cover, and small runtime helpers.

It is the shared foundation that DataRobot Application Templates use to define their infra/ Pulumi programs.

How it fits together

DataRobot's infrastructure-as-code stack has three layers, each building on the one below it:

terraform-provider-datarobot   Terraform provider (Go); defines DataRobot resources
          |
          |  bridged into a Pulumi provider by the Pulumi Terraform Bridge
          v
pulumi-datarobot               Pulumi provider; manage those resources from Python
          |
          |  extended with config schemas, extra resources, and helpers by
          v
datarobot-pulumi-utils         this repo
  1. terraform-provider-datarobot is the underlying Terraform provider. It defines the DataRobot resources and data sources.
  2. pulumi-datarobot bridges that Terraform provider into a Pulumi provider via the Pulumi Terraform Bridge, exposing the same resources to Python (and Node.js, Go, and .NET).
  3. datarobot-pulumi-utils (this repo) builds on pulumi-datarobot, adding the pieces below.

A practical consequence: if a DataRobot resource is missing or misbehaving, the fix usually belongs in whichever layer owns it. New resource coverage comes from the Terraform provider (surfaced through the Pulumi provider), while the higher-level config models and gap-filling resources live here.

What's in the box

datarobot_pulumi_utils.schema

Pydantic models that give you typed, validated configuration for DataRobot concepts: LLMs, guardrails, vector databases, custom models, applications, datasets, data connections, execution environments, predictions, and training. Use them to describe DataRobot config in one place instead of passing around loose dictionaries.

from datarobot_pulumi_utils.schema.exec_envs import RuntimeEnvironments

# Resolve a named DataRobot base environment to its ID (via the DataRobot API)
base_env_id = RuntimeEnvironments.PYTHON_312_APPLICATION_BASE.value.id

schema.llms additionally holds the LLM Gateway naming helpers ensure_datarobot_prefix() and DEPLOYED_LLM_PLACEHOLDER_MODEL. Note these operate on gateway / LiteLLM model strings (datarobot/azure/gpt-5-mini), which are a different namespace from the playground LLM ids in LLMs (azure-openai-gpt-5-mini).

datarobot_pulumi_utils.pulumi

Custom Pulumi resources (mostly dynamic providers that wrap the DataRobot Python SDK) for operations the official provider does not expose, all plugging into the normal pulumi up create/update/delete lifecycle. Covers query-generated datasets, dataset refresh, recipe datasets, challengers, custom model deployments, RAG and playground custom models, proxy LLM blueprints, execution environments, notebook execution (papermill), export collection, and stack helpers.

from datarobot_pulumi_utils.pulumi.stack import get_stack

pulumi.llm_credentials.get_runtime_values() resolves which provider serves a gateway model, creates the DataRobot credential resources that provider needs, and returns the custom-model runtime parameter values referencing them. pulumi.llm_blueprint.get_blueprint_runtime_parameters() returns the full runtime parameter set a blueprint-backed custom model needs to load.

from datarobot_pulumi_utils.pulumi.llm_credentials import get_runtime_values

# `resource_suffix` is part of each credential's resource name, and therefore part of its
# Pulumi identity -- changing it replaces live credentials.
runtime_values = get_runtime_values("datarobot/azure/gpt-5-mini", resource_suffix="[my-app]")

datarobot_pulumi_utils.common

Small runtime utilities:

  • get_datarobot_url() / fix_url(): resolve the external DataRobot URL, including airgapped on-premise clusters where the API returns internal hostnames (see docs/AIRGAP_URL_MIGRATION.md).

  • check_feature_flags() / check_feature_flag_set(): assert that the DataRobot feature flags your program depends on are enabled -- from a YAML file, or from an in-memory dict[str, bool] respectively.

  • verify_llm_gateway_model_availability(): assert a model is present and active in this cluster's LLM Gateway catalog before deploying against it.

  • verify_llm(): send a one-token "Hi" to the configured LLM -- deployment, gateway, or external provider -- so a misconfigured model fails before pulumi up rather than after. Requires the optional llm extra.

from datarobot_pulumi_utils.common import get_datarobot_url, fix_url

Installation

pip install datarobot-pulumi-utils
# or
uv add datarobot-pulumi-utils

common.llm_validation.verify_llm() needs litellm, which ships as the optional llm extra:

pip install "datarobot-pulumi-utils[llm]"
# or
uv add "datarobot-pulumi-utils[llm]"

Requires Python 3.10+.

Development

This project uses uv for dependency management and Task as the command runner:

uv sync --all-extras --dev   # set up the environment
task lint-check              # check formatting, lint, and types (ruff + mypy)
task test                    # run the test suite
task build                   # build the package

Contributing

See CONTRIBUTING.md.

License

Apache 2.0 - see LICENSE for details.

Release files for datarobot-pulumi-utils 0.1.7

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

Source distribution (sdist)

Source distribution for datarobot-pulumi-utils 0.1.7
File Size Uploaded
datarobot_pulumi_utils-0.1.7.tar.gz 61.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for datarobot-pulumi-utils 0.1.7
File Interpreter ABI Platform
datarobot_pulumi_utils-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 127.5 kB

Release files / datarobot_pulumi_utils-0.1.7.tar.gz

Download URL datarobot_pulumi_utils-0.1.7.tar.gz
Size 61.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b6525f46fb41873cf725c1ad6c5d7de4553fa3755fdbebdaec204c2332d698f9
BLAKE2b-256 checksum
How to use checksums
de41e660133773e7bd2d9a30e696a2fa0132b39db20aa57422bf0a8812d5afee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / datarobot_pulumi_utils-0.1.7-py3-none-any.whl

Download URL datarobot_pulumi_utils-0.1.7-py3-none-any.whl
Size 66.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ea293a5fa357e2f111469226a6d3d1f229d4ce39293dec50cf2568eada8ac868
BLAKE2b-256 checksum
How to use checksums
6b00fdfdb6f33e946806ad3faf6e949db9a41965ebf52c68d350cf90b815a799
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
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