Enable offline migration mode on sql migration extension (#16459)

This commit is contained in:
Rachel Kim
2021-07-30 23:15:09 -07:00
committed by GitHub
parent 2427cbe3c6
commit b3e9428898
17 changed files with 614 additions and 355 deletions

View File

@@ -132,6 +132,14 @@ export async function getBlobContainers(account: azdata.Account, subscription: S
return blobContainers!;
}
export async function getBlobs(account: azdata.Account, subscription: Subscription, storageAccount: StorageAccount, containerName: string): Promise<azureResource.Blob[]> {
const api = await getAzureCoreAPI();
let result = await api.getBlobs(account, subscription, storageAccount, containerName, true);
let blobNames = result.blobs;
sortResourceArrayByName(blobNames);
return blobNames!;
}
export async function getSqlMigrationService(account: azdata.Account, subscription: Subscription, resourceGroupName: string, regionName: string, sqlMigrationServiceName: string, sessionId: string): Promise<SqlMigrationService> {
const api = await getAzureCoreAPI();
const path = `/subscriptions/${subscription.id}/resourceGroups/${resourceGroupName}/providers/Microsoft.DataMigration/sqlMigrationServices/${sqlMigrationServiceName}?api-version=2020-09-01-preview`;
@@ -320,7 +328,7 @@ export async function getLocationDisplayName(location: string): Promise<string>
return await api.getRegionDisplayName(location);
}
type SortableAzureResources = AzureProduct | azureResource.FileShare | azureResource.BlobContainer | azureResource.AzureResourceSubscription | SqlMigrationService;
type SortableAzureResources = AzureProduct | azureResource.FileShare | azureResource.BlobContainer | azureResource.Blob | azureResource.AzureResourceSubscription | SqlMigrationService;
function sortResourceArrayByName(resourceArray: SortableAzureResources[]): void {
if (!resourceArray) {
return;
@@ -405,7 +413,10 @@ export interface StartDatabaseMigrationRequest {
password: string
},
scope: string,
autoCutoverConfiguration?: AutoCutoverConfiguration
autoCutoverConfiguration?: {
autoCutover?: boolean,
lastBackupName?: string
},
}
}
@@ -469,6 +480,7 @@ export interface BackupConfiguration {
}
export interface AutoCutoverConfiguration {
autoCutover: boolean;
lastBackupName: string;
}

View File

@@ -3,7 +3,8 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { CategoryValue, DropDownComponent } from 'azdata';
import { 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';
@@ -199,3 +200,21 @@ export function getSessionIdHeader(sessionId: string): { [key: string]: string }
'SqlMigrationSessionId': sessionId
};
}
export function getMigrationStatusImage(status: string): IconPath {
switch (status) {
case 'InProgress':
return IconPathHelper.inProgressMigration;
case 'Succeeded':
return IconPathHelper.completedMigration;
case 'Creating':
return IconPathHelper.notStartedMigration;
case 'Completing':
return IconPathHelper.completingCutover;
case 'Canceling':
return IconPathHelper.cancel;
case 'Failed':
default:
return IconPathHelper.error;
}
}