Class: Puppet::Node::Facts

Inherits:
Object show all
Extended by:
Indirector, Util::Pson
Defined in:
lib/vendor/puppet/node/facts.rb

Overview

Manage a given node’s facts. This either accepts facts and stores them, or returns facts for a given node.

Defined Under Namespace

Modules: NodeExpirer Classes: ActiveRecord, Couch, Facter, InventoryActiveRecord, InventoryService, Memory, NetworkDevice, Rest, StoreConfigs, Yaml

Constant Summary

Constants included from Indirector

Indirector::BadNameRegexp

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Indirector

configure_routes, indirects

Methods included from Util::Pson

pson_create

Constructor Details

#initialize(name, values = {}) ⇒ Facts

Returns a new instance of Facts.



34
35
36
37
38
39
# File 'lib/vendor/puppet/node/facts.rb', line 34

def initialize(name, values = {})
  @name = name
  @values = values

  add_timestamp
end

Instance Attribute Details

#nameObject

Returns the value of attribute name.



26
27
28
# File 'lib/vendor/puppet/node/facts.rb', line 26

def name
  @name
end

#valuesObject

Returns the value of attribute values.



26
27
28
# File 'lib/vendor/puppet/node/facts.rb', line 26

def values
  @values
end

Class Method Details

.from_pson(data) ⇒ Object



62
63
64
65
66
67
# File 'lib/vendor/puppet/node/facts.rb', line 62

def self.from_pson(data)
  result = new(data['name'], data['values'])
  result.timestamp = Time.parse(data['timestamp'])
  result.expiration = Time.parse(data['expiration'])
  result
end

Instance Method Details

#==(other) ⇒ Object



57
58
59
60
# File 'lib/vendor/puppet/node/facts.rb', line 57

def ==(other)
  return false unless self.name == other.name
  strip_internal == other.send(:strip_internal)
end

#add_local_factsObject



28
29
30
31
32
# File 'lib/vendor/puppet/node/facts.rb', line 28

def add_local_facts
  values["clientcert"] = Puppet.settings[:certname]
  values["clientversion"] = Puppet.version.to_s
  values["environment"] ||= Puppet.settings[:environment]
end

#add_timestampObject

Add internal data to the facts for storage.



79
80
81
# File 'lib/vendor/puppet/node/facts.rb', line 79

def add_timestamp
  self.timestamp = Time.now
end

#downcase_if_necessaryObject



41
42
43
44
45
46
47
48
# File 'lib/vendor/puppet/node/facts.rb', line 41

def downcase_if_necessary
  return unless Puppet.settings[:downcasefacts]

  Puppet.warning "DEPRECATION NOTICE: Fact downcasing is deprecated; please disable (20080122)"
  values.each do |fact, value|
    values[fact] = value.downcase if value.is_a?(String)
  end
end

#stringifyObject

Convert all fact values into strings.



51
52
53
54
55
# File 'lib/vendor/puppet/node/facts.rb', line 51

def stringify
  values.each do |fact, value|
    values[fact] = value.to_s
  end
end

#timestampObject



87
88
89
# File 'lib/vendor/puppet/node/facts.rb', line 87

def timestamp
  self.values[:_timestamp]
end

#timestamp=(time) ⇒ Object



83
84
85
# File 'lib/vendor/puppet/node/facts.rb', line 83

def timestamp=(time)
  self.values[:_timestamp] = time
end

#to_pson(*args) ⇒ Object



69
70
71
72
73
74
75
76
# File 'lib/vendor/puppet/node/facts.rb', line 69

def to_pson(*args)
  {
    'expiration' => expiration,
    'name' => name,
    'timestamp' => timestamp,
    'values' => strip_internal,
  }.to_pson(*args)
end