示例#1
0
        /// <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);
        }