diff --git a/extensions/sql-migration/src/main.ts b/extensions/sql-migration/src/main.ts index 34949882df..9710753cfc 100644 --- a/extensions/sql-migration/src/main.ts +++ b/extensions/sql-migration/src/main.ts @@ -20,10 +20,18 @@ class SQLMigration { async registerCommands(): Promise { const commandDisposables: vscode.Disposable[] = [ // Array of disposables returned by registerCommand vscode.commands.registerCommand('sqlmigration.start', async () => { - const connection = await azdata.connection.openConnectionDialog(); - + let activeConnection = await azdata.connection.getCurrentConnection(); + let connectionId: string = ''; + if (!activeConnection) { + const connection = await azdata.connection.openConnectionDialog(); + if (connection) { + connectionId = connection.connectionId; + } + } else { + connectionId = activeConnection.connectionId; + } const wizardController = new WizardController(this.context); - await wizardController.openWizard(connection); + await wizardController.openWizard(connectionId); }), vscode.commands.registerCommand('sqlmigration.testDialog', async () => { diff --git a/extensions/sql-migration/src/models/stateMachine.ts b/extensions/sql-migration/src/models/stateMachine.ts index 7474a037ab..19cc2a58d3 100644 --- a/extensions/sql-migration/src/models/stateMachine.ts +++ b/extensions/sql-migration/src/models/stateMachine.ts @@ -65,7 +65,7 @@ export interface DatabaseBackupModel { azureSecurityToken: string; } export interface Model { - readonly sourceConnection: azdata.connection.Connection; + readonly sourceConnectionId: string; readonly currentState: State; gatheringInformationError: string | undefined; skuRecommendations: SKURecommendations | undefined; @@ -89,7 +89,7 @@ export class MigrationStateModel implements Model, vscode.Disposable { constructor( private readonly _extensionContext: vscode.ExtensionContext, - private readonly _sourceConnection: azdata.connection.Connection, + private readonly _sourceConnectionId: string, public readonly migrationService: mssql.ISqlMigrationService ) { this._currentState = State.INIT; @@ -112,8 +112,8 @@ export class MigrationStateModel implements Model, vscode.Disposable { this._databaseBackup = dbBackup; } - public get sourceConnection(): azdata.connection.Connection { - return this._sourceConnection; + public get sourceConnectionId(): string { + return this._sourceConnectionId; } public get currentState(): State { diff --git a/extensions/sql-migration/src/wizard/sourceConfigurationPage.ts b/extensions/sql-migration/src/wizard/sourceConfigurationPage.ts index 194b169e33..75e6a11a26 100644 --- a/extensions/sql-migration/src/wizard/sourceConfigurationPage.ts +++ b/extensions/sql-migration/src/wizard/sourceConfigurationPage.ts @@ -33,7 +33,7 @@ export class SourceConfigurationPage extends MigrationWizardPage { await view.initializeModel(form); - let connectionUri: string = await azdata.connection.getUriForConnection(this.migrationStateModel.sourceConnection.connectionId); + let connectionUri: string = await azdata.connection.getUriForConnection(this.migrationStateModel.sourceConnectionId); this.migrationStateModel.migrationService.getAssessments(connectionUri).then(results => { if (results) { this.migrationStateModel.assessmentResults = results.items; diff --git a/extensions/sql-migration/src/wizard/wizardController.ts b/extensions/sql-migration/src/wizard/wizardController.ts index 704ca9b04b..e2fab6213d 100644 --- a/extensions/sql-migration/src/wizard/wizardController.ts +++ b/extensions/sql-migration/src/wizard/wizardController.ts @@ -10,7 +10,7 @@ import { SourceConfigurationPage } from './sourceConfigurationPage'; import { WIZARD_TITLE } from '../models/strings'; import { MigrationWizardPage } from '../models/migrationWizardPage'; import { SKURecommendationPage } from './skuRecommendationPage'; -import { SubscriptionSelectionPage } from './subscriptionSelectionPage'; +// import { SubscriptionSelectionPage } from './subscriptionSelectionPage'; import { DatabaseBackupPage } from './databaseBackupPage'; import { AccountsSelectionPage } from './accountsSelectionPage'; @@ -19,10 +19,10 @@ export class WizardController { } - public async openWizard(profile: azdata.connection.Connection): Promise { + public async openWizard(connectionId: string): Promise { const api = (await vscode.extensions.getExtension(mssql.extension.name)?.activate()) as mssql.IExtension; if (api) { - const stateModel = new MigrationStateModel(this.extensionContext, profile, api.sqlMigration); + const stateModel = new MigrationStateModel(this.extensionContext, connectionId, api.sqlMigration); this.extensionContext.subscriptions.push(stateModel); this.createWizard(stateModel); } @@ -32,13 +32,18 @@ export class WizardController { const wizard = azdata.window.createWizard(WIZARD_TITLE, 'wide'); wizard.generateScriptButton.enabled = false; wizard.generateScriptButton.hidden = true; - + // Disabling unused pages const sourceConfigurationPage = new SourceConfigurationPage(wizard, stateModel); const skuRecommendationPage = new SKURecommendationPage(wizard, stateModel); - const subscriptionSelectionPage = new SubscriptionSelectionPage(wizard, stateModel); + // const subscriptionSelectionPage = new SubscriptionSelectionPage(wizard, stateModel); const azureAccountsPage = new AccountsSelectionPage(wizard, stateModel); const databaseBackupPage = new DatabaseBackupPage(wizard, stateModel); - const pages: MigrationWizardPage[] = [sourceConfigurationPage, skuRecommendationPage, subscriptionSelectionPage, azureAccountsPage, databaseBackupPage]; + const pages: MigrationWizardPage[] = [ + // subscriptionSelectionPage, + azureAccountsPage, + sourceConfigurationPage, + skuRecommendationPage, + databaseBackupPage]; wizard.pages = pages.map(p => p.getwizardPage());