module Ohai::Mixin::SoftlayerMetadata
sldn.softlayer.com/reference/services/SoftLayer_Resource_Metadata
Constants
- SOFTLAYER_API_QUERY_URL
Public Instance Methods
ca_file_location()
click to toggle source
Softlayer's metadata api is only available over HTTPS. Ruby by default does not link to the system's CA bundle however Chef-omnibus should set SSL_CERT_FILE to point to a valid file. Manually supply and specify a suitable CA bundle here or set the SSL_CERT_FILE file environment variable to a valid value otherwise.
# File lib/ohai/mixin/softlayer_metadata.rb, line 42 def ca_file_location ::Ohai::Config[:ca_file] end
fetch_metadata()
click to toggle source
# File lib/ohai/mixin/softlayer_metadata.rb, line 27 def fetch_metadata metadata = { "public_fqdn" => fetch_metadata_item("getFullyQualifiedDomainName.txt"), "local_ipv4" => fetch_metadata_item("getPrimaryBackendIpAddress.txt"), "public_ipv4" => fetch_metadata_item("getPrimaryIpAddress.txt"), "region" => fetch_metadata_item("getDatacenter.txt"), "instance_id" => fetch_metadata_item("getId.txt"), } end
fetch_metadata_item(item)
click to toggle source
# File lib/ohai/mixin/softlayer_metadata.rb, line 46 def fetch_metadata_item(item) full_url = "#{SOFTLAYER_API_QUERY_URL}/#{item}" u = URI(full_url) net = ::Net::HTTP.new(u.hostname, u.port) net.ssl_version = :TLSv1_2 net.use_ssl = true net.ca_file = ca_file_location res = net.get(u.request_uri) if res.code.to_i.between?(200, 299) res.body else ::Ohai::Log.error("Mixin Softlayer: Unable to fetch item #{full_url}: status (#{res.code}) body (#{res.body})") nil end rescue => e ::Ohai::Log.error("Mixin Softlayer: Unable to fetch softlayer metadata from #{u}: #{e.class}: #{e.message}") raise e end