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

@@ -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",

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);

View File

@@ -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"