Skip to content

Add .workspace.URLID and fix review findings on .workspace - #7388

Open
pavloKozlov wants to merge 1 commit into
mainfrom
workspace-context-review-fixes
Open

pavloKozlov wants to merge 1 commit into
mainfrom
workspace-context-review-fixes

Conversation

@pavloKozlov

@pavloKozlov pavloKozlov commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Changes

Adds .workspace.URLID: the workspace ID that .workspace.URL adds as ?w=, or empty. Unlike .workspace.ID, it doesn't fail when the ID is unknown and doesn't return an ID from host metadata, so templates can use it for optional parts such as the ?o= that dbt needs.

Schema rendering keeps the default of an input that has a value when that default fails to render, instead of failing the whole render. bundle init never uses that default, so it already worked there.

Adds setup_custom_host to acceptance/script.prepare for tests that reach the test server as a host shared by several workspaces.

Why

Review comments on #7350, which builds on this, and a follow-up review of #7349.

Tests

The workspace_variable runtime test prints URLID for each kind of profile, and covers a failing default of an input with a value, every rejected workspace selector, and a protocol-relative path.

This pull request and its description were written by Isaac.

@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Commit: ae3801519 | Workflow run

Regression test report

Selected 1 changed tests (limit=20, 0 not selected)

2 tests: regression=2 unreleased=0 coverage=0 failing=0
test branch main (663e1f7) latest (v1.24.0)
TestAccept/bundle/templates-machinery/workspace_variable/runtime/DMS= ✅ ❌ ❌
TestAccept/bundle/templates-machinery/workspace_variable/runtime/DMS=true ✅ ❌ ❌
TestAccept/bundle/templates-machinery/workspace_variable/runtime/DMS=: branch ✅ | main (663e1f7) ❌ | latest (v1.24.0) ❌

main (663e1f7):

