Class: Bolt::Catalog
- Inherits:
-
Object
- Object
- Bolt::Catalog
- Defined in:
- lib/bolt/catalog.rb
Instance Method Summary collapse
- #compile_catalog(request) ⇒ Object
- #compile_node(node) ⇒ Object
- #generate_ast(code) ⇒ Object
- #in_env ⇒ Object
- #setup_node(node) ⇒ Object
- #with_puppet_settings ⇒ Object
Instance Method Details
#compile_catalog(request) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/bolt/catalog.rb', line 101 def compile_catalog(request) pal_main = request['code_ast'] || request['code_string'] target = request['target'] with_puppet_settings do Puppet[:code] = '' Puppet[:node_name_value] = target['name'] Puppet::Pal.in_tmp_environment( 'bolt_catalog', modulepath: request["modulepath"] || [], facts: target["facts"] || {}, variables: target["variables"] || {} ) do |_pal| node = Puppet.lookup(:pal_current_node) setup_node(node) Puppet.override(pal_main: pal_main) do compile_node(node) end end end end |
#compile_node(node) ⇒ Object
86 87 88 89 |
# File 'lib/bolt/catalog.rb', line 86 def compile_node(node) compiler = Puppet::Parser::BoltCompiler.new(node) compiler.compile(&:to_resource) end |
#generate_ast(code) ⇒ Object
91 92 93 94 95 96 97 98 99 |
# File 'lib/bolt/catalog.rb', line 91 def generate_ast(code) with_puppet_settings do Puppet::Pal.in_tmp_environment("bolt_parse") do |_pal| node = Puppet.lookup(:pal_current_node) compiler = Puppet::Parser::BoltCompiler.new(node) compiler.dump_ast(compiler.parse_string(code)) end end end |
#in_env ⇒ Object
56 57 58 59 60 |
# File 'lib/bolt/catalog.rb', line 56 def in_env Puppet::Pal.in_tmp_environment('bolt_apply', modulepath: ['~/bolt/modules/'], facts: @scope['facts']) do |pal| yield pal end end |
#setup_node(node) ⇒ Object
75 76 77 78 79 80 81 82 83 84 |
# File 'lib/bolt/catalog.rb', line 75 def setup_node(node) facts = Puppet.lookup(:pal_facts) node_facts = Puppet::Node::Facts.new(Puppet[:node_name_value], facts) node.fact_merge(node_facts) node.parameters = node.parameters.merge(Puppet.lookup(:pal_variables)) # TODO: setup server_facts # TODO: setup trusted in params # TODO: setup serverversion/clientversion in params end |
#with_puppet_settings ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/bolt/catalog.rb', line 62 def with_puppet_settings Dir.mktmpdir('bolt') do |dir| cli = [] Puppet::Settings::REQUIRED_APP_SETTINGS.each do |setting| cli << "--#{setting}" << dir end Puppet.settings.send(:clear_everything_for_tests) Puppet.initialize_settings(cli) # self.class.configure_logging yield end end |