module Ohai::Mixin::SoftlayerMetadata
softlayer.github.io/reference/services/SoftLayer_Resource_Metadata/
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.
@return [String]
# File lib/ohai/mixin/softlayer_metadata.rb, line 48 def ca_file_location ::Ohai::Config[:ca_file] end
fetch_metadata()
click to toggle source
fetch metadata items and build out hash of data
@return [Hash]
# File lib/ohai/mixin/softlayer_metadata.rb, line 31 def fetch_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
fetch a specified item from the Softlayer metadata API @param item [String] the metadata item to fetch
@return [String] the response body
# File lib/ohai/mixin/softlayer_metadata.rb, line 56 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 logger.error("Mixin Softlayer: Unable to fetch item #{full_url}: status (#{res.code}) body (#{res.body})") nil end rescue => e logger.error("Mixin Softlayer: Unable to fetch softlayer metadata from #{u}: #{e.class}: #{e.message}") raise e end