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.



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



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



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



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