mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-29 17:23:25 -05:00
Fix bugbash SQL-Migration extension migration load issues (#16575)
* fix migration refresh issues * merge latest
This commit is contained in:
@@ -6,11 +6,11 @@
|
||||
import * as azdata from 'azdata';
|
||||
import * as vscode from 'vscode';
|
||||
import { IconPathHelper } from '../../constants/iconPathHelper';
|
||||
import { MigrationContext, MigrationLocalStorage } from '../../models/migrationLocalStorage';
|
||||
import { MigrationContext, MigrationLocalStorage, MigrationStatus, ProvisioningState } from '../../models/migrationLocalStorage';
|
||||
import { MigrationCutoverDialog } from '../migrationCutover/migrationCutoverDialog';
|
||||
import { AdsMigrationStatus, MigrationStatusDialogModel } from './migrationStatusDialogModel';
|
||||
import * as loc from '../../constants/strings';
|
||||
import { convertTimeDifferenceToDuration, filterMigrations, getMigrationStatusImage, SupportedAutoRefreshIntervals } from '../../api/utils';
|
||||
import { clearDialogMessage, convertTimeDifferenceToDuration, filterMigrations, getMigrationStatusImage, SupportedAutoRefreshIntervals } from '../../api/utils';
|
||||
import { SqlMigrationServiceDetailsDialog } from '../sqlMigrationService/sqlMigrationServiceDetailsDialog';
|
||||
import { ConfirmCutoverDialog } from '../migrationCutover/confirmCutoverDialog';
|
||||
import { MigrationCutoverDialogModel } from '../migrationCutover/migrationCutoverDialogModel';
|
||||
@@ -96,8 +96,15 @@ export class MigrationStatusDialog {
|
||||
azdata.window.openDialog(this._dialogObject);
|
||||
}
|
||||
|
||||
private canCancelMigration = (status: string | undefined) => status && status in ['InProgress', 'Creating', 'Completing', 'Creating'];
|
||||
private canCutoverMigration = (status: string | undefined) => status === 'InProgress';
|
||||
private canCancelMigration = (status: string | undefined) => status &&
|
||||
(
|
||||
status === MigrationStatus.InProgress ||
|
||||
status === MigrationStatus.Creating ||
|
||||
status === MigrationStatus.Completing ||
|
||||
status === MigrationStatus.Canceling
|
||||
);
|
||||
|
||||
private canCutoverMigration = (status: string | undefined) => status === MigrationStatus.InProgress;
|
||||
|
||||
private createSearchAndRefreshContainer(): azdata.FlexContainer {
|
||||
this._searchBox = this._view.modelBuilder.inputBox().withProps({
|
||||
@@ -177,6 +184,7 @@ export class MigrationStatusDialog {
|
||||
'sqlmigration.cutover',
|
||||
async (migrationId: string) => {
|
||||
try {
|
||||
clearDialogMessage(this._dialogObject);
|
||||
const migration = this._model._migrations.find(migration => migration.migrationContext.id === migrationId);
|
||||
if (this.canCutoverMigration(migration?.migrationContext.properties.migrationStatus)) {
|
||||
const cutoverDialogModel = new MigrationCutoverDialogModel(migration!);
|
||||
@@ -187,6 +195,12 @@ export class MigrationStatusDialog {
|
||||
await vscode.window.showInformationMessage(loc.MIGRATION_CANNOT_CUTOVER);
|
||||
}
|
||||
} catch (e) {
|
||||
this._dialogObject.message = {
|
||||
text: loc.MIGRATION_STATUS_REFRESH_ERROR,
|
||||
description: e.message,
|
||||
level: azdata.window.MessageLevel.Error
|
||||
};
|
||||
|
||||
console.log(e);
|
||||
}
|
||||
}));
|
||||
@@ -231,6 +245,7 @@ export class MigrationStatusDialog {
|
||||
'sqlmigration.copy.migration',
|
||||
async (migrationId: string) => {
|
||||
try {
|
||||
clearDialogMessage(this._dialogObject);
|
||||
const migration = this._model._migrations.find(migration => migration.migrationContext.id === migrationId);
|
||||
const cutoverDialogModel = new MigrationCutoverDialogModel(migration!);
|
||||
await cutoverDialogModel.fetchStatus();
|
||||
@@ -245,6 +260,12 @@ export class MigrationStatusDialog {
|
||||
|
||||
await vscode.window.showInformationMessage(loc.DETAILS_COPIED);
|
||||
} catch (e) {
|
||||
this._dialogObject.message = {
|
||||
text: loc.MIGRATION_STATUS_REFRESH_ERROR,
|
||||
description: e.message,
|
||||
level: azdata.window.MessageLevel.Error
|
||||
};
|
||||
|
||||
console.log(e);
|
||||
}
|
||||
}));
|
||||
@@ -253,6 +274,7 @@ export class MigrationStatusDialog {
|
||||
'sqlmigration.cancel.migration',
|
||||
async (migrationId: string) => {
|
||||
try {
|
||||
clearDialogMessage(this._dialogObject);
|
||||
const migration = this._model._migrations.find(migration => migration.migrationContext.id === migrationId);
|
||||
if (this.canCancelMigration(migration?.migrationContext.properties.migrationStatus)) {
|
||||
vscode.window.showInformationMessage(loc.CANCEL_MIGRATION_CONFIRMATION, loc.YES, loc.NO).then(async (v) => {
|
||||
@@ -266,6 +288,12 @@ export class MigrationStatusDialog {
|
||||
await vscode.window.showInformationMessage(loc.MIGRATION_CANNOT_CANCEL);
|
||||
}
|
||||
} catch (e) {
|
||||
this._dialogObject.message = {
|
||||
text: loc.MIGRATION_CANCELLATION_ERROR,
|
||||
description: e.message,
|
||||
level: azdata.window.MessageLevel.Error
|
||||
};
|
||||
|
||||
console.log(e);
|
||||
}
|
||||
}));
|
||||
@@ -371,7 +399,7 @@ export class MigrationStatusDialog {
|
||||
}
|
||||
|
||||
private _getMigrationMode(migration: MigrationContext): string {
|
||||
if (migration.migrationContext.properties.provisioningState === 'Creating') {
|
||||
if (migration.migrationContext.properties.provisioningState === ProvisioningState.Creating) {
|
||||
return '---';
|
||||
}
|
||||
return migration.migrationContext.properties.autoCutoverConfiguration?.autoCutover?.valueOf() ? loc.OFFLINE : loc.ONLINE;
|
||||
@@ -466,11 +494,18 @@ export class MigrationStatusDialog {
|
||||
|
||||
this.isRefreshing = true;
|
||||
try {
|
||||
clearDialogMessage(this._dialogObject);
|
||||
this._refreshLoader.loading = true;
|
||||
const currentConnection = await azdata.connection.getCurrentConnection();
|
||||
this._model._migrations = await MigrationLocalStorage.getMigrationsBySourceConnections(currentConnection, true);
|
||||
await this.populateMigrationTable();
|
||||
} catch (e) {
|
||||
this._dialogObject.message = {
|
||||
text: loc.MIGRATION_STATUS_REFRESH_ERROR,
|
||||
description: e.message,
|
||||
level: azdata.window.MessageLevel.Error
|
||||
};
|
||||
|
||||
console.log(e);
|
||||
} finally {
|
||||
this.isRefreshing = false;
|
||||
@@ -583,13 +618,10 @@ export class MigrationStatusDialog {
|
||||
}
|
||||
|
||||
private _statusInfoMap(status: string): azdata.IconPath {
|
||||
switch (status) {
|
||||
case 'InProgress':
|
||||
case 'Creating':
|
||||
case 'Completing':
|
||||
return IconPathHelper.warning;
|
||||
default:
|
||||
return IconPathHelper.error;
|
||||
}
|
||||
return status === MigrationStatus.InProgress
|
||||
|| status === MigrationStatus.Creating
|
||||
|| status === MigrationStatus.Completing
|
||||
? IconPathHelper.warning
|
||||
: IconPathHelper.error;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user