diff --git a/README.md b/README.md index fd2938388..45ed10735 100644 --- a/README.md +++ b/README.md @@ -31,5 +31,4 @@ yarn install If you find an issue/bug or have a feature request, please file an issue here: https://github.com/databricks/databricks-vscode/issues/new -Also please send the logs as per these instructions https://docs.databricks.com/dev-tools/vscode-ext.html#send-usage-logs-to-databricks to us at -vscode-private-preview _at_ databricks _dot_ com (remove_the_spaces) +Also please append the logs as per these instructions https://docs.databricks.com/dev-tools/vscode-ext.html#send-usage-logs-to-databricks. diff --git a/packages/databricks-vscode/package.json b/packages/databricks-vscode/package.json index 6de696f53..7bf371196 100644 --- a/packages/databricks-vscode/package.json +++ b/packages/databricks-vscode/package.json @@ -6,7 +6,7 @@ "license": "LicenseRef-LICENSE", "version": "1.1.0", "engines": { - "vscode": "^1.76.0" + "vscode": "^1.78.0" }, "categories": [ "Data Science", @@ -643,7 +643,8 @@ ] }, "extensionDependencies": [ - "ms-python.python" + "ms-python.python", + "ms-toolsai.jupyter" ], "vsce": { "dependencies": false, diff --git a/packages/databricks-vscode/src/configuration/auth/AzureCliCheck.ts b/packages/databricks-vscode/src/configuration/auth/AzureCliCheck.ts index fe00ed65e..7298931ae 100644 --- a/packages/databricks-vscode/src/configuration/auth/AzureCliCheck.ts +++ b/packages/databricks-vscode/src/configuration/auth/AzureCliCheck.ts @@ -58,6 +58,11 @@ export class AzureCliCheck implements Disposable { type: "next", next: "loginAzureCli", }; + } else if (result.expired) { + return { + type: "next", + next: "loginAzureCli", + }; } else if (result.aud) { this.azureLoginAppId = result.aud; return { @@ -164,6 +169,7 @@ export class AzureCliCheck implements Disposable { iss?: string; aud?: string; canLogin: boolean; + expired: boolean; error?: Error; }> { const workspaceClient = new WorkspaceClient( @@ -188,6 +194,18 @@ export class AzureCliCheck implements Disposable { return { iss: m[1], canLogin: false, + expired: false, + }; + } + + m = e.message.match( + /(Interactive authentication is needed). Please run:\naz login( --scope ([a-z0-9-]+?)\/\.default)?\n/s + ); + if (m) { + return { + canLogin: false, + error: new Error(m[1]), + expired: true, }; } @@ -198,12 +216,13 @@ export class AzureCliCheck implements Disposable { return { aud: m[1], canLogin: false, + expired: false, }; } - return {canLogin: false, error: e}; + return {canLogin: false, error: e, expired: false}; } - return {canLogin: true}; + return {canLogin: true, expired: false}; } // check if Azure CLI is installed diff --git a/packages/databricks-vscode/src/test/e2e/wdio.conf.ts b/packages/databricks-vscode/src/test/e2e/wdio.conf.ts index f25174b29..cc7d3663c 100644 --- a/packages/databricks-vscode/src/test/e2e/wdio.conf.ts +++ b/packages/databricks-vscode/src/test/e2e/wdio.conf.ts @@ -339,13 +339,17 @@ export const config: Options.Testrunner = { for (let i = 0; i < 2; i++) { try { await new Promise((resolve, reject) => { + const extensionDependencies = + packageJson.extensionDependencies.flatMap((item) => [ + "--install-extension", + item, + ]); execFile( cli, [ "--extensions-dir", EXTENSION_DIR, - "--install-extension", - "ms-python.python", + ...extensionDependencies, "--install-extension", VSIX_PATH, "--force", diff --git a/packages/databricks-vscode/src/utils/urlUtils.ts b/packages/databricks-vscode/src/utils/urlUtils.ts index ce1203280..5820a41d1 100644 --- a/packages/databricks-vscode/src/utils/urlUtils.ts +++ b/packages/databricks-vscode/src/utils/urlUtils.ts @@ -23,7 +23,7 @@ export function normalizeHost(host: string): URL { } if ( !url.hostname.match( - /(\.databricks\.azure\.us|\.databricks\.azure\.cn|\.azuredatabricks\.net|\.gcp\.databricks\.com|\.cloud\.databricks\.com)$/ + /(\.databricks\.azure\.us|\.databricks\.azure\.cn|\.azuredatabricks\.net|\.gcp\.databricks\.com|\.cloud\.databricks\.com|\.dev\.databricks\.com)$/ ) ) { throw new Error("Not a Databricks host"); @@ -43,5 +43,7 @@ export function isGcpHost(url: URL): boolean { } export function isAwsHost(url: URL): boolean { - return !!url.hostname.match(/\.cloud\.databricks\.com$/); + return !!url.hostname.match( + /(\.cloud\.databricks\.com|\.dev\.databricks\.com)$/ + ); }