Sha256: d9482ec2721d3b81d4e8c94c2683d2dd99bf16e47514895111f424e76f61e158

Contents?: true

Size: 1.54 KB

Versions: 5

Compression:

Stored size: 1.54 KB

Contents

require 'kafo_configure/lib/kafo/puppet/report_wrapper'

module Puppet::Parser::Functions
  newfunction(:add_progress) do |args|
    supported = %w(2.6. 2.7. 3.0. 3.1. 3.2. 3.3. 3.4. 3.5. 3.6.)
    if supported.any? { |version| Puppet::PUPPETVERSION.start_with?(version) }
      # Monkey patch the transaction to put our wrapper around the report object
      require 'puppet/transaction'
      class Puppet::Transaction
        attr_accessor :in_main_catalog

        def is_interesting?(resource)
          ![:schedule, :class, :stage, :filebucket].include?(resource.to_s.split('[')[0].downcase.to_sym)
        end

        def resource_count
          catalog.vertices.select { |resource| is_interesting?(resource) }.size
        end

        def evaluate_with_trigger(*args, &block)
          if catalog.version
            self.in_main_catalog = true
            ::Puppet.info "START #{resource_count}"
          end
          evaluate_without_trigger(*args, &block)
          self.in_main_catalog = false if catalog.version
        end

        alias_method :evaluate_without_trigger, :evaluate
        alias_method :evaluate, :evaluate_with_trigger

        def report_with_wrapper
          unless @report_wrapper
            @report_wrapper = Kafo::Puppet::ReportWrapper.new(self, report_without_wrapper)
          end
          @report_wrapper
        end

        alias_method :report_without_wrapper, :report
        alias_method :report, :report_with_wrapper
      end
    else
      ::Puppet.err 'Your puppet version does not support progress bar'
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
kafo-0.6.4 modules/kafo_configure/lib/puppet/parser/functions/add_progress.rb
kafo-0.6.3 modules/kafo_configure/lib/puppet/parser/functions/add_progress.rb
kafo-0.6.2 modules/kafo_configure/lib/puppet/parser/functions/add_progress.rb
kafo-0.6.1 modules/kafo_configure/lib/puppet/parser/functions/add_progress.rb
kafo-0.6.0 modules/kafo_configure/lib/puppet/parser/functions/add_progress.rb