35: def get_metric_statistics ( options ={} )
36: options = { :custom_unit => nil,
37: :dimensions => nil,
38: :end_time => Time.now(),
39: :measure_name => "",
40: :namespace => "AWS/EC2",
41: :period => 60,
42: :statistics => "",
43: :start_time => (Time.now() - 86400),
44: :unit => "" }.merge(options)
45:
46: raise ArgumentError, ":end_time must be provided" if options[:end_time].nil?
47: raise ArgumentError, ":end_time must be a Time object" if options[:end_time].class != Time
48: raise ArgumentError, ":start_time must be provided" if options[:start_time].nil?
49: raise ArgumentError, ":start_time must be a Time object" if options[:start_time].class != Time
50: raise ArgumentError, ":start_time must be before :end_time" if options[:start_time] > options[:end_time]
51: raise ArgumentError, ":measure_name must be provided" if options[:measure_name].nil? || options[:measure_name].empty?
52: raise ArgumentError, ":statistics must be provided" if options[:statistics].nil? || options[:statistics].empty?
53:
54: params = {
55: "CustomUnit" => options[:custom_unit],
56: "EndTime" => options[:end_time].iso8601,
57: "MeasureName" => options[:measure_name],
58: "Namespace" => options[:namespace],
59: "Period" => options[:period].to_s,
60: "StartTime" => options[:start_time].iso8601,
61: "Unit" => options[:unit]
62: }
63:
64:
65: if !(options[:statistics].nil? || options[:statistics].empty?)
66: stats_params = {}
67: i = 1
68: options[:statistics].split(',').each{ |stat|
69: stats_params.merge!( "Statistics.member.#{i}" => "#{stat}" )
70: i += 1
71: }
72: params.merge!( stats_params )
73: end
74:
75: if !(options[:dimensions].nil? || options[:dimensions].empty?)
76: dims_params = {}
77: i = 1
78: options[:dimensions].split(',').each{ |dimension|
79: dimension_var = dimension.split('=')
80: dims_params = dims_params.merge!( "Dimensions.member.#{i}.Name" => "#{dimension_var[0]}", "Dimensions.member.#{i}.Value" => "#{dimension_var[1]}" )
81: i += 1
82: }
83: params.merge!( dims_params )
84: end
85:
86: return response_generator(:action => 'GetMetricStatistics', :params => params)
87:
88: end