// Get guest configuration policy assignment report by reportId protected PolicyStatusDetailed GetPolicyStatusDetailedByReportId(string reportId) { var urlParameters = CommonHelpers.GetGCURLParameters(reportId); var reportGuid = CommonHelpers.GetReportGUIDFromID(reportId); if (urlParameters == null || reportGuid == null) { throw new ErrorResponseException(string.Format(StringResources.InvalidReportId, reportId)); } PolicyStatusDetailed policyReport = null; if (urlParameters != null && urlParameters.AreParametersNotNullOrEmpty() && !string.IsNullOrEmpty(reportId)) { GuestConfigurationAssignmentReport report = null; try { report = GuestConfigurationClient.GuestConfigurationAssignmentReports.Get(urlParameters.ResourceGroupName, urlParameters.AssignmentName, reportGuid, urlParameters.VMName); } catch (GuestConfigurationErrorResponseException exception) when(HttpStatusCode.NotFound.Equals(exception.Response.StatusCode)) { this.WriteVerbose(string.Format(StringResources.NotFoundByReportId, reportId)); throw exception; } policyReport = new PolicyStatusDetailed(report, null); } return(policyReport); }
// Get guest configuration policy statuses by initiative definition name protected IEnumerable <PolicyStatusDetailed> GetPolicyStatusesDetailedByInitiativeName(string resourceGroupName, string vmName, string initiativeName, IEnumerable <GuestConfigurationAssignment> gcrpAssignments) { var gcPolicyAssignments = GetPolicyStatuses(resourceGroupName, vmName, gcrpAssignments, initiativeName); var gcPolicyAssignmentReportList = new List <PolicyStatusDetailed>(); if (gcPolicyAssignments.Count() > 0) { var gcPolicyAssignmentsArray = gcPolicyAssignments.ToArray(); // Sort assignments by policy display name Array.Sort(gcPolicyAssignmentsArray, (first, second) => { return(string.Compare(first.PolicyDisplayName, second.PolicyDisplayName, true)); }); foreach (var gcPolicyAssignment in gcPolicyAssignmentsArray) { var reportGuid = CommonHelpers.GetReportGUIDFromID(gcPolicyAssignment.LatestReportId); GuestConfigurationAssignmentReport gcrpReport = null; if (gcPolicyAssignment.LatestReportId != null) { gcrpReport = GuestConfigurationClient.GuestConfigurationAssignmentReports.Get(resourceGroupName, gcPolicyAssignment.Configuration.Name, reportGuid, vmName); } PolicyStatusDetailed policyDetailed = new PolicyStatusDetailed(gcrpReport, gcPolicyAssignment); QueryOptions queryOptions = new QueryOptions(); queryOptions.Filter = string.Format("resourceGroup eq '{0}' and policyDefinitionAction eq 'deployifnotexists' and contains(ResourceId,'{1}')", resourceGroupName, vmName); queryOptions.OrderBy = "Timestamp desc"; queryOptions.Top = 1; PolicyStatesQueryResults policyDbResults = PolicyInsightsClient.PolicyStates.ListQueryResultsForPolicySetDefinition("latest", DefaultContext.Subscription.Id, gcPolicyAssignment.PolicySetDefinitionName, queryOptions); if (policyDbResults.Odatacount > 0 && policyDbResults.Value[0].IsCompliant.HasValue && !policyDbResults.Value[0].IsCompliant.Value) { policyDetailed.ComplianceStatus = "NonCompliant"; } gcPolicyAssignmentReportList.Add(policyDetailed); } } return(gcPolicyAssignmentReportList); }
// Get guest configuration policy statuses by initiative definition name protected IEnumerable <PolicyStatusDetailed> GetPolicyStatusesDetailedByInitiativeName(string resourceGroupName, string vmName, string initiativeName, IEnumerable <GuestConfigurationAssignment> gcrpAssignments) { var gcPolicyAssignments = GetPolicyStatuses(resourceGroupName, vmName, gcrpAssignments, initiativeName); var gcPolicyAssignmentReportList = new List <PolicyStatusDetailed>(); if (gcPolicyAssignments.Count() > 0) { var gcPolicyAssignmentsArray = gcPolicyAssignments.ToArray(); // Sort assignments by policy display name Array.Sort(gcPolicyAssignmentsArray, (first, second) => { return(string.Compare(first.PolicyDisplayName, second.PolicyDisplayName, true)); }); foreach (var gcPolicyAssignment in gcPolicyAssignmentsArray) { var reportGuid = CommonHelpers.GetReportGUIDFromID(gcPolicyAssignment.LatestReportId); GuestConfigurationAssignmentReport gcrpVMReport = null; GuestConfigurationAssignmentReport gcrpHCReport = null; GuestConfigurationAssignmentReport gcrpReport = null; if (gcPolicyAssignment.LatestReportId != null) { //check Azure VM try { gcrpVMReport = GuestConfigurationClient.GuestConfigurationAssignmentReports.Get(resourceGroupName, gcPolicyAssignment.Configuration.Name, reportGuid, vmName); } catch (GuestConfigurationErrorResponseException exception) when(HttpStatusCode.NotFound.Equals(exception.Response.StatusCode)) { this.WriteVerbose(string.Format(StringResources.NotFoundByReportId, reportGuid)); } //check HybridCompute machine try { gcrpHCReport = GuestConfigurationClient.GuestConfigurationHCRPAssignmentReports.Get(resourceGroupName, gcPolicyAssignment.Configuration.Name, reportGuid, vmName); } catch (GuestConfigurationErrorResponseException exception) when(HttpStatusCode.NotFound.Equals(exception.Response.StatusCode)) { this.WriteVerbose(string.Format(StringResources.NotFoundByReportId, reportGuid)); } gcrpReport = gcrpVMReport != null ? gcrpVMReport : gcrpHCReport; } PolicyStatusDetailed policyDetailed = new PolicyStatusDetailed(gcrpReport, gcPolicyAssignment); QueryOptions queryOptions = new QueryOptions(); queryOptions.Filter = string.Format("PolicySetDefinitionName eq '{0}' and contains(ResourceId,'{1}')", gcPolicyAssignment.PolicySetDefinitionName, vmName); queryOptions.OrderBy = "Timestamp desc"; queryOptions.Top = 1; PolicyStatesQueryResults policyDbResults = PolicyInsightsClient.PolicyStates.ListQueryResultsForResourceGroup("latest", DefaultContext.Subscription.Id, resourceGroupName, queryOptions); if (policyDbResults.Odatacount > 0 && policyDbResults.Value[0].IsCompliant.HasValue && !policyDbResults.Value[0].IsCompliant.Value) { policyDetailed.ComplianceStatus = "NonCompliant"; } gcPolicyAssignmentReportList.Add(policyDetailed); } } return(gcPolicyAssignmentReportList); }