Module: AWS::Instance

Defined in:
lib/aws_metadata/instance_metadata.rb

Class Method Summary collapse

Class Method Details

.dynamic(path: nil, version: 'latest', host: '169.254.169.254', port: '80') ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/aws_metadata/instance_metadata.rb', line 28

def self.dynamic(path: nil, version: 'latest', host: '169.254.169.254', port: '80')
  load_stubs
  url_prefix = "/#{version}/dynamic/"
  if path.nil?
    @dynamic ||= Treeish.new http(host, port), url_prefix
  else
    @dynamic_path       ||= Hashish.new
    @dynamic_path[path] ||= value_by_path(path, @dynamic) do
      query(http(host, port), "#{url_prefix}#{path}")
    end
  end
end

.metadata(path: nil, version: 'latest', host: '169.254.169.254', port: '80') ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/aws_metadata/instance_metadata.rb', line 8

def self.(path: nil, version: 'latest', host: '169.254.169.254', port: '80')
  load_stubs
  url_prefix = "/#{version}/meta-data/"
  if path.nil?
     ||= Treeish.new http(host, port), url_prefix
    raise 'no metadata' if .blank? # There should always be metadata
    
  else
           ||= Hashish.new
    [path] ||= value_by_path(path, ) do
      query(http(host, port), "#{url_prefix}#{path}")
    end
  end
end

.to_hashObject

All the metadata from 169.254.169.254

The hashes are Hashish objects that allows regular method like calls where all method names are the keys underscored.



44
45
46
# File 'lib/aws_metadata/instance_metadata.rb', line 44

def self.to_hash
  { :metadata => .merge(Hash()), :user_data => user_data, :dynamic => dynamic.merge(Hash(@dynamic_path)) }
end

.user_data(version: 'latest', host: '169.254.169.254', port: '80') ⇒ Object



23
24
25
26
# File 'lib/aws_metadata/instance_metadata.rb', line 23

def self.user_data(version: 'latest', host: '169.254.169.254', port: '80')
  load_stubs
  @user_data ||= query(http(host, port), "/#{version}/user-data")
end

.value_by_path(path, obj) ⇒ Object



119
120
121
122
123
124
125
126
127
# File 'lib/aws_metadata/instance_metadata.rb', line 119

def self.value_by_path(path, obj)
  if AWS::.stub_responses
    path.split('/').inject(obj) do |o, method|
      o.send method.to_s.underscore
    end
  else
    yield
  end
end