public async execute()

in tools/vscode-azurewebpubsub/src/workflows/service/viewMetric/ViewMetricsStep.ts [66:83]


    public async execute(context: IPickMetricsContext, progress: vscode.Progress<{ message?: string | undefined; increment?: number | undefined }>): Promise<void> {
        progress.report({ message: localize('takeSeveralSeconds', 'This may take several seconds...') });

        if (!context.serviceName|| !context.resourceGroupName || !context.aggregationType || !context.metricName || !context.startTime || !context.endTime) {
            throw new Error(localize(
                'InvalidIPickMetricsContext',
                'Invalid IPickMetricsContext, serviceName: {0}, resourceGroupName: {1}, aggregationType: {2}, metricName: {3}, startTime: {4}, endTime: {5}',
                context.serviceName, context.resourceGroupName, context.aggregationType, context.metricName, context.startTime?.toString(), context.endTime?.toString()
            ));
        }
        const resourceId = `/subscriptions/${context.subscription?.subscriptionPath}/resourceGroups/${context.resourceGroupName}/providers/Microsoft.SignalRService/WebPubSub/${context.serviceName}`;
        const metricsProtalUri = getMetricPortalUrl(context.serviceName, resourceId, context.startTime, context.endTime, context.metricName, context.aggregationType);
        // Ref: https://github.com/microsoft/vscode/issues/135949#issuecomment-989333270
        /* eslint-disable */
        await vscode.env.openExternal(metricsProtalUri as any);
        /* eslint-enable */
        ext.outputChannel.appendLog(`Copied connection of "${context.serviceName}" in resource group "${context.resourceGroupName}" to clipboard.`);
    }