Class: Onceover::Node

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

Constant Summary collapse

@@all =
[]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Node

Returns a new instance of Node.

[View source]

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/onceover/node.rb', line 14

def initialize(name)
  @name = name
  @beaker_node = nil

  # If we can't find the factset it will fail, so just catch that error and ignore it
  begin
    facts_file_index = Onceover::Controlrepo.facts_files.index {|facts_file|
      File.basename(facts_file, '.json') == name
    }  
    @fact_set = Onceover::Node.clean_facts(Onceover::Controlrepo.facts[facts_file_index])

    # First see if we can find a 'trusted' hash at the top level of our factset 
    @trusted_set = Onceover::Controlrepo.trusted_facts[facts_file_index]
    # If we don't find it, attempt to find a 'trusted.extensions' hash nested in our fact_set
    @trusted_set = @fact_set.dig('trusted', 'extensions') if @trusted_set.nil?
    # If we still can't find any, return an empty hash so the following doesn't blow up user written tests:
    #   let(:trusted_facts) { trusted_facts }
    @trusted_set = {} if @trusted_set.nil?

    # First see if we can find a 'trusted_external' hash at the top level of our factset 
    @trusted_external_set = Onceover::Controlrepo.trusted_external_facts[facts_file_index]
    # If we don't find it, attempt to find a 'trusted.external' hash nested in our fact_set
    @trusted_external_set = @fact_set.dig('trusted', 'external') if @trusted_external_set.nil?
    # If we still can't find any, return an empty hash so the following doesn't blow up user written tests:
    #   let(:trusted_external_data) { trusted_external_data }
    @trusted_external_set = {} if @trusted_external_set.nil?
  rescue TypeError
    @fact_set = {}
    @trusted_set = {}
    @trusted_external_set = {}
  end

  @@all << self

end

Instance Attribute Details

#beaker_nodeObject

Returns the value of attribute beaker_node.


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

def beaker_node
  @beaker_node
end

#fact_setObject

Returns the value of attribute fact_set.


10
11
12
# File 'lib/onceover/node.rb', line 10

def fact_set
  @fact_set
end

#nameObject

Returns the value of attribute name.


8
9
10
# File 'lib/onceover/node.rb', line 8

def name
  @name
end

#trusted_external_setObject

Returns the value of attribute trusted_external_set.


12
13
14
# File 'lib/onceover/node.rb', line 12

def trusted_external_set
  @trusted_external_set
end

#trusted_setObject

Returns the value of attribute trusted_set.


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

def trusted_set
  @trusted_set
end

Class Method Details

.allObject

[View source]

64
65
66
# File 'lib/onceover/node.rb', line 64

def self.all
  @@all
end

.clean_facts(factset) ⇒ Object

This method ensures that all facts are valid and clean anoything that we can’t handle

[View source]

69
70
71
72
# File 'lib/onceover/node.rb', line 69

def self.clean_facts(factset)
  factset.delete('environment')
  factset
end

.find(node_name) ⇒ Object

[View source]

50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/onceover/node.rb', line 50

def self.find(node_name)
  @@all.each do |node|
    if node_name.is_a?(Onceover::Node)
      if node = node_name
        return node
      end
    elsif node.name == node_name
      return node
    end
  end
  logger.warn "Node #{node_name} not found"
  nil
end