Sha256: f45c3179ea3c254987fdf45d875a7c92fcc0719717c229e6857b69332772dfa4

Contents?: true

Size: 1019 Bytes

Versions: 2

Compression:

Stored size: 1019 Bytes

Contents

module Bolt
  class Error < RuntimeError
    attr_reader :kind, :details, :issue_code, :error_code

    def initialize(msg, kind, details = nil, issue_code = nil)
      super(msg)
      @kind = kind
      @issue_code = issue_code
      @details = details || {}
      @error_code ||= 1
    end

    def msg
      message
    end

    def to_h
      h = { 'kind' =>  kind,
            'msg' => message,
            'details' => details }
      h['issue_code'] = issue_code if issue_code
      h
    end

    def to_json(opts = nil)
      to_h.to_json(opts)
    end
  end

  class RunFailure < Error
    attr_reader :resultset

    def initialize(resultset, action, object)
      details = {
        action: action,
        object: object,
        failed_targets: resultset.error_set.names
      }
      message = "Plan aborted: #{action} '#{object}' failed on #{details[:failed_targets].length} nodes"
      super(message, 'bolt/run-failure', details)
      @resultset = resultset
      @error_code = 2
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
bolt-0.16.0 lib/bolt/error.rb
bolt-0.15.0 lib/bolt/error.rb