mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-22 09:35:37 -05:00
Add autoCutoverConfiguration to local storage (#16772)
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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],
|
||||
|
||||
Reference in New Issue
Block a user