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:
parent
22f9ccc75c
commit
f712bfdb2e
5 changed files with 64 additions and 1 deletions
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
19
lib/fog/aws/models/cloud_watch/metric_statistic.rb
Normal file
19
lib/fog/aws/models/cloud_watch/metric_statistic.rb
Normal 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
|
||||||
19
lib/fog/aws/models/cloud_watch/metric_statistics.rb
Normal file
19
lib/fog/aws/models/cloud_watch/metric_statistics.rb
Normal 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
|
||||||
23
tests/aws/models/cloud_watch/metric_statistics_tests.rb
Normal file
23
tests/aws/models/cloud_watch/metric_statistics_tests.rb
Normal 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
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue