<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Updating DLT pipeline's cluster policy using Databricks CLI in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/updating-dlt-pipeline-s-cluster-policy-using-databricks-cli/m-p/150080#M53231</link>
    <description>&lt;P&gt;**Subject:** Azure Databricks Pipeline Not Applying Cluster Policy and Failing with VM Quota Error&lt;/P&gt;&lt;P&gt;**Summary of Issue**&lt;/P&gt;&lt;P&gt;I am attempting to create and run a pipeline in Azure Databricks using a custom cluster policy to restrict compute resources due to Azure Free Trial subscription limits. However, the pipeline is not honoring the configured cluster policy and instead defaults to a larger compute configuration, which results in VM quota errors during cluster launch.&lt;/P&gt;&lt;P&gt;**Details**&lt;/P&gt;&lt;P&gt;* Environment: Azure Databricks (Free Trial Subscription on Azure)&lt;BR /&gt;* Objective: Create a pipeline with restricted compute using a custom cluster policy.&lt;BR /&gt;* Policy Configuration: A cluster policy was created to enforce smaller VM sizes and limited worker scaling.&lt;BR /&gt;* Pipeline Creation: The pipeline was created after defining the cluster policy.&lt;/P&gt;&lt;P&gt;**Observed Behavior**&lt;/P&gt;&lt;P&gt;1. The pipeline does not apply the configured cluster policy during creation.&lt;BR /&gt;2. Instead, the pipeline defaults to a compute configuration similar to:&lt;/P&gt;&lt;P&gt;* Worker type: Standard_F4s&lt;BR /&gt;* Autoscaling: Min workers = 1, Max workers = 5&lt;BR /&gt;3. Because the Azure Free Trial subscription has limited CPU quota, the cluster fails to start with the following error:&lt;/P&gt;&lt;P&gt;```&lt;BR /&gt;Error class: CLUSTER_LAUNCH_CLIENT_ERROR&lt;BR /&gt;SQL state: KDL01&lt;/P&gt;&lt;P&gt;Encountered Quota Exhaustion issue in your account:&lt;BR /&gt;The VM size you are specifying is not available.&lt;BR /&gt;QuotaExceeded: Operation could not be completed due to insufficient CPU quota.&lt;BR /&gt;```&lt;/P&gt;&lt;P&gt;4. Even after deleting the pipeline and recreating it, the cluster policy is still not being applied.&lt;BR /&gt;5. When attempting to update the pipeline configuration via CLI, another error occurs:&lt;/P&gt;&lt;P&gt;```&lt;BR /&gt;Modifying following parameter gateway_definition in pipeline settings is not allowed&lt;BR /&gt;```&lt;/P&gt;&lt;P&gt;This prevents modifying the pipeline compute configuration once it is created.&lt;/P&gt;&lt;P&gt;**Impact**&lt;/P&gt;&lt;P&gt;* The pipeline cannot start due to VM quota limitations.&lt;BR /&gt;* The custom cluster policy intended to enforce smaller compute resources is not being applied.&lt;BR /&gt;* Pipeline configuration cannot be updated due to the gateway_definition restriction.&lt;/P&gt;&lt;P&gt;**Expected Behavior**&lt;/P&gt;&lt;P&gt;* The pipeline should respect the configured cluster policy during creation.&lt;BR /&gt;* Compute configuration should align with the policy limits (smaller VM and restricted worker scaling).&lt;BR /&gt;* The pipeline cluster should launch successfully within the available Azure quota.&lt;/P&gt;&lt;P&gt;**Request**&lt;/P&gt;&lt;P&gt;Assistance is requested to determine:&lt;/P&gt;&lt;P&gt;1. Why the pipeline is not applying the configured cluster policy.&lt;BR /&gt;2. How to ensure pipelines respect cluster policy constraints during creation.&lt;BR /&gt;3. Recommended configuration for running pipelines within Azure Free Trial compute quotas.&lt;/P&gt;</description>
    <pubDate>Sat, 07 Mar 2026 19:18:19 GMT</pubDate>
    <dc:creator>Raghav1</dc:creator>
    <dc:date>2026-03-07T19:18:19Z</dc:date>
    <item>
      <title>Updating DLT pipeline's cluster policy using Databricks CLI</title>
      <link>https://community.databricks.com/t5/data-engineering/updating-dlt-pipeline-s-cluster-policy-using-databricks-cli/m-p/150080#M53231</link>
      <description>&lt;P&gt;**Subject:** Azure Databricks Pipeline Not Applying Cluster Policy and Failing with VM Quota Error&lt;/P&gt;&lt;P&gt;**Summary of Issue**&lt;/P&gt;&lt;P&gt;I am attempting to create and run a pipeline in Azure Databricks using a custom cluster policy to restrict compute resources due to Azure Free Trial subscription limits. However, the pipeline is not honoring the configured cluster policy and instead defaults to a larger compute configuration, which results in VM quota errors during cluster launch.&lt;/P&gt;&lt;P&gt;**Details**&lt;/P&gt;&lt;P&gt;* Environment: Azure Databricks (Free Trial Subscription on Azure)&lt;BR /&gt;* Objective: Create a pipeline with restricted compute using a custom cluster policy.&lt;BR /&gt;* Policy Configuration: A cluster policy was created to enforce smaller VM sizes and limited worker scaling.&lt;BR /&gt;* Pipeline Creation: The pipeline was created after defining the cluster policy.&lt;/P&gt;&lt;P&gt;**Observed Behavior**&lt;/P&gt;&lt;P&gt;1. The pipeline does not apply the configured cluster policy during creation.&lt;BR /&gt;2. Instead, the pipeline defaults to a compute configuration similar to:&lt;/P&gt;&lt;P&gt;* Worker type: Standard_F4s&lt;BR /&gt;* Autoscaling: Min workers = 1, Max workers = 5&lt;BR /&gt;3. Because the Azure Free Trial subscription has limited CPU quota, the cluster fails to start with the following error:&lt;/P&gt;&lt;P&gt;```&lt;BR /&gt;Error class: CLUSTER_LAUNCH_CLIENT_ERROR&lt;BR /&gt;SQL state: KDL01&lt;/P&gt;&lt;P&gt;Encountered Quota Exhaustion issue in your account:&lt;BR /&gt;The VM size you are specifying is not available.&lt;BR /&gt;QuotaExceeded: Operation could not be completed due to insufficient CPU quota.&lt;BR /&gt;```&lt;/P&gt;&lt;P&gt;4. Even after deleting the pipeline and recreating it, the cluster policy is still not being applied.&lt;BR /&gt;5. When attempting to update the pipeline configuration via CLI, another error occurs:&lt;/P&gt;&lt;P&gt;```&lt;BR /&gt;Modifying following parameter gateway_definition in pipeline settings is not allowed&lt;BR /&gt;```&lt;/P&gt;&lt;P&gt;This prevents modifying the pipeline compute configuration once it is created.&lt;/P&gt;&lt;P&gt;**Impact**&lt;/P&gt;&lt;P&gt;* The pipeline cannot start due to VM quota limitations.&lt;BR /&gt;* The custom cluster policy intended to enforce smaller compute resources is not being applied.&lt;BR /&gt;* Pipeline configuration cannot be updated due to the gateway_definition restriction.&lt;/P&gt;&lt;P&gt;**Expected Behavior**&lt;/P&gt;&lt;P&gt;* The pipeline should respect the configured cluster policy during creation.&lt;BR /&gt;* Compute configuration should align with the policy limits (smaller VM and restricted worker scaling).&lt;BR /&gt;* The pipeline cluster should launch successfully within the available Azure quota.&lt;/P&gt;&lt;P&gt;**Request**&lt;/P&gt;&lt;P&gt;Assistance is requested to determine:&lt;/P&gt;&lt;P&gt;1. Why the pipeline is not applying the configured cluster policy.&lt;BR /&gt;2. How to ensure pipelines respect cluster policy constraints during creation.&lt;BR /&gt;3. Recommended configuration for running pipelines within Azure Free Trial compute quotas.&lt;/P&gt;</description>
      <pubDate>Sat, 07 Mar 2026 19:18:19 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/updating-dlt-pipeline-s-cluster-policy-using-databricks-cli/m-p/150080#M53231</guid>
      <dc:creator>Raghav1</dc:creator>
      <dc:date>2026-03-07T19:18:19Z</dc:date>
    </item>
    <item>
      <title>Re: Updating DLT pipeline's cluster policy using Databricks CLI</title>
      <link>https://community.databricks.com/t5/data-engineering/updating-dlt-pipeline-s-cluster-policy-using-databricks-cli/m-p/150100#M53241</link>
      <description>&lt;P class="wnfdnte" data-pm-slice="1 3 []"&gt;Hi &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/74515"&gt;@Raghav1&lt;/a&gt;,&lt;/P&gt;
&lt;P class="wnfdnte"&gt;Thanks for the detailed write-up. This is a helpful description of what you’re seeing.&lt;/P&gt;
&lt;P class="wnfdnte"&gt;From what you shared, there are a couple of different layers in play here:&lt;/P&gt;
&lt;UL&gt;
&lt;LI class="wnfdnte"&gt;Azure Free Trial quotas/VM availability (the QuotaExceeded and "VM size not available" errors)&lt;/LI&gt;
&lt;LI&gt;Databricks configuration (how the DLT pipeline compute is defined and how the cluster policy is applied)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="wnfdnte"&gt;Right now, it’s hard to tell whether the main issue is that the pipeline isn’t honouring the policy or that Azure simply can’t provision the requested SKU/cores even if the config is valid. To narrow this down, can you share a bit more detail?&lt;/P&gt;
&lt;P class="wnfdnte"&gt;&lt;STRONG&gt;Pipeline definition / CLI command:&amp;nbsp;&lt;/STRONG&gt;Could you paste t&lt;SPAN&gt;he JSON you’re using &lt;/SPAN&gt;with databricks pipelines create (or the equivalent API payload), especially the parts that define:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;cluster_spec / development/production compute&lt;/LI&gt;
&lt;LI&gt;Any policy_id you’re setting&lt;/LI&gt;
&lt;LI&gt;Explicit node_type_id / instance_pool_id&lt;/LI&gt;
&lt;LI&gt;Min / max workers&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="wnfdnte"&gt;If you’re using Databricks pipelines, edit or similar via the CLI, please include that command and the JSON as well (with any secrets removed).&lt;/P&gt;
&lt;P class="wnfdnte"&gt;Cluster policy JSON:&amp;nbsp;Please also share the relevant parts of the cluster policy you created, e.g.:&lt;/P&gt;
&lt;UL class="lia-list-style-type-circle"&gt;
&lt;LI dir="auto"&gt;
&lt;P class="wnfdnte"&gt;Whether you’re:&lt;/P&gt;
&lt;UL class="lia-list-style-type-circle"&gt;
&lt;LI class="wnfdnte"&gt;Forcing a specific small VM (e.g., via defaultValue + fixed), or&lt;/LI&gt;
&lt;LI&gt;Only constraining ranges / families (allowed_values, regex, etc.)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI dir="auto"&gt;
&lt;P class="wnfdnte"&gt;Any rules related to:&lt;/P&gt;
&lt;UL class="lia-list-style-type-circle"&gt;
&lt;LI&gt;node_type_id / driver_node_type_id&lt;/LI&gt;
&lt;LI&gt;num_workers or autoscaling&lt;/LI&gt;
&lt;LI&gt;Pools vs on-demand VMs&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="wnfdnte"&gt;This helps determine whether the policy is just constraining values or is actually designed to pin the pipeline to a smaller SKU that fits your Free Trial quota.&lt;/P&gt;
&lt;P class="wnfdnte"&gt;&lt;STRONG&gt;A couple of clarifications / expectations&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Cluster policies constrain what can be configured. They don’t automatically downshift a pipeline to the smallest possible VM. If the pipeline definition is explicitly using Standard_F4s, and that value is still allowed by the policy, Databricks won’t silently swap it for a smaller SKU... the pipeline compute block usually needs to be set to that smaller instance.&lt;/LI&gt;
&lt;LI&gt;The error Modifying following parameter gateway_definition in pipeline settings is not allowed indicates that some parts of the pipeline definition are treated as immutable after creation. In practice this often means:
&lt;UL class="lia-list-style-type-circle"&gt;
&lt;LI&gt;To change certain compute aspects, you may need to recreate the pipeline with the desired compute/policy settings.&lt;/LI&gt;
&lt;LI&gt;Or adjust what’s controlled by the policy vs what’s hard-coded in the pipeline.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="p1"&gt;&lt;FONT size="2" color="#FF6600"&gt;&lt;STRONG&gt;&lt;I&gt;If this answer resolves your question, could you mark it as “Accept as Solution”? That helps other users quickly find the correct fix.&lt;/I&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 07 Mar 2026 22:21:59 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/updating-dlt-pipeline-s-cluster-policy-using-databricks-cli/m-p/150100#M53241</guid>
      <dc:creator>Ashwin_DSA</dc:creator>
      <dc:date>2026-03-07T22:21:59Z</dc:date>
    </item>
    <item>
      <title>Re: Updating DLT pipeline's cluster policy using Databricks CLI</title>
      <link>https://community.databricks.com/t5/data-engineering/updating-dlt-pipeline-s-cluster-policy-using-databricks-cli/m-p/150163#M53280</link>
      <description>&lt;P&gt;Hi &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/74515"&gt;@Raghav1&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;There are a few things happening here, so let me walk through each one and give you a path forward.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;UNDERSTANDING THE GATEWAY_DEFINITION ERROR&lt;/P&gt;
