Пример #1
0
        public PolicyStatus(GuestConfigurationAssignmentReport gcrpReport, PolicyData 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.
            }

            if (gcrpReport != null && gcrpReport.Properties != null)
            {
                this.ReportId         = gcrpReport.Id;
                this.StartTime        = gcrpReport.Properties.StartTime;
                this.EndTime          = gcrpReport.Properties.EndTime;
                this.ComplianceStatus = gcrpReport.Properties.ComplianceStatus;
                this.Configuration    = new PolicyData.ConfigurationInfo
                {
                    Name    = gcrpReport.Properties.Assignment.Configuration.Name,
                    Version = gcrpReport.Properties.Assignment.Configuration.Version
                };

                if (gcrpReport.Properties.Vm != null)
                {
                    this.VM = new VMInfo()
                    {
                        Uuid       = gcrpReport.Properties.Vm.Uuid,
                        ResourceId = gcrpReport.Properties.Vm.Id,
                    };
                }
            }
        }
        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);
                    }
                }
            }
        }