dr enclave - Enclave management
Register and operate enclaves — remote outpost clusters that run your DataRobot workloads on infrastructure you control. The dr enclave group wraps the Covalent Enclaves API, with one subcommand per operation. It is also available under the aliases enclaves, outpost, and outposts.
Synopsis
Description
An enclave is a Kubernetes cluster registered with your DataRobot tenant that workloads can be scheduled onto. register returns the enclave's id together with its one-shot installation secrets; the installer materializes those as Kubernetes Secrets on the cluster, reports in, and the enclave activates on its own — there is no manual activate step.
deactivate takes an active enclave out of scheduling while keeping the record, and reactivate puts it back; delete removes it for good.
Two separate things govern who can do what:
- Per-enclave access (
dr enclave access) — theowner,user, andconsumerroles on one enclave. Deploying a workload onto an enclave requires at least theuserrole. - Collection-level permissions (
dr enclave permission) — who may create enclaves at all, and who may pin a workload to a chosen enclave, independent of any single one.
DataRobot system administrators bypass both and always have full access.
[!NOTE] The
enclavecommand is currently behind a feature gate. Enable it by exportingDATAROBOT_CLI_FEATURE_ENCLAVE=truebefore running anydr enclavesubcommand. See Feature gates for details.The access and permission subcommands need
ENCLAVE_RBAC_ENABLEDon the server. Where it is off, grants and revokes are accepted as no-ops and every caller shows as fully permitted.
Quick start
export DATAROBOT_CLI_FEATURE_ENCLAVE=true
# Register an enclave and capture its one-shot installation secrets
dr enclave register --name my-enclave --output-format json > enclave.json
# Watch for it to come up on its own once the installer reports in
dr enclave list
# Let an entire organization deploy onto it
dr enclave access grant <enclave-id> --role user --org <org-id>
# Check what you can do with it
dr enclave access show <enclave-id>
Pin a workload to an enclave with dr workload create --enclave <name>.
Command groups
| Command | Endpoint | Purpose |
|---|---|---|
dr enclave register |
POST /api/v2/enclaves |
Register an enclave, returning install secrets. |
dr enclave get |
GET /api/v2/enclaves/{id} |
Show a single enclave. |
dr enclave list |
GET /api/v2/enclaves |
List the enclaves you can see. |
dr enclave deactivate |
POST /api/v2/enclaves/{id}/deactivate |
Take an active enclave out of scheduling. |
dr enclave reactivate |
POST /api/v2/enclaves/{id}/reactivate |
Return a deactivated enclave to service. |
dr enclave delete |
DELETE /api/v2/enclaves/{id} |
Delete an enclave. |
dr enclave access grant |
PATCH /api/v2/enclaves/{id}/sharedRoles |
Grant a role on one enclave. |
dr enclave access revoke |
PATCH /api/v2/enclaves/{id}/sharedRoles |
Revoke a recipient's role on one enclave. |
dr enclave access list |
GET /api/v2/enclaves/{id}/sharedRoles |
List who holds a role on one enclave. |
dr enclave access show |
GET /api/v2/enclaves/{id}/permissions |
Show effective permissions on one enclave. |
dr enclave permission grant |
PATCH /api/v2/enclaves/createAccess |
Allow a recipient to create enclaves. |
dr enclave permission grant --permission pin |
PATCH /api/v2/enclaves/pinAccess |
Allow a user to pin workloads. |
dr enclave permission revoke |
PATCH /api/v2/enclaves/createAccess |
Stop a recipient from creating enclaves. |
dr enclave permission revoke --permission pin |
PATCH /api/v2/enclaves/pinAccess |
Stop a user from pinning workloads. |
dr enclave permission list |
GET /api/v2/enclaves/createAccess |
List who may create enclaves. |
dr enclave permission list --permission pin |
GET /api/v2/enclaves/pinAccess |
List who may pin, in your organization. |
dr enclave permission show |
GET /api/v2/enclaves/permissions |
Show your own collection-level permissions. |
All paths are served at the root of your DataRobot host. They are new: the API
previously sat behind a /covalent prefix, and its access routes answered under
/outposts. Those spellings still work server-side as deprecated aliases, but
the CLI calls only the paths above, so dr enclave needs a DataRobot whose
Covalent carries that change — it landed just after Covalent 11.12.0.
Subcommands
register
Register a new enclave with your tenant. The response carries the enclave id and status along with its one-shot installation secrets — they are shown only once and never persisted server-side, so capture them here. --output-format json writes them in a form you can feed to the installer; the default text output prints the equivalent kubectl create secret generic command for each one.
dr enclave register --name my-enclave
dr enclave register --name my-enclave --label team=research --label env=prod
dr enclave register --name my-enclave --output-format json
| Flag | Description |
|---|---|
--name |
Name for the new enclave (required). |
--label |
Attach a key=value label. Repeatable. |
Creating an enclave requires the collection-level create permission (see permission grant) or system administrator rights.
get
Show one enclave by id.
list
List the enclaves you can see. With RBAC enabled this is only those you hold a role on; system administrators see every enclave in the tenant.
deactivate
Take an active enclave out of scheduling without deleting it. Only an ACTIVE enclave can be deactivated; anything else returns a conflict.
reactivate
Return a deactivated enclave to service.
delete
Delete an enclave. Prompts for confirmation unless --yes is given.
dr enclave delete <enclave-id>
dr enclave delete <enclave-id> --yes
dr enclave delete <enclave-id> --yes --output-format json
| Flag | Description |
|---|---|
-y, --yes |
Skip the confirmation prompt. |
Deleting an enclave that is already gone, and declining the prompt, are both
no-ops that exit 0. --output-format json is how a script tells them apart from
a real deletion:
{ "enclaveId": "<enclave-id>", "deleted": true }
{ "enclaveId": "<enclave-id>", "deleted": false, "reason": "not found" }
{ "enclaveId": "<enclave-id>", "deleted": false, "reason": "aborted" }
In JSON mode the confirmation prompt is written to stderr, so stdout carries nothing but the result document.
Access on one enclave
dr enclave access manages the roles held on a single enclave. Every subcommand names the enclave by id.
The three roles:
| Role | Grants |
|---|---|
owner |
Full control, including sharing the enclave with others. |
user |
View and deploy onto the enclave. |
consumer |
View only — not enough to deploy. |
A recipient is exactly one of --user (by username), --user-id, --group, or --org.
access grant
dr enclave access grant <enclave-id> --role user --org <org-id>
dr enclave access grant <enclave-id> --role consumer --user alice@corp.io
dr enclave access grant <enclave-id> --role owner --user-id <datarobot-user-id>
| Flag | Description |
|---|---|
--role |
owner, user, or consumer (required). |
--user |
Grant a user by username. |
--user-id |
Grant a user by DataRobot user id. |
--group |
Grant a group by id. |
--org |
Grant an entire organization by id. |
access revoke
Remove a recipient's role. Takes the same recipient flags as grant.
access list
List the recipients holding a role on the enclave, and which role each holds.
access show
Show the effective permissions on the enclave — what the subject can actually do, after roles, organization membership, and any administrator bypass are resolved. Defaults to you; pass --user-id to inspect somebody else (system administrators only).
dr enclave access show <enclave-id>
dr enclave access show <enclave-id> --user-id <datarobot-user-id>
Permissions to create enclaves and to pin workloads
dr enclave permission governs two capabilities that target no single enclave, so these commands take no enclave id:
create: register new enclaves. Recipients are named by id:--user-id,--group, or--org.pin: pin a workload to one chosen enclave withdr workload create --enclave, overriding the scheduler. Granted to users (--user-id) and groups (--group), not organizations. A group grant lets every member pin. The enclave must still be linked to the workload's use case, and the user still needs deploy access to it.
The two are independent: holding create does not allow pinning, and holding pin does not allow creating. A system administrator may create without a grant but needs a pin grant to pin.
Who may grant, revoke and list:
| Permission | System administrator | Org admin | Anyone else |
|---|---|---|---|
create |
yes | no | no |
pin |
yes, any user or group in any organization | yes, users and groups in their own organization only (another organization's recipient: 403) | no (403), including users who hold pin |
permission grant
dr enclave permission grant --permission create --org <org-id>
dr enclave permission grant --permission create --user-id <datarobot-user-id>
dr enclave permission grant --permission pin --user-id <datarobot-user-id> # sys admin, or an org admin for a user in their org
dr enclave permission grant --permission pin --group <group-id> # every member of the group may pin
A server that still grants pin to users only refuses --group with a 422; the CLI says the server needs to be upgraded. Revoking a group's grant doesn't affect a member who also holds a grant of their own.
| Flag | Description |
|---|---|
--permission |
Permission to grant: create or pin (required). |
--user-id |
Grant a user by DataRobot user id. |
--group |
Grant a group by id. |
--org |
Grant an entire organization by id. |
permission revoke
dr enclave permission revoke --permission create --org <org-id>
dr enclave permission revoke --permission pin --user-id <datarobot-user-id>
dr enclave permission revoke --permission pin --group <group-id>
permission list
List the recipients who have been granted the create permission, or with --permission pin the users and groups in your organization that hold pin. An empty result means nobody holds it; system administrators do not appear in the create list, because they bypass that permission rather than holding it.
permission show
Show whether a subject may create enclaves or pin workloads, and where that comes from. Defaults to you; --user-id inspects somebody else (system administrators only).
Output formats
Every subcommand accepts --output-format (text or json). text is the default and is meant for reading; json is the one to use in scripts, and the only practical way to capture register's installation secrets.
See also
dr workload— deploy workloads, and pin one to an enclave with--enclave <name>- Feature gates — enabling
DATAROBOT_CLI_FEATURE_ENCLAVE