From c444e2e676dc6a06b8cf823bc59603920b53130e Mon Sep 17 00:00:00 2001 From: Julien Vey Date: Thu, 6 Nov 2014 21:28:41 +0100 Subject: [PATCH] Return first adress when multiple are found Fix #155 --- .../lib/vagrant-openstack-provider/utils.rb | 2 +- .../vagrant-openstack-provider/utils_spec.rb | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) 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