Conversation
Selecting a different project folder in the Bundle Resource Explorer did nothing in remote mode — the target was never re-resolved because remote mode never runs ConnectionManager.init() (the listener that calls setTarget/init on a folder change) and has no BundleProjectManager. Have RemoteBundleInitializer listen for folder changes and drive the setTarget(undefined) -> init() -> applyEnvAuth() sequence itself, mirroring normal mode, serialised by a dedicated folderChangeMutex. Add tests for the folder-change path.
Extract the target quickpick from ConnectionCommands.selectTarget into a shared promptToSelectBundleTarget helper and register the selectTarget command in the remote block. Gate the remote Configuration view's Target row on folder presence (not target presence) so a folder with no resolved target shows a clickable "Select a bundle target" prompt, and un-gate the command/menus from !remoteMode.
Contributor
|
🤖 Integration tests ❌ failed for |
… mode Exposing the configuration view in remote mode changed its when-clause from `!databricks.context.remoteMode` to `databricks.context.activated`. In normal mode `activated` is false until the full pre-login init completes, so the view stayed hidden during startup and the welcome-screen e2e test timed out looking for the CONFIGURATION section. Gate on `!databricks.context.remoteMode || databricks.context.activated` so normal mode shows the view immediately (as before) while remote mode still surfaces it once activation sets the flag.
Contributor
|
🤖 Integration tests ❌ failed for |
Contributor
|
🤖 Integration tests ✅ passed for |
Contributor
|
🤖 Integration tests ✅ passed for |
In Databricks Remote SSH mode the extension authenticates solely against
the ambient environment (the workspace the session was opened in), but
the selected bundle target's workspace.host can point elsewhere. When
they differ, the environment credentials are silently applied to the
target's config, so the Bundle Resource Explorer and any deploy use the
environment host rather than the target's — with no signal to the user.
Add RemoteTargetHostManager, which compares the environment host against
the selected target's host on target/connection/folder changes and, on a
mismatch, shows a warning toast ("Switch target" / "Don't warn for this
target") and exposes the state so the Configuration view badges the
Target node. The toast shows at most once
environment->target host pair; "Don't warn for this target" persists a
per-pair, workspace-scoped opt-out so an intentional cross-workspace
deploy stops nagging while a genuinely new mismatch still warns.
- New databricks.bundle.remote.hideHostMismatchWarning state key.
- New bundleRemoteHostMismatchWarning tel
action taken (switch-target / hidden / dismissed); no hostnames.
In Databricks Remote SSH mode the Configuration view showed a
"Select a bundle target" prompt even when the active folder wasn't a
bundle project (no databricks.yml, or a bundle defining no targets).
RemoteConfigurationDataProvider only suppressed the target row when no
folder was active, but activeProjectUri defaults to the first workspace
folder, so the prompt appeared for any folder. Normal mode avoids this
via bundleProjectManager.isBundleProject(), which the remote provider
lacks.
Gate the target row on configModel.targets being non-empty — an
auth-independent, file-based signal that resolves to {} when there's no
bundle or no targets, while still showing the prompt for a real bundle
whose target isn't auto-resolved yet. Also subscribe to
configModel.onDidChange so the row re-evaluates when a bundle file is
added or removed at runtime without changing the resolved target.
Contributor
|
🤖 Integration tests ✅ passed for |
Contributor
|
🤖 Integration tests ✅ passed for |
Contributor
|
If integration tests don't run automatically, an authorized user can run them manually by following the instructions below: Trigger: Inputs:
Checks will be approved automatically on success. |
Contributor
|
🤖 Integration tests ❌ failed for |
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
Until now, Databricks Remote SSH ("remote") mode surfaced only the Unity Catalog and Docs views. It connected purely from the ambient environment via ConnectionManager.connectFromEnvironment(), which deliberately never touches the ConfigModel, so there was no bundle target and none of the bundle views could render. This PR brings the Bundle Resource Explorer, Bundle Variables, and a slimmed-down Configuration view to remote mode, along with project-folder and bundle-target pickers — all without introducing a login flow.
New: RemoteBundleInitializer (src/bundle/RemoteBundleInitializer.ts)
Bridges the environment-resolved auth onto the ConfigModel so BundleRemoteStateModel can shell out to bundle summary. It enforces the invariant that, in remote mode, the ConfigModel's auth provider always mirrors the environment:
New: RemoteConfigurationDataProvider (src/ui/configuration-view/RemoteConfigurationDataProvider.ts)
A minimal Configuration view showing the active project folder (clickable to switch) and, once resolved, the bundle target with its Host/Mode children — enough to answer "which project is selected" and "which workspace will a deploy target." It drops the normal provider's BundleProjectManager gate and the login/cluster/sync/environment components that don't exist in remote mode, and suppresses BundleTargetComponent until a folder is active.
Refactor: extension.ts
Extracted the Bundle Resource Explorer and Bundle Variables registration into shared registerBundleResourceExplorer / registerBundleVariablesView helpers, called from both the normal and remote activation flows (the only difference is that remote mode passes no ConfigurationDataProvider to the decoration provider). The remote flow now wires up the initializer, the remote Configuration view, both bundle views, and lightweight selectActiveProjectFolder / selectTarget command registrations.
Refactor: shared bundle-target picker
ConnectionCommands.selectTarget and the new remote databricks.connection.bundle.selectTarget registration now share promptToSelectBundleTarget (src/bundle/activeBundleUtils.ts) — the two flows have only the ConfigModel in common.
DecorationProvider now takes an optional ConfigurationDataProvider (absent in remote mode).
package.json
Tests