summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2017-02-23 13:26:20 -0800
committerTim Smith <tsmith@chef.io>2017-02-23 13:38:02 -0800
commit07b5449ca448b373224ad08e8d8fee7004fe8786 (patch)
tree0744d04202a4db58ef331f46c42eb7006c41ccf3
parentf1370ef84b4398fa18991fce89f9a71a7eb7a321 (diff)
downloadohai-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.rb27
-rw-r--r--lib/ohai/plugins/digital_ocean.rb8
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