Updating assessment api response object in SQL Migration (#16334)

* Modifying the get assessments  api to match the new specs

* fixing property name

* Updating sts version
This commit is contained in:
Aasim Khan
2021-07-20 13:55:58 -07:00
committed by GitHub
parent a322c5be9d
commit 1eb03404ad
5 changed files with 67 additions and 33 deletions

View File

@@ -1,6 +1,6 @@
{ {
"downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/v{#version#}/microsoft.sqltools.servicelayer-{#fileName#}", "downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/v{#version#}/microsoft.sqltools.servicelayer-{#fileName#}",
"version": "3.0.0-release.111", "version": "3.0.0-release.115",
"downloadFileNames": { "downloadFileNames": {
"Windows_86": "win-x86-net5.0.zip", "Windows_86": "win-x86-net5.0.zip",
"Windows_64": "win-x64-net5.0.zip", "Windows_64": "win-x64-net5.0.zip",

View File

@@ -1014,17 +1014,12 @@ export namespace ProfilerSessionCreatedNotification {
// ------------------------------- < SQL Profiler > ------------------------------------ // ------------------------------- < SQL Profiler > ------------------------------------
/// ------------------------------- <Sql Migration> ----------------------------- /// ------------------------------- <Sql Migration> -----------------------------
export interface SqlAssessmentResult extends azdata.ResultStatus {
items: mssql.SqlMigrationAssessmentResultItem[];
}
export interface SqlMigrationAssessmentParams { export interface SqlMigrationAssessmentParams {
ownerUri: string; ownerUri: string;
} }
export namespace GetSqlMigrationAssessmentItemsRequest { export namespace GetSqlMigrationAssessmentItemsRequest {
export const type = new RequestType<SqlAssessmentParams, SqlAssessmentResult, void, void>('migration/getassessments'); export const type = new RequestType<SqlAssessmentParams, mssql.AssessmentResult, void, void>('migration/getassessments');
} }
// ------------------------------- <Sql Migration> ----------------------------- // ------------------------------- <Sql Migration> -----------------------------

View File

@@ -542,10 +542,62 @@ export interface SqlMigrationAssessmentResultItem {
impactedObjects: SqlMigrationImpactedObjectInfo[]; impactedObjects: SqlMigrationImpactedObjectInfo[];
} }
export interface SqlMigrationAssessmentResult extends azdata.ResultStatus { export interface ServerTargetReadiness {
numberOfDatabasesReadyForMigration: number;
numberOfNonOnlineDatabases: number;
totalNumberOfDatabases: number;
}
export interface ErrorModel {
errorId: number;
message: string;
errorSummary: string;
possibleCauses: string;
guidance: string;
}
export interface DatabaseTargetReadiness {
noSelectionForMigration: boolean;
numOfBlockerIssues: number;
}
export interface DatabaseAssessmentProperties {
compatibilityLevel: string;
databaseSize: number;
isReplicationEnabled: boolean;
assessmentTimeInMilliseconds: number;
items: SqlMigrationAssessmentResultItem[]; items: SqlMigrationAssessmentResultItem[];
errors: ErrorModel[];
sqlManagedInstanceTargetReadiness: DatabaseTargetReadiness;
name: string;
}
export interface ServerAssessmentProperties {
cpuCoreCount: number;
physicalServerMemory: number;
serverHostPlatform: string;
serverVersion: string;
serverEngineEdition: string;
serverEdition: string;
isClustered: boolean;
numberOfUserDatabases: number;
sqlAssessmentStatus: number;
assessedDatabaseCount: number;
sqlManagedInstanceTargetReadiness: ServerTargetReadiness;
items: SqlMigrationAssessmentResultItem[];
errors: ErrorModel[];
databases: DatabaseAssessmentProperties[];
name: string;
}
export interface AssessmentResult {
startedOn: string;
endedOn: string;
assessmentResult: ServerAssessmentProperties;
rawAssessmentResult: any;
errors: ErrorModel[];
} }
export interface ISqlMigrationService { export interface ISqlMigrationService {
getAssessments(ownerUri: string): Promise<SqlMigrationAssessmentResult | undefined>; getAssessments(ownerUri: string): Promise<AssessmentResult | undefined>;
} }

View File

@@ -29,7 +29,7 @@ export class SqlMigrationService implements mssql.ISqlMigrationService {
context.registerService(constants.SqlMigrationService, this); context.registerService(constants.SqlMigrationService, this);
} }
async getAssessments(ownerUri: string): Promise<mssql.SqlMigrationAssessmentResult | undefined> { async getAssessments(ownerUri: string): Promise<mssql.AssessmentResult | undefined> {
let params: contracts.SqlMigrationAssessmentParams = { ownerUri: ownerUri }; let params: contracts.SqlMigrationAssessmentParams = { ownerUri: ownerUri };
try { try {
return this.client.sendRequest(contracts.GetSqlMigrationAssessmentItemsRequest.type, params); return this.client.sendRequest(contracts.GetSqlMigrationAssessmentItemsRequest.type, params);

View File

@@ -176,30 +176,17 @@ export class MigrationStateModel implements Model, vscode.Disposable {
const assessmentResults = await this.migrationService.getAssessments( const assessmentResults = await this.migrationService.getAssessments(
ownerUri ownerUri
); );
this._serverDatabases = await (await azdata.connection.listDatabases(this.sourceConnectionId)).filter((name) => !excludeDbs.includes(name)); this._serverDatabases = await (await azdata.connection.listDatabases(this.sourceConnectionId)).filter((name) => !excludeDbs.includes(name));
const serverLevelAssessments: mssql.SqlMigrationAssessmentResultItem[] = []; const dbAssessments = assessmentResults?.assessmentResult.databases.filter(d => !excludeDbs.includes(d.name)).map(d => {
const databaseLevelAssessments = this._serverDatabases.map(db => {
return { return {
name: db, name: d.name,
issues: <mssql.SqlMigrationAssessmentResultItem[]>[] issues: d.items.filter(i => i.appliesToMigrationTargetPlatform === MigrationTargetType.SQLMI) ?? []
}; };
}); });
assessmentResults?.items.forEach((item) => {
if (item.appliesToMigrationTargetPlatform === MigrationTargetType.SQLMI) {
const dbIndex = this._serverDatabases.indexOf(item.databaseName);
if (dbIndex === -1) {
serverLevelAssessments.push(item);
} else {
databaseLevelAssessments[dbIndex].issues.push(item);
}
}
});
this._assessmentResults = { this._assessmentResults = {
issues: serverLevelAssessments, issues: assessmentResults?.assessmentResult.items?.filter(i => i.appliesToMigrationTargetPlatform === MigrationTargetType.SQLMI) ?? [],
databaseAssessments: databaseLevelAssessments databaseAssessments: dbAssessments! ?? []
}; };
return this._assessmentResults; return this._assessmentResults;