From 9eee1384b45d852e2788d5193a9604a1f70b3f09 Mon Sep 17 00:00:00 2001 From: Christopher Suh Date: Wed, 30 Aug 2023 10:07:53 -0700 Subject: [PATCH] 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 --- extensions/azurecore/package.json | 1 + extensions/azurecore/src/constants.ts | 2 ++ extensions/azurecore/src/telemetry.ts | 25 +++++++++++++++++++++++++ extensions/azurecore/src/utils.ts | 9 +++++++++ extensions/azurecore/yarn.lock | 12 ++++++++++++ 5 files changed, 49 insertions(+) create mode 100644 extensions/azurecore/src/telemetry.ts diff --git a/extensions/azurecore/package.json b/extensions/azurecore/package.json index 1b5608cfe0..f22ab2346e 100644 --- a/extensions/azurecore/package.json +++ b/extensions/azurecore/package.json @@ -526,6 +526,7 @@ "@azure/storage-blob": "^12.13.0", "axios": "^0.27.2", "lockfile": "1.0.4", + "@microsoft/ads-extension-telemetry": "^3.0.1", "node-fetch": "^2.6.7", "qs": "^6.9.1", "universalify": "^0.1.2", diff --git a/extensions/azurecore/src/constants.ts b/extensions/azurecore/src/constants.ts index c657137418..f2ba4356d4 100644 --- a/extensions/azurecore/src/constants.ts +++ b/extensions/azurecore/src/constants.ts @@ -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'; diff --git a/extensions/azurecore/src/telemetry.ts b/extensions/azurecore/src/telemetry.ts new file mode 100644 index 0000000000..a07997085e --- /dev/null +++ b/extensions/azurecore/src/telemetry.ts @@ -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(packageInfo!.name, packageInfo!.version, packageInfo!.aiKey); + +export enum TelemetryViews { + AzureCore = 'AzureCore' +} + +export enum TelemetryAction { + LoadCustomEndpointsError = 'LoadCustomEndpointsError', + LoadCustomEndpointsSuccess = 'LoadCustomEndpointsSuccess', + ReloadAdsCustomEndpoints = 'ReloadAdsCustomEndpoints' +} diff --git a/extensions/azurecore/src/utils.ts b/extensions/azurecore/src/utils.ts index b723a05588..a88c9c7a27 100644 --- a/extensions/azurecore/src/utils.ts +++ b/extensions/azurecore/src/utils.ts @@ -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 = getHttpConfiguration().get(configProxy); diff --git a/extensions/azurecore/yarn.lock b/extensions/azurecore/yarn.lock index 8ed0b0859a..7ff2288ea4 100644 --- a/extensions/azurecore/yarn.lock +++ b/extensions/azurecore/yarn.lock @@ -334,6 +334,13 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== +"@microsoft/ads-extension-telemetry@^3.0.1": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@microsoft/ads-extension-telemetry/-/ads-extension-telemetry-3.0.2.tgz#edcbebbf5ab8ea183a7198ea8056a51f8ac76653" + integrity sha512-h0ZLCMw3I/wcQWofr25MPSdYDd6CBwPG3XSJdgDwNdlVKUTSGL3QoBxspxtgF33yH5Zod7s+l/g7exbldDhY0Q== + dependencies: + "@vscode/extension-telemetry" "0.6.1" + "@microsoft/azdata-test@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@microsoft/azdata-test/-/azdata-test-3.0.3.tgz#a1b5bbead5412ac7925129e6199d724bfc8117ee" @@ -491,6 +498,11 @@ dependencies: "@types/node" "*" +"@vscode/extension-telemetry@0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@vscode/extension-telemetry/-/extension-telemetry-0.6.1.tgz#f8d1f7145baf932b75077c48107edff48501fc14" + integrity sha512-Y4Oc8yGURGVF4WhCZcu+EVy+MAIeQDLDVeDlLn59H0C1w+7xr8dL2ZtDBioy+Hog1Edrd6zOwr3Na7xe1iC/UA== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"