39: def get_metric_statistics ( options ={} )
40: options = { :custom_unit => nil,
41: :dimensions => nil,
42: :end_time => Time.now(),
43: :measure_name => "",
44: :namespace => "AWS/EC2",
45: :period => 60,
46: :statistics => "",
47: :start_time => (Time.now() - 86400),
48: :unit => "" }.merge(options)
49:
50: raise ArgumentError, ":end_time must be provided" if options[:end_time].nil?
51: raise ArgumentError, ":end_time must be a Time object" if options[:end_time].class != Time
52: raise ArgumentError, ":start_time must be provided" if options[:start_time].nil?
53: raise ArgumentError, ":start_time must be a Time object" if options[:start_time].class != Time
54: raise ArgumentError, "Server must be monitoring.amazonaws.com" if server != 'monitoring.amazonaws.com'
55: raise ArgumentError, ":start_time must be before :end_time" if options[:start_time] > options[:end_time]
56: raise ArgumentError, ":measure_name must be provided" if options[:measure_name].nil? || options[:measure_name].empty?
57: raise ArgumentError, ":statistics must be provided" if options[:statistics].nil? || options[:statistics].empty?
58:
59: params = {
60: "CustomUnit" => options[:custom_unit],
61: "Dimensions" => options[:dimensions],
62: "EndTime" => options[:end_time].iso8601,
63: "MeasureName" => options[:measure_name],
64: "Namespace" => options[:namespace],
65: "Period" => options[:period].to_s,
66: "Statistics.member.1" => options[:statistics],
67: "StartTime" => options[:start_time].iso8601,
68: "Unit" => options[:unit]
69: }
70:
71: return response_generator(:action => 'GetMetricStatistics', :params => params)
72:
73: end