Add telemetry to custom provider endpoints (#24229)

* add telemetry to custom provider endpoints

* add reload ads telemetry

* change import

* add telemetry error event

* use vscode getpackageinfo

* remove getpackageinfo, fix semicolon

* use enum for telemetry message

* add enum, use error object instead of message for telemetry
This commit is contained in:
Christopher Suh
2023-08-30 10:07:53 -07:00
committed by GitHub
parent 55b6f4d16b
commit 9eee1384b4
5 changed files with 49 additions and 0 deletions

View File

@@ -53,6 +53,8 @@ export const CustomProviderSettings = 'customProviderSettings';
export const CustomProviderSettingsSection = AzureSection + '.' + CustomProviderSettings;
export const PackageName = 'Microsoft.azurecore';
/** MSAL Account version */
export const AccountVersion = '2.0';

View File

@@ -0,0 +1,25 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
import AdsTelemetryReporter from '@microsoft/ads-extension-telemetry';
import { IPackageInfo } from './utils';
import * as Constants from './constants';
const packageInfo = vscode.extensions.getExtension(Constants.PackageName)?.packageJSON as IPackageInfo | undefined;
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
export const TelemetryReporter = new AdsTelemetryReporter<TelemetryViews, TelemetryAction>(packageInfo!.name, packageInfo!.version, packageInfo!.aiKey);
export enum TelemetryViews {
AzureCore = 'AzureCore'
}
export enum TelemetryAction {
LoadCustomEndpointsError = 'LoadCustomEndpointsError',
LoadCustomEndpointsSuccess = 'LoadCustomEndpointsSuccess',
ReloadAdsCustomEndpoints = 'ReloadAdsCustomEndpoints'
}

View File

@@ -17,6 +17,7 @@ import { HttpsProxyAgentOptions } from 'https-proxy-agent';
import { ProviderSettings, ProviderSettingsJson, SettingIds } from './account-provider/interfaces';
import { AzureResource } from 'azdata';
import { Logger } from './utils/Logger';
import { TelemetryAction, TelemetryReporter, TelemetryViews } from './telemetry';
const localize = nls.loadMessageBundle();
const configProxy = 'proxy';
@@ -172,6 +173,7 @@ export function updateCustomCloudProviderSettings(defaultSettings: ProviderSetti
const impactProvider = changeEvent.affectsConfiguration(constants.CustomProviderSettingsSection);
if (impactProvider === true) {
await displayReloadAds(constants.CustomProviderSettingsSection);
TelemetryReporter.sendTelemetryEvent(TelemetryAction.ReloadAdsCustomEndpoints);
}
});
if (providerSettingsJson && providerSettingsJson.length > 0) {
@@ -183,10 +185,12 @@ export function updateCustomCloudProviderSettings(defaultSettings: ProviderSetti
Logger.info(`Custom provider settings loaded for ${cloudProvider.settings.metadata.displayName}`);
}
void vscode.window.showInformationMessage(localize('providerSettings.success', 'Successfully loaded custom endpoints from settings'));
TelemetryReporter.sendTelemetryEvent(TelemetryAction.LoadCustomEndpointsSuccess);
} catch (error) {
void vscode.window.showErrorMessage(localize('providerSettings.error', 'Could not load endpoints from settings, please check the logs for more details.'));
console.error(error.message);
TelemetryReporter.sendErrorEvent2(TelemetryViews.AzureCore, TelemetryAction.LoadCustomEndpointsError, error);
throw Error(error.message);
}
}
@@ -298,6 +302,11 @@ export function getResourceTypeIcon(appContext: AppContext, type: string): strin
return '';
}
export interface IPackageInfo {
name: string;
version: string;
aiKey: string;
}
export function getProxyEnabledHttpClient(): HttpClient {
const proxy = <string>getHttpConfiguration().get(configProxy);