diff --git a/extensions/sql-migration/images/newSupportRequest.svg b/extensions/sql-migration/images/newSupportRequest.svg new file mode 100644 index 0000000000..f930b047c8 --- /dev/null +++ b/extensions/sql-migration/images/newSupportRequest.svg @@ -0,0 +1,4 @@ + + + + diff --git a/extensions/sql-migration/package.json b/extensions/sql-migration/package.json index 6dc9c0c78f..445302dc3d 100644 --- a/extensions/sql-migration/package.json +++ b/extensions/sql-migration/package.json @@ -15,6 +15,7 @@ "activationEvents": [ "onDashboardOpen", "onCommand:sqlmigration.start", + "onCommand:sqlmigration.newsupportrequest", "onCommand:sqlmigration.sendfeedback", "onCommand:sqlmigration.openNotebooks" ], @@ -34,6 +35,12 @@ "category": "%migration-command-category%", "icon": "./images/migration.svg" }, + { + "command": "sqlmigration.newsupportrequest", + "title": "%new-support-request-command%", + "category": "%migration-command-category%", + "icon": "./images/newSupportRequest.svg" + }, { "command": "sqlmigration.sendfeedback", "title": "%send-feedback-command%", @@ -78,6 +85,10 @@ ], "menu": { "commandPalette": [ + { + "command": "sqlmigration.newsupportrequest", + "when": "false" + }, { "command": "sqlmigration.sendfeedback", "when": "false" @@ -128,6 +139,7 @@ "widget": { "tasks-widget": [ "sqlmigration.start", + "sqlmigration.newsupportrequest", "sqlmigration.sendfeedback" ] } diff --git a/extensions/sql-migration/package.nls.json b/extensions/sql-migration/package.nls.json index 48c3fb883a..45a98c082c 100644 --- a/extensions/sql-migration/package.nls.json +++ b/extensions/sql-migration/package.nls.json @@ -7,6 +7,7 @@ "migration-command-category": "Azure SQL Migration", "start-migration-command": "Migrate to Azure SQL", "send-feedback-command": "Feedback", + "new-support-request-command": "New support request", "migration-context-menu-category": "Migration Context Menu", "complete-cutover-menu": "Complete cutover", "database-details-menu": "Database details", diff --git a/extensions/sql-migration/src/constants/iconPathHelper.ts b/extensions/sql-migration/src/constants/iconPathHelper.ts index 2f5899cb0c..879c692e1b 100644 --- a/extensions/sql-migration/src/constants/iconPathHelper.ts +++ b/extensions/sql-migration/src/constants/iconPathHelper.ts @@ -34,6 +34,7 @@ export class IconPathHelper { public static completingCutover: IconPath; public static migrationService: IconPath; public static sendFeedback: IconPath; + public static newSupportRequest: IconPath; public static setExtensionContext(context: vscode.ExtensionContext) { IconPathHelper.copy = { @@ -128,5 +129,9 @@ export class IconPathHelper { light: context.asAbsolutePath('images/sendFeedback.svg'), dark: context.asAbsolutePath('images/sendFeedback.svg') }; + IconPathHelper.newSupportRequest = { + light: context.asAbsolutePath('images/newSupportRequest.svg'), + dark: context.asAbsolutePath('images/newSupportRequest.svg') + }; } } diff --git a/extensions/sql-migration/src/constants/strings.ts b/extensions/sql-migration/src/constants/strings.ts index 15bce1a99a..675748a645 100644 --- a/extensions/sql-migration/src/constants/strings.ts +++ b/extensions/sql-migration/src/constants/strings.ts @@ -271,7 +271,7 @@ export const AZURE_SQL = localize('sql.migration.azure.sql', "Azure SQL"); export const CLOSE = localize('sql.migration.close', "Close"); export const DATA_UPLOADED = localize('sql.migraiton.data.uploaded.size', "Data Uploaded/Size"); export const COPY_THROUGHPUT = localize('sql.migration.copy.throughput', "Copy Throughput (MBPS)"); - +export const NEW_SUPPORT_REQUEST = localize('sql.migration.newsupportrequest', "New support request"); //Summary Page export const SUMMARY_PAGE_TITLE = localize('sql.migration.summary.page.title', "Summary"); diff --git a/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts b/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts index c4e9543870..7ae11f0237 100644 --- a/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts +++ b/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts @@ -28,6 +28,7 @@ export class MigrationCutoverDialog { private _cancelButton!: azdata.ButtonComponent; private _refreshLoader!: azdata.LoadingComponent; private _copyDatabaseMigrationDetails!: azdata.ButtonComponent; + private _newSupportRequest!: azdata.ButtonComponent; private _sourceDatabaseInfoField!: InfoFieldSchema; private _sourceDetailsInfoField!: InfoFieldSchema; @@ -325,6 +326,29 @@ export class MigrationCutoverDialog { } }); + // create new support request button. Hiding button until sql migration support has been setup. + this._newSupportRequest = this._view.modelBuilder.button().withProps({ + label: loc.NEW_SUPPORT_REQUEST, + iconPath: IconPathHelper.newSupportRequest, + iconHeight: '16px', + iconWidth: '16px', + height: '20px', + width: '140px', + }).component(); + + this._newSupportRequest.onDidClick(async (e) => { + const serviceId = this._model._migration.controller.id; + const supportUrl = `https://portal.azure.com/#resource${serviceId}/supportrequest`; + await vscode.env.openExternal(vscode.Uri.parse(supportUrl)); + }); + + headerActions.addItem(this._newSupportRequest, { + flex: '0', + CSSStyles: { + 'margin-left': '5px' + } + }); + this._refreshLoader = this._view.modelBuilder.loadingComponent().withProps({ loading: false, height: '15px' diff --git a/extensions/sql-migration/src/main.ts b/extensions/sql-migration/src/main.ts index b7953e148d..2824bd6a44 100644 --- a/extensions/sql-migration/src/main.ts +++ b/extensions/sql-migration/src/main.ts @@ -57,6 +57,9 @@ class SQLMigration { azdata.tasks.registerTask('sqlmigration.start', async () => { await this.launchMigrationWizard(); }), + azdata.tasks.registerTask('sqlmigration.newsupportrequest', async () => { + await this.launchNewSupportRequest(); + }), azdata.tasks.registerTask('sqlmigration.sendfeedback', async () => { const actionId = 'workbench.action.openIssueReporter'; const args = { @@ -85,6 +88,11 @@ class SQLMigration { await wizardController.openWizard(connectionId); } + async launchNewSupportRequest(): Promise { + await vscode.env.openExternal(vscode.Uri.parse( + `https://portal.azure.com/#blade/Microsoft_Azure_Support/HelpAndSupportBlade/newsupportrequest`)); + } + stop(): void { }