def create_instance(credentials, image_id, opts)
check_credentials( credentials )
ids = @client.members(:instances)
count = 0
while true
next_id = "inst" + count.to_s
if not ids.include?(next_id)
break
end
count = count + 1
end
realm_id = opts[:realm_id]
if ( realm_id.nil? )
realm = realms(credentials).first
( realm_id = realm.id ) if realm
end
hwp = find_hardware_profile(credentials, opts[:hwp_id], image_id)
name = opts[:name] || "i-#{Time.now.to_i}"
instance = {
:id => next_id,
:name=>name,
:state=>'RUNNING',
:keyname => opts[:keyname],
:image_id=>image_id,
:owner_id=>credentials.user,
:public_addresses=>["#{image_id}.#{next_id}.public.com"],
:private_addresses=>["#{image_id}.#{next_id}.private.com"],
:instance_profile => InstanceProfile.new(hwp.name, opts),
:realm_id=>realm_id,
:create_image=>true,
:actions=>instance_actions_for( 'RUNNING' ),
:user_data => opts[:user_data] ? Base64::decode64(opts[:user_data]) : nil
}
@client.store(:instances, instance)
Instance.new( instance )
end