Sha256: c11584ae9f50a5e6e482e096f9e7249cbca780d6beca1b11cba627b8695d58a4

Contents?: true

Size: 1.95 KB

Versions: 6

Compression:

Stored size: 1.95 KB

Contents

module Kafo
  class PuppetFailedResource
    # @param [Hash] status
    #   The status hash from the report
    # @param [Array[Hash]] logs
    #   Relevant log lines for this resoure
    def initialize(status, logs)
      @status = status
      @logs = logs
    end

    # @example
    #   puppet_failed_resource.resource == 'Exec[/bin/true]'
    # @return [String] A resource
    def resource
      @status['resource']
    end

    # @example
    #   puppet_failed_resource.type == 'Exec'
    # @return [String] A resource type
    def type
      @status['resource_type']
    end

    # @example
    #   puppet_failed_resource.title == '/bin/true'
    # @return [String] A resource title
    def title
      @status['title']
    end

    def to_s
      "Puppet #{type} resource '#{title}'"
    end

    # @return [Array[String]] The event messages
    def event_messages
      @status['events'].map { |event| event['message'] }
    end

    # A collection of Puppet log messages
    #
    # The log messages include detailed information of what failed. Some debug
    # information, such as timing but crucially the command output, both stdout
    # and stderr.
    #
    # @return [Array[String]] The Puppet log messages for this resource
    def log_messages
      @logs.map { |log| log['message'] }
    end

    # A collection of Puppet log messages grouped by source
    #
    # The log messages include detailed information of what failed. Some debug
    # information, such as timing but crucially the command output, both stdout
    # and stderr.
    #
    # A resource can have multiple sources. For example, exec can have both
    # unless and returns. Combining the output of those can be confusing, so
    # this presents them separate.
    #
    # @return [Hash[String, Array[String]]] The Puppet log messages for this resource
    def log_messages_by_source
      @logs.group_by { |log| log['source'] }.transform_values { |logs| logs.map { |log| log['message'] } }
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
kafo-7.6.0 lib/kafo/puppet_failed_resource.rb
kafo-7.5.1 lib/kafo/puppet_failed_resource.rb
kafo-7.5.0 lib/kafo/puppet_failed_resource.rb
kafo-7.4.0 lib/kafo/puppet_failed_resource.rb
kafo-7.3.0 lib/kafo/puppet_failed_resource.rb
kafo-7.2.0 lib/kafo/puppet_failed_resource.rb