Class: Bolt::Outputter::JSON

Inherits:
Bolt::Outputter show all
Defined in:
lib/bolt/outputter/json.rb

Instance Method Summary collapse

Methods inherited from Bolt::Outputter

for_format, #replace_data_type

Constructor Details

#initialize(color, trace, stream = $stdout) ⇒ JSON

Returns a new instance of JSON.



6
7
8
9
10
11
# File 'lib/bolt/outputter/json.rb', line 6

def initialize(color, trace, stream = $stdout)
  @items_open = false
  @object_open = false
  @preceding_item = false
  super(color, trace, stream)
end

Instance Method Details

#fatal_error(err) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/bolt/outputter/json.rb', line 66

def fatal_error(err)
  @stream.puts "],\n" if @items_open
  @stream.puts '"_error": ' if @object_open
  err_obj = err.to_h
  if @trace && err.backtrace
    err_obj[:details] ||= {}
    err_obj[:details][:backtrace] = err.backtrace
  end
  @stream.puts err_obj.to_json
  @stream.puts '}' if @object_open
end


20
21
22
23
24
25
# File 'lib/bolt/outputter/json.rb', line 20

def print_event(event)
  case event[:type]
  when :node_result
    print_result(event[:result])
  end
end


13
14
15
16
17
18
# File 'lib/bolt/outputter/json.rb', line 13

def print_head
  @stream.puts '{ "items": ['
  @preceding_item = false
  @items_open = true
  @object_open = true
end


78
# File 'lib/bolt/outputter/json.rb', line 78

def print_message(message); end


51
52
53
# File 'lib/bolt/outputter/json.rb', line 51

def print_plan_info(plan)
  @stream.puts plan.to_json
end


55
56
57
58
# File 'lib/bolt/outputter/json.rb', line 55

def print_plan_result(result)
  # Ruby JSON patches most objects to have a to_json method.
  @stream.puts result.to_json
end


60
61
62
63
64
# File 'lib/bolt/outputter/json.rb', line 60

def print_puppetfile_result(success, puppetfile, moduledir)
  @stream.puts({ "success": success,
                 "puppetfile": puppetfile,
                 "moduledir": moduledir }.to_json)
end


27
28
29
30
31
# File 'lib/bolt/outputter/json.rb', line 27

def print_result(result)
  @stream.puts ',' if @preceding_item
  @stream.puts result.status_hash.to_json
  @preceding_item = true
end


33
34
35
36
37
38
39
40
# File 'lib/bolt/outputter/json.rb', line 33

def print_summary(results, elapsed_time)
  @stream.puts "],\n"
  @preceding_item = false
  @items_open = false
  @stream.puts format('"node_count": %<size>d, "elapsed_time": %<elapsed>d }',
                      size: results.size,
                      elapsed: elapsed_time)
end


42
43
44
# File 'lib/bolt/outputter/json.rb', line 42

def print_table(results)
  @stream.puts results.to_json
end


46
47
48
49
# File 'lib/bolt/outputter/json.rb', line 46

def print_task_info(task)
  replace_data_type(task['parameters'])
  @stream.puts task.to_json
end