def create_instance(credentials, image_id, opts={})
ec2 = new_client(credentials)
instance_options = {}
instance_options.merge!(:user_data => opts[:user_data]) if opts[:user_data]
instance_options.merge!(:key_name => opts[:keyname]) if opts[:keyname]
instance_options.merge!(:availability_zone => opts[:realm_id]) if opts[:realm_id]
instance_options.merge!(:instance_type => opts[:hwp_id]) if opts[:hwp_id] && opts[:hwp_id].length > 0
firewalls = opts.inject([]){|res, (k,v)| res << v if k =~ /firewalls\d+$/; res}
instance_options.merge!(:group_ids => firewalls ) unless firewalls.empty?
instance_options.merge!(
:min_count => opts[:instance_count],
:max_count => opts[:instance_count]
) if opts[:instance_count] and opts[:instance_count].length!=0
if opts[:snapshot_id] and opts[:device_name]
instance_options.merge!(:block_device_mappings => [{
:snapshot_id => opts[:snapshot_id],
:device_name => opts[:device_name]
}])
end
safely do
new_instance = convert_instance(ec2.launch_instances(image_id, instance_options).first)
new_instance
end
end