| require 'rubygems' |
| require 'require_relative' if RUBY_VERSION < '1.9' |
| |
| require_relative 'common.rb' |
| |
| describe 'Ec2Driver Instances' do |
| |
| before do |
| @driver = Deltacloud::new(:ec2, credentials) |
| VCR.insert_cassette __name__ |
| end |
| |
| after do |
| VCR.eject_cassette |
| end |
| |
| it 'must throw error when wrong credentials' do |
| Proc.new do |
| @driver.backend.images(OpenStruct.new(:user => 'unknown', :password => 'wrong')) |
| end.must_raise Deltacloud::Exceptions::AuthenticationFailure, 'Authentication Failure' |
| end |
| |
| it 'must return list of instances' do |
| @driver.instances.wont_be_empty |
| @driver.instances.first.must_be_kind_of Deltacloud::Instance |
| end |
| |
| it 'must allow to filter instances' do |
| @driver.instances(:id => 'i-4d15f036').wont_be_empty |
| @driver.instances(:id => 'i-4d15f036').must_be_kind_of Array |
| @driver.instances(:id => 'i-4d15f036').size.must_equal 1 |
| @driver.instances(:id => 'i-4d15f036').first.id.must_equal 'i-4d15f036' |
| @driver.instances(:owner_id => '293787749884').wont_be_empty |
| @driver.instances(:owner_id => '293787749884').each do |inst| |
| inst.owner_id.must_equal '293787749884' |
| end |
| @driver.instances(:id => 'i-00000000').must_be_empty |
| @driver.instances(:id => 'unknown').must_be_empty |
| end |
| |
| it 'must allow to retrieve single instance' do |
| @driver.instance(:id => 'i-4d15f036').wont_be_nil |
| @driver.instance(:id => 'i-4d15f036').must_be_kind_of Deltacloud::Instance |
| @driver.instance(:id => 'i-4d15f036').id.must_equal 'i-4d15f036' |
| @driver.instance(:id => 'i-00000000').must_be_nil |
| @driver.instance(:id => 'unknown').must_be_nil |
| end |
| |
| it 'must allow to create a new instance if instance supported' do |
| instance = @driver.create_instance('ami-aecd60c7', |
| :realm_id => 'us-east-1a', |
| :hwp_id => 't1.micro', |
| :keyname => 'test1', |
| :user_data => 'test user data', |
| :'firewalls1' => 'default' |
| ) |
| instance = instance.wait_for!(@driver, record_retries) { |i| i.is_running? } |
| instance.must_be_kind_of Deltacloud::Instance |
| instance.is_running?.must_equal true |
| @driver.instance(:id => instance.id).wont_be_nil |
| @driver.instance(:id => instance.id).id.must_equal instance.id |
| @driver.instance(:id => instance.id).image_id.must_equal 'ami-aecd60c7' |
| @driver.instance(:id => instance.id).name.wont_be_nil |
| @driver.instance(:id => instance.id).instance_profile.name.must_equal 't1.micro' |
| @driver.instance(:id => instance.id).realm_id.must_equal 'us-east-1a' |
| @driver.instance(:id => instance.id).owner_id.must_equal '293787749884' |
| @driver.instance(:id => instance.id).keyname.must_equal 'test1' |
| @driver.instance(:id => instance.id).firewalls.must_include 'default' |
| @driver.instance(:id => instance.id).state.must_equal 'RUNNING' |
| @driver.instance(:id => instance.id).public_addresses.wont_be_empty |
| @driver.instance(:id => instance.id).actions.must_include :reboot |
| @driver.instance(:id => instance.id).actions.must_include :stop |
| @driver.destroy_instance(instance.id) |
| instance.wait_for!(@driver, record_retries('stopped')) { |i| i.is_stopped? } |
| end |
| |
| it 'must allow to create multiple instances using the "instance_count" parameter' do |
| instances = @driver.create_instance('ami-aecd60c7', |
| :realm_id => 'us-east-1a', |
| :hwp_id => 't1.micro', |
| :instance_count => '2' |
| ) |
| instances.wont_be_empty |
| instances.size.must_equal 2 |
| instances.each { |i| i.must_be_kind_of Deltacloud::Instance } |
| instances = instances.map { |instance| instance.wait_for!(@driver, record_retries("#{instance.id}-running")) { |i| i.is_running? } } |
| instances.each { |i| i.is_running?.must_equal true } |
| instances.each { |i| @driver.destroy_instance(i.id) } |
| instances = instances.map { |instance| instance.wait_for!(@driver, record_retries("#{instance.id}-stopped")) { |i| i.is_stopped? } } |
| instances.each { |i| i.is_stopped?.must_equal true } |
| end |
| |
| it 'must allow creating instance in a VPC subnet' do |
| realm_id = "#{@@subnet[:availability_zone]}:#{@@subnet[:subnet_id]}" |
| instance = @driver.create_instance('ami-aecd60c7', |
| :realm_id => realm_id, |
| :hwp_id => 'm1.small') |
| instance.must_be_kind_of Deltacloud::Instance |
| instance.realm_id.must_equal realm_id |
| @driver.destroy_instance(instance.id) |
| end |
| |
| it 'must allow to reboot instance in running state' do |
| instance = @driver.create_instance('ami-aecd60c7', :realm_id => 'us-east-1a', :hwp_id => 't1.micro') |
| instance = instance.wait_for!(@driver, record_retries) { |i| i.is_running? } |
| instance.must_be_kind_of Deltacloud::Instance |
| instance.is_running?.must_equal true |
| @driver.reboot_instance(instance.id) |
| @driver.instance(:id => instance.id).state.must_equal 'RUNNING' |
| @driver.destroy_instance(instance.id) |
| instance.wait_for!(@driver, record_retries('stopped')) { |i| i.is_stopped? } |
| end |
| |
| end |