acceptance_test.go:1345: Diff:
        --- bundle/templates-machinery/workspace_variable/runtime/output.txt
        +++ /tmp/TestAcceptbundletemplates-machineryworkspace_variableruntime1743141435/002/output.txt
        @@ -19,219 +19,6 @@
         
         >>> [CLI] bundle init ./urls --profile workspace_classic
         Initializing for [DATABRICKS_URL]
        -Open [DATABRICKS_URL]/jobs?view=list#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]
        -URL "/jobs": [DATABRICKS_URL]/jobs
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list#top
        -URLID: ""
        -jobs_url: [DATABRICKS_URL]/jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL] [WORKSPACE_ID] }]
        +Error: failed to compute file content for urls.txt.tmpl. template: :7:21: executing "" at <.workspace.URLID>: can't evaluate field URLID in type interface {}
         
        -=== Profile workspace_classic_id
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_classic_id
        -{
        -  "welcome_message": "Initializing for [DATABRICKS_URL]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [DATABRICKS_HOST]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_classic_id
        -Initializing for [DATABRICKS_URL]?w=[WORKSPACE_ID]
        -Open [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]?w=[WORKSPACE_ID]
        -URL "/jobs": [DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: [DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs?w=[WORKSPACE_ID] path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Profile workspace_custom_host
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_custom_host
        -{
        -  "welcome_message": "Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [CUSTOM_HOSTNAME]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_custom_host
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Open [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -workspace_host: [CUSTOM_HOST]
        -Hostname: [CUSTOM_HOSTNAME]
        -URL: [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -URL "/jobs": [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -URL "/jobs?view=list#top": [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID] path:/jobs?view=list#top workspace:{[CUSTOM_HOSTNAME] [CUSTOM_HOST] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Profile no_workspace_id
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile no_workspace_id
        -{
        -  "welcome_message": "Initializing for [DATABRICKS_URL]",
        -  "success_message": "Open [DATABRICKS_URL]/jobs?view=list#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[DATABRICKS_URL]/jobs"
        -    },
        -    "path": {
        -      "description": "Path to open on [DATABRICKS_HOST]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile no_workspace_id
        -Initializing for [DATABRICKS_URL]
        -Open [DATABRICKS_URL]/jobs?view=list#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]
        -URL "/jobs": [DATABRICKS_URL]/jobs
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list#top
        -URLID: ""
        -jobs_url: [DATABRICKS_URL]/jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL]  }]
        -
        -=== Rerender and init with edited inputs
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_custom_host --input-file input.edited.json
        -{
        -  "welcome_message": "Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [CUSTOM_HOSTNAME]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.edited.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Open [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]
        -workspace_host: [CUSTOM_HOST]
        -Hostname: [CUSTOM_HOSTNAME]
        -URL: [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -URL "/jobs": [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -URL "/pipelines?tab=all": [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: https://example.test/my-jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:https://example.test/my-jobs path:/pipelines?tab=all workspace:{[CUSTOM_HOSTNAME] [CUSTOM_HOST] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Failing default of an input with a value
        -
        ->>> [CLI] bundle debug render-template-schema ./supplied --profile no_workspace_id --input-file input.supplied.json
        -{
        -  "welcome_message": null,
        -  "success_message": null,
        -  "properties": {
        -    "value": {
        -      "description": "Value",
        -      "default": "{{ .workspace.ID }}"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./supplied --profile no_workspace_id --config-file input.supplied.json
        -✨ Successfully initialized template
        -value: set by user
        -
        ->>> musterr [CLI] bundle debug render-template-schema ./supplied --profile no_workspace_id
        -Error: property value default: failed to render template "{{ .workspace.ID }}": template: base:1:13: executing "base" at <.workspace.ID>: error calling ID: cannot determine workspace ID, please set workspace_id in the configuration profile, the DATABRICKS_WORKSPACE_ID environment variable, or workspace.workspace_id in the bundle
        -
        -=== Invalid URL paths
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.absolute-url.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "https://other.test/jobs" must be relative to the workspace host
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.protocol-relative.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "//other.test/jobs" must be relative to the workspace host
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.workspace-selector.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "/jobs?o=123" must not set the "o" query parameter, the workspace is selected by the profile
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.selector-w.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "/jobs?w=123" must not set the "w" query parameter, the workspace is selected by the profile
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.selector-workspace-id.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "/jobs?workspace_id=123" must not set the "workspace_id" query parameter, the workspace is selected by the profile
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.semicolon.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: failed to parse query of workspace URL path "/jobs?w=999;x=1": invalid semicolon separator in query
        -
        -=== Workspace ID from environment variables
        -
        ->>> DATABRICKS_CONFIG_FILE=/dev/null DATABRICKS_HOST=[CUSTOM_HOST] DATABRICKS_WORKSPACE_ID=[WORKSPACE_ID] [CLI] bundle init ./urls
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Open [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URL: [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -URL "/jobs": [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -URL "/jobs?view=list#top": [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URLID: "[WORKSPACE_ID]"
        -
... (27 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)

latest (v1.24.0):

acceptance_test.go:1345: Diff:
        --- bundle/templates-machinery/workspace_variable/runtime/output.txt
        +++ /tmp/TestAcceptbundletemplates-machineryworkspace_variableruntime4063629894/002/output.txt
        @@ -2,236 +2,6 @@
         === Profile workspace_classic
         
         >>> [CLI] bundle debug render-template-schema ./urls --profile workspace_classic
        -{
        -  "welcome_message": "Initializing for [DATABRICKS_URL]",
        -  "success_message": "Open [DATABRICKS_URL]/jobs?view=list#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[DATABRICKS_URL]/jobs"
        -    },
        -    "path": {
        -      "description": "Path to open on [DATABRICKS_HOST]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        +Error: property path: failed to render template "Path to open on {{ .workspace.Hostname }}": template: base:1:29: executing "base" at <.workspace.Hostname>: nil pointer evaluating interface {}.Hostname
         
        ->>> [CLI] bundle init ./urls --profile workspace_classic
        -Initializing for [DATABRICKS_URL]
        -Open [DATABRICKS_URL]/jobs?view=list#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]
        -URL "/jobs": [DATABRICKS_URL]/jobs
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list#top
        -URLID: ""
        -jobs_url: [DATABRICKS_URL]/jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL] [WORKSPACE_ID] }]
        -
        -=== Profile workspace_classic_id
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_classic_id
        -{
        -  "welcome_message": "Initializing for [DATABRICKS_URL]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [DATABRICKS_HOST]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_classic_id
        -Initializing for [DATABRICKS_URL]?w=[WORKSPACE_ID]
        -Open [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]?w=[WORKSPACE_ID]
        -URL "/jobs": [DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: [DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs?w=[WORKSPACE_ID] path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Profile workspace_custom_host
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_custom_host
        -{
        -  "welcome_message": "Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [CUSTOM_HOSTNAME]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_custom_host
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Open [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -workspace_host: [CUSTOM_HOST]
        -Hostname: [CUSTOM_HOSTNAME]
        -URL: [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -URL "/jobs": [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -URL "/jobs?view=list#top": [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID] path:/jobs?view=list#top workspace:{[CUSTOM_HOSTNAME] [CUSTOM_HOST] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Profile no_workspace_id
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile no_workspace_id
        -{
        -  "welcome_message": "Initializing for [DATABRICKS_URL]",
        -  "success_message": "Open [DATABRICKS_URL]/jobs?view=list#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[DATABRICKS_URL]/jobs"
        -    },
        -    "path": {
        -      "description": "Path to open on [DATABRICKS_HOST]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile no_workspace_id
        -Initializing for [DATABRICKS_URL]
        -Open [DATABRICKS_URL]/jobs?view=list#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]
        -URL "/jobs": [DATABRICKS_URL]/jobs
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list#top
        -URLID: ""
        -jobs_url: [DATABRICKS_URL]/jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL]  }]
        -
        -=== Rerender and init with edited inputs
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_custom_host --input-file input.edited.json
        -{
        -  "welcome_message": "Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [CUSTOM_HOSTNAME]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.edited.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Open [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]
        -workspace_host: [CUSTOM_HOST]
        -Hostname: [CUSTOM_HOSTNAME]
        -URL: [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -URL "/jobs": [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -URL "/pipelines?tab=all": [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: https://example.test/my-jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:https://example.test/my-jobs path:/pipelines?tab=all workspace:{[CUSTOM_HOSTNAME] [CUSTOM_HOST] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Failing default of an input with a value
        -
        ->>> [CLI] bundle debug render-template-schema ./supplied --profile no_workspace_id --input-file input.supplied.json
        -{
        -  "welcome_message": null,
        -  "success_message": null,
        -  "properties": {
        -    "value": {
        -      "description": "Value",
        -      "default": "{{ .workspace.ID }}"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./supplied --profile no_workspace_id --config-file input.supplied.json
        -✨ Successfully initialized template
        -value: set by user
        -
        ->>> musterr [CLI] bundle debug render-template-schema ./supplied --profile no_workspace_id
        -Error: property value default: failed to render template "{{ .workspace.ID }}": template: base:1:13: executing "base" at <.workspace.ID>: error calling ID: cannot determine workspace ID, please set workspace_id in the configuration profile, the DATABRICKS_WORKSPACE_ID environment variable, or workspace.workspace_id in the bundle
        -
        -=== Invalid URL paths
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.absolute-url.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "https://other.test/jobs" must be relative to the workspace host
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.protocol-relative.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "//other.test/jobs" must be relative to the workspace host
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.workspace-selector.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "/jobs?o=123" must not set the "o" query parameter, the workspace is selected by the profile
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.selector-w.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "/jobs?w=123" must not set the "w" query parameter, the workspace is selected by the profile
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.selector-workspace-id.json
... (44 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)
TestAccept/bundle/templates-machinery/workspace_variable/runtime/DMS=true: branch ✅ | main (663e1f7) ❌ | latest (v1.24.0) ❌

main (663e1f7):

acceptance_test.go:1345: Diff:
        --- bundle/templates-machinery/workspace_variable/runtime/output.txt
        +++ /tmp/TestAcceptbundletemplates-machineryworkspace_variableruntime766565360/002/output.txt
        @@ -19,219 +19,6 @@
         
         >>> [CLI] bundle init ./urls --profile workspace_classic
         Initializing for [DATABRICKS_URL]
        -Open [DATABRICKS_URL]/jobs?view=list#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]
        -URL "/jobs": [DATABRICKS_URL]/jobs
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list#top
        -URLID: ""
        -jobs_url: [DATABRICKS_URL]/jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL] [WORKSPACE_ID] }]
        +Error: failed to compute file content for urls.txt.tmpl. template: :7:21: executing "" at <.workspace.URLID>: can't evaluate field URLID in type interface {}
         
        -=== Profile workspace_classic_id
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_classic_id
        -{
        -  "welcome_message": "Initializing for [DATABRICKS_URL]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [DATABRICKS_HOST]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_classic_id
        -Initializing for [DATABRICKS_URL]?w=[WORKSPACE_ID]
        -Open [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]?w=[WORKSPACE_ID]
        -URL "/jobs": [DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: [DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs?w=[WORKSPACE_ID] path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Profile workspace_custom_host
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_custom_host
        -{
        -  "welcome_message": "Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [CUSTOM_HOSTNAME]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_custom_host
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Open [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -workspace_host: [CUSTOM_HOST]
        -Hostname: [CUSTOM_HOSTNAME]
        -URL: [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -URL "/jobs": [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -URL "/jobs?view=list#top": [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID] path:/jobs?view=list#top workspace:{[CUSTOM_HOSTNAME] [CUSTOM_HOST] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Profile no_workspace_id
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile no_workspace_id
        -{
        -  "welcome_message": "Initializing for [DATABRICKS_URL]",
        -  "success_message": "Open [DATABRICKS_URL]/jobs?view=list#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[DATABRICKS_URL]/jobs"
        -    },
        -    "path": {
        -      "description": "Path to open on [DATABRICKS_HOST]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile no_workspace_id
        -Initializing for [DATABRICKS_URL]
        -Open [DATABRICKS_URL]/jobs?view=list#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]
        -URL "/jobs": [DATABRICKS_URL]/jobs
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list#top
        -URLID: ""
        -jobs_url: [DATABRICKS_URL]/jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL]  }]
        -
        -=== Rerender and init with edited inputs
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_custom_host --input-file input.edited.json
        -{
        -  "welcome_message": "Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [CUSTOM_HOSTNAME]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.edited.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Open [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]
        -workspace_host: [CUSTOM_HOST]
        -Hostname: [CUSTOM_HOSTNAME]
        -URL: [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -URL "/jobs": [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -URL "/pipelines?tab=all": [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: https://example.test/my-jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:https://example.test/my-jobs path:/pipelines?tab=all workspace:{[CUSTOM_HOSTNAME] [CUSTOM_HOST] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Failing default of an input with a value
        -
        ->>> [CLI] bundle debug render-template-schema ./supplied --profile no_workspace_id --input-file input.supplied.json
        -{
        -  "welcome_message": null,
        -  "success_message": null,
        -  "properties": {
        -    "value": {
        -      "description": "Value",
        -      "default": "{{ .workspace.ID }}"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./supplied --profile no_workspace_id --config-file input.supplied.json
        -✨ Successfully initialized template
        -value: set by user
        -
        ->>> musterr [CLI] bundle debug render-template-schema ./supplied --profile no_workspace_id
        -Error: property value default: failed to render template "{{ .workspace.ID }}": template: base:1:13: executing "base" at <.workspace.ID>: error calling ID: cannot determine workspace ID, please set workspace_id in the configuration profile, the DATABRICKS_WORKSPACE_ID environment variable, or workspace.workspace_id in the bundle
        -
        -=== Invalid URL paths
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.absolute-url.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "https://other.test/jobs" must be relative to the workspace host
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.protocol-relative.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "//other.test/jobs" must be relative to the workspace host
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.workspace-selector.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "/jobs?o=123" must not set the "o" query parameter, the workspace is selected by the profile
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.selector-w.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "/jobs?w=123" must not set the "w" query parameter, the workspace is selected by the profile
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.selector-workspace-id.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "/jobs?workspace_id=123" must not set the "workspace_id" query parameter, the workspace is selected by the profile
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.semicolon.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: failed to parse query of workspace URL path "/jobs?w=999;x=1": invalid semicolon separator in query
        -
        -=== Workspace ID from environment variables
        -
        ->>> DATABRICKS_CONFIG_FILE=/dev/null DATABRICKS_HOST=[CUSTOM_HOST] DATABRICKS_WORKSPACE_ID=[WORKSPACE_ID] [CLI] bundle init ./urls
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Open [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URL: [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -URL "/jobs": [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -URL "/jobs?view=list#top": [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URLID: "[WORKSPACE_ID]"
        -
... (25 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)

latest (v1.24.0):

acceptance_test.go:1345: Diff:
        --- bundle/templates-machinery/workspace_variable/runtime/output.txt
        +++ /tmp/TestAcceptbundletemplates-machineryworkspace_variableruntime3602996997/002/output.txt
        @@ -2,236 +2,6 @@
         === Profile workspace_classic
         
         >>> [CLI] bundle debug render-template-schema ./urls --profile workspace_classic
        -{
        -  "welcome_message": "Initializing for [DATABRICKS_URL]",
        -  "success_message": "Open [DATABRICKS_URL]/jobs?view=list#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[DATABRICKS_URL]/jobs"
        -    },
        -    "path": {
        -      "description": "Path to open on [DATABRICKS_HOST]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        +Error: property path: failed to render template "Path to open on {{ .workspace.Hostname }}": template: base:1:29: executing "base" at <.workspace.Hostname>: nil pointer evaluating interface {}.Hostname
         
        ->>> [CLI] bundle init ./urls --profile workspace_classic
        -Initializing for [DATABRICKS_URL]
        -Open [DATABRICKS_URL]/jobs?view=list#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]
        -URL "/jobs": [DATABRICKS_URL]/jobs
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list#top
        -URLID: ""
        -jobs_url: [DATABRICKS_URL]/jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL] [WORKSPACE_ID] }]
        -
        -=== Profile workspace_classic_id
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_classic_id
        -{
        -  "welcome_message": "Initializing for [DATABRICKS_URL]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [DATABRICKS_HOST]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_classic_id
        -Initializing for [DATABRICKS_URL]?w=[WORKSPACE_ID]
        -Open [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]?w=[WORKSPACE_ID]
        -URL "/jobs": [DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: [DATABRICKS_URL]/jobs?w=[WORKSPACE_ID]
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs?w=[WORKSPACE_ID] path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Profile workspace_custom_host
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_custom_host
        -{
        -  "welcome_message": "Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [CUSTOM_HOSTNAME]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_custom_host
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Open [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -workspace_host: [CUSTOM_HOST]
        -Hostname: [CUSTOM_HOSTNAME]
        -URL: [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -URL "/jobs": [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -URL "/jobs?view=list#top": [CUSTOM_HOST]/jobs?view=list&w=[WORKSPACE_ID]#top
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID] path:/jobs?view=list#top workspace:{[CUSTOM_HOSTNAME] [CUSTOM_HOST] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Profile no_workspace_id
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile no_workspace_id
        -{
        -  "welcome_message": "Initializing for [DATABRICKS_URL]",
        -  "success_message": "Open [DATABRICKS_URL]/jobs?view=list#top",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[DATABRICKS_URL]/jobs"
        -    },
        -    "path": {
        -      "description": "Path to open on [DATABRICKS_HOST]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile no_workspace_id
        -Initializing for [DATABRICKS_URL]
        -Open [DATABRICKS_URL]/jobs?view=list#top
        -workspace_host: [DATABRICKS_URL]
        -Hostname: [DATABRICKS_HOST]
        -URL: [DATABRICKS_URL]
        -URL "/jobs": [DATABRICKS_URL]/jobs
        -URL "/jobs?view=list#top": [DATABRICKS_URL]/jobs?view=list#top
        -URLID: ""
        -jobs_url: [DATABRICKS_URL]/jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:[DATABRICKS_URL]/jobs path:/jobs?view=list#top workspace:{[DATABRICKS_HOST] [DATABRICKS_URL]  }]
        -
        -=== Rerender and init with edited inputs
        -
        ->>> [CLI] bundle debug render-template-schema ./urls --profile workspace_custom_host --input-file input.edited.json
        -{
        -  "welcome_message": "Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]",
        -  "success_message": "Open [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]",
        -  "properties": {
        -    "jobs_url": {
        -      "description": "Jobs page",
        -      "default": "[CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]"
        -    },
        -    "path": {
        -      "description": "Path to open on [CUSTOM_HOSTNAME]",
        -      "default": "/jobs?view=list#top"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.edited.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Open [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]
        -workspace_host: [CUSTOM_HOST]
        -Hostname: [CUSTOM_HOSTNAME]
        -URL: [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -URL "/jobs": [CUSTOM_HOST]/jobs?w=[WORKSPACE_ID]
        -URL "/pipelines?tab=all": [CUSTOM_HOST]/pipelines?tab=all&w=[WORKSPACE_ID]
        -URLID: "[WORKSPACE_ID]"
        -jobs_url: https://example.test/my-jobs
        -Root keys: jobs_url path workspace
        -Root data: map[jobs_url:https://example.test/my-jobs path:/pipelines?tab=all workspace:{[CUSTOM_HOSTNAME] [CUSTOM_HOST] [WORKSPACE_ID] [WORKSPACE_ID]}]
        -
        -=== Failing default of an input with a value
        -
        ->>> [CLI] bundle debug render-template-schema ./supplied --profile no_workspace_id --input-file input.supplied.json
        -{
        -  "welcome_message": null,
        -  "success_message": null,
        -  "properties": {
        -    "value": {
        -      "description": "Value",
        -      "default": "{{ .workspace.ID }}"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle init ./supplied --profile no_workspace_id --config-file input.supplied.json
        -✨ Successfully initialized template
        -value: set by user
        -
        ->>> musterr [CLI] bundle debug render-template-schema ./supplied --profile no_workspace_id
        -Error: property value default: failed to render template "{{ .workspace.ID }}": template: base:1:13: executing "base" at <.workspace.ID>: error calling ID: cannot determine workspace ID, please set workspace_id in the configuration profile, the DATABRICKS_WORKSPACE_ID environment variable, or workspace.workspace_id in the bundle
        -
        -=== Invalid URL paths
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.absolute-url.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "https://other.test/jobs" must be relative to the workspace host
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.protocol-relative.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "//other.test/jobs" must be relative to the workspace host
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.workspace-selector.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "/jobs?o=123" must not set the "o" query parameter, the workspace is selected by the profile
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.selector-w.json
        -Initializing for [CUSTOM_HOST]?w=[WORKSPACE_ID]
        -Error: failed to compute file content for urls.txt.tmpl. template: :6:25: executing "" at <$ws.URL>: error calling URL: workspace URL path "/jobs?w=123" must not set the "w" query parameter, the workspace is selected by the profile
        -
        ->>> musterr [CLI] bundle init ./urls --profile workspace_custom_host --config-file input.selector-workspace-id.json
... (42 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)

@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

✅ Integration test report

Commit: ae38015

Run: 42232209397

Env ✅​pass 🙈​skip Time
✅​ aws linux-2core-8gb 271 16 3:29
✅​ aws-windows-latest-4core-16gb 273 14 2:39
✅​ azure linux-2core-8gb 270 16 4:11
✅​ azure-windows-latest-4core-16gb 272 14 2:35
✅​ gcp linux-2core-8gb 271 16 3:41
✅​ gcp-windows-latest-4core-16gb 273 14 2:34

@pavloKozlov
pavloKozlov marked this pull request as ready for review November 6, 2026 13:56
@pavloKozlov
pavloKozlov requested review from a team as code owners November 6, 2026 13:56
- Add .workspace.URLID: the workspace ID that .workspace.URL adds as ?w=, or
  empty. Unlike .workspace.ID, it doesn't fail when the ID is unknown and
  doesn't return an ID from host metadata.
- Schema rendering keeps the default of an input that has a value when the
  default fails to render, instead of failing. bundle init doesn't use that
  default, so the same input works there.
- Add setup_custom_host to acceptance/script.prepare for the test server
  reached as a host shared by several workspaces, and use it in
  workspace_variable.
- The runtime test covers URLID per profile, a failing default of an input
  with a value, the w and workspace_id selectors and a protocol-relative
  path.
- Doc comments name where URLID comes from, and the missing ID error names
  the bundle's workspace_id.

Co-authored-by: Isaac <no-reply@databricks.com>
@pavloKozlov
pavloKozlov force-pushed the workspace-context-review-fixes branch from 966af61 to ae38015 Compare November 6, 2026 14:13
@pavloKozlov
pavloKozlov changed the base branch from workspace-context-builtin-templates to main November 6, 2026 14:13

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants