From 93685d3a0958acde8ef448d625d7dd21fd975778 Mon Sep 17 00:00:00 2001 From: Alan Ren Date: Thu, 24 Oct 2019 14:57:17 -0700 Subject: [PATCH] make the azdata install url configurable (#7989) * make the azdata install url configurable * use settings without reloading * comments --- extensions/resource-deployment/package.json | 17 ++++++ .../resource-deployment/package.nls.json | 9 ++- .../resource-deployment/src/constants.ts | 8 +++ .../src/services/tools/azCliTool.ts | 2 +- .../src/services/tools/azdataTool.ts | 58 ++++++++++++------- .../src/services/tools/dockerTool.ts | 2 +- .../src/services/tools/kubeCtlTool.ts | 2 +- .../src/services/tools/toolBase.ts | 3 +- 8 files changed, 73 insertions(+), 28 deletions(-) create mode 100644 extensions/resource-deployment/src/constants.ts diff --git a/extensions/resource-deployment/package.json b/extensions/resource-deployment/package.json index a832c6e06b..2849b6f27a 100644 --- a/extensions/resource-deployment/package.json +++ b/extensions/resource-deployment/package.json @@ -25,6 +25,23 @@ "microsoft.notebook" ], "contributes": { + "configuration": [ + { + "title": "%deployment.configuration.title%", + "properties": { + "deployment.azdataPipInstallUri": { + "type": "string", + "default": "https://aka.ms/azdata", + "description": "%azdata-pip-install-uri-description%" + }, + "deployment.azdataPipInstallArgs": { + "type": "string", + "default": "", + "description": "%azdata-pip-install-args-description%" + } + } + } + ], "commands": [ { "command": "azdata.resource.deploy", diff --git a/extensions/resource-deployment/package.nls.json b/extensions/resource-deployment/package.nls.json index 7f3557dbd7..60bfc57401 100644 --- a/extensions/resource-deployment/package.nls.json +++ b/extensions/resource-deployment/package.nls.json @@ -48,7 +48,10 @@ "resource-type-sql-windows-setup-display-name": "SQL Server on Windows", "resource-type-sql-windows-setup-description": "Run SQL Server on Windows, select a version to get started.", "bdc-agreement": "I accept {0}, {1} and {2}.", - "bdc-agreement-privacy-statement":"Microsoft Privacy Statement", - "bdc-agreement-azdata-eula":"azdata License Terms", - "bdc-agreement-bdc-eula":"SQL Server License Terms" + "bdc-agreement-privacy-statement": "Microsoft Privacy Statement", + "bdc-agreement-azdata-eula": "azdata License Terms", + "bdc-agreement-bdc-eula": "SQL Server License Terms", + "deployment.configuration.title": "Deployment configuration", + "azdata-pip-install-uri-description": "Location of the azdata package used for the pip install command", + "azdata-pip-install-args-description": "Additional arguments for the pip install azdata command" } diff --git a/extensions/resource-deployment/src/constants.ts b/extensions/resource-deployment/src/constants.ts new file mode 100644 index 0000000000..eb6af0b9e6 --- /dev/null +++ b/extensions/resource-deployment/src/constants.ts @@ -0,0 +1,8 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +export const DeploymentConfigurationKey: string = 'deployment'; +export const AzdataPipInstallUriKey: string = 'azdataPipInstallUri'; +export const azdataPipInstallArgsKey: string = 'azdataPipInstallArgs'; diff --git a/extensions/resource-deployment/src/services/tools/azCliTool.ts b/extensions/resource-deployment/src/services/tools/azCliTool.ts index f1ad15a7bd..ab5d626dc4 100644 --- a/extensions/resource-deployment/src/services/tools/azCliTool.ts +++ b/extensions/resource-deployment/src/services/tools/azCliTool.ts @@ -51,7 +51,7 @@ export class AzCliTool extends ToolBase { } } - readonly allInstallationCommands: Map = new Map([ + protected readonly allInstallationCommands: Map = new Map([ [OsType.linux, linuxInstallationCommands], [OsType.win32, win32InstallationCommands], [OsType.darwin, macOsInstallationCommands], diff --git a/extensions/resource-deployment/src/services/tools/azdataTool.ts b/extensions/resource-deployment/src/services/tools/azdataTool.ts index 1a214994e2..556b4430b7 100644 --- a/extensions/resource-deployment/src/services/tools/azdataTool.ts +++ b/extensions/resource-deployment/src/services/tools/azdataTool.ts @@ -3,12 +3,14 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { EOL } from 'os'; +import * as vscode from 'vscode'; import * as path from 'path'; import { SemVer } from 'semver'; import * as nls from 'vscode-nls'; import { Command, OsType, ToolType } from '../../interfaces'; import { IPlatformService } from '../platformService'; import { ToolBase } from './toolBase'; +import { DeploymentConfigurationKey, AzdataPipInstallUriKey, azdataPipInstallArgsKey } from '../../constants'; const localize = nls.loadMessageBundle(); const installationRoot = '~/.local/bin'; @@ -66,22 +68,50 @@ export class AzdataTool extends ToolBase { } } - readonly allInstallationCommands: Map = new Map([ - [OsType.linux, linuxInstallationCommands], - [OsType.win32, defaultInstallationCommands], - [OsType.darwin, defaultInstallationCommands], - [OsType.others, defaultInstallationCommands] - ]); + protected get allInstallationCommands(): Map { + return new Map([ + [OsType.linux, this.defaultInstallationCommands], + [OsType.win32, this.defaultInstallationCommands], + [OsType.darwin, this.defaultInstallationCommands], + [OsType.others, this.defaultInstallationCommands] + ]); + } protected get uninstallCommand(): string | undefined { if (this.osType !== OsType.linux) { - return defaultUninstallCommand; + return this.defaultUninstallCommand; } else { return super.uninstallCommand; } } + + private get defaultInstallationCommands(): Command[] { + return [ + { + comment: localize('resourceDeployment.Azdata.InstallUpdatePythonRequestsPackage', "installing/updating to latest version of requests python package azdata ..."), + command: `pip3 install -U requests` + }, + { + comment: localize('resourceDeployment.Azdata.InstallingAzdata', "installing azdata ..."), + command: `pip3 install -r ${this.azdataInstallUri} ${this.azdataInstallAdditionalArgs} --quiet --user` + } + ]; + } + + private get defaultUninstallCommand(): string { + return `pip3 uninstall -r ${this.azdataInstallUri} ${this.azdataInstallAdditionalArgs} -y `; + } + + private get azdataInstallUri(): string { + return vscode.workspace.getConfiguration(DeploymentConfigurationKey)[AzdataPipInstallUriKey]; + } + + private get azdataInstallAdditionalArgs(): string { + return vscode.workspace.getConfiguration(DeploymentConfigurationKey)[azdataPipInstallArgsKey]; + } } +/* const linuxInstallationCommands = [ { sudo: true, @@ -114,16 +144,4 @@ const linuxInstallationCommands = [ command: 'apt-get install -y azdata-cli' } ]; - -const defaultInstallationCommands = [ - { - comment: localize('resourceDeployment.Azdata.InstallUpdatePythonRequestsPackage', "installing/updating to latest version of requests python package azdata ..."), - command: `pip3 install -U requests` - }, - { - comment: localize('resourceDeployment.Azdata.InstallingAzdata', "installing azdata ..."), - command: `pip3 install -r https://aka.ms/azdata --quiet --user` - } -]; - -const defaultUninstallCommand = `pip3 uninstall -r https://aka.ms/azdata -y `; +*/ diff --git a/extensions/resource-deployment/src/services/tools/dockerTool.ts b/extensions/resource-deployment/src/services/tools/dockerTool.ts index a2143afd32..22b421afbb 100644 --- a/extensions/resource-deployment/src/services/tools/dockerTool.ts +++ b/extensions/resource-deployment/src/services/tools/dockerTool.ts @@ -50,7 +50,7 @@ export class DockerTool extends ToolBase { return false; } - get allInstallationCommands(): Map { + protected get allInstallationCommands(): Map { throw Error('Installation of DockerTool is not supported'); } } diff --git a/extensions/resource-deployment/src/services/tools/kubeCtlTool.ts b/extensions/resource-deployment/src/services/tools/kubeCtlTool.ts index 4c38af320b..794a4155dc 100644 --- a/extensions/resource-deployment/src/services/tools/kubeCtlTool.ts +++ b/extensions/resource-deployment/src/services/tools/kubeCtlTool.ts @@ -53,7 +53,7 @@ export class KubeCtlTool extends ToolBase { return true; } - readonly allInstallationCommands: Map = new Map([ + protected readonly allInstallationCommands: Map = new Map([ [OsType.linux, linuxInstallationCommands], [OsType.win32, win32InstallationCommands], [OsType.darwin, macOsInstallationCommands], diff --git a/extensions/resource-deployment/src/services/tools/toolBase.ts b/extensions/resource-deployment/src/services/tools/toolBase.ts index d702248c24..85bca78ac6 100644 --- a/extensions/resource-deployment/src/services/tools/toolBase.ts +++ b/extensions/resource-deployment/src/services/tools/toolBase.ts @@ -37,8 +37,7 @@ export abstract class ToolBase implements ITool { abstract type: ToolType; abstract homePage: string; abstract autoInstallSupported: boolean; - abstract readonly allInstallationCommands: Map; - + protected abstract readonly allInstallationCommands: Map; protected abstract getVersionFromOutput(output: string): SemVer | undefined; protected readonly _onDidUpdateData = new vscode.EventEmitter(); protected readonly uninstallCommand?: string;