# File lib/AWS/Cloudwatch/monitoring.rb, line 35
35:       def get_metric_statistics ( options ={} )
36:         options = { :custom_unit => nil,
37:                     :dimensions => nil,
38:                     :end_time => Time.now(),      #req
39:                     :measure_name => "",          #req
40:                     :namespace => "AWS/EC2",
41:                     :period => 60,
42:                     :statistics => "",            # req
43:                     :start_time => (Time.now() - 86400), # Default to yesterday
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:         # FDT: Fix statistics and dimensions values
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