diff options
author | Tim Smith <tsmith@chef.io> | 2017-02-23 13:26:20 -0800 |
---|---|---|
committer | Tim Smith <tsmith@chef.io> | 2017-02-23 13:38:02 -0800 |
commit | 07b5449ca448b373224ad08e8d8fee7004fe8786 (patch) | |
tree | 0744d04202a4db58ef331f46c42eb7006c41ccf3 | |
parent | f1370ef84b4398fa18991fce89f9a71a7eb7a321 (diff) | |
download | ohai-GenPage-digitalocean_metadata.tar.gz |
Use the new http helper for socket checksGenPage-digitalocean_metadata
Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r-- | lib/ohai/mixin/do_metadata.rb | 27 | ||||
-rw-r--r-- | lib/ohai/plugins/digital_ocean.rb | 8 |
2 files changed, 4 insertions, 31 deletions
diff --git a/lib/ohai/mixin/do_metadata.rb b/lib/ohai/mixin/do_metadata.rb index aa8f443c..0a056d82 100644 --- a/lib/ohai/mixin/do_metadata.rb +++ b/lib/ohai/mixin/do_metadata.rb @@ -15,7 +15,6 @@ # limitations under the License. require "net/http" -require "socket" module Ohai module Mixin @@ -24,32 +23,6 @@ module Ohai DO_METADATA_ADDR = "169.254.169.254" unless defined?(DO_METADATA_ADDR) DO_METADATA_URL = "/metadata/v1.json" unless defined?(DO_METADATA_URL) - def can_metadata_connect?(addr, port, timeout = 2) - t = Socket.new(Socket::Constants::AF_INET, Socket::Constants::SOCK_STREAM, 0) - saddr = Socket.pack_sockaddr_in(port, addr) - connected = false - - begin - t.connect_nonblock(saddr) - rescue Errno::EINPROGRESS - r, w, e = IO.select(nil, [t], nil, timeout) - if !w.nil? - connected = true - else - begin - t.connect_nonblock(saddr) - rescue Errno::EISCONN - t.close - connected = true - rescue SystemCallError - end - end - rescue SystemCallError - end - Ohai::Log.debug("Mixin DOMetadata: can_metadata_connect? == #{connected}") - connected - end - def http_client Net::HTTP.start(DO_METADATA_ADDR).tap { |h| h.read_timeout = 6 } end diff --git a/lib/ohai/plugins/digital_ocean.rb b/lib/ohai/plugins/digital_ocean.rb index 240c4a10..d43f02e3 100644 --- a/lib/ohai/plugins/digital_ocean.rb +++ b/lib/ohai/plugins/digital_ocean.rb @@ -16,9 +16,11 @@ # limitations under the License. require "ohai/mixin/do_metadata" +require "ohai/mixin/http_helper" Ohai.plugin(:DigitalOcean) do include Ohai::Mixin::DOMetadata + include Ohai::Mixin::HttpHelper provides "digital_ocean" @@ -41,10 +43,8 @@ Ohai.plugin(:DigitalOcean) do def looks_like_digital_ocean? return true if hint?("digital_ocean") - - if has_do_dmi? - return true if can_metadata_connect?(Ohai::Mixin::DOMetadata::DO_METADATA_ADDR, 80) - end + return true if has_do_dmi? && can_socket_connect?(Ohai::Mixin::DOMetadata::DO_METADATA_ADDR, 80) + return false end collect_data do |