mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-28 09:35:38 -05:00
Fix bugbash SQL-Migration extension migration load issues (#16575)
* fix migration refresh issues * merge latest
This commit is contained in:
@@ -9,6 +9,7 @@ import * as azurecore from 'azurecore';
|
||||
import { azureResource } from 'azureResource';
|
||||
import * as constants from '../constants/strings';
|
||||
import { getSessionIdHeader } from './utils';
|
||||
import { ProvisioningState } from '../models/migrationLocalStorage';
|
||||
|
||||
async function getAzureCoreAPI(): Promise<azurecore.IExtension> {
|
||||
const api = (await vscode.extensions.getExtension(azurecore.extension.name)?.activate()) as azurecore.IExtension;
|
||||
@@ -181,9 +182,9 @@ export async function createSqlMigrationService(account: azdata.Account, subscri
|
||||
for (i = 0; i < maxRetry; i++) {
|
||||
const asyncResponse = await api.makeAzureRestRequest(account, subscription, asyncUrl.replace('https://management.azure.com/', ''), azurecore.HttpRequestMethod.GET, undefined, true, undefined, getSessionIdHeader(sessionId));
|
||||
const creationStatus = asyncResponse.response.data.status;
|
||||
if (creationStatus === 'Succeeded') {
|
||||
if (creationStatus === ProvisioningState.Succeeded) {
|
||||
break;
|
||||
} else if (creationStatus === 'Failed') {
|
||||
} else if (creationStatus === ProvisioningState.Failed) {
|
||||
throw new Error(asyncResponse.errors.toString());
|
||||
}
|
||||
await new Promise(resolve => setTimeout(resolve, 3000)); //adding 3 sec delay before getting creation status
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { CategoryValue, DropDownComponent, IconPath } from 'azdata';
|
||||
import { window, CategoryValue, DropDownComponent, IconPath } from 'azdata';
|
||||
import { IconPathHelper } from '../constants/iconPathHelper';
|
||||
import { DAYS, HRS, MINUTE, SEC } from '../constants/strings';
|
||||
import { AdsMigrationStatus } from '../dialog/migrationStatus/migrationStatusDialogModel';
|
||||
import { MigrationContext } from '../models/migrationLocalStorage';
|
||||
import { MigrationStatus, MigrationContext, ProvisioningState } from '../models/migrationLocalStorage';
|
||||
import * as crypto from 'crypto';
|
||||
|
||||
export function deepClone<T>(obj: T): T {
|
||||
@@ -97,23 +97,26 @@ export function filterMigrations(databaseMigrations: MigrationContext[], statusF
|
||||
filteredMigration = databaseMigrations.filter((value) => {
|
||||
const status = value.migrationContext.properties.migrationStatus;
|
||||
const provisioning = value.migrationContext.properties.provisioningState;
|
||||
return status === 'InProgress' || status === 'Creating' || provisioning === 'Creating';
|
||||
return status === MigrationStatus.InProgress
|
||||
|| status === MigrationStatus.Creating
|
||||
|| provisioning === MigrationStatus.Creating;
|
||||
});
|
||||
} else if (statusFilter === AdsMigrationStatus.SUCCEEDED) {
|
||||
filteredMigration = databaseMigrations.filter((value) => {
|
||||
const status = value.migrationContext.properties.migrationStatus;
|
||||
return status === 'Succeeded';
|
||||
return status === MigrationStatus.Succeeded;
|
||||
});
|
||||
} else if (statusFilter === AdsMigrationStatus.FAILED) {
|
||||
filteredMigration = databaseMigrations.filter((value) => {
|
||||
const status = value.migrationContext.properties.migrationStatus;
|
||||
const provisioning = value.migrationContext.properties.provisioningState;
|
||||
return status === 'Failed' || provisioning === 'Failed';
|
||||
return status === MigrationStatus.Failed
|
||||
|| provisioning === ProvisioningState.Failed;
|
||||
});
|
||||
} else if (statusFilter === AdsMigrationStatus.COMPLETING) {
|
||||
filteredMigration = databaseMigrations.filter((value) => {
|
||||
const status = value.migrationContext.properties.migrationStatus;
|
||||
return status === 'Completing';
|
||||
return status === MigrationStatus.Completing;
|
||||
});
|
||||
}
|
||||
if (databaseNameFilter) {
|
||||
@@ -203,17 +206,17 @@ export function getSessionIdHeader(sessionId: string): { [key: string]: string }
|
||||
|
||||
export function getMigrationStatusImage(status: string): IconPath {
|
||||
switch (status) {
|
||||
case 'InProgress':
|
||||
case MigrationStatus.InProgress:
|
||||
return IconPathHelper.inProgressMigration;
|
||||
case 'Succeeded':
|
||||
case MigrationStatus.Succeeded:
|
||||
return IconPathHelper.completedMigration;
|
||||
case 'Creating':
|
||||
case MigrationStatus.Creating:
|
||||
return IconPathHelper.notStartedMigration;
|
||||
case 'Completing':
|
||||
case MigrationStatus.Completing:
|
||||
return IconPathHelper.completingCutover;
|
||||
case 'Canceling':
|
||||
case MigrationStatus.Canceling:
|
||||
return IconPathHelper.cancel;
|
||||
case 'Failed':
|
||||
case MigrationStatus.Failed:
|
||||
default:
|
||||
return IconPathHelper.error;
|
||||
}
|
||||
@@ -226,3 +229,9 @@ export function get12HourTime(date: Date | undefined): string {
|
||||
};
|
||||
return (date ? date : new Date()).toLocaleTimeString([], localeTimeStringOptions);
|
||||
}
|
||||
|
||||
export function clearDialogMessage(dialog: window.Dialog): void {
|
||||
dialog.message = {
|
||||
text: ''
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user