From a7703e63a4f3a217bffce303a2d1c395a41adfab Mon Sep 17 00:00:00 2001 From: Aasim Khan Date: Wed, 21 Jul 2021 17:40:04 -0700 Subject: [PATCH] Fixing the logic to retireve rule metadata in sql assessments (#1223) --- .../Migration/MigrationService.cs | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/Microsoft.SqlTools.ServiceLayer/Migration/MigrationService.cs b/src/Microsoft.SqlTools.ServiceLayer/Migration/MigrationService.cs index 0c1efc39..4360e3cf 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Migration/MigrationService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Migration/MigrationService.cs @@ -191,16 +191,10 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration SqlAssessmentConfiguration.EnableReportCreation = true; SqlAssessmentConfiguration.AssessmentReportAndLogsRootFolderPath = Path.GetDirectoryName(Logger.LogFileFullPath); DmaEngine engine = new DmaEngine(connectionStrings); - var assessmentResults = await engine.GetTargetAssessmentResultsList(); - Dictionary assessmentResultLookup = new Dictionary(); - foreach (ISqlMigrationAssessmentResult r in assessmentResults) - { - assessmentResultLookup.Add(CreateAssessmentResultKey(r as ISqlMigrationAssessmentResult), r as ISqlMigrationAssessmentResult); - } ISqlMigrationAssessmentModel contextualizedAssessmentResult = await engine.GetTargetAssessmentResultsList(System.Threading.CancellationToken.None); return new MigrationAssessmentResult() { - AssessmentResult = ParseServerAssessmentInfo(contextualizedAssessmentResult.Servers[0], assessmentResultLookup), + AssessmentResult = ParseServerAssessmentInfo(contextualizedAssessmentResult.Servers[0], engine), Errors = ParseAssessmentError(contextualizedAssessmentResult.Errors), StartTime = contextualizedAssessmentResult.StartedOn.ToString(), EndedTime = contextualizedAssessmentResult.EndedOn.ToString(), @@ -208,7 +202,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration }; } - internal ServerAssessmentProperties ParseServerAssessmentInfo(IServerAssessmentInfo server, Dictionary assessmentResultLookup) + internal ServerAssessmentProperties ParseServerAssessmentInfo(IServerAssessmentInfo server, DmaEngine engine) { return new ServerAssessmentProperties() { @@ -224,13 +218,13 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration AssessedDatabaseCount = server.Properties.NumberOfUserDatabases, SQLManagedInstanceTargetReadiness = server.TargetReadinesses[Microsoft.SqlServer.DataCollection.Common.Contracts.Advisor.TargetType.AzureSqlManagedInstance], Errors = ParseAssessmentError(server.Errors), - Items = ParseAssessmentResult(server.ServerAssessments, assessmentResultLookup), - Databases = ParseDatabaseAssessmentInfo(server.Databases, assessmentResultLookup), + Items = ParseAssessmentResult(server.ServerAssessments, engine), + Databases = ParseDatabaseAssessmentInfo(server.Databases, engine), Name = server.Properties.ServerName }; } - internal DatabaseAssessmentProperties[] ParseDatabaseAssessmentInfo(IList databases, Dictionary assessmentResultLookup) + internal DatabaseAssessmentProperties[] ParseDatabaseAssessmentInfo(IList databases, DmaEngine engine) { return databases.Select(d => { @@ -242,7 +236,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration IsReplicationEnabled = d.Properties.IsReplicationEnabled, AssessmentTimeInMilliseconds = d.Properties.TSqlScriptAnalysisTimeElapse.TotalMilliseconds, Errors = ParseAssessmentError(d.Errors), - Items = ParseAssessmentResult(d.DatabaseAssessments, assessmentResultLookup), + Items = ParseAssessmentResult(d.DatabaseAssessments, engine), SQLManagedInstanceTargetReadiness = d.TargetReadinesses[Microsoft.SqlServer.DataCollection.Common.Contracts.Advisor.TargetType.AzureSqlManagedInstance] }; }).ToArray(); @@ -261,11 +255,11 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration }; }).ToArray(); } - internal MigrationAssessmentInfo[] ParseAssessmentResult(IList assessmentResults, Dictionary assessmentResultLookup) + internal MigrationAssessmentInfo[] ParseAssessmentResult(IList assessmentResults, DmaEngine engine) { return assessmentResults.Select(r => { - var check = assessmentResultLookup[CreateAssessmentResultKey(r)].Check; + var check = engine.GetRuleMetadata(r.FeatureId, r.AppliesToMigrationTargetPlatform); return new MigrationAssessmentInfo() { CheckId = check.Id,