Files
azuredatastudio/extensions/sql-migration/src/telemtery.ts
Rachel Kim 33259764f7 [Sql Migration] Stabilize save and close logic and fix related ux bugs (#18579)
* add loadSavedInfo function in stateMachine; only open wizard if didLoadSavedInfo

* * add loadSavedInfo function in stateMachine; only open wizard if didLoadSavedInfo
* replaced savedInfo.miggrationServiceId string with sqlMigrationServer object
* selectDatbasesFromList helper function to check previously selected dbs in dbSelectorPage and sqlDatabaseTree

* * remove savedInfo references from targetSelectionPage, migrationModePage
* add selectDefaultDropdownValue helper to stateMachine to handle unify savedInfo selection logic
* add updateDropdownLoadingStatus to targetSelectionPage
* check if values exist before making api calls in statemachine

* removed savedInfo references from databaseBackupPage, integrationRuntimePage

* databaseBackupPage - targetDatabaseNames, networkShares, blobs need to rely on savedInfo as user may update the list of migrationdbs during the retry/saveAndClose

* re-add serverAssessments to savedInfo; only getAssessments if it does not exist or needs to be updated; fix networkShare type savedInfo

* rename _assessmentDbs to _databasesForAssessment; _migrationDbs to _databasesForMigration

* load blobs/networkshares savedinfo; move selectDefaultDropdownValue to utils

* fix selectDefaultDropdownValue; refreshDatabaseBackupPage when user changes target subscription or location
2022-03-04 16:00:44 -08:00

69 lines
3.2 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* 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',
CreateDataMigrationServiceDialog = 'CreateDataMigrationServiceDialog',
AssessmentsDialog = 'AssessmentsDialog',
DatabaseBackupPage = 'DatabaseBackupPage',
IntegrationRuntimePage = 'IntegrationRuntimePage',
MigrationCutoverDialog = 'MigrationCutoverDialog',
MigrationStatusDialog = 'MigrationStatusDialog',
MigrationWizardAccountSelectionPage = 'MigrationWizardAccountSelectionPage',
MigrationWizardTaSkuRecommendationPage = 'MigrationWizardTaSkuRecommendationPage',
MigrationWizardTargetSelectionPage = 'MigrationWizardTargetSelectionPage',
MigrationWizardIntegrationRuntimePage = 'MigrationWizardIntegrationRuntimePage',
MigrationWizardSummaryPage = 'MigrationWizardSummaryPage',
MigrationWizardController = 'MigrationWizardController',
StartMigrationService = 'StartMigrationSerivce',
SqlMigrationWizard = 'SqlMigrationWizard',
MigrationLocalStorage = 'MigrationLocalStorage',
SkuRecommendationWizard = 'SkuRecommendationWizard',
DataCollectionWizard = 'GetAzureRecommendationDialog'
}
export enum TelemetryAction {
ServerAssessment = 'ServerAssessment',
ServerAssessmentIssues = 'ServerAssessmentIssues',
ServerAssessmentError = 'ServerAssessmentError',
DatabaseAssessment = 'DatabaseAsssessment',
DatabaseAssessmentWarning = 'DatabaseAssessmentWarning',
DatabaseAssessmentError = 'DatabaseAssessmentError',
StartMigration = 'StartMigration',
CutoverMigration = 'CutoverMigration',
CancelMigration = 'CancelMigration',
MigrationStatus = 'MigrationStatus',
PageButtonClick = 'PageButtonClick',
Prev = 'prev',
Next = 'next',
Done = 'done',
Cancel = 'cancel',
OnPageLeave = 'OnPageLeave',
GetMISkuRecommendation = 'GetMISkuRecommendation',
GetVMSkuRecommendation = 'GetVMSkuRecommendation',
GetInstanceRequirements = 'GetInstanceRequirements',
StartDataCollection = 'StartDataCollection',
StopDataCollection = 'StopDataCollection'
}
export function logError(telemetryView: TelemetryViews, err: string, error: any): void {
console.log(error);
TelemetryReporter.sendErrorEvent(telemetryView, err);
}
export function sendSqlMigrationActionEvent(telemetryView: TelemetryViews, telemetryAction: TelemetryAction, additionalProps: TelemetryEventProperties, additionalMeasurements: TelemetryEventMeasures): void {
TelemetryReporter.createActionEvent(telemetryView, telemetryAction)
.withAdditionalProperties(additionalProps)
.withAdditionalMeasurements(additionalMeasurements)
.send();
}