Class: Bolt::Outputter::JSON
Instance Method Summary
collapse
-
#fatal_error(err) ⇒ Object
-
#handle_event(event) ⇒ Object
-
#initialize(color, verbose, trace, stream = $stdout) ⇒ JSON
constructor
-
#print_apply_result(apply_result, _elapsed_time) ⇒ Object
-
#print_groups(groups) ⇒ Object
-
#print_guide(guide, topic) ⇒ Object
-
#print_head ⇒ Object
-
#print_message(message) ⇒ 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
-
#print_topics(topics) ⇒ Object
for_format, #format_apply_result, #format_message, #indent, #print_message_event, #stringify
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
123
124
125
126
127
128
129
130
131
132
133
|
# File 'lib/bolt/outputter/json.rb', line 123
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
print_message_event(event)
end
end
|
#print_apply_result(apply_result, _elapsed_time) ⇒ Object
77
78
79
|
# File 'lib/bolt/outputter/json.rb', line 77
def print_apply_result(apply_result, _elapsed_time)
@stream.puts apply_result.to_json
end
|
#print_groups(groups) ⇒ Object
117
118
119
120
121
|
# File 'lib/bolt/outputter/json.rb', line 117
def print_groups(groups)
count = groups.count
@stream.puts({ "groups": groups,
"count": count }.to_json)
end
|
#print_guide(guide, topic) ⇒ Object
90
91
92
93
94
95
|
# File 'lib/bolt/outputter/json.rb', line 90
def print_guide(guide, topic)
@stream.puts({
'topic' => topic,
'guide' => guide
}.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
135
136
137
|
# File 'lib/bolt/outputter/json.rb', line 135
def print_message(message)
$stderr.puts(message)
end
|
#print_plan_info(plan) ⇒ Object
63
64
65
66
67
68
69
70
71
|
# File 'lib/bolt/outputter/json.rb', line 63
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
81
82
83
84
|
# File 'lib/bolt/outputter/json.rb', line 81
def print_plan_result(result)
@stream.puts result.to_json
end
|
#print_plans(plans, modulepath) ⇒ Object
73
74
75
|
# File 'lib/bolt/outputter/json.rb', line 73
def print_plans(plans, modulepath)
print_table('plans' => plans, 'modulepath' => modulepath)
end
|
#print_puppetfile_result(success, puppetfile, moduledir) ⇒ Object
97
98
99
100
101
|
# File 'lib/bolt/outputter/json.rb', line 97
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.to_json
@preceding_item = true
end
|
#print_summary(results, elapsed_time) ⇒ Object
35
36
37
38
39
40
41
42
|
# File 'lib/bolt/outputter/json.rb', line 35
def print_summary(results, elapsed_time)
@stream.puts "],\n"
@preceding_item = false
@items_open = false
@stream.puts format('"target_count": %<size>d, "elapsed_time": %<elapsed>d }',
size: results.size,
elapsed: elapsed_time)
end
|
#print_table(results) ⇒ Object
Also known as:
print_module_list
44
45
46
|
# File 'lib/bolt/outputter/json.rb', line 44
def print_table(results)
@stream.puts results.to_json
end
|
#print_target_info(targets) ⇒ Object
110
111
112
113
114
115
|
# File 'lib/bolt/outputter/json.rb', line 110
def print_target_info(targets)
@stream.puts ::JSON.pretty_generate(
"targets": targets.map(&:detail),
"count": targets.count
)
end
|
#print_targets(targets) ⇒ Object
103
104
105
106
107
108
|
# File 'lib/bolt/outputter/json.rb', line 103
def print_targets(targets)
@stream.puts ::JSON.pretty_generate(
"targets": targets.map(&:name),
"count": targets.count
)
end
|
#print_task_info(task) ⇒ Object
49
50
51
52
53
54
55
56
57
|
# File 'lib/bolt/outputter/json.rb', line 49
def print_task_info(task)
path = task.files.first['path'].chomp("/tasks/#{task.files.first['name']}")
module_dir = if path.start_with?(Bolt::PAL::MODULES_PATH)
"built-in module"
else
path
end
@stream.puts task.to_h.merge(module_dir: module_dir).to_json
end
|
#print_tasks(tasks, modulepath) ⇒ Object
59
60
61
|
# File 'lib/bolt/outputter/json.rb', line 59
def print_tasks(tasks, modulepath)
print_table('tasks' => tasks, 'modulepath' => modulepath)
end
|
#print_topics(topics) ⇒ Object
86
87
88
|
# File 'lib/bolt/outputter/json.rb', line 86
def print_topics(topics)
print_table('topics' => topics)
end
|