65: def create(opts={}, &each_inst)
66: raise NoAMI unless opts[:ami]
67: raise NoGroup unless opts[:group]
68:
69: opts = {
70: :size => 'm1.small',
71: :min => 1,
72: :max => nil
73: }.merge(opts)
74:
75: old_opts = {
76: :image_id => opts[:ami].to_s,
77: :min_count => opts[:min],
78: :max_count => opts[:max] || opts[:min],
79: :key_name => (opts[:keypair] || '').to_s,
80: :security_group => [opts[:group]].flatten.compact,
81:
82: :availability_zone => opts[:zone].to_s,
83: :instance_type => opts[:size].to_s,
84: :kernel_id => nil
85: }
86:
87: response = Rudy::AWS::EC2.execute_request({}) { @@ec2.run_instances(old_opts) }
88: return nil unless response['instancesSet'].is_a?(Hash)
89: instances = response['instancesSet']['item'].collect do |inst|
90: self.from_hash(inst)
91: end
92: instances.each { |inst|
93: each_inst.call(inst)
94: } if each_inst
95: instances
96: end