1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

Added metric statistics model and collection

This commit is contained in:
Henry Addison 2011-05-19 13:11:20 +01:00
parent 22f9ccc75c
commit f712bfdb2e
5 changed files with 64 additions and 1 deletions

View file

@ -15,6 +15,8 @@ module Fog
model_path 'fog/aws/models/cloud_watch' model_path 'fog/aws/models/cloud_watch'
model :metric model :metric
collection :metrics collection :metrics
model :metric_statistic
collection :metric_statistics
class Mock class Mock

View file

@ -0,0 +1,19 @@
require 'fog/core/model'
module Fog
module AWS
class CloudWatch
class MetricStatistic < Fog::Model
attribute :label, :aliases => 'Label'
attribute :minimum, :aliases => 'Minimum'
attribute :maximum, :aliases => 'Maximum'
attribute :sum, :aliases => 'Sum'
attribute :average, :aliases => 'Average'
attribute :sample_count, :aliases => 'SampleCount'
attribute :timestamp, :aliases => 'Timestamp'
attribute :unit, :aliases => 'Unit'
end
end
end
end

View file

@ -0,0 +1,19 @@
require 'fog/core/collection'
require 'fog/aws/models/cloud_watch/metric_statistic'
module Fog
module AWS
class CloudWatch
class MetricStatistics < Fog::Collection
model Fog::AWS::CloudWatch::MetricStatistic
def all(filters)
data = connection.get_metric_statistics(filters).body['GetMetricStatisticsResult']['Datapoints']
load(data) # data is an array of attribute hashes
end
end
end
end
end

View file

@ -0,0 +1,23 @@
Shindo.tests("AWS::CloudWatch | metric_statistics", ['aws', 'cloudwatch']) do
tests('success') do
pending if Fog.mocking?
instanceId = 'i-420c352f'
metricName = 'DiskReadBytes'
namespace = 'AWS/EC2'
startTime = (Time.now-600).iso8601
endTime = Time.now.iso8601
period = 60
statisticTypes = ['Minimum','Maximum','Sum','SampleCount','Average']
tests("#all").succeeds do
@statistics = AWS[:cloud_watch].metric_statistics.all({'Statistics' => statisticTypes, 'StartTime' => startTime, 'EndTime' => endTime, 'Period' => period, 'MetricName' => metricName, 'Namespace' => namespace, 'Dimensions' => [{'Name' => 'InstanceId', 'Value' => instanceId}]})) end
tests("#all_not_empty").returns(true) do
@statistics.length > 0
end
end
end

View file

@ -22,7 +22,7 @@ Shindo.tests('AWS::CloudWatch | metric requests', ['aws', 'cloudwatch']) do
tests("#get_metric_statistics").formats(@metrics_statistic_format) do tests("#get_metric_statistics").formats(@metrics_statistic_format) do
instanceId = 'i-420c352f' instanceId = 'i-420c352f'
AWS[:cloud_watch].get_metric_statistics({'Statistics' => ['Minimum','Maximum','Sum','SampleCount','Average'], 'StartTime' => (Time.now-600).iso8601, 'EndTime' => Time.now.iso8601, 'Period' => 60, 'MetricName' => 'DiskReadBytes', 'Namespace' => 'AWS/EC2', 'Dimensions' => [{'Name' => 'InstanceId', 'Value' => instanceId}], 'Region' => 'eu-west-1'}).body AWS[:cloud_watch].get_metric_statistics({'Statistics' => ['Minimum','Maximum','Sum','SampleCount','Average'], 'StartTime' => (Time.now-600).iso8601, 'EndTime' => Time.now.iso8601, 'Period' => 60, 'MetricName' => 'DiskReadBytes', 'Namespace' => 'AWS/EC2', 'Dimensions' => [{'Name' => 'InstanceId', 'Value' => instanceId}]}).body
end end
end end
end end