private static UsageRequest CreateUsageRequest(RenderingEnvironment env, QueryTimePeriod period)
        {
            var usageRequest =
                new UsageRequest(
                    Timeframe.Custom,
                    new Dataset(
                        Granularity.Daily,
                        new Dictionary <string, Aggregation>
            {
                { "totalCost", new Aggregation(AggregationFunction.Sum, "PreTaxCost") }
            },
                        new List <Grouping>
            {
                new Grouping("ServiceName", ColumnType.Dimension)
            },
                        FilterExpression.Tag("environment", Operator.In, new[] { env.Id })));

            usageRequest.TimePeriod = period;

            return(usageRequest);
        }
        public async Task <UsageResponse> GetUsageForSubscription(Guid subscriptionId, UsageRequest usageRequest)
        {
            var uri = GetUri($"subscriptions/{subscriptionId}");

            var request =
                new HttpRequestMessage(HttpMethod.Post, uri)
            {
                Content = new StringContent(JsonConvert.SerializeObject(usageRequest), Encoding.UTF8, "application/json"),
            };

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _accessToken);

            using (var response = await _client.SendAsync(request))
            {
                return(await response.Content.ReadAsAsync <UsageResponse>());
            }
        }
Beispiel #3
0
 public Task <UsageResponse> GetUsageForResourceGroup(Guid subscriptionId, string resourceGroupName, UsageRequest usageRequest)
 => PostUsageRequest(usageRequest, GetUri($"subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"));
Beispiel #4
0
 public Task <UsageResponse> GetUsageForSubscription(Guid subscriptionId, UsageRequest usageRequest)
 => PostUsageRequest(usageRequest, GetUri($"subscriptions/{subscriptionId}"));