diff options
author | Tim Smith <tsmith@chef.io> | 2016-03-07 11:01:04 -0800 |
---|---|---|
committer | Tim Smith <tsmith@chef.io> | 2016-03-07 11:01:04 -0800 |
commit | 907dc4894a5b8a5609d3df15e646b3ce4cc021c4 (patch) | |
tree | 7b266ee565d3029d9e01358f29cf2bf1b308e887 | |
parent | 03952430762fec3fc0a0f9fe5c138394c2db6965 (diff) | |
parent | cbdefbae73cef50778f12eabba20241aebce8c66 (diff) | |
download | ohai-907dc4894a5b8a5609d3df15e646b3ce4cc021c4.tar.gz |
Merge pull request #764 from tas50/rackspace_isnt_ec2
Handle mis-identifying Rackspace as EC2 better
-rw-r--r-- | lib/ohai/mixin/ec2_metadata.rb | 2 | ||||
-rw-r--r-- | lib/ohai/plugins/ec2.rb | 12 | ||||
-rw-r--r-- | spec/unit/plugins/ec2_spec.rb | 12 |
3 files changed, 21 insertions, 5 deletions
diff --git a/lib/ohai/mixin/ec2_metadata.rb b/lib/ohai/mixin/ec2_metadata.rb index 14a122d3..6464377f 100644 --- a/lib/ohai/mixin/ec2_metadata.rb +++ b/lib/ohai/mixin/ec2_metadata.rb @@ -99,7 +99,7 @@ module Ohai end def http_client - Net::HTTP.start(EC2_METADATA_ADDR).tap { |h| h.read_timeout = 600 } + Net::HTTP.start(EC2_METADATA_ADDR).tap { |h| h.read_timeout = 30 } end # Get metadata for a given path and API version diff --git a/lib/ohai/plugins/ec2.rb b/lib/ohai/plugins/ec2.rb index 769ea9c2..1f383035 100644 --- a/lib/ohai/plugins/ec2.rb +++ b/lib/ohai/plugins/ec2.rb @@ -74,12 +74,18 @@ EOM end end + # rackspace systems look like ec2 so instead of timing out dig a bit deeper + def looks_like_rackspace? + return true if File.exist?("/usr/bin/rackspace-monitoring-agent") + end + def looks_like_ec2? return true if hint?("ec2") - # if has ec2 mac try non-blocking connect so we don't "block" if - # the Xen environment is *not* EC2 - return true if (has_ec2metadata_bin? || has_ec2_dmi?) || (has_xen_mac? && can_metadata_connect?(Ohai::Mixin::Ec2Metadata::EC2_METADATA_ADDR, 80)) + # Even if it looks like EC2 try to connect first + if has_ec2_dmi? || has_xen_mac? || (has_ec2metadata_bin? && !looks_like_rackspace?) + return true if can_metadata_connect?(Ohai::Mixin::Ec2Metadata::EC2_METADATA_ADDR, 80) + end end collect_data do diff --git a/spec/unit/plugins/ec2_spec.rb b/spec/unit/plugins/ec2_spec.rb index 18a08ee9..bddd887b 100644 --- a/spec/unit/plugins/ec2_spec.rb +++ b/spec/unit/plugins/ec2_spec.rb @@ -28,6 +28,7 @@ describe Ohai::System, "plugin ec2" do allow(File).to receive(:exist?).with("/etc/chef/ohai/hints/ec2.json").and_return(false) allow(File).to receive(:exist?).with('C:\chef\ohai\hints/ec2.json').and_return(false) allow(File).to receive(:exist?).with("/usr/bin/ec2metadata").and_return(false) + allow(File).to receive(:exist?).with("/usr/bin/rackspace-monitoring-agent").and_return(false) end shared_examples_for "!ec2" do @@ -310,7 +311,16 @@ describe Ohai::System, "plugin ec2" do end end - describe "without hint file, mac address, dmi data, or ec2metadata binary" do + describe "with ec2metadata, but with rackspace-monitoring-agent" do + it_should_behave_like "!ec2" + + before(:each) do + allow(File).to receive(:exist?).with("/usr/bin/ec2metadata").and_return(true) + allow(File).to receive(:exist?).with("/usr/bin/rackspace-monitoring-agent").and_return(true) + end + end + + describe "without any hints that it is an ec2 system" do it_should_behave_like "!ec2" before(:each) do |