# File lib/AWS/Autoscaling/autoscaling.rb, line 85
 85:       def create_or_updated_scaling_trigger( options = {} )
 86:         if options[:dimensions].nil? || options[:dimensions].empty?
 87:           raise ArgumentError, "No :dimensions provided"
 88:         end
 89:         raise ArgumentError, "No :autoscaling_group_name provided" if options[:autoscaling_group_name].nil? || options[:autoscaling_group_name].empty?
 90:         raise ArgumentError, "No :measure_name provided" if options[:measure_name].nil? || options[:measure_name].empty?
 91:         raise ArgumentError, "No :statistic provided" if options[:statistic].nil? || options[:statistic].empty?
 92:         raise ArgumentError, "No :period provided" if options[:period].nil?
 93:         raise ArgumentError, "No :trigger_name provided" if options[:trigger_name].nil? || options[:trigger_name].empty?
 94:         raise ArgumentError, "No :lower_threshold provided" if options[:lower_threshold].nil?
 95:         raise ArgumentError, "No :lower_breach_scale_increment provided" if options[:lower_breach_scale_increment].nil?
 96:         raise ArgumentError, "No :upper_threshold provided" if options[:upper_threshold].nil?
 97:         raise ArgumentError, "No :upper_breach_scale_increment provided" if options[:upper_breach_scale_increment].nil?
 98:         raise ArgumentError, "No :breach_duration provided" if options[:breach_duration].nil?
 99:         statistic_option_list = %w(minimum maximum average sum)
100:         unless statistic_option_list.include?(options[:statistic].downcase)
101: 
102:           raise ArgumentError, "The statistic option must be one of the following: #{statistic_option_list.join(", ")}"
103:         end
104: 
105:         params = {}
106:         params['Unit'] = options[:unit] if options[:unit]
107:         params['AutoScalingGroupName'] = options[:autoscaling_group_name]
108:         case options[:dimensions]
109:         when Array
110:           params["Dimensions.member.1.Name"] = options[:dimensions][0]
111:           params["Dimensions.member.1.Value"] = options[:dimensions][1]
112:         when Hash
113:           params["Dimensions.member.1.Name"] = options[:dimensions][:name]
114:           params["Dimensions.member.1.Value"] = options[:dimensions][:value]
115:         else
116:           raise ArgumentError, "Dimensions must be either an array or a hash"
117:         end
118:         params['MeasureName'] = options[:measure_name]
119:         params['Namespace'] = options[:namespace] if options[:namespace]
120:         params['Statistic'] = options[:statistic]
121:         params['Period'] = options[:period].to_s
122:         params['TriggerName'] = options[:trigger_name]
123:         params['LowerThreshold'] = options[:lower_threshold].to_s
124:         params['LowerBreachScaleIncrement'] = options[:lower_breach_scale_increment].to_s
125:         params['UpperThreshold'] = options[:upper_threshold].to_s
126:         params['UpperBreachScaleIncrement'] = options[:upper_breach_scale_increment].to_s
127:         params['BreachDuration'] = options[:breach_duration].to_s
128: 
129:         return response_generator(:action => "CreateOrUpdateScalingTrigger", :params => params)
130:       end