summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan McLellan <btm@loftninjas.org>2014-07-17 13:53:12 -0400
committerBryan McLellan <btm@getchef.com>2014-10-04 17:26:54 -0700
commit0a70d539b3c8fe2533db3f9bca4538107b7e37d0 (patch)
tree9aab9131f290a23aabf9ecb613f1eb087cd3258d
parent8ea4bf387a03e77c3dbaaf65bb320c2ef8d42b98 (diff)
downloadohai-btm/eucalyptus_404.tar.gz
Don't hardcode XML return from API server on 404, just look for a 404btm/eucalyptus_404
-rw-r--r--CHANGELOG.md2
-rw-r--r--lib/ohai/mixin/ec2_metadata.rb5
-rw-r--r--spec/unit/mixin/ec2_metadata_spec.rb7
3 files changed, 9 insertions, 5 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 78085e3b..9e962c3c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -68,7 +68,7 @@
* root_group provider not implemented for Windows (OHAI-491)
* `Ohai::Exceptions::AttributeNotFound` errors in Chef's ohai resource
* Be reluctant to call something an LXC host (OHAI-573)
-
+* Assume 'latest' metadata versions on 404
## Release: 7.0.4
diff --git a/lib/ohai/mixin/ec2_metadata.rb b/lib/ohai/mixin/ec2_metadata.rb
index d01d5cc1..8d775719 100644
--- a/lib/ohai/mixin/ec2_metadata.rb
+++ b/lib/ohai/mixin/ec2_metadata.rb
@@ -76,7 +76,10 @@ module Ohai
def best_api_version
response = http_client.get("/")
- unless response.code == '200'
+ if response.code == '404'
+ Ohai::Log.debug("Received HTTP 404 from metadata server while determining API version, assuming 'latest'")
+ return "latest"
+ elsif response.code != '200'
raise "Unable to determine EC2 metadata version (returned #{response.code} response)"
end
# Note: Sorting the list of versions may have unintended consequences in
diff --git a/spec/unit/mixin/ec2_metadata_spec.rb b/spec/unit/mixin/ec2_metadata_spec.rb
index 1f5a65a2..c9543fe3 100644
--- a/spec/unit/mixin/ec2_metadata_spec.rb
+++ b/spec/unit/mixin/ec2_metadata_spec.rb
@@ -53,11 +53,12 @@ describe Ohai::Mixin::Ec2Metadata do
end
end
+ # Presume 'latest' when we get a 404 for Eucalyptus back-compat
context "when the response code is 404" do
- let(:response) { double("Net::HTTP Response", :body => "1.0\n2011-05-01\n2012-01-12\nUnsupported", :code => "404") }
+ let(:response) { double("Net::HTTP Response", :code => "404") }
- it "raises an error" do
- lambda { mixin.best_api_version}.should raise_error
+ it "returns 'latest' as the version" do
+ mixin.best_api_version.should == 'latest'
end
end