public PolicyStatusDetailed(GuestConfigurationAssignmentReport gcrpReport, PolicyData gcPolicyAssignment) : base(gcrpReport, gcPolicyAssignment) { this.ComplianceReasons = new List <ComplianceReasonDetails>(); if (gcrpReport != null && gcrpReport.Properties != null) { if (gcrpReport.Properties.Details != null) { foreach (var gcrpResource in gcrpReport.Properties.Details.Resources) { if (gcrpResource == null) { continue; } var propertiesJObject = JObject.Parse(gcrpResource.Properties.ToString()); if (propertiesJObject == null) { continue; } var propertiesDictionary = propertiesJObject.ToObject <Dictionary <string, object> >(); string policy = null; if (propertiesDictionary.ContainsKey(Constants.Policy)) { policy = propertiesDictionary[Constants.Policy].ToString(); } string resourceId = null; if (propertiesDictionary.ContainsKey(Constants.ResourceId)) { resourceId = propertiesDictionary[Constants.ResourceId].ToString(); } var resourceReasons = new List <ReasonAndCode>(); foreach (var reason in gcrpResource.Reasons) { resourceReasons.Add( new ReasonAndCode() { Reason = reason.Phrase, Code = reason.Code, } ); } var complianceReason = new ComplianceReasonDetails() { Policy = policy, ResourceId = resourceId, ComplianceStatus = gcrpResource.ComplianceStatus, Reasons = resourceReasons, }; this.ComplianceReasons.Add(complianceReason); } } } }
public GuestConfigurationPolicyAssignmentReport(GuestConfigurationAssignmentReport gcrpReport, GuestConfigurationPolicyAssignment gcPolicyAssignment) { if (gcPolicyAssignment != null) { this.PolicyDisplayName = gcPolicyAssignment.PolicyDisplayName; this.Configuration = gcPolicyAssignment.Configuration; this.ComplianceStatus = gcPolicyAssignment.ComplianceStatus; // Initially, gcrpReport can be null. So use status from assignment. } this.ComplianceReasons = new List <ComplianceReasonDetails>(); if (gcrpReport != null && gcrpReport.Properties != null) { this.LatestReportId = gcrpReport.Id; this.StartTime = gcrpReport.Properties.StartTime; this.EndTime = gcrpReport.Properties.EndTime; this.ComplianceStatus = gcrpReport.Properties.ComplianceStatus; if (gcrpReport.Properties.Details != null) { foreach (var gcrpResource in gcrpReport.Properties.Details.Resources) { if (gcrpResource == null) { continue; } var propertiesJObject = JObject.Parse(gcrpResource.Properties.ToString()); if (propertiesJObject == null) { continue; } var propertiesDictionary = propertiesJObject.ToObject <Dictionary <string, object> >(); string policy = null; if (propertiesDictionary.ContainsKey(Constants.Policy)) { policy = propertiesDictionary[Constants.Policy].ToString(); } string resourceId = null; if (propertiesDictionary.ContainsKey(Constants.ResourceId)) { resourceId = propertiesDictionary[Constants.ResourceId].ToString(); } var resourceReasons = new List <ReasonAndCode>(); foreach (var reason in gcrpResource.Reasons) { resourceReasons.Add( new ReasonAndCode() { Reason = reason.Phrase, Code = reason.Code, } ); } var complianceReason = new ComplianceReasonDetails() { Policy = policy, ResourceId = resourceId, ComplianceStatus = gcrpResource.ComplianceStatus, Reasons = resourceReasons, }; this.ComplianceReasons.Add(complianceReason); } } if (gcrpReport.Properties.Vm != null) { this.VM = new VMInfo() { Uuid = gcrpReport.Properties.Vm.Uuid, ResourceId = gcrpReport.Properties.Vm.Id, }; } } }