Sha256: 8c1476f30ee1ee4c3b20300fb4891870f2a6f22dc1525d612754f512a0cd243e

Contents?: true

Size: 1.45 KB

Versions: 4

Compression:

Stored size: 1.45 KB

Contents

module Dply
  class Report

    attr_reader :hosts, :exit_statuses 

    def initialize(hosts, exit_statuses)
      @hosts = hosts
      @exit_statuses = exit_statuses
    end


    def print_full
      print_successful_jobs
      print_failed_jobs
      print_summary
    end

    def succeeded
      @succeeded ||= exit_statuses.keys.select do |k|
        exit_statuses[k] == 0
      end
    end

    def failed
      @failed ||= exit_statuses.keys.select do |k|
        exit_statuses[k] != 0
      end
    end

    def print_successful_jobs
      puts "succeeded".green
      succeeded.each do |host|
        puts " - #{host[:id]}"
      end
    end

    def print_failed_jobs
      return if failed.count == 0
      puts "failed".red
      failed.each do |host|
        puts " - #{host[:id]}"
      end
    end


    def print_summary
      total_hosts = hosts.count
      run_count = @exit_statuses.count
      not_run = total_hosts - run_count
      if (failed.count > 0 || not_run > 0 )
        not_run_error = "not run on #{not_run}/#{total_hosts}" if not_run > 0
        failed_error = "failed on #{failed.count} of #{total_hosts} hosts" if failed.count > 0
       
        errors = []
        errors << not_run_error if not_run_error
        errors << failed_error if failed_error

        error_str = "task #{errors.join(", ")}"
        raise ::Dply::Error, error_str
      end
      puts "tasks ran successfully on #{succeeded.count}/#{total_hosts} hosts"
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dply-0.0.8 lib/dply/report.rb
dply-0.0.7 lib/dply/report.rb
dply-0.0.5 lib/dply/report.rb
dply-0.0.2 lib/dply/report.rb