Module: PuppetDebugger::Support::Scope
- Included in:
- PuppetDebugger::Support
- Defined in:
- lib/puppet-debugger/support/scope.rb
Instance Method Summary collapse
- #catalog ⇒ Object
-
#create_scope ⇒ Puppet::Pops::Scope
-
returns a puppet scope object.
-
- #get_catalog_text(c) ⇒ Object
-
#scope ⇒ Puppet::Pops::Scope
-
returns a puppet scope object.
-
-
#scope_vars ⇒ Hash
-
returns a hash of variables that are currently in scope.
-
- #set_catalog(catalog_file) ⇒ Object
- #set_scope(value) ⇒ Object
Instance Method Details
#catalog ⇒ Object
11 12 13 |
# File 'lib/puppet-debugger/support/scope.rb', line 11 def catalog @catalog || scope.compiler.catalog end |
#create_scope ⇒ Puppet::Pops::Scope
Returns - returns a puppet scope object.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/puppet-debugger/support/scope.rb', line 44 def create_scope do_initialize begin # creates a new compiler for each scope scope = Puppet::Parser::Scope.new(compiler) # creates a node class scope.source = Puppet::Resource::Type.new(:node, node.name) scope.parent = compiler.topscope # compiling will load all the facts into the scope # without this step facts will not get resolved scope.compiler.compile # this will load everything into the scope rescue StandardError => e err = parse_error(e) raise err end scope end |
#get_catalog_text(c) ⇒ Object
15 16 17 18 |
# File 'lib/puppet-debugger/support/scope.rb', line 15 def get_catalog_text(c) return nil unless c Puppet::FileSystem.read(c, :encoding => 'utf-8') end |
#scope ⇒ Puppet::Pops::Scope
Returns - returns a puppet scope object.
39 40 41 |
# File 'lib/puppet-debugger/support/scope.rb', line 39 def scope @scope ||= create_scope end |
#scope_vars ⇒ Hash
Returns - returns a hash of variables that are currently in scope.
63 64 65 66 |
# File 'lib/puppet-debugger/support/scope.rb', line 63 def scope_vars vars = scope.to_hash.delete_if { |key, _value| node.facts.values.key?(key.to_sym) } vars['facts'] = 'removed by the puppet-debugger' end |
#set_catalog(catalog_file) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/puppet-debugger/support/scope.rb', line 20 def set_catalog(catalog_file) return unless catalog_file catalog_text = get_catalog_text(catalog_file) scope # required Puppet.override({:current_environment => environment}, _("For puppet debugger")) do format = Puppet::Resource::Catalog.default_format begin c = Puppet::Resource::Catalog.convert_from(format, catalog_text) rescue => detail raise Puppet::Error, _("Could not deserialize catalog from %{format}: %{detail}") % { format: format, detail: detail }, detail.backtrace end # Resolve all deferred values and replace them / mutate the catalog # Puppet 6 only Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(node.facts, c) if Gem::Version.new(Puppet.version) >= Gem::Version.new('6.0.0') @catalog = c end end |
#set_scope(value) ⇒ Object
7 8 9 |
# File 'lib/puppet-debugger/support/scope.rb', line 7 def set_scope(value) @scope = value end |