/// <inheritdoc/> public async Task <List <ChangeSetResponseModel> > GetChangeSetsAsync(ChangeSetsRequest changeSetsRequest) { try { string requestUri = changeAnalysisEndPoint + $"changesets?api-version={apiVersion}"; changeSetsRequest.StartTime = changeSetsRequest.StartTime.ToUniversalTime(); changeSetsRequest.EndTime = changeSetsRequest.EndTime.ToUniversalTime(); object postBody = new { changeSetsRequest.ResourceId, StartTime = changeSetsRequest.StartTime.ToString(), EndTime = changeSetsRequest.EndTime.ToString() }; string jsonString = await PrepareAndSendRequest(requestUri, postBody, HttpMethod.Post); List <ChangeSetResponseModel> changeSetsResponse = JsonConvert.DeserializeObject <List <ChangeSetResponseModel> >(jsonString); return(changeSetsResponse); } catch (HttpRequestException httpException) { string message = $"HttpRequestException in GetChangeSetsAsync, Message: {httpException.Message} "; if (httpException.Data.Contains(ExceptionStatusCode)) { message += $"Status Code: {httpException.Data[ExceptionStatusCode]}"; } DiagnosticsETWProvider.Instance.LogDataProviderMessage(requestId, "ChangeAnalysisClient", message); return(new List <ChangeSetResponseModel>()); } }
/// <summary> /// Get all change sets for the given arm resource uri. /// </summary> /// <param name="armResourceUri">ARM Resource URI.</param> /// <param name="startTime">Start time of time range.</param> /// <param name="endTime">End time of the time range.</param> /// <returns>List of changesets.</returns> public async Task <List <ChangeSetResponseModel> > GetChangeSetsForResource(string armResourceUri, DateTime startTime, DateTime endTime) { if (string.IsNullOrWhiteSpace(armResourceUri)) { throw new ArgumentNullException(nameof(armResourceUri)); } // Validation for date range as the data retention policy is 14 days. DateTime maxDataRetentionDate = DateTime.Now.AddDays(-14); if (startTime < maxDataRetentionDate) { throw new ArgumentException("Changes beyond last 14 days are not available. Please provide dates within last 14 days"); } ChangeSetsRequest request = new ChangeSetsRequest { ResourceId = armResourceUri, StartTime = startTime, EndTime = endTime }; // Get changeSet of the given arm resource uri List <ChangeSetResponseModel> changesets = await changeAnalysisClient.GetChangeSetsAsync(request); changesets = changesets.OrderByDescending(change => change.ChangeSetTime).ToList(); if (changesets.Count > 0) { var latestChange = changesets[0]; latestChange.LastScanInformation = await changeAnalysisClient.GetLastScanInformation(armResourceUri); latestChange.ResourceChanges = await changeAnalysisClient.GetChangesAsync(new ChangeRequest { ChangeSetId = latestChange.ChangeSetId, ResourceId = latestChange.ResourceId }); } return(changesets); }