Add new wizard for login migrations experience (#21317)

This commit is contained in:
AkshayMata
2022-12-17 12:11:25 -05:00
committed by GitHub
parent ff4dc9fe86
commit e223b4e870
22 changed files with 2569 additions and 50 deletions

View File

@@ -1151,6 +1151,36 @@ export namespace SqlMigrationRefreshPerfDataCollectionRequest {
export const type = new RequestType<SqlMigrationRefreshPerfDataCollectionParams, mssql.RefreshPerfDataCollectionResult, void, void>('migration/refreshperfdatacollection');
}
export interface StartLoginMigrationsParams {
sourceConnectionString: string;
targetConnectionString: string;
loginList: string[];
aadDomainName: string;
}
export namespace StartLoginMigrationRequest {
export const type = new RequestType<StartLoginMigrationsParams, mssql.StartLoginMigrationResult, void, void>('migration/startloginmigration');
}
export namespace ValidateLoginMigrationRequest {
export const type = new RequestType<StartLoginMigrationsParams, mssql.StartLoginMigrationResult, void, void>('migration/validateloginmigration');
}
export namespace MigrateLoginsRequest {
export const type = new RequestType<StartLoginMigrationsParams, mssql.StartLoginMigrationResult, void, void>('migration/migratelogins');
}
export namespace EstablishUserMappingRequest {
export const type = new RequestType<StartLoginMigrationsParams, mssql.StartLoginMigrationResult, void, void>('migration/establishusermapping');
}
export namespace MigrateServerRolesAndSetPermissionsRequest {
export const type = new RequestType<StartLoginMigrationsParams, mssql.StartLoginMigrationResult, void, void>('migration/migrateserverrolesandsetpermissions');
}
export namespace LoginMigrationNotification {
export const type = new NotificationType<mssql.StartLoginMigrationResult, void>('migration/loginmigrationnotification"');
}
// ------------------------------- <Sql Migration> -----------------------------
// ------------------------------- < Table Designer > ------------------------------------

View File

@@ -706,6 +706,11 @@ declare module 'mssql' {
startPerfDataCollection(ownerUri: string, dataFolder: string, perfQueryIntervalInSec: number, staticQueryIntervalInSec: number, numberOfIterations: number): Promise<StartPerfDataCollectionResult | undefined>;
stopPerfDataCollection(): Promise<StopPerfDataCollectionResult | undefined>;
refreshPerfDataCollection(lastRefreshedTime: Date): Promise<RefreshPerfDataCollectionResult | undefined>;
startLoginMigration(sourceConnectionString: string, targetConnectionString: string, loginList: string[], aadDomainName: string): Promise<StartLoginMigrationResult | undefined>;
validateLoginMigration(sourceConnectionString: string, targetConnectionString: string, loginList: string[], aadDomainName: string): Promise<StartLoginMigrationResult | undefined>;
migrateLogins(sourceConnectionString: string, targetConnectionString: string, loginList: string[], aadDomainName: string): Promise<StartLoginMigrationResult | undefined>;
establishUserMapping(sourceConnectionString: string, targetConnectionString: string, loginList: string[], aadDomainName: string): Promise<StartLoginMigrationResult | undefined>;
migrateServerRolesAndSetPermissions(sourceConnectionString: string, targetConnectionString: string, loginList: string[], aadDomainName: string): Promise<StartLoginMigrationResult | undefined>;
}
// SqlMigration interfaces -----------------------------------------------------------------------
@@ -814,4 +819,20 @@ declare module 'mssql' {
*/
createSas(connectionUri: string, blobContainerUri: string, blobStorageKey: string, storageAccountName: string, expirationDate: string): Promise<CreateSasResponse>;
}
export enum LoginMigrationStep {
StartValidations = 0,
MigrateLogins = 1,
EstablishUserMapping = 2,
MigrateServerRoles = 3,
EstablishServerRoleMapping = 4,
SetLoginPermissions = 5,
SetServerRolePermissions = 6,
}
export interface StartLoginMigrationResult {
exceptionMap: { [login: string]: any };
completedStep: LoginMigrationStep;
elapsedTime: string;
}
}

View File

@@ -126,4 +126,115 @@ export class SqlMigrationService implements mssql.ISqlMigrationService {
return undefined;
}
async startLoginMigration(
sourceConnectionString: string,
targetConnectionString: string,
loginList: string[],
aadDomainName: string): Promise<mssql.StartLoginMigrationResult | undefined> {
let params: contracts.StartLoginMigrationsParams = {
sourceConnectionString,
targetConnectionString,
loginList,
aadDomainName
};
try {
return this.client.sendRequest(contracts.StartLoginMigrationRequest.type, params);
}
catch (e) {
this.client.logFailedRequest(contracts.StartLoginMigrationRequest.type, e);
}
return undefined;
}
async validateLoginMigration(
sourceConnectionString: string,
targetConnectionString: string,
loginList: string[],
aadDomainName: string): Promise<mssql.StartLoginMigrationResult | undefined> {
let params: contracts.StartLoginMigrationsParams = {
sourceConnectionString,
targetConnectionString,
loginList,
aadDomainName
};
try {
return this.client.sendRequest(contracts.ValidateLoginMigrationRequest.type, params);
}
catch (e) {
this.client.logFailedRequest(contracts.ValidateLoginMigrationRequest.type, e);
}
return undefined;
}
async migrateLogins(
sourceConnectionString: string,
targetConnectionString: string,
loginList: string[],
aadDomainName: string): Promise<mssql.StartLoginMigrationResult | undefined> {
let params: contracts.StartLoginMigrationsParams = {
sourceConnectionString,
targetConnectionString,
loginList,
aadDomainName
};
try {
return this.client.sendRequest(contracts.MigrateLoginsRequest.type, params);
}
catch (e) {
this.client.logFailedRequest(contracts.MigrateLoginsRequest.type, e);
}
return undefined;
}
async establishUserMapping(
sourceConnectionString: string,
targetConnectionString: string,
loginList: string[],
aadDomainName: string): Promise<mssql.StartLoginMigrationResult | undefined> {
let params: contracts.StartLoginMigrationsParams = {
sourceConnectionString,
targetConnectionString,
loginList,
aadDomainName
};
try {
return this.client.sendRequest(contracts.EstablishUserMappingRequest.type, params);
}
catch (e) {
this.client.logFailedRequest(contracts.EstablishUserMappingRequest.type, e);
}
return undefined;
}
async migrateServerRolesAndSetPermissions(
sourceConnectionString: string,
targetConnectionString: string,
loginList: string[],
aadDomainName: string): Promise<mssql.StartLoginMigrationResult | undefined> {
let params: contracts.StartLoginMigrationsParams = {
sourceConnectionString,
targetConnectionString,
loginList,
aadDomainName
};
try {
return this.client.sendRequest(contracts.MigrateServerRolesAndSetPermissionsRequest.type, params);
}
catch (e) {
this.client.logFailedRequest(contracts.MigrateServerRolesAndSetPermissionsRequest.type, e);
}
return undefined;
}
}