diff --git a/source/lib/vagrant-openstack-provider/utils.rb b/source/lib/vagrant-openstack-provider/utils.rb index 49a2544..e43fd6c 100644 --- a/source/lib/vagrant-openstack-provider/utils.rb +++ b/source/lib/vagrant-openstack-provider/utils.rb @@ -13,7 +13,7 @@ def get_ip_address(env) return network_detail['addr'] if network_detail['OS-EXT-IPS:type'] == 'floating' end end - return details['addresses'].first[1][0]['addr'] if details['addresses'].size == 1 && details['addresses'].first[1].size == 1 + return details['addresses'].first[1][0]['addr'] if details['addresses'].size >= 1 && details['addresses'].first[1].size >= 1 fail Errors::UnableToResolveIP end end diff --git a/source/spec/vagrant-openstack-provider/utils_spec.rb b/source/spec/vagrant-openstack-provider/utils_spec.rb index 323fde7..5ed62b4 100644 --- a/source/spec/vagrant-openstack-provider/utils_spec.rb +++ b/source/spec/vagrant-openstack-provider/utils_spec.rb @@ -87,6 +87,32 @@ } } end + expect(@action.get_ip_address(env)).to eq('13.13.13.13') + end + end + + context 'with networks but no ips' do + it 'fails' do + config.stub(:floating_ip) { nil } + nova.stub(:get_server_details).with(env, '1234id') do + { + 'addresses' => { + 'toto' => [] + } + } + end + expect { @action.get_ip_address(env) }.to raise_error(Errors::UnableToResolveIP) + end + end + + context 'with no networks ' do + it 'fails' do + config.stub(:floating_ip) { nil } + nova.stub(:get_server_details).with(env, '1234id') do + { + 'addresses' => {} + } + end expect { @action.get_ip_address(env) }.to raise_error(Errors::UnableToResolveIP) end end