&lt;P&gt;The error "Modifying following parameter gateway_definition in pipeline settings is not allowed" occurs because certain pipeline parameters are treated as immutable once the pipeline is created. The gateway_definition is an internal field tied to how the pipeline's compute is initially provisioned, and it cannot be changed via a CLI update command after creation.&lt;/P&gt;
&lt;P&gt;The recommended approach is to delete the pipeline and recreate it with the correct compute configuration from the start.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;HOW TO PROPERLY ATTACH A CLUSTER POLICY TO A PIPELINE&lt;/P&gt;
&lt;P&gt;When creating a Lakeflow Spark Declarative Pipeline (SDP) via the Databricks CLI or REST API, you need to include the policy_id in the clusters array of your pipeline definition JSON, along with apply_policy_default_values set to true. This ensures the policy defaults are applied to the pipeline compute.&lt;/P&gt;
&lt;P&gt;Here is an example pipeline creation JSON that references a cluster policy:&lt;/P&gt;
&lt;P&gt;{&lt;BR /&gt;"name": "my-sdp-pipeline",&lt;BR /&gt;"clusters": [&lt;BR /&gt;{&lt;BR /&gt;"label": "default",&lt;BR /&gt;"policy_id": "&amp;lt;your-cluster-policy-id&amp;gt;",&lt;BR /&gt;"apply_policy_default_values": true&lt;BR /&gt;}&lt;BR /&gt;],&lt;BR /&gt;"libraries": [&lt;BR /&gt;{&lt;BR /&gt;"notebook": {&lt;BR /&gt;"path": "/path/to/your/notebook"&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;],&lt;BR /&gt;"development": true&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;The "label": "default" ensures the policy applies to both the update cluster and the maintenance cluster that every pipeline creates.&lt;/P&gt;
&lt;P&gt;To create this pipeline via the Databricks CLI:&lt;/P&gt;
&lt;P&gt;databricks pipelines create --json '{&lt;BR /&gt;"name": "my-sdp-pipeline",&lt;BR /&gt;"clusters": [&lt;BR /&gt;{&lt;BR /&gt;"label": "default",&lt;BR /&gt;"policy_id": "&amp;lt;your-cluster-policy-id&amp;gt;",&lt;BR /&gt;"apply_policy_default_values": true&lt;BR /&gt;}&lt;BR /&gt;],&lt;BR /&gt;"libraries": [&lt;BR /&gt;{&lt;BR /&gt;"notebook": {&lt;BR /&gt;"path": "/path/to/your/notebook"&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;],&lt;BR /&gt;"development": true&lt;BR /&gt;}'&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;IMPORTANT: POLICIES CONSTRAIN, THEY DO NOT AUTO-DOWNSIZE&lt;/P&gt;
&lt;P&gt;A cluster policy constrains what values are allowed for compute configuration. It does not automatically select the smallest possible VM for you. If your pipeline definition does not explicitly set a node_type_id, Databricks will auto-select one, and that auto-selected type must still comply with your policy. If the auto-selected type happens to be Standard_F4s and that exceeds your Azure Free Trial quota, the cluster will fail to launch.&lt;/P&gt;
&lt;P&gt;To ensure a small enough VM is used, you should either:&lt;/P&gt;
&lt;P&gt;1. Set a fixed node_type_id directly in the pipeline's clusters configuration:&lt;/P&gt;
&lt;P&gt;{&lt;BR /&gt;"clusters": [&lt;BR /&gt;{&lt;BR /&gt;"label": "default",&lt;BR /&gt;"policy_id": "&amp;lt;your-policy-id&amp;gt;",&lt;BR /&gt;"apply_policy_default_values": true,&lt;BR /&gt;"node_type_id": "Standard_DS3_v2",&lt;BR /&gt;"driver_node_type_id": "Standard_DS3_v2",&lt;BR /&gt;"num_workers": 0&lt;BR /&gt;}&lt;BR /&gt;]&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;2. Or set a fixed value in the cluster policy itself so that any pipeline using it always gets a small VM:&lt;/P&gt;
&lt;P&gt;{&lt;BR /&gt;"cluster_type": {&lt;BR /&gt;"type": "fixed",&lt;BR /&gt;"value": "dlt"&lt;BR /&gt;},&lt;BR /&gt;"node_type_id": {&lt;BR /&gt;"type": "fixed",&lt;BR /&gt;"value": "Standard_DS3_v2",&lt;BR /&gt;"hidden": true&lt;BR /&gt;},&lt;BR /&gt;"driver_node_type_id": {&lt;BR /&gt;"type": "fixed",&lt;BR /&gt;"value": "Standard_DS3_v2",&lt;BR /&gt;"hidden": true&lt;BR /&gt;},&lt;BR /&gt;"num_workers": {&lt;BR /&gt;"type": "fixed",&lt;BR /&gt;"value": 0,&lt;BR /&gt;"hidden": true&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;Note: For Lakeflow Spark Declarative Pipelines (SDP) policies, you must include "cluster_type" set to "dlt" in the policy definition.&lt;/P&gt;
&lt;P&gt;Setting num_workers to 0 gives you a single-node (driver-only) compute resource, which is the most quota-friendly option for an Azure Free Trial.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;RECOMMENDED STEPS FOR YOUR SITUATION&lt;/P&gt;
&lt;P&gt;1. Delete the existing pipeline that is stuck with the wrong configuration.&lt;/P&gt;
&lt;P&gt;2. Create a cluster policy (if you have not already) with fixed small VM types and cluster_type set to "dlt". You can verify your available VM sizes in the Azure portal to find one that fits within your quota.&lt;/P&gt;
&lt;P&gt;3. Recreate the pipeline using the CLI command above, referencing your policy_id and setting apply_policy_default_values to true.&lt;/P&gt;
&lt;P&gt;4. If you want to be explicit and not rely on the policy alone, also specify node_type_id and num_workers: 0 in the clusters block of the pipeline JSON.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;RELEVANT DOCUMENTATION&lt;/P&gt;
&lt;P&gt;- Configure classic compute for Lakeflow Spark Declarative Pipelines: &lt;A href="https://docs.databricks.com/aws/en/delta-live-tables/configure-compute.html" target="_blank"&gt;https://docs.databricks.com/aws/en/delta-live-tables/configure-compute.html&lt;/A&gt;&lt;BR /&gt;- Pipeline settings reference: &lt;A href="https://docs.databricks.com/aws/en/delta-live-tables/settings.html" target="_blank"&gt;https://docs.databricks.com/aws/en/delta-live-tables/settings.html&lt;/A&gt;&lt;BR /&gt;- Compute policy definition reference: &lt;A href="https://docs.databricks.com/aws/en/admin/clusters/policy-definition.html" target="_blank"&gt;https://docs.databricks.com/aws/en/admin/clusters/policy-definition.html&lt;/A&gt;&lt;BR /&gt;- Pipelines CLI reference: &lt;A href="https://docs.databricks.com/aws/en/dev-tools/cli/databricks-cli.html" target="_blank"&gt;https://docs.databricks.com/aws/en/dev-tools/cli/databricks-cli.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Since you are on Azure, replace "aws" in the documentation URLs above with "azure" to see the Azure-specific versions.&lt;/P&gt;
&lt;P&gt;* This reply used an agent system I built to research and draft this response based on the wide set of documentation I have available and previous memory. I personally review the draft for any obvious issues and for monitoring system reliability and update it when I detect any drift, but there is still a small chance that something is inaccurate, especially if you are experimenting with brand new features.&lt;/P&gt;</description>
      <pubDate>Sun, 08 Mar 2026 07:18:11 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/updating-dlt-pipeline-s-cluster-policy-using-databricks-cli/m-p/150163#M53280</guid>
      <dc:creator>SteveOstrowski</dc:creator>
      <dc:date>2026-03-08T07:18:11Z</dc:date>
    </item>
  </channel>
</rss>

