Adding tools and Eula page to Resource Deployment (#13182)

* SQL VM wizard migration to ResourceType Wizard

* Revert "SQL VM wizard migration to ResourceType Wizard"

This reverts commit e58cd47707a7e2812be20d915f1fe638b96b035f.

* migrated notebook wizard

* SQL VM wizard migration to ResourceType Wizard

* Fixed some imports on SQL VM wizard

* migrated sqldb wizard to generic ResourceTypeWizard

* Added missing import
Solving errors from the merge

* Moved some common functionality into ResourceTypeWizard

* Changed logic of start deployment

* fixed some import after changing files.

* added pagelss model and tools and Eula Page

* Hacky solution to fix wizard update bugs

* Removed tools and Eula components from resourceTypePickerDialog

* Removing changes in ext host

* reverting every change in ext host dialog

* Fixed setting the first provider for resourceTypeWizard.

* Some PR related changes
-Fixed typo in localized constants
-made some code logic concise
-Removed unnecessary check in tools&Eula

* Added some fixes for compilation error

* some refactoring for PRs

* moved comment

* cleaning up some code to make it more readable

* fixed comment typo

* Some additional cleaning up of code.

* Adding a public getter for model

* -Adding error message for failed EULA validation
-Removed unnecessary check for selected resource.

* Added comment to explain model variable behavior

* Added additional comments

* Fixed a comment to make it accurate

* Better phrasing for a comment
This commit is contained in:
Aasim Khan
2020-11-06 13:05:41 -08:00
committed by GitHub
parent bb35276652
commit 712c6ae5d8
7 changed files with 661 additions and 470 deletions

View File

@@ -3,7 +3,6 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as azdata from 'azdata';
import { createWriteStream, promises as fs } from 'fs';
import * as https from 'https';
import * as os from 'os';
@@ -11,7 +10,6 @@ import * as path from 'path';
import * as vscode from 'vscode';
import * as nls from 'vscode-nls';
import { DeploymentProvider, instanceOfAzureSQLVMDeploymentProvider, instanceOfAzureSQLDBDeploymentProvider, instanceOfCommandDeploymentProvider, instanceOfDialogDeploymentProvider, instanceOfDownloadDeploymentProvider, instanceOfNotebookBasedDialogInfo, instanceOfNotebookDeploymentProvider, instanceOfNotebookWizardDeploymentProvider, instanceOfWebPageDeploymentProvider, instanceOfWizardDeploymentProvider, NotebookInfo, NotebookPathInfo, ResourceType, ResourceTypeOption } from '../interfaces';
import { DeploymentInputDialog } from '../ui/deploymentInputDialog';
import { AzdataService } from './azdataService';
import { KubeService } from './kubeService';
import { INotebookService } from './notebookService';
@@ -25,7 +23,7 @@ const localize = nls.loadMessageBundle();
export interface IResourceTypeService {
getResourceTypes(filterByPlatform?: boolean): ResourceType[];
validateResourceTypes(resourceTypes: ResourceType[]): string[];
startDeployment(resourceType: ResourceType, provider: DeploymentProvider): void;
startDeployment(resourceType: ResourceType): void;
}
export class ResourceTypeService implements IResourceTypeService {
@@ -248,42 +246,12 @@ export class ResourceTypeService implements IResourceTypeService {
}
public startDeployment(resourceType: ResourceType, provider: DeploymentProvider): void {
const self = this;
if (instanceOfDialogDeploymentProvider(provider)) {
const dialog = new DeploymentInputDialog(this.notebookService, this.platformService, this.toolsService, provider.dialog);
dialog.open();
} else if (instanceOfNotebookDeploymentProvider(provider)) {
this.notebookService.openNotebook(provider.notebook);
} else if (instanceOfDownloadDeploymentProvider(provider)) {
const taskName = localize('resourceDeployment.DownloadAndLaunchTaskName', "Download and launch installer, URL: {0}", provider.downloadUrl);
azdata.tasks.startBackgroundOperation({
displayName: taskName,
description: taskName,
isCancelable: false,
operation: op => {
op.updateStatus(azdata.TaskStatus.InProgress, localize('resourceDeployment.DownloadingText', "Downloading from: {0}", provider.downloadUrl));
self.download(provider.downloadUrl).then(async (downloadedFile) => {
op.updateStatus(azdata.TaskStatus.InProgress, localize('resourceDeployment.DownloadCompleteText', "Successfully downloaded: {0}", downloadedFile));
op.updateStatus(azdata.TaskStatus.InProgress, localize('resourceDeployment.LaunchingProgramText', "Launching: {0}", downloadedFile));
await this.platformService.runCommand(downloadedFile, { sudo: true });
op.updateStatus(azdata.TaskStatus.Succeeded, localize('resourceDeployment.ProgramLaunchedText', "Successfully launched: {0}", downloadedFile));
}, (error) => {
op.updateStatus(azdata.TaskStatus.Failed, error);
});
}
});
} else if (instanceOfWebPageDeploymentProvider(provider)) {
vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(provider.webPageUrl));
} else if (instanceOfCommandDeploymentProvider(provider)) {
vscode.commands.executeCommand(provider.command);
} else {
const wizard = new ResourceTypeWizard(resourceType, provider, new KubeService(), new AzdataService(this.platformService), this.notebookService, this.toolsService, this.platformService);
wizard.open();
}
public startDeployment(resourceType: ResourceType): void {
const wizard = new ResourceTypeWizard(resourceType, new KubeService(), new AzdataService(this.platformService), this.notebookService, this.toolsService, this.platformService, this);
wizard.open();
}
private download(url: string): Promise<string> {
public download(url: string): Promise<string> {
const self = this;
const promise = new Promise<string>((resolve, reject) => {
https.get(url, async function (response) {