From ea7b07913116ae52b8cd0b70f0c72e429813f336 Mon Sep 17 00:00:00 2001 From: Kartik Gupta <88345179+kartikgupta-db@users.noreply.github.com> Date: Wed, 28 Feb 2024 14:02:00 +0100 Subject: [PATCH] Update CLI to v0.214.1 (#1099) ## Changes ## Tests --- packages/databricks-vscode/package.json | 2 +- .../src/cli/CliWrapper.test.ts | 7 ++-- .../databricks-vscode/src/cli/CliWrapper.ts | 42 ++++++++++++------- packages/databricks-vscode/src/extension.ts | 2 +- .../file-managers/DatabricksEnvFileManager.ts | 1 + 5 files changed, 33 insertions(+), 21 deletions(-) diff --git a/packages/databricks-vscode/package.json b/packages/databricks-vscode/package.json index 49e69c424..06cac40ad 100644 --- a/packages/databricks-vscode/package.json +++ b/packages/databricks-vscode/package.json @@ -765,7 +765,7 @@ "useYarn": false }, "cli": { - "version": "0.212.3" + "version": "0.214.1" }, "scripts": { "vscode:prepublish": "rm -rf out && yarn run package:compile && yarn run package:wrappers:write && yarn run package:jupyter-init-script:write && yarn run package:copy-webview-toolkit && yarn run generate-telemetry", diff --git a/packages/databricks-vscode/src/cli/CliWrapper.test.ts b/packages/databricks-vscode/src/cli/CliWrapper.test.ts index 104138635..2a0a7d079 100644 --- a/packages/databricks-vscode/src/cli/CliWrapper.test.ts +++ b/packages/databricks-vscode/src/cli/CliWrapper.test.ts @@ -10,13 +10,14 @@ import {promisify} from "node:util"; import {execFile as execFileCb} from "node:child_process"; import {withFile} from "tmp-promise"; import {writeFile, readFile} from "node:fs/promises"; -import {when, spy, reset} from "ts-mockito"; +import {when, spy, reset, instance, mock} from "ts-mockito"; import {CliWrapper} from "./CliWrapper"; import path from "node:path"; import os from "node:os"; import crypto from "node:crypto"; import {Context} from "@databricks/databricks-sdk/dist/context"; import {logging} from "@databricks/databricks-sdk"; +import {LoggerManager} from "../logger"; const execFile = promisify(execFileCb); const cliPath = path.join(__dirname, "../../bin/databricks"); @@ -35,6 +36,7 @@ function createCliWrapper(logFilePath?: string) { return path.join(__dirname, "../..", relativePath); }, } as any, + instance(mock(LoggerManager)), logFilePath ); } @@ -126,14 +128,12 @@ describe(__filename, () => { assert.equal(profiles.length, 2); assert.equal(profiles[0].name, "DEFAULT"); assert.equal(profiles[0].host, "https://cloud.databricks.com/"); - assert.equal(profiles[0].authType, "pat"); assert.equal(profiles[1].name, "STAGING"); assert.equal( profiles[1].host, "https://staging.cloud.databricks.com/" ); - assert.equal(profiles[1].authType, "pat"); }); }); @@ -164,7 +164,6 @@ nothing = true assert.equal(profiles[0].name, "correct"); assert.equal(profiles[0].host, "https://cloud.databricks.com/"); - assert.equal(profiles[0].authType, "pat"); assert.equal(profiles[1].name, "no-token"); assert.equal(profiles[1].host, "https://cloud.databricks.com/"); diff --git a/packages/databricks-vscode/src/cli/CliWrapper.ts b/packages/databricks-vscode/src/cli/CliWrapper.ts index 4c0b312eb..96a05b96c 100644 --- a/packages/databricks-vscode/src/cli/CliWrapper.ts +++ b/packages/databricks-vscode/src/cli/CliWrapper.ts @@ -9,7 +9,7 @@ import {SyncDestinationMapper} from "../sync/SyncDestination"; import {workspaceConfigs} from "../vscode-objs/WorkspaceConfigs"; import {promisify} from "node:util"; import {logging} from "@databricks/databricks-sdk"; -import {Loggers} from "../logger"; +import {LoggerManager, Loggers} from "../logger"; import {Context, context} from "@databricks/databricks-sdk/dist/context"; import {Cloud} from "../utils/constants"; import {EnvVarGenerators, FileUtils, UrlUtils} from "../utils"; @@ -89,6 +89,7 @@ export class CliWrapper { private clusterId?: string; constructor( private extensionContext: ExtensionContext, + private loggerManager: LoggerManager, private logFilePath?: string ) {} @@ -191,7 +192,13 @@ export class CliWrapper { } } ctx?.logger?.error(msg, e); - this.showConfigFileWarning(msg); + window + .showWarningMessage(msg, "Open Databricks Config File") + .then(async (choice) => { + if (choice === "Open Databricks Config File") { + await FileUtils.openDatabricksConfigFile(); + } + }); return []; } @@ -201,7 +208,7 @@ export class CliWrapper { profiles = profiles.filter((p: any) => !p.account_id); const result = []; - + let hasError = false; for (const profile of profiles) { try { result.push({ @@ -220,22 +227,27 @@ export class CliWrapper { msg = `Error parsing profile ${profile.name}`; } ctx?.logger?.error(msg, e); - this.showConfigFileWarning(msg); + hasError = true; } } - return result; - } - private async showConfigFileWarning(msg: string) { - const openAction = "Open Databricks Config File"; - const choice = await window.showWarningMessage( - msg, - openAction, - "Ignore" - ); - if (choice === openAction) { - await FileUtils.openDatabricksConfigFile(); + if (hasError) { + window + .showWarningMessage( + "There were errors in parsing some profiles", + "Open Databricks Config File", + "Show Error Logs" + ) + .then(async (choice) => { + if (choice === "Open Databricks Config File") { + await FileUtils.openDatabricksConfigFile(); + } + if (choice === "Show Error Logs") { + this.loggerManager.showOutputChannel("Databricks Logs"); + } + }); } + return result; } public async getBundleSchema(): Promise { diff --git a/packages/databricks-vscode/src/extension.ts b/packages/databricks-vscode/src/extension.ts index a5ea55488..154c70627 100644 --- a/packages/databricks-vscode/src/extension.ts +++ b/packages/databricks-vscode/src/extension.ts @@ -99,7 +99,7 @@ export async function activate( e ); } - const cli = new CliWrapper(context, cliLogFilePath); + const cli = new CliWrapper(context, loggerManager, cliLogFilePath); context.extensionPath; if ( diff --git a/packages/databricks-vscode/src/file-managers/DatabricksEnvFileManager.ts b/packages/databricks-vscode/src/file-managers/DatabricksEnvFileManager.ts index 29ea5020a..433390a38 100644 --- a/packages/databricks-vscode/src/file-managers/DatabricksEnvFileManager.ts +++ b/packages/databricks-vscode/src/file-managers/DatabricksEnvFileManager.ts @@ -151,6 +151,7 @@ export class DatabricksEnvFileManager implements Disposable { logging.NamedLogger.getOrCreate(Loggers.Extension).debug( `${this.userEnvPath.fsPath} does not exist. Not loading user env vars and continuing.` ); + return; } return await EnvVarGenerators.getUserEnvVars(this.userEnvPath); }