DataRobot Pulumi Utils
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
terraform-provider-datarobotis the underlying Terraform provider. It defines the DataRobot resources and data sources.pulumi-datarobotbridges that Terraform provider into a Pulumi provider via the Pulumi Terraform Bridge, exposing the same resources to Python (and Node.js, Go, and .NET).datarobot-pulumi-utils(this repo) builds onpulumi-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-memorydict[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 beforepulumi uprather than after. Requires the optionalllmextra.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| datarobot_pulumi_utils-0.1.7.tar.gz | 61.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|