Module: Ohai::Mixin::AlibabaMetadata

Defined in:
lib/ohai/mixin/alibaba_metadata.rb

Overview

This code parses the Alibaba Instance Metadata API to provide details of the running instance.

Note: As of 2021-02-07 there is only one API release so we’re not implementing logic like the ec2 or azure mixins where we have to find the latest supported release

Instance Method Summary collapse

Instance Method Details

#fetch_metadata(id = "", is_directory = true) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/ohai/mixin/alibaba_metadata.rb', line 44

def (id = "", is_directory = true)
  response = http_get(id)
  if response.code == "200"

    if !is_directory
      json_data = parse_json(response.body)
      if json_data.nil?
        response.body
      else
        json_data
      end
    elsif is_directory
      temp = {}
      response.body.split("\n").each do |sub_attr|
        if "#{id}/#{sub_attr}" != "/user-data"
          uri = id == "" ? "#{id}#{sub_attr}/" : "#{id}#{sub_attr}"
          temp[sanitize_key(sub_attr).gsub(/_$/, "")] = (uri, has_trailing_slash?(uri))
        end
      end
      temp
    end
  else
    logger.warn("Mixin AlibabaMetadata: Received response code #{response.code} requesting metadata for id='#{id}'")
    nil
  end
end

#has_trailing_slash?(data) ⇒ Boolean

Returns is there a trailing /?.

Parameters:

Returns:

  • (Boolean)

    is there a trailing /?



74
75
76
# File 'lib/ohai/mixin/alibaba_metadata.rb', line 74

def has_trailing_slash?(data)
  !!(data =~ %r{/$})
end

#http_get(uri) ⇒ Object



37
38
39
40
41
42
# File 'lib/ohai/mixin/alibaba_metadata.rb', line 37

def http_get(uri)
  conn = Net::HTTP.start(ALI_METADATA_ADDR)
  conn.read_timeout = 6
  conn.keep_alive_timeout = 6
  conn.get("/2016-01-01/#{uri}", { "User-Agent" => "chef-ohai/#{Ohai::VERSION}" })
end

#sanitize_key(key) ⇒ Object



78
79
80
# File 'lib/ohai/mixin/alibaba_metadata.rb', line 78

def sanitize_key(key)
  key.gsub(%r{\-|/}, "_")
end