17: def create_image( options = {} )
18: options = { :instance_id => "", :name => "" }.merge(options)
19: raise ArgumentError, "No :instance_id provided" if options.does_not_have? :instance_id
20: raise ArgumentError, "No :name provided" if options.does_not_have? :name
21: raise ArgumentError, "Invalid string length for :name provided" if options[:name] && options[:name].size < 3 || options[:name].size > 128
22: raise ArgumentError, "Invalid string length for :description provided (too long)" if options[:description] && options[:description].size > 255
23: raise ArgumentError, ":no_reboot option must be a Boolean" unless options[:no_reboot].nil? || [true, false].include?(options[:no_reboot])
24: params = {}
25: params["InstanceId"] = options[:instance_id].to_s
26: params["Name"] = options[:name].to_s
27: params["Description"] = options[:description].to_s
28: params["NoReboot"] = options[:no_reboot].to_s
29: return response_generator(:action => "CreateImage", :params => params)
30: end