class Fog::AWS::CloudWatch::Mock
Public Class Methods
data()
click to toggle source
# File lib/fog/aws/cloud_watch.rb, line 36 def self.data @data ||= Hash.new do |hash, region| hash[region] = Hash.new do |region_hash, key| region_hash[key] = { :metric_alarms => {} } end end end
new(options={})
click to toggle source
# File lib/fog/aws/cloud_watch.rb, line 50 def initialize(options={}) @aws_access_key_id = options[:aws_access_key_id] @region = options[:region] || 'us-east-1' Fog::AWS.validate_region!(@region) end
reset()
click to toggle source
# File lib/fog/aws/cloud_watch.rb, line 46 def self.reset @data = nil end
Public Instance Methods
data()
click to toggle source
# File lib/fog/aws/cloud_watch.rb, line 58 def data self.class.data[@region][@aws_access_key_id] end
delete_alarms(alarm_names)
click to toggle source
# File lib/fog/aws/requests/cloud_watch/delete_alarms.rb, line 29 def delete_alarms(alarm_names) [*alarm_names].each do |alarm_name| unless data[:metric_alarms].key?(alarm_name) raise Fog::AWS::AutoScaling::NotFound, "The alarm '#{alarm_name}' does not exist." end end [*alarm_names].each { |alarm_name| data[:metric_alarms].delete(alarm_name) } response = Excon::Response.new response.status = 200 response.body = { 'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id } } response end
describe_alarms(options={})
click to toggle source
# File lib/fog/aws/requests/cloud_watch/describe_alarms.rb, line 37 def describe_alarms(options={}) records = if alarm_names = options.delete('AlarmNames') [*alarm_names].inject({}) do |r, name| (record = data[:metric_alarms][name]) ? r.merge(name => record) : r end else self.data[:metric_alarms] end results = records.inject([]) do |r, (name, data)| r << {'AlarmName' => name}.merge(data) end response = Excon::Response.new response.status = 200 response.body = { 'DescribeAlarmsResult' => { 'MetricAlarms' => results }, 'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id } } response end
list_metrics(options={})
click to toggle source
# File lib/fog/aws/requests/cloud_watch/list_metrics.rb, line 36 def list_metrics(options={}) body = case options["NextToken"] when nil { "ListMetricsResult" => { "Metrics" => (0...500).map{ {} }, "NextToken" => '1' }} when "1" { "ListMetricsResult" => { "Metrics" => (0...500).map{ {} }, "NextToken" => '2' }} when "2" { "ListMetricsResult" => { "Metrics" => (0...1).map{ {} } }} end Excon::Response.new.tap do |response| response.body = body response.status = 200 end end
put_metric_alarm(options)
click to toggle source
See: Fog::AWS::CloudWatch::Real.put_metric_alarm()
# File lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb, line 60 def put_metric_alarm(options) supported_actions = [ "InsufficientDataActions", "OKActions", "AlarmActions" ] found_actions = options.keys.select {|key| supported_actions.include? key } if found_actions.empty? raise Fog::AWS::Compute::Error.new("The request must contain at least one of #{supported_actions.join(", ")}'") end requirements = [ "AlarmName", "ComparisonOperator", "EvaluationPeriods", "Namespace", "Period", "Statistic", "Threshold" ] requirements.each do |req| unless options.key?(req) raise Fog::AWS::Compute::Error.new("The request must contain a the parameter '%s'" % req) end end data[:metric_alarms][options['AlarmName']] = { 'AlarmARN' => "arn:aws:cloudwatch:eu-west-1:000000000000:metricAlarm:00000000-0000-0000-0000-000000000000:alarmName/#{options['AlarmName']}", 'ActionsEnabled' => false, 'AlarmActions' => [], 'AlarmConfigurationUpdatedTimestamp' => Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ"), 'Dimensions' => [], 'OKActions' => [], }.merge!(options) response = Excon::Response.new response.status = 200 response.body = { 'requestId' => Fog::AWS::Mock.request_id } response end
reset_data()
click to toggle source
# File lib/fog/aws/cloud_watch.rb, line 62 def reset_data self.class.data[@region].delete(@aws_access_key_id) end