From 18bdf9e55bc97aa248d035961ca3fb7c385d2a6f Mon Sep 17 00:00:00 2001 From: Jens Braeuer Date: Tue, 4 Oct 2011 14:32:23 +0200 Subject: [PATCH] [aws|cloudwatch] Add mocked implementation of put_metric_alarm. --- .../requests/cloud_watch/put_metric_alarm.rb | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb b/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb index 59afaa231..6187dd58f 100644 --- a/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb +++ b/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb @@ -56,6 +56,37 @@ module Fog end end + class Mock + require 'fog/aws/parsers/cloud_watch/put_metric_alarm' + + # See: Fog::AWS::CloudWatch::Real.put_metric_alarm() + # + def put_metric_alarm(alarm_name, actions, metric) + if alarm_name.nil? or alarm_name.empty? + raise Fog::Compute::AWS::Error.new("The request must contain the parameter 'alarm_name'") + end + + supported_actions = [ "InsufficientData", "OK", "Alarm" ] + found_actions = actions.keys.select {|key| supported_actions.include? key } + if found_actions.empty? + raise Fog::Compute::AWS::Error.new("The request must contain a supported action") + end + + metric_requirements = [ "ComparisonOperator", "EvaluationPeriods", "Namespace", "Period", "Statistic", "Threshold" ] + metric_requirements.each do |req| + unless metric.has_key?(req) + raise Fog::Compute::AWS::Error.new("The request must contain a the parameter '%s'" % req) + end + end + + response = Excon::Response.new + response.status = 200 + response.body = { + 'requestId' => Fog::AWS::Mock.request_id + } + response + end + end end end end