lib/azure/armrest/insights/metrics_service.rb in azure-armrest-0.9.16 vs lib/azure/armrest/insights/metrics_service.rb in azure-armrest-0.10.0
- old
+ new
@@ -34,38 +34,60 @@
response,
Azure::Armrest::Insights::MetricDefinition
)
end
- # Returns a list metrics for +resource_id+, which can be
- # either a resource object or a plain resource string. You
- # may also provide a +filter+ to limit the results.
+ # Returns a list metrics for +resource_id+, which can be either a
+ # resource object or a plain resource string. You may also provide
+ # hash of filtering +options+ to limit the results. The possible
+ # options are:
#
+ # * :timespan => The timespan of the query in "start/end" format.
+ # * :interval => The interval (timegrain) of the query.
+ # * :metricnames => A comma separated list of metrics to retrieve.
+ # * :aggregation => A comma separated list of aggregration types to retrieve.
+ # * :segment => The name of the dimension to segment the metric values by.
+ # * :top => The maximum number of records to retrieve. Defaults to 10.
+ # * :orderby => The aggregation to use for sorting.
+ # * :filter => An expression used to filter the results.
+ # * :resultType => Reduces the set of data collected. Syntax is dependent on operation.
+ # * :metricnamespace => Metric namespace to query metric definitions for.
+ #
# If no filter expression is defined, the first metric defined
# for that resource will be returned using the primary aggregation
# type in the metric defintion over a time period of the last hour.
#
# vms = Azure::Armrest::VirtualMachineService.new(conf)
# mts = Azure::Armrest::Insights::MetricService.new(conf)
#
# vm = vms.get('your_vm', 'your_resource_group')
#
- # filter = "name.value eq 'Percentage CPU' and startTime "
- # filter << "eq 2017-01-03 and endTime eq 2017-01-04"
+ # options = {
+ # :metricnames => "'Percentage CPU'"
+ # :timespan => "2020-02-13T02:20:00Z/2020-02-14T04:20:00Z"
+ # :aggregation => "Average",
+ # :interval => "PT1M"
+ # }
#
- # definitions = mts.list_metrics(vm.id)
+ # definitions = mts.list_metrics(vm.id, options)
#
- def list_metrics(resource, filter = nil)
+ def list_metrics(resource, options = {})
resource_id = resource.respond_to?(:id) ? resource.id : resource
+ options[:filter] = options if options.is_a?(String) # For backwards compatibility
url = File.join(
configuration.environment.resource_url,
resource_id,
'providers/microsoft.insights/metrics'
)
url << "?api-version=#{api_version}"
- url << "&$filter=#{filter}" if filter
+
+ # The :filter option requires a leading '$'
+ options.each do |key, value|
+ key.to_s == 'filter' ? url << "&$" : url << "&"
+ url << "#{key}=#{value}"
+ end
response = rest_get(url)
Azure::Armrest::ArmrestCollection.create_from_response(response, Azure::Armrest::Insights::Metric)
end