module PuppetRepl::Support::Node

Public Instance Methods

convert_remote_node(remote_node) click to toggle source

this is a hack to get around that the puppet node fact face does not return a proper node object with the facts hash populated returns a node object with a proper facts hash

# File lib/puppet-repl/support/node.rb, line 56
def convert_remote_node(remote_node)
  options = {}
  # remove trusted data as it will later get populated during compilation
  parameters = remote_node.parameters.dup
  trusted_data = parameters.delete('trusted')
  options[:parameters] = parameters || {}
  options[:facts] = Puppet::Node::Facts.new(remote_node.name,remote_node.parameters)
  options[:classes] = remote_node.classes
  options[:environment] = puppet_environment
  node_object = Puppet::Node.new(remote_node.name, options)
  node_object.add_server_facts(server_facts) if node_object.respond_to?(:add_server_facts)
  node_object.trusted_data = trusted_data
  node_object
end
create_node() click to toggle source

creates a node object using defaults or gets the remote node object if the remote_node_name is defined

# File lib/puppet-repl/support/node.rb, line 8
def create_node
  Puppet[:trusted_server_facts] = true if Puppet.version.to_f >= 4.1

  if remote_node_name
    # refetch
    node_obj = set_node_from_name(remote_node_name)
  end
  unless node_obj
    options = {}
    options[:parameters] = default_facts.values
    options[:facts] = default_facts
    options[:classes] = []
    options[:environment] = puppet_environment
    name = default_facts.values['fqdn']
    node_obj = Puppet::Node.new(name, options)
    node_obj.add_server_facts(server_facts) if node_obj.respond_to?(:add_server_facts)
    node_obj
  end
  node_obj
end
get_remote_node(name) click to toggle source
# File lib/puppet-repl/support/node.rb, line 46
def get_remote_node(name)
  indirection = Puppet::Indirector::Indirection.instance(:node)
  indirection.terminus_class = 'rest'
  remote_node = indirection.find(name, :environment => puppet_environment)
  remote_node
end
node() click to toggle source

@return [node] puppet node object

# File lib/puppet-repl/support/node.rb, line 42
def node
  @node ||= create_node
end
remote_node_name() click to toggle source
# File lib/puppet-repl/support/node.rb, line 37
def remote_node_name
  @remote_node_name
end
remote_node_name=(name) click to toggle source
# File lib/puppet-repl/support/node.rb, line 33
def remote_node_name=(name)
  @remote_node_name = name
end
set_node(value) click to toggle source
# File lib/puppet-repl/support/node.rb, line 85
def set_node(value)
  @node = value
end
set_node_from_name(name) click to toggle source

query the remote puppet server and retrieve the node object

# File lib/puppet-repl/support/node.rb, line 73
def set_node_from_name(name)
  out_buffer.puts ("Fetching node #{name}")
  remote_node = get_remote_node(name)
  if remote_node and remote_node.parameters.empty?
    remote_node_name = nil  # clear out the remote name
    raise PuppetRepl::Exception::UndefinedNode.new(:name => remote_node.name)
  end
  remote_node_name = remote_node.name
  node_object = convert_remote_node(remote_node)
  set_node(node_object)
end
set_remote_node_name(name) click to toggle source
# File lib/puppet-repl/support/node.rb, line 29
def set_remote_node_name(name)
  @remote_node_name = name
end