From e00d48c210d53b59964fd5ae7daf353cdf35dc83 Mon Sep 17 00:00:00 2001 From: Aasim Khan Date: Thu, 29 Apr 2021 14:00:44 -0700 Subject: [PATCH] Adding telemetry framework to migration extension (#15284) * Adding telemetry to sql-migration * Adding some telemetry helper functions * removing unncessary telemetry * removing unncessary imports * Changing name of telemetry sender methods and removing unused functions. * Removing extra whitespace * Fixing a typo --- extensions/sql-migration/package.json | 2 + extensions/sql-migration/src/api/utils.ts | 17 +++++ extensions/sql-migration/src/telemtery.ts | 29 ++++++++ extensions/sql-migration/yarn.lock | 90 +++++++++++++++++++++++ 4 files changed, 138 insertions(+) create mode 100644 extensions/sql-migration/src/telemtery.ts diff --git a/extensions/sql-migration/package.json b/extensions/sql-migration/package.json index 3b03284102..89cd7c5ee5 100644 --- a/extensions/sql-migration/package.json +++ b/extensions/sql-migration/package.json @@ -7,6 +7,7 @@ "preview": true, "license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt", "icon": "images/extension.png", + "aiKey": "06ba2446-fa56-40aa-853a-26b73255b723", "engines": { "vscode": "*", "azdata": ">=1.27.0" @@ -79,6 +80,7 @@ ] }, "dependencies": { + "@microsoft/ads-extension-telemetry": "^1.1.3", "vscode-nls": "^3.2.1" }, "__metadata": { diff --git a/extensions/sql-migration/src/api/utils.ts b/extensions/sql-migration/src/api/utils.ts index 5cfb1f1e92..058605a5eb 100644 --- a/extensions/sql-migration/src/api/utils.ts +++ b/extensions/sql-migration/src/api/utils.ts @@ -43,6 +43,23 @@ export function getSqlServerName(majorVersion: number): string | undefined { } } +export interface IPackageInfo { + name: string; + version: string; + aiKey: string; +} + +export function getPackageInfo(packageJson: any): IPackageInfo | undefined { + if (packageJson) { + return { + name: packageJson.name, + version: packageJson.version, + aiKey: packageJson.aiKey + }; + } + return undefined; +} + /** * Generates a wordy time difference between start and end time. * @returns stringified duration like '10.0 days', '12.0 hrs', '1.0 min' diff --git a/extensions/sql-migration/src/telemtery.ts b/extensions/sql-migration/src/telemtery.ts new file mode 100644 index 0000000000..4b72c77fac --- /dev/null +++ b/extensions/sql-migration/src/telemtery.ts @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import AdsTelemetryReporter, { TelemetryEventMeasures, TelemetryEventProperties } from '@microsoft/ads-extension-telemetry'; +import { getPackageInfo } from './api/utils'; +const packageJson = require('../package.json'); + +let packageInfo = getPackageInfo(packageJson)!; + +export const TelemetryReporter = new AdsTelemetryReporter(packageInfo.name, packageInfo.version, packageInfo.aiKey); + +export enum TelemetryViews { + SqlServerDashboard = 'SqlServerDashboard', + MigrationWizard = 'MigrationWizard', + CreateDataMigrationServiceDialog = 'CreateDataMigrationServiceDialog', + AssessmentsDialog = 'AssessmentsDialog', + MigrationCutoverDialog = 'MigrationCutoverDialog', + MigrationStatusDialog = 'MigrationStatusDialog', + AssessmentsPage = 'AssessmentsPage' +} + +export function sendSqlMigrationActionEvent(telemetryView: string, telemetryAction: string, additionalProps: TelemetryEventProperties, additionalMeasurements: TelemetryEventMeasures): void { + TelemetryReporter.createActionEvent(telemetryView, telemetryAction) + .withAdditionalProperties(additionalProps) + .withAdditionalMeasurements(additionalMeasurements) + .send(); +} diff --git a/extensions/sql-migration/yarn.lock b/extensions/sql-migration/yarn.lock index 45f8b9278d..0ff038d7e8 100644 --- a/extensions/sql-migration/yarn.lock +++ b/extensions/sql-migration/yarn.lock @@ -2,6 +2,96 @@ # yarn lockfile v1 +"@microsoft/ads-extension-telemetry@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@microsoft/ads-extension-telemetry/-/ads-extension-telemetry-1.1.3.tgz#54160eefa21f2a536622b0617f3c3f2018cf9c87" + integrity sha512-+h6hM9oOA6Zj/N0nCGPzRgydR0YHiHpNJoNlv6a/ziWXO3RYSbQX+3U/PpT3gEA6+8RwByf6RVICo7uIGBy1LQ== + dependencies: + vscode-extension-telemetry "^0.1.6" + +applicationinsights@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.7.4.tgz#e7d96435594d893b00cf49f70a5927105dbb8749" + integrity sha512-XFLsNlcanpjFhHNvVWEfcm6hr7lu9znnb6Le1Lk5RE03YUV9X2B2n2MfM4kJZRrUdV+C0hdHxvWyv+vWoLfY7A== + dependencies: + cls-hooked "^4.2.2" + continuation-local-storage "^3.2.1" + diagnostic-channel "0.2.0" + diagnostic-channel-publishers "^0.3.3" + +async-hook-jl@^1.7.6: + version "1.7.6" + resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" + integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== + dependencies: + stack-chain "^1.3.7" + +async-listener@^0.6.0: + version "0.6.10" + resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" + integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== + dependencies: + semver "^5.3.0" + shimmer "^1.1.0" + +cls-hooked@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" + integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== + dependencies: + async-hook-jl "^1.7.6" + emitter-listener "^1.0.1" + semver "^5.4.1" + +continuation-local-storage@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" + integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== + dependencies: + async-listener "^0.6.0" + emitter-listener "^1.1.1" + +diagnostic-channel-publishers@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.3.5.tgz#a84a05fd6cc1d7619fdd17791c17e540119a7536" + integrity sha512-AOIjw4T7Nxl0G2BoBPhkQ6i7T4bUd9+xvdYizwvG7vVAM1dvr+SDrcUudlmzwH0kbEwdR2V1EcnKT0wAeYLQNQ== + +diagnostic-channel@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-0.2.0.tgz#cc99af9612c23fb1fff13612c72f2cbfaa8d5a17" + integrity sha1-zJmvlhLCP7H/8TYSxy8sv6qNWhc= + dependencies: + semver "^5.3.0" + +emitter-listener@^1.0.1, emitter-listener@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" + integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== + dependencies: + shimmer "^1.2.0" + +semver@^5.3.0, semver@^5.4.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +shimmer@^1.1.0, shimmer@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + +stack-chain@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" + integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= + +vscode-extension-telemetry@^0.1.6: + version "0.1.7" + resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.7.tgz#18389bc24127c89dade29cd2b71ba69a6ee6ad26" + integrity sha512-pZuZTHO9OpsrwlerOKotWBRLRYJ53DobYb7aWiRAXjlqkuqE+YJJaP+2WEy8GrLIF1EnitXTDMaTAKsmLQ5ORQ== + dependencies: + applicationinsights "1.7.4" + vscode-nls@^3.2.1: version "3.2.5" resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.5.tgz#25520c1955108036dec607c85e00a522f247f1a4"