Class: Bolt::Outputter::JSON
- Inherits:
-
Bolt::Outputter
- Object
- Bolt::Outputter
- Bolt::Outputter::JSON
- Defined in:
- lib/bolt/outputter/json.rb
Instance Method Summary collapse
- #fatal_error(err) ⇒ Object
- #handle_event(event) ⇒ Object
-
#initialize(color, verbose, trace, stream = $stdout) ⇒ JSON
constructor
A new instance of JSON.
- #print_apply_result(apply_result, _elapsed_time) ⇒ Object
- #print_groups(groups) ⇒ Object
- #print_head ⇒ Object
- #print_message(message) ⇒ Object
- #print_message_event(event) ⇒ Object
- #print_plan_info(plan) ⇒ Object
- #print_plan_result(result) ⇒ Object
- #print_plans(plans, modulepath) ⇒ Object
- #print_puppetfile_result(success, puppetfile, moduledir) ⇒ Object
- #print_result(result) ⇒ Object
- #print_summary(results, elapsed_time) ⇒ Object
- #print_table(results) ⇒ Object (also: #print_module_list)
- #print_target_info(targets) ⇒ Object
- #print_targets(targets) ⇒ Object
- #print_task_info(task) ⇒ Object
- #print_tasks(tasks, modulepath) ⇒ Object
Methods inherited from Bolt::Outputter
Constructor Details
#initialize(color, verbose, 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, verbose, trace, stream = $stdout) super @items_open = false @object_open = false @preceding_item = false end |
Instance Method Details
#fatal_error(err) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/bolt/outputter/json.rb', line 120 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 |
#handle_event(event) ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/bolt/outputter/json.rb', line 20 def handle_event(event) case event[:type] when :node_result print_result(event[:result]) when :message (event) end end |
#print_apply_result(apply_result, _elapsed_time) ⇒ Object
85 86 87 |
# File 'lib/bolt/outputter/json.rb', line 85 def print_apply_result(apply_result, _elapsed_time) @stream.puts apply_result.to_json end |
#print_groups(groups) ⇒ Object
114 115 116 117 118 |
# File 'lib/bolt/outputter/json.rb', line 114 def print_groups(groups) count = groups.count @stream.puts({ "groups": groups, "count": count }.to_json) end |
#print_head ⇒ Object
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 |
#print_message(message) ⇒ Object
136 137 138 |
# File 'lib/bolt/outputter/json.rb', line 136 def () $stderr.puts() end |
#print_message_event(event) ⇒ Object
132 133 134 |
# File 'lib/bolt/outputter/json.rb', line 132 def (event) (event[:message]) end |
#print_plan_info(plan) ⇒ Object
71 72 73 74 75 76 77 78 79 |
# File 'lib/bolt/outputter/json.rb', line 71 def print_plan_info(plan) path = plan.delete('module') plan['module_dir'] = if path.start_with?(Bolt::PAL::MODULES_PATH) "built-in module" else path end @stream.puts plan.to_json end |
#print_plan_result(result) ⇒ Object
89 90 91 92 |
# File 'lib/bolt/outputter/json.rb', line 89 def print_plan_result(result) # Ruby JSON patches most objects to have a to_json method. @stream.puts result.to_json end |
#print_plans(plans, modulepath) ⇒ Object
81 82 83 |
# File 'lib/bolt/outputter/json.rb', line 81 def print_plans(plans, modulepath) print_table('plans' => plans, 'modulepath' => modulepath) end |
#print_puppetfile_result(success, puppetfile, moduledir) ⇒ Object
94 95 96 97 98 |
# File 'lib/bolt/outputter/json.rb', line 94 def print_puppetfile_result(success, puppetfile, moduledir) @stream.puts({ "success": success, "puppetfile": puppetfile, "moduledir": moduledir }.to_json) end |
#print_result(result) ⇒ Object
29 30 31 32 33 |
# File 'lib/bolt/outputter/json.rb', line 29 def print_result(result) @stream.puts ',' if @preceding_item @stream.puts result.status_hash.to_json @preceding_item = true end |
#print_summary(results, elapsed_time) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/bolt/outputter/json.rb', line 35 def print_summary(results, elapsed_time) @stream.puts "],\n" @preceding_item = false @items_open = false # rubocop:disable Style/GlobalVars if $future @stream.puts format('"target_count": %<size>d, "elapsed_time": %<elapsed>d }', size: results.size, elapsed: elapsed_time) else @stream.puts format('"node_count": %<size>d, "elapsed_time": %<elapsed>d }', size: results.size, elapsed: elapsed_time) end # rubocop:enable Style/GlobalVars end |
#print_table(results) ⇒ Object Also known as: print_module_list
52 53 54 |
# File 'lib/bolt/outputter/json.rb', line 52 def print_table(results) @stream.puts results.to_json end |
#print_target_info(targets) ⇒ Object
107 108 109 110 111 112 |
# File 'lib/bolt/outputter/json.rb', line 107 def print_target_info(targets) @stream.puts ::JSON.pretty_generate( "targets": targets.map(&:detail), "count": targets.count ) end |
#print_targets(targets) ⇒ Object
100 101 102 103 104 105 |
# File 'lib/bolt/outputter/json.rb', line 100 def print_targets(targets) @stream.puts ::JSON.pretty_generate( "targets": targets.map(&:name), "count": targets.count ) end |
#print_task_info(task) ⇒ Object
57 58 59 60 61 62 63 64 65 |
# File 'lib/bolt/outputter/json.rb', line 57 def print_task_info(task) path = task['files'][0]['path'].chomp("/tasks/#{task['files'][0]['name']}") task['module_dir'] = if path.start_with?(Bolt::PAL::MODULES_PATH) "built-in module" else path end @stream.puts task.to_json end |
#print_tasks(tasks, modulepath) ⇒ Object
67 68 69 |
# File 'lib/bolt/outputter/json.rb', line 67 def print_tasks(tasks, modulepath) print_table('tasks' => tasks, 'modulepath' => modulepath) end |