Class: Node

Inherits:
Object
  • Object
show all
Defined in:
lib/hiera_browser/node.rb

Overview

A Node represents all that is known about a node in your infrastructure

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Node

Returns a new instance of Node.

Parameters:

  • args (Hash{:certname => String, :node_dir => String})


15
16
17
18
19
20
# File 'lib/hiera_browser/node.rb', line 15

def initialize(args)
  @certname    = args[:certname]
  @node_dir    = YamlDir.new(:node_dir => args[:node_dir])
  @facts       = facts_yaml
  @hiera       = args[:hiera] || HieraController.new
end

Instance Attribute Details

#certnameString (readonly)

Returns e.g., ‘testnode.puppetlabs.com’.

Returns:

  • (String)

    e.g., ‘testnode.puppetlabs.com’



7
8
9
# File 'lib/hiera_browser/node.rb', line 7

def certname
  @certname
end

#factsHash (readonly)

Returns e.g., { ‘datacenter’ => ‘pdx’, ‘environment’ => ‘dev’ }.

Returns:

  • (Hash)

    e.g., { ‘datacenter’ => ‘pdx’, ‘environment’ => ‘dev’ }



9
10
11
# File 'lib/hiera_browser/node.rb', line 9

def facts
  @facts
end

#node_dirYamlDir (readonly)

Returns:



11
12
13
# File 'lib/hiera_browser/node.rb', line 11

def node_dir
  @node_dir
end

Instance Method Details

#environmentString

Returns:

  • (String)


60
61
62
# File 'lib/hiera_browser/node.rb', line 60

def environment
  @facts['environment']
end

#facts_yamlHash

Returns parameters and facts merged from node cache.

Returns:

  • (Hash)

    parameters and facts merged from node cache



37
38
39
40
# File 'lib/hiera_browser/node.rb', line 37

def facts_yaml
  yaml = load_yaml
  yaml.parameters.merge(yaml.facts.values)
end

#hiera_values(args = {}) ⇒ Hash

Returns all values for all keys, including additive lookups for any keys included in :additive_keys.

Parameters:

  • args (Hash{:additive_keys => Array}) (defaults to: {})

Returns:

  • (Hash)

    all values for all keys, including additive lookups for any keys included in :additive_keys



45
46
47
48
49
# File 'lib/hiera_browser/node.rb', line 45

def hiera_values(args = {})
  additive_keys = args[:additive_keys] || []
  @hiera.get_all(:scope => @facts, :additive_keys => additive_keys).
    values.inject({}){|a,v| a.merge!(v)}
end

#load_yamlHash

Returns:

  • (Hash)


31
32
33
34
# File 'lib/hiera_browser/node.rb', line 31

def load_yaml
  path = File.join(@node_dir.path,"#{@certname}.yaml")
  YAML.load_file(path)
end

#lookup(args) ⇒ Hash

Parameters:

  • args (Hash{:key => String})

Returns:

  • (Hash)


66
67
68
# File 'lib/hiera_browser/node.rb', line 66

def lookup(args)
  @hiera.lookup_additive(:key => args[:key], :scope => @facts)
end

#parametersParameterCollection

Returns:



23
24
25
26
27
28
# File 'lib/hiera_browser/node.rb', line 23

def parameters
  collection = ParameterCollection.new
  facts_yaml.each {|k,v|
    collection << Parameter.new(:key => k, :value => v)}
  collection
end

#sorted_values(args = {}) ⇒ Array

Returns flattened collection of all #hiera_values sorted alphabetically by key e.g. [[‘datacenter’, ‘pdx’], [‘environment’, ‘dev’]].

Parameters:

  • args ({:keys => Array}) (defaults to: {})

Returns:

  • (Array)

    flattened collection of all #hiera_values sorted alphabetically by key e.g. [[‘datacenter’, ‘pdx’], [‘environment’, ‘dev’]]



54
55
56
57
# File 'lib/hiera_browser/node.rb', line 54

def sorted_values(args = {})
  keys = args[:keys]
  hiera_values(:additive_keys => keys).sort_by{|k,v|k}
end