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