From e31d563f61fb4c8f6ad677dc0d6a4ff7b5938349 Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Thu, 29 Oct 2020 14:49:02 -0700 Subject: [PATCH] Implement open in portal link for Azure resource viewer (#13139) * Implement open in portal link for Azure resource viewer * localize --- extensions/azurecore/src/azureDataGridProvider.ts | 4 ++++ extensions/azurecore/src/extension.ts | 12 +++++++++++- extensions/azurecore/src/localizedConstants.ts | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/extensions/azurecore/src/azureDataGridProvider.ts b/extensions/azurecore/src/azureDataGridProvider.ts index 80a1c41066..01b1285786 100644 --- a/extensions/azurecore/src/azureDataGridProvider.ts +++ b/extensions/azurecore/src/azureDataGridProvider.ts @@ -47,11 +47,15 @@ export class AzureDataGridProvider implements azdata.DataGridProvider { id: item.id, fieldValues: { nameLink: { displayText: item.name, linkOrCommand: 'https://microsoft.com' }, + name: item.name, resourceGroup: item.resourceGroup, + subscriptionId: item.subscriptionId, subscriptionName: subscriptions.find(subscription => subscription.id === item.subscriptionId)?.name ?? item.subscriptionId, locationDisplayName: utils.getRegionDisplayName(item.location), + type: item.type, typeDisplayName: utils.getResourceTypeDisplayName(item.type), iconPath: utils.getResourceTypeIcon(this._appContext, item.type), + portalEndpoint: account.properties.providerSettings.settings.portalEndpoint } }; }); diff --git a/extensions/azurecore/src/extension.ts b/extensions/azurecore/src/extension.ts index b0e0828156..d825263fb2 100644 --- a/extensions/azurecore/src/extension.ts +++ b/extensions/azurecore/src/extension.ts @@ -92,7 +92,17 @@ export async function activate(context: vscode.ExtensionContext): Promise { - await vscode.env.openExternal(vscode.Uri.parse('https://microsoft.com')); + const portalEndpoint = item.fieldValues.portalEndpoint; + const subscriptionId = item.fieldValues.subscriptionId; + const resourceGroup = item.fieldValues.resourceGroup; + const type = item.fieldValues.type; + const name = item.fieldValues.name; + if (portalEndpoint && subscriptionId && resourceGroup && type && name) { + await vscode.env.openExternal(vscode.Uri.parse(`${portalEndpoint}/#resource/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/${type}/${name}`)); + } else { + console.log(`Missing required values - subscriptionId : ${subscriptionId} resourceGroup : ${resourceGroup} type: ${type} name: ${name}`); + vscode.window.showErrorMessage(loc.unableToOpenAzureLink); + } }); return { diff --git a/extensions/azurecore/src/localizedConstants.ts b/extensions/azurecore/src/localizedConstants.ts index 330d41259a..62a7b26567 100644 --- a/extensions/azurecore/src/localizedConstants.ts +++ b/extensions/azurecore/src/localizedConstants.ts @@ -71,3 +71,5 @@ export const azureArcsqlManagedInstance = localize('azurecore.azureArcsqlManaged export const azureArcService = localize('azurecore.azureArcService', "Data Service - Azure Arc"); export const sqlServerArc = localize('azurecore.sqlServerArc', "SQL Server - Azure Arc"); export const azureArcPostgresServer = localize('azurecore.azureArcPostgres', "Azure Arc enabled PostgreSQL Hyperscale"); + +export const unableToOpenAzureLink = localize('azure.unableToOpenAzureLink', "Unable to open link, missing required values");