def create_instance(credentials, image_id, opts)
check_credentials( credentials )
ids = Dir[ "#{@storage_root}/instances/*.yml" ].collect{|e| File.basename( e, ".yml" )}
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 = {
:name=>name,
:state=>'RUNNING',
: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,
:actions=>instance_actions_for( 'RUNNING' )
}
File.open( "#{@storage_root}/instances/#{next_id}.yml", 'w' ) {|f|
YAML.dump( instance, f )
}
instance[:id] = next_id
Instance.new( instance )
end