mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-27 01:25:36 -05:00
improve migration context loading (#16696)
This commit is contained in:
@@ -263,27 +263,27 @@ export async function startDatabaseMigration(account: azdata.Account, subscripti
|
||||
};
|
||||
}
|
||||
|
||||
export async function getDatabaseMigration(account: azdata.Account, subscription: Subscription, regionName: string, migrationId: string, sessionId: string): Promise<DatabaseMigration> {
|
||||
export async function getMigrationStatus(account: azdata.Account, subscription: Subscription, migration: DatabaseMigration, sessionId: string, asyncUrl: string): Promise<DatabaseMigration> {
|
||||
const api = await getAzureCoreAPI();
|
||||
const path = `${migrationId}?api-version=2020-09-01-preview`;
|
||||
const migrationOperationId = getMigrationOperationId(migration, asyncUrl);
|
||||
const path = `${migration.id}?migrationOperationId=${migrationOperationId}&$expand=MigrationStatusDetails&api-version=2020-09-01-preview`;
|
||||
const response = await api.makeAzureRestRequest(account, subscription, path, azurecore.HttpRequestMethod.GET, undefined, true, undefined, getSessionIdHeader(sessionId));
|
||||
if (response.errors.length > 0) {
|
||||
if (response.response.status === 404 && response.response.data.error.code === 'ResourceDoesNotExist') {
|
||||
throw new Error(response.response.data.error.code);
|
||||
}
|
||||
throw new Error(response.errors.toString());
|
||||
}
|
||||
return response.response.data;
|
||||
}
|
||||
|
||||
export async function getMigrationStatus(account: azdata.Account, subscription: Subscription, migration: DatabaseMigration, sessionId: string): Promise<DatabaseMigration> {
|
||||
const api = await getAzureCoreAPI();
|
||||
const path = `${migration.id}?$expand=MigrationStatusDetails&api-version=2020-09-01-preview`;
|
||||
const response = await api.makeAzureRestRequest(account, subscription, path, azurecore.HttpRequestMethod.GET, undefined, true, undefined, getSessionIdHeader(sessionId));
|
||||
if (response.errors.length > 0) {
|
||||
throw new Error(response.errors.toString());
|
||||
function getMigrationOperationId(migration: DatabaseMigration, asyncUrl: string): string {
|
||||
// migrationOperationId may be undefined when provisioning has failed
|
||||
// fall back to the operationId from the asyncUrl in the create migration response
|
||||
if (migration.properties.migrationOperationId) {
|
||||
return migration.properties.migrationOperationId;
|
||||
}
|
||||
return response.response.data;
|
||||
|
||||
return asyncUrl
|
||||
? vscode.Uri.parse(asyncUrl)?.path?.split('/').reverse()[0]
|
||||
: '';
|
||||
}
|
||||
|
||||
export async function getMigrationAsyncOperationDetails(account: azdata.Account, subscription: Subscription, url: string, sessionId: string): Promise<AzureAsyncOperationResource> {
|
||||
@@ -436,6 +436,7 @@ export interface DatabaseMigration {
|
||||
export interface DatabaseMigrationProperties {
|
||||
scope: string;
|
||||
provisioningState: 'Succeeded' | 'Failed' | 'Creating';
|
||||
provisioningError: string;
|
||||
migrationStatus: 'InProgress' | 'Failed' | 'Succeeded' | 'Creating' | 'Completing' | 'Canceling';
|
||||
migrationStatusDetails?: MigrationStatusDetails;
|
||||
startedOn: string;
|
||||
|
||||
Reference in New Issue
Block a user