mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-28 01:25:39 -05:00
SQL-Migration: add new migration monitoring data to migration details (#22460)
* add new migration details * move migraiton target type enum to utils * address review feedback, refectore, text update * fix variable name * limit and filter migrations list to mi/vm/db
This commit is contained in:
@@ -5,11 +5,12 @@
|
||||
|
||||
import * as azdata from 'azdata';
|
||||
import * as vscode from 'vscode';
|
||||
import { MigrationStateModel, MigrationTargetType } from '../../models/stateMachine';
|
||||
import { MigrationStateModel } from '../../models/stateMachine';
|
||||
import { SqlDatabaseTree } from './sqlDatabasesTree';
|
||||
import { SKURecommendationPage } from '../../wizard/skuRecommendationPage';
|
||||
import * as constants from '../../constants/strings';
|
||||
import * as utils from '../../api/utils';
|
||||
import { MigrationTargetType } from '../../api/utils';
|
||||
import * as fs from 'fs';
|
||||
import path = require('path');
|
||||
import { SqlMigrationImpactedObjectInfo } from '../../service/contracts';
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import * as azdata from 'azdata';
|
||||
import * as vscode from 'vscode';
|
||||
import { MigrationStateModel, MigrationTargetType } from '../../models/stateMachine';
|
||||
import { MigrationStateModel } from '../../models/stateMachine';
|
||||
import * as constants from '../../constants/strings';
|
||||
import { debounce } from '../../api/utils';
|
||||
import { debounce, MigrationTargetType } from '../../api/utils';
|
||||
import { IconPath, IconPathHelper } from '../../constants/iconPathHelper';
|
||||
import * as styles from '../../constants/styles';
|
||||
import { EOL } from 'os';
|
||||
|
||||
@@ -9,10 +9,10 @@ import { MigrationCutoverDialogModel } from './migrationCutoverDialogModel';
|
||||
import * as constants from '../../constants/strings';
|
||||
import { getMigrationTargetInstance, SqlManagedInstance } from '../../api/azure';
|
||||
import { IconPathHelper } from '../../constants/iconPathHelper';
|
||||
import { convertByteSizeToReadableUnit, get12HourTime } from '../../api/utils';
|
||||
import { convertByteSizeToReadableUnit, get12HourTime, MigrationTargetType } from '../../api/utils';
|
||||
import * as styles from '../../constants/styles';
|
||||
import { getMigrationTargetTypeEnum, isBlobMigration } from '../../constants/helper';
|
||||
import { MigrationTargetType, ServiceTier } from '../../models/stateMachine';
|
||||
import { ServiceTier } from '../../models/stateMachine';
|
||||
export class ConfirmCutoverDialog {
|
||||
private _dialogObject!: azdata.window.Dialog;
|
||||
private _view!: azdata.ModelView;
|
||||
@@ -79,8 +79,8 @@ export class ConfirmCutoverDialog {
|
||||
let infoDisplay = 'none';
|
||||
if (getMigrationTargetTypeEnum(this.migrationCutoverModel.migration) === MigrationTargetType.SQLMI) {
|
||||
const targetInstance = await getMigrationTargetInstance(
|
||||
this.migrationCutoverModel.serviceConstext.azureAccount!,
|
||||
this.migrationCutoverModel.serviceConstext.subscription!,
|
||||
this.migrationCutoverModel.serviceContext.azureAccount!,
|
||||
this.migrationCutoverModel.serviceContext.subscription!,
|
||||
this.migrationCutoverModel.migration);
|
||||
|
||||
if ((<SqlManagedInstance>targetInstance)?.sku?.tier === ServiceTier.BusinessCritical) {
|
||||
|
||||
@@ -14,23 +14,26 @@ export class MigrationCutoverDialogModel {
|
||||
public CancelMigrationError?: Error;
|
||||
|
||||
constructor(
|
||||
public serviceConstext: MigrationServiceContext,
|
||||
public serviceContext: MigrationServiceContext,
|
||||
public migration: DatabaseMigration) { }
|
||||
|
||||
public async fetchStatus(): Promise<void> {
|
||||
const migrationStatus = await getMigrationDetails(
|
||||
this.serviceConstext.azureAccount!,
|
||||
this.serviceConstext.subscription!,
|
||||
this.migration.id,
|
||||
this.migration.properties?.migrationOperationId);
|
||||
|
||||
sendSqlMigrationActionEvent(
|
||||
TelemetryViews.MigrationCutoverDialog,
|
||||
TelemetryAction.MigrationStatus,
|
||||
{ 'migrationStatus': migrationStatus.properties?.migrationStatus },
|
||||
{});
|
||||
|
||||
this.migration = migrationStatus;
|
||||
try {
|
||||
const migrationStatus = await getMigrationDetails(
|
||||
this.serviceContext.azureAccount!,
|
||||
this.serviceContext.subscription!,
|
||||
this.migration.id,
|
||||
this.migration.properties?.migrationOperationId);
|
||||
this.migration = migrationStatus;
|
||||
} catch (error) {
|
||||
logError(TelemetryViews.MigrationDetailsTab, 'fetchStatus', error);
|
||||
} finally {
|
||||
sendSqlMigrationActionEvent(
|
||||
TelemetryViews.MigrationDetailsTab,
|
||||
TelemetryAction.MigrationStatus,
|
||||
{ 'migrationStatus': this.migration.properties?.migrationStatus },
|
||||
{});
|
||||
}
|
||||
}
|
||||
|
||||
public async startCutover(): Promise<DatabaseMigration | undefined> {
|
||||
@@ -38,14 +41,14 @@ export class MigrationCutoverDialogModel {
|
||||
this.CutoverError = undefined;
|
||||
if (this.migration) {
|
||||
const cutover = await startMigrationCutover(
|
||||
this.serviceConstext.azureAccount!,
|
||||
this.serviceConstext.subscription!,
|
||||
this.serviceContext.azureAccount!,
|
||||
this.serviceContext.subscription!,
|
||||
this.migration!);
|
||||
sendSqlMigrationActionEvent(
|
||||
TelemetryViews.MigrationCutoverDialog,
|
||||
TelemetryAction.CutoverMigration,
|
||||
{
|
||||
...this.getTelemetryProps(this.serviceConstext, this.migration),
|
||||
...this.getTelemetryProps(this.serviceContext, this.migration),
|
||||
'migrationEndTime': new Date().toString(),
|
||||
},
|
||||
{}
|
||||
@@ -65,14 +68,14 @@ export class MigrationCutoverDialogModel {
|
||||
if (this.migration) {
|
||||
const cutoverStartTime = new Date().toString();
|
||||
await stopMigration(
|
||||
this.serviceConstext.azureAccount!,
|
||||
this.serviceConstext.subscription!,
|
||||
this.serviceContext.azureAccount!,
|
||||
this.serviceContext.subscription!,
|
||||
this.migration);
|
||||
sendSqlMigrationActionEvent(
|
||||
TelemetryViews.MigrationCutoverDialog,
|
||||
TelemetryAction.CancelMigration,
|
||||
{
|
||||
...this.getTelemetryProps(this.serviceConstext, this.migration),
|
||||
...this.getTelemetryProps(this.serviceContext, this.migration),
|
||||
'migrationMode': getMigrationMode(this.migration),
|
||||
'cutoverStartTime': cutoverStartTime,
|
||||
},
|
||||
|
||||
@@ -5,11 +5,12 @@
|
||||
|
||||
import * as azdata from 'azdata';
|
||||
import * as vscode from 'vscode';
|
||||
import { MigrationStateModel, MigrationTargetType } from '../../models/stateMachine';
|
||||
import { MigrationStateModel } from '../../models/stateMachine';
|
||||
import * as constants from '../../constants/strings';
|
||||
import * as contracts from '../../service/contracts';
|
||||
import * as styles from '../../constants/styles';
|
||||
import * as utils from '../../api/utils';
|
||||
import { MigrationTargetType } from '../../api/utils';
|
||||
import * as fs from 'fs';
|
||||
import path = require('path');
|
||||
|
||||
|
||||
@@ -7,11 +7,12 @@ import * as azdata from 'azdata';
|
||||
import * as vscode from 'vscode';
|
||||
import * as constants from '../../constants/strings';
|
||||
import { validateIrDatabaseMigrationSettings, validateIrSqlDatabaseMigrationSettings } from '../../api/azure';
|
||||
import { MigrationStateModel, MigrationTargetType, NetworkShare, ValidateIrState, ValidationResult } from '../../models/stateMachine';
|
||||
import { MigrationStateModel, NetworkShare, ValidateIrState, ValidationResult } from '../../models/stateMachine';
|
||||
import { EOL } from 'os';
|
||||
import { IconPathHelper } from '../../constants/iconPathHelper';
|
||||
import { getEncryptConnectionValue, getSourceConnectionProfile, getTrustServerCertificateValue } from '../../api/sqlUtils';
|
||||
import { logError, TelemetryViews } from '../../telemetry';
|
||||
import { MigrationTargetType } from '../../api/utils';
|
||||
|
||||
const DialogName = 'ValidateIrDialog';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user