Add autoCutoverConfiguration to local storage (#16772)

This commit is contained in:
Rachel Kim
2021-08-13 15:13:16 -07:00
committed by GitHub
parent 5049bf0c7f
commit 4efdb0e651
5 changed files with 18 additions and 28 deletions

View File

@@ -438,10 +438,7 @@ export interface StartDatabaseMigrationRequest {
password: string
},
scope: string,
autoCutoverConfiguration?: {
autoCutover?: boolean,
lastBackupName?: string
},
autoCutoverConfiguration: AutoCutoverConfiguration,
}
}
@@ -507,7 +504,7 @@ export interface BackupConfiguration {
export interface AutoCutoverConfiguration {
autoCutover: boolean;
lastBackupName: string;
lastBackupName?: string;
}
export interface ErrorInfo {

View File

@@ -12,7 +12,6 @@ import * as loc from '../../constants/strings';
import { convertByteSizeToReadableUnit, convertIsoTimeToLocalTime, getSqlServerName, getMigrationStatusImage, SupportedAutoRefreshIntervals, clearDialogMessage } from '../../api/utils';
import { EOL } from 'os';
import { ConfirmCutoverDialog } from './confirmCutoverDialog';
import { MigrationMode } from '../../models/stateMachine';
const refreshFrequency: SupportedAutoRefreshIntervals = 30000;
const statusImageSize: number = 14;
@@ -278,7 +277,7 @@ export class MigrationCutoverDialog {
enabled: false,
CSSStyles: {
'font-size': '13px',
'display': 'none'
'display': this._isOnlineMigration() ? 'inline' : 'none'
}
}).component();
@@ -527,7 +526,7 @@ export class MigrationCutoverDialog {
try {
clearDialogMessage(this._dialogObject);
if (this._isProvisioned() && this._isOnlineMigration()) {
if (this._isOnlineMigration()) {
this._cutoverButton.updateCssStyles({
'display': 'inline'
});
@@ -783,11 +782,7 @@ export class MigrationCutoverDialog {
}
private _isOnlineMigration(): boolean {
let migrationMode = null;
if (this._isProvisioned()) {
migrationMode = this._model._migration.migrationContext.properties.autoCutoverConfiguration?.autoCutover?.valueOf() ? MigrationMode.OFFLINE : MigrationMode.ONLINE;
}
return migrationMode === MigrationMode.ONLINE;
return this._model._migration.migrationContext.properties.autoCutoverConfiguration?.autoCutover?.valueOf() ? false : true;
}
private _shouldDisplayBackupFileTable(): boolean {

View File

@@ -6,7 +6,7 @@
import * as azdata from 'azdata';
import * as vscode from 'vscode';
import { IconPathHelper } from '../../constants/iconPathHelper';
import { MigrationContext, MigrationLocalStorage, MigrationStatus, ProvisioningState } from '../../models/migrationLocalStorage';
import { MigrationContext, MigrationLocalStorage, MigrationStatus } from '../../models/migrationLocalStorage';
import { MigrationCutoverDialog } from '../migrationCutover/migrationCutoverDialog';
import { AdsMigrationStatus, MigrationStatusDialogModel } from './migrationStatusDialogModel';
import * as loc from '../../constants/strings';
@@ -408,9 +408,6 @@ export class MigrationStatusDialog {
}
private _getMigrationMode(migration: MigrationContext): string {
if (migration.migrationContext.properties.provisioningState === ProvisioningState.Creating) {
return '---';
}
return migration.migrationContext.properties.autoCutoverConfiguration?.autoCutover?.valueOf() ? loc.OFFLINE : loc.ONLINE;
}

View File

@@ -27,6 +27,7 @@ export class MigrationLocalStorage {
if (migration.sourceConnectionProfile.serverName === connectionProfile.serverName) {
if (refreshStatus) {
try {
const autoCutoverConfiguration = migration.migrationContext.properties.autoCutoverConfiguration;
const backupConfiguration = migration.migrationContext.properties.backupConfiguration;
const sourceDatabase = migration.migrationContext.properties.sourceDatabaseName;
@@ -50,6 +51,7 @@ export class MigrationLocalStorage {
migration.migrationContext.properties.sourceDatabaseName = sourceDatabase;
migration.migrationContext.properties.backupConfiguration = backupConfiguration;
migration.migrationContext.properties.autoCutoverConfiguration = autoCutoverConfiguration;
}
}
catch (e) {

View File

@@ -846,6 +846,8 @@ export class MigrationStateModel implements Model, vscode.Disposable {
}
});
const isOfflineMigration = this._databaseBackup.migrationMode === MigrationMode.OFFLINE;
const requestBody: StartDatabaseMigrationRequest = {
location: this._sqlMigrationService?.location!,
properties: {
@@ -859,7 +861,9 @@ export class MigrationStateModel implements Model, vscode.Disposable {
password: this._sqlServerPassword
},
scope: this._targetServerInstance.id,
autoCutoverConfiguration: {}
autoCutoverConfiguration: {
autoCutover: isOfflineMigration
}
}
};
@@ -878,9 +882,9 @@ export class MigrationStateModel implements Model, vscode.Disposable {
}
};
if (this._databaseBackup.migrationMode === MigrationMode.OFFLINE) {
if (isOfflineMigration) {
requestBody.properties.autoCutoverConfiguration = {
autoCutover: (this._databaseBackup.migrationMode === MigrationMode.OFFLINE ? true : false),
autoCutover: isOfflineMigration,
lastBackupName: this._databaseBackup.blobs[i]?.lastBackupFile
};
}
@@ -899,12 +903,6 @@ export class MigrationStateModel implements Model, vscode.Disposable {
}
}
};
if (this._databaseBackup.migrationMode === MigrationMode.OFFLINE) {
requestBody.properties.autoCutoverConfiguration = {
autoCutover: (this._databaseBackup.migrationMode === MigrationMode.OFFLINE ? true : false)
};
}
break;
}
requestBody.properties.sourceDatabaseName = this._migrationDbs[i];
@@ -919,15 +917,16 @@ export class MigrationStateModel implements Model, vscode.Disposable {
);
response.databaseMigration.properties.sourceDatabaseName = this._migrationDbs[i];
response.databaseMigration.properties.backupConfiguration = requestBody.properties.backupConfiguration!;
if (response.status === 201 || response.status === 200) {
response.databaseMigration.properties.autoCutoverConfiguration = requestBody.properties.autoCutoverConfiguration!;
if (response.status === 201 || response.status === 200) {
sendSqlMigrationActionEvent(
TelemetryViews.MigrationWizardSummaryPage,
TelemetryAction.StartMigration,
{
'hashedServerName': hashString(this._assessmentApiResponse.assessmentResult.name),
'hashedDatabaseName': hashString(this._migrationDbs[i]),
'migrationMode': requestBody.properties.autoCutoverConfiguration ? 'online' : 'offline',
'migrationMode': isOfflineMigration ? 'offline' : 'online',
'sessionId': this._sessionId,
'migrationStartTime': new Date().toString(),
'targetDatabaseName': this._targetDatabaseNames[i],