73: def register_image( options = {} )
74: params = {}
75: if options.does_not_have?(:image_location) && options.does_not_have?(:root_device_name)
76: raise ArgumentError, "No :image_location or :root_device_name"
77: end
78: params["ImageLocation"] = options[:image_location].to_s unless options[:image_location].nil?
79: params["Name"] = options[:name].to_s unless options[:name].nil?
80: params["Description"] = options[:description].to_s unless options[:description].nil?
81: params["Architecture"] = options[:architecture].to_s unless options[:architecture].nil?
82: params["KernelId"] = options[:kernel_id].to_s unless options[:kernel_id].nil?
83: params["RamdiskId"] = options[:ramdisk_id].to_s unless options[:ramdisk_id].nil?
84: params["RootDeviceName"] = options[:root_device_name].to_s unless options[:root_device_name].nil?
85: if options[:block_device_mapping]
86: params.merge!(pathhashlist("BlockDeviceMapping", options[:block_device_mapping].flatten, {
87: :device_name => "DeviceName",
88: :virtual_name => "VirtualName",
89: :ebs_snapshot_id => "Ebs.SnapshotId",
90: :ebs_volume_size => "Ebs.VolumeSize",
91: :ebs_delete_on_termination => "Ebs.DeleteOnTermination"
92: }))
93: end
94: return response_generator(:action => "RegisterImage", :params => params)
95: end