summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerdar Sutay <serdar@opscode.com>2014-10-27 01:12:25 -0700
committerSerdar Sutay <serdar@opscode.com>2014-10-27 01:12:25 -0700
commit0476b1290e244edbb26d86ed205790d596f03ff9 (patch)
treefa0325b1be64e814381a9ba220212417db097ce7
parent3f94356825130434fbef15d1a8b69caae84a001d (diff)
parentb717c0aaf1b308eac2a47854fefd4881489f27c7 (diff)
downloadohai-0476b1290e244edbb26d86ed205790d596f03ff9.tar.gz
Merge pull request #345 from squaresurf/pr-215-fix
[OHAI-518] remove *.static.cloud-ips.com
-rw-r--r--lib/ohai/plugins/rackspace.rb8
-rw-r--r--spec/unit/plugins/rackspace_spec.rb20
2 files changed, 26 insertions, 2 deletions
diff --git a/lib/ohai/plugins/rackspace.rb b/lib/ohai/plugins/rackspace.rb
index df30e348..8736b370 100644
--- a/lib/ohai/plugins/rackspace.rb
+++ b/lib/ohai/plugins/rackspace.rb
@@ -14,6 +14,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+require "resolv"
+
Ohai.plugin(:Rackspace) do
provides "rackspace"
@@ -129,7 +131,11 @@ Ohai.plugin(:Rackspace) do
rackspace[:public_ipv4] = rackspace[:public_ip]
get_global_ipv6_address(:public_ipv6, :eth0)
unless rackspace[:public_ip].nil?
- rackspace[:public_hostname] = "#{rackspace[:public_ip].gsub('.','-')}.static.cloud-ips.com"
+ rackspace[:public_hostname] = begin
+ Resolv.getname(rackspace[:public_ip])
+ rescue Resolv::ResolvError, Resolv::ResolvTimeout
+ rackspace[:public_ip]
+ end
end
rackspace[:local_ipv4] = rackspace[:private_ip]
get_global_ipv6_address(:local_ipv6, :eth1)
diff --git a/spec/unit/plugins/rackspace_spec.rb b/spec/unit/plugins/rackspace_spec.rb
index 72dc6e28..4e60d111 100644
--- a/spec/unit/plugins/rackspace_spec.rb
+++ b/spec/unit/plugins/rackspace_spec.rb
@@ -19,6 +19,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper.rb')
describe Ohai::System, "plugin rackspace" do
before(:each) do
+ Resolv.stub(:getname).and_return("1.2.3.4")
@plugin = get_plugin("rackspace")
@plugin[:hostname] = "katie"
@plugin[:network] = {:interfaces => {:eth0 => {"addresses"=> {
@@ -95,6 +96,20 @@ describe Ohai::System, "plugin rackspace" do
@plugin[:rackspace][:public_hostname].should_not be_nil
end
+ it "should resolve hostname if reverse dns is set" do
+ Resolv.stub(:getname).and_return("1234.resolved.com")
+ @plugin.run
+ @plugin[:rackspace][:public_hostname].should == "1234.resolved.com"
+ end
+
+ [Resolv::ResolvError, Resolv::ResolvTimeout].each do |exception|
+ it "should return ip address when reverse dns returns exception: #{exception}" do
+ Resolv.stub(:getname).and_raise(exception)
+ @plugin.run
+ @plugin[:rackspace][:public_hostname].should == "1.2.3.4"
+ end
+ end
+
it "should have correct values for all attributes" do
@plugin.run
@plugin[:rackspace][:public_ip].should == "1.2.3.4"
@@ -103,7 +118,7 @@ describe Ohai::System, "plugin rackspace" do
@plugin[:rackspace][:local_ipv4].should == "5.6.7.8"
@plugin[:rackspace][:public_ipv6].should == "2a00:1a48:7805:111:e875:efaf:ff08:75"
@plugin[:rackspace][:local_hostname].should == 'katie'
- @plugin[:rackspace][:public_hostname].should == "1-2-3-4.static.cloud-ips.com"
+ @plugin[:rackspace][:public_hostname].should == "1.2.3.4"
end
it "should capture region information" do
@@ -124,10 +139,13 @@ OUT
it_should_behave_like "rackspace"
before(:each) do
+ Resolv.stub(:getname).and_raise(Resolv::ResolvError)
File.stub(:exist?).with('/etc/chef/ohai/hints/rackspace.json').and_return(true)
File.stub(:read).with('/etc/chef/ohai/hints/rackspace.json').and_return('')
File.stub(:exist?).with('C:\chef\ohai\hints/rackspace.json').and_return(true)
File.stub(:read).with('C:\chef\ohai\hints/rackspace.json').and_return('')
+ File.stub(:exist?).with('/etc/resolv.conf').and_return(true)
+ File.stub(:read).with('/etc/resolv.conf').and_return('')
end
describe 'with no public interfaces (empty eth0)' do