choria-mcorpc-support 2.21.1 → 2.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mcollective.rb +1 -2
  3. data/lib/mcollective/agent/bolt_tasks.ddl +253 -0
  4. data/lib/mcollective/agent/bolt_tasks.json +365 -0
  5. data/lib/mcollective/agent/bolt_tasks.rb +178 -0
  6. data/lib/mcollective/agent/choria_util.ddl +152 -0
  7. data/lib/mcollective/agent/choria_util.json +244 -0
  8. data/lib/mcollective/agent/rpcutil.ddl +8 -4
  9. data/lib/mcollective/agent/rpcutil.json +333 -0
  10. data/lib/mcollective/agent/scout.ddl +169 -0
  11. data/lib/mcollective/agent/scout.json +224 -0
  12. data/lib/mcollective/agents.rb +7 -6
  13. data/lib/mcollective/aggregate.rb +4 -4
  14. data/lib/mcollective/aggregate/average.rb +2 -2
  15. data/lib/mcollective/aggregate/base.rb +2 -2
  16. data/lib/mcollective/aggregate/result.rb +3 -3
  17. data/lib/mcollective/aggregate/result/collection_result.rb +2 -2
  18. data/lib/mcollective/aggregate/result/numeric_result.rb +2 -2
  19. data/lib/mcollective/aggregate/sum.rb +2 -2
  20. data/lib/mcollective/aggregate/summary.rb +3 -4
  21. data/lib/mcollective/application.rb +57 -21
  22. data/lib/mcollective/application/choria.rb +189 -0
  23. data/lib/mcollective/application/completion.rb +6 -6
  24. data/lib/mcollective/application/facts.rb +11 -11
  25. data/lib/mcollective/application/federation.rb +237 -0
  26. data/lib/mcollective/application/find.rb +4 -4
  27. data/lib/mcollective/application/help.rb +3 -3
  28. data/lib/mcollective/application/inventory.rb +3 -341
  29. data/lib/mcollective/application/ping.rb +5 -51
  30. data/lib/mcollective/application/playbook.rb +207 -0
  31. data/lib/mcollective/application/plugin.rb +106 -106
  32. data/lib/mcollective/application/rpc.rb +3 -108
  33. data/lib/mcollective/application/tasks.rb +425 -0
  34. data/lib/mcollective/applications.rb +11 -10
  35. data/lib/mcollective/audit/choria.rb +33 -0
  36. data/lib/mcollective/cache.rb +2 -4
  37. data/lib/mcollective/client.rb +11 -10
  38. data/lib/mcollective/config.rb +21 -34
  39. data/lib/mcollective/connector/base.rb +2 -1
  40. data/lib/mcollective/connector/nats.ddl +9 -0
  41. data/lib/mcollective/connector/nats.rb +450 -0
  42. data/lib/mcollective/data.rb +8 -3
  43. data/lib/mcollective/data/agent_data.rb +1 -1
  44. data/lib/mcollective/data/base.rb +6 -5
  45. data/lib/mcollective/data/bolt_task_data.ddl +90 -0
  46. data/lib/mcollective/data/bolt_task_data.rb +32 -0
  47. data/lib/mcollective/data/collective_data.rb +1 -1
  48. data/lib/mcollective/data/fact_data.rb +6 -6
  49. data/lib/mcollective/data/fstat_data.rb +2 -4
  50. data/lib/mcollective/data/result.rb +7 -2
  51. data/lib/mcollective/ddl/agentddl.rb +5 -17
  52. data/lib/mcollective/ddl/base.rb +10 -13
  53. data/lib/mcollective/discovery.rb +24 -39
  54. data/lib/mcollective/discovery/choria.ddl +11 -0
  55. data/lib/mcollective/discovery/choria.rb +223 -0
  56. data/lib/mcollective/discovery/flatfile.rb +7 -8
  57. data/lib/mcollective/discovery/mc.rb +2 -2
  58. data/lib/mcollective/discovery/stdin.rb +17 -18
  59. data/lib/mcollective/exceptions.rb +13 -0
  60. data/lib/mcollective/facts/base.rb +9 -9
  61. data/lib/mcollective/facts/yaml_facts.rb +12 -12
  62. data/lib/mcollective/generators.rb +3 -3
  63. data/lib/mcollective/generators/agent_generator.rb +3 -4
  64. data/lib/mcollective/generators/base.rb +14 -15
  65. data/lib/mcollective/generators/data_generator.rb +5 -6
  66. data/lib/mcollective/log.rb +2 -2
  67. data/lib/mcollective/logger/base.rb +3 -2
  68. data/lib/mcollective/logger/console_logger.rb +10 -10
  69. data/lib/mcollective/logger/file_logger.rb +7 -7
  70. data/lib/mcollective/logger/syslog_logger.rb +11 -15
  71. data/lib/mcollective/message.rb +8 -39
  72. data/lib/mcollective/monkey_patches.rb +2 -4
  73. data/lib/mcollective/optionparser.rb +2 -1
  74. data/lib/mcollective/pluginmanager.rb +3 -5
  75. data/lib/mcollective/pluginpackager.rb +1 -3
  76. data/lib/mcollective/pluginpackager/agent_definition.rb +3 -8
  77. data/lib/mcollective/pluginpackager/forge_packager.rb +7 -9
  78. data/lib/mcollective/pluginpackager/standard_definition.rb +1 -2
  79. data/lib/mcollective/registration/base.rb +18 -16
  80. data/lib/mcollective/rpc.rb +2 -4
  81. data/lib/mcollective/rpc/actionrunner.rb +16 -18
  82. data/lib/mcollective/rpc/agent.rb +26 -43
  83. data/lib/mcollective/rpc/audit.rb +1 -0
  84. data/lib/mcollective/rpc/client.rb +67 -85
  85. data/lib/mcollective/rpc/helpers.rb +55 -62
  86. data/lib/mcollective/rpc/progress.rb +2 -2
  87. data/lib/mcollective/rpc/reply.rb +17 -19
  88. data/lib/mcollective/rpc/request.rb +7 -5
  89. data/lib/mcollective/rpc/result.rb +6 -8
  90. data/lib/mcollective/rpc/stats.rb +49 -58
  91. data/lib/mcollective/security/base.rb +13 -56
  92. data/lib/mcollective/security/choria.rb +765 -0
  93. data/lib/mcollective/shell.rb +9 -4
  94. data/lib/mcollective/signer/base.rb +28 -0
  95. data/lib/mcollective/signer/choria.rb +185 -0
  96. data/lib/mcollective/ssl.rb +8 -6
  97. data/lib/mcollective/util.rb +58 -55
  98. data/lib/mcollective/util/bolt_support.rb +176 -0
  99. data/lib/mcollective/util/bolt_support/plan_runner.rb +167 -0
  100. data/lib/mcollective/util/bolt_support/task_result.rb +94 -0
  101. data/lib/mcollective/util/bolt_support/task_results.rb +128 -0
  102. data/lib/mcollective/util/choria.rb +946 -0
  103. data/lib/mcollective/util/indifferent_hash.rb +12 -0
  104. data/lib/mcollective/util/natswrapper.rb +242 -0
  105. data/lib/mcollective/util/playbook.rb +435 -0
  106. data/lib/mcollective/util/playbook/data_stores.rb +201 -0
  107. data/lib/mcollective/util/playbook/data_stores/base.rb +99 -0
  108. data/lib/mcollective/util/playbook/data_stores/consul_data_store.rb +88 -0
  109. data/lib/mcollective/util/playbook/data_stores/environment_data_store.rb +33 -0
  110. data/lib/mcollective/util/playbook/data_stores/etcd_data_store.rb +42 -0
  111. data/lib/mcollective/util/playbook/data_stores/file_data_store.rb +106 -0
  112. data/lib/mcollective/util/playbook/data_stores/shell_data_store.rb +103 -0
  113. data/lib/mcollective/util/playbook/inputs.rb +265 -0
  114. data/lib/mcollective/util/playbook/nodes.rb +207 -0
  115. data/lib/mcollective/util/playbook/nodes/mcollective_nodes.rb +86 -0
  116. data/lib/mcollective/util/playbook/nodes/pql_nodes.rb +40 -0
  117. data/lib/mcollective/util/playbook/nodes/shell_nodes.rb +55 -0
  118. data/lib/mcollective/util/playbook/nodes/terraform_nodes.rb +65 -0
  119. data/lib/mcollective/util/playbook/nodes/yaml_nodes.rb +47 -0
  120. data/lib/mcollective/util/playbook/playbook_logger.rb +47 -0
  121. data/lib/mcollective/util/playbook/puppet_logger.rb +51 -0
  122. data/lib/mcollective/util/playbook/report.rb +152 -0
  123. data/lib/mcollective/util/playbook/task_result.rb +55 -0
  124. data/lib/mcollective/util/playbook/tasks.rb +196 -0
  125. data/lib/mcollective/util/playbook/tasks/base.rb +45 -0
  126. data/lib/mcollective/util/playbook/tasks/graphite_event_task.rb +64 -0
  127. data/lib/mcollective/util/playbook/tasks/mcollective_task.rb +356 -0
  128. data/lib/mcollective/util/playbook/tasks/shell_task.rb +93 -0
  129. data/lib/mcollective/util/playbook/tasks/slack_task.rb +105 -0
  130. data/lib/mcollective/util/playbook/tasks/webhook_task.rb +136 -0
  131. data/lib/mcollective/util/playbook/template_util.rb +98 -0
  132. data/lib/mcollective/util/playbook/uses.rb +169 -0
  133. data/lib/mcollective/util/tasks_support.rb +751 -0
  134. data/lib/mcollective/util/tasks_support/cli.rb +260 -0
  135. data/lib/mcollective/util/tasks_support/default_formatter.rb +138 -0
  136. data/lib/mcollective/util/tasks_support/json_formatter.rb +108 -0
  137. data/lib/mcollective/validator.rb +6 -1
  138. data/lib/mcollective/validator/bolt_task_name_validator.ddl +7 -0
  139. data/lib/mcollective/validator/bolt_task_name_validator.rb +11 -0
  140. data/lib/mcollective/validator/length_validator.rb +1 -3
  141. metadata +65 -6
  142. data/lib/mcollective/application/describe_filter.rb +0 -87
  143. data/lib/mcollective/matcher.rb +0 -220
  144. data/lib/mcollective/matcher/parser.rb +0 -128
  145. data/lib/mcollective/matcher/scanner.rb +0 -241
@@ -2,9 +2,9 @@ metadata :name => "rpcutil",
2
2
  :description => "General helpful actions that expose stats and internals to SimpleRPC clients",
3
3
  :author => "R.I.Pienaar <rip@devco.net>",
4
4
  :license => "Apache License, Version 2.0",
5
- :version => "1.0.0",
5
+ :version => "0.19.0",
6
6
  :url => "https://choria.io/",
7
- :timeout => 10
7
+ :timeout => 2
8
8
 
9
9
  action "collective_info", :description => "Info about the main and sub collectives" do
10
10
  display :always
@@ -52,6 +52,10 @@ action "inventory", :description => "System Inventory" do
52
52
  output :data_plugins,
53
53
  :description => "List of data plugin names",
54
54
  :display_as => "Data Plugins"
55
+
56
+ output :machines,
57
+ :description => "Autonomous Agents",
58
+ :display_as => "Machines"
55
59
  end
56
60
 
57
61
  action "get_fact", :description => "Retrieve a single fact from the fact store" do
@@ -61,9 +65,9 @@ action "get_fact", :description => "Retrieve a single fact from the fact store"
61
65
  :prompt => "The name of the fact",
62
66
  :description => "The fact to retrieve",
63
67
  :type => :string,
64
- :validation => '^[\w\-\.]+$',
68
+ :validation => '.+',
65
69
  :optional => false,
66
- :maxlength => 40
70
+ :maxlength => 512
67
71
 
68
72
  output :fact,
69
73
  :description => "The name of the fact being returned",
@@ -0,0 +1,333 @@
1
+ {
2
+ "$schema": "https://choria.io/schemas/mcorpc/ddl/v1/agent.json",
3
+ "metadata": {
4
+ "name": "rpcutil",
5
+ "description": "General helpful actions that expose stats and internals to SimpleRPC clients",
6
+ "author": "R.I.Pienaar <rip@devco.net>",
7
+ "license": "Apache License, Version 2.0",
8
+ "version": "0.19.0",
9
+ "url": "https://choria.io/",
10
+ "timeout": 2
11
+ },
12
+ "actions": [
13
+ {
14
+ "action": "agent_inventory",
15
+ "input": {
16
+ },
17
+ "output": {
18
+ "agents": {
19
+ "description": "List of agents on the server",
20
+ "display_as": "Agents",
21
+ "default": null
22
+ }
23
+ },
24
+ "display": "always",
25
+ "description": "Inventory of all agents on the server"
26
+ },
27
+ {
28
+ "action": "collective_info",
29
+ "input": {
30
+ },
31
+ "output": {
32
+ "main_collective": {
33
+ "description": "The main Collective",
34
+ "display_as": "Main Collective",
35
+ "default": null
36
+ },
37
+ "collectives": {
38
+ "description": "All Collectives",
39
+ "display_as": "All Collectives",
40
+ "default": null
41
+ }
42
+ },
43
+ "display": "always",
44
+ "description": "Info about the main and sub collectives",
45
+ "aggregate": [
46
+ {
47
+ "function": "summary",
48
+ "args": [
49
+ "collectives"
50
+ ]
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ "action": "daemon_stats",
56
+ "input": {
57
+ },
58
+ "output": {
59
+ "threads": {
60
+ "description": "List of threads active in the daemon",
61
+ "display_as": "Threads",
62
+ "default": null
63
+ },
64
+ "agents": {
65
+ "description": "List of agents loaded",
66
+ "display_as": "Agents",
67
+ "default": null
68
+ },
69
+ "pid": {
70
+ "description": "Process ID of the daemon",
71
+ "display_as": "PID",
72
+ "default": null
73
+ },
74
+ "times": {
75
+ "description": "Processor time consumed by the daemon",
76
+ "display_as": "Times",
77
+ "default": null
78
+ },
79
+ "validated": {
80
+ "description": "Messages that passed security validation",
81
+ "display_as": "Security Validated",
82
+ "default": null
83
+ },
84
+ "unvalidated": {
85
+ "description": "Messages that failed security validation",
86
+ "display_as": "Failed Security",
87
+ "default": null
88
+ },
89
+ "passed": {
90
+ "description": "Passed filter checks",
91
+ "display_as": "Passed Filter",
92
+ "default": null
93
+ },
94
+ "filtered": {
95
+ "description": "Didn't pass filter checks",
96
+ "display_as": "Failed Filter",
97
+ "default": null
98
+ },
99
+ "starttime": {
100
+ "description": "Time the server started",
101
+ "display_as": "Start Time",
102
+ "default": null
103
+ },
104
+ "total": {
105
+ "description": "Total messages received",
106
+ "display_as": "Total Messages",
107
+ "default": null
108
+ },
109
+ "replies": {
110
+ "description": "Replies sent back to clients",
111
+ "display_as": "Replies",
112
+ "default": null
113
+ },
114
+ "configfile": {
115
+ "description": "Config file used to start the daemon",
116
+ "display_as": "Config File",
117
+ "default": null
118
+ },
119
+ "version": {
120
+ "description": "MCollective Version",
121
+ "display_as": "Version",
122
+ "default": null
123
+ },
124
+ "ttlexpired": {
125
+ "description": "Messages that did pass TTL checks",
126
+ "display_as": "TTL Expired",
127
+ "default": null
128
+ }
129
+ },
130
+ "display": "always",
131
+ "description": "Get statistics from the running daemon",
132
+ "aggregate": [
133
+ {
134
+ "function": "summary",
135
+ "args": [
136
+ "version"
137
+ ]
138
+ },
139
+ {
140
+ "function": "summary",
141
+ "args": [
142
+ "agents"
143
+ ]
144
+ }
145
+ ]
146
+ },
147
+ {
148
+ "action": "get_config_item",
149
+ "input": {
150
+ "item": {
151
+ "prompt": "Configuration Item",
152
+ "description": "The item to retrieve from the server",
153
+ "type": "string",
154
+ "default": null,
155
+ "optional": false,
156
+ "validation": "^.+$",
157
+ "maxlength": 50
158
+ }
159
+ },
160
+ "output": {
161
+ "item": {
162
+ "description": "The config property being retrieved",
163
+ "display_as": "Property",
164
+ "default": null
165
+ },
166
+ "value": {
167
+ "description": "The value that is in use",
168
+ "display_as": "Value",
169
+ "default": null
170
+ }
171
+ },
172
+ "display": "always",
173
+ "description": "Get the active value of a specific config property",
174
+ "aggregate": [
175
+ {
176
+ "function": "summary",
177
+ "args": [
178
+ "value"
179
+ ]
180
+ }
181
+ ]
182
+ },
183
+ {
184
+ "action": "get_data",
185
+ "input": {
186
+ "source": {
187
+ "prompt": "Data Source",
188
+ "description": "The data plugin to retrieve information from",
189
+ "type": "string",
190
+ "default": null,
191
+ "optional": false,
192
+ "validation": "^\\w+$",
193
+ "maxlength": 50
194
+ },
195
+ "query": {
196
+ "prompt": "Query",
197
+ "description": "The query argument to supply to the data plugin",
198
+ "type": "string",
199
+ "default": null,
200
+ "optional": true,
201
+ "validation": "^.+$",
202
+ "maxlength": 200
203
+ }
204
+ },
205
+ "output": {
206
+ },
207
+ "display": "always",
208
+ "description": "Get data from a data plugin"
209
+ },
210
+ {
211
+ "action": "get_fact",
212
+ "input": {
213
+ "fact": {
214
+ "prompt": "The name of the fact",
215
+ "description": "The fact to retrieve",
216
+ "type": "string",
217
+ "default": null,
218
+ "optional": false,
219
+ "validation": ".+",
220
+ "maxlength": 512
221
+ }
222
+ },
223
+ "output": {
224
+ "fact": {
225
+ "description": "The name of the fact being returned",
226
+ "display_as": "Fact",
227
+ "default": null
228
+ },
229
+ "value": {
230
+ "description": "The value of the fact",
231
+ "display_as": "Value",
232
+ "default": null
233
+ }
234
+ },
235
+ "display": "always",
236
+ "description": "Retrieve a single fact from the fact store",
237
+ "aggregate": [
238
+ {
239
+ "function": "summary",
240
+ "args": [
241
+ "value"
242
+ ]
243
+ }
244
+ ]
245
+ },
246
+ {
247
+ "action": "get_facts",
248
+ "input": {
249
+ "facts": {
250
+ "prompt": "Comma-separated list of facts",
251
+ "description": "Facts to retrieve",
252
+ "type": "string",
253
+ "default": null,
254
+ "optional": false,
255
+ "validation": "^\\s*[\\w\\.\\-]+(\\s*,\\s*[\\w\\.\\-]+)*$",
256
+ "maxlength": 200
257
+ }
258
+ },
259
+ "output": {
260
+ "values": {
261
+ "description": "List of values of the facts",
262
+ "display_as": "Values",
263
+ "default": null
264
+ }
265
+ },
266
+ "display": "always",
267
+ "description": "Retrieve multiple facts from the fact store"
268
+ },
269
+ {
270
+ "action": "inventory",
271
+ "input": {
272
+ },
273
+ "output": {
274
+ "agents": {
275
+ "description": "List of agent names",
276
+ "display_as": "Agents",
277
+ "default": null
278
+ },
279
+ "facts": {
280
+ "description": "List of facts and values",
281
+ "display_as": "Facts",
282
+ "default": null
283
+ },
284
+ "classes": {
285
+ "description": "List of classes on the system",
286
+ "display_as": "Classes",
287
+ "default": null
288
+ },
289
+ "version": {
290
+ "description": "MCollective Version",
291
+ "display_as": "Version",
292
+ "default": null
293
+ },
294
+ "main_collective": {
295
+ "description": "The main Collective",
296
+ "display_as": "Main Collective",
297
+ "default": null
298
+ },
299
+ "collectives": {
300
+ "description": "All Collectives",
301
+ "display_as": "All Collectives",
302
+ "default": null
303
+ },
304
+ "data_plugins": {
305
+ "description": "List of data plugin names",
306
+ "display_as": "Data Plugins",
307
+ "default": null
308
+ },
309
+ "machines": {
310
+ "description": "Autonomous Agents",
311
+ "display_as": "Machines",
312
+ "default": null
313
+ }
314
+ },
315
+ "display": "always",
316
+ "description": "System Inventory"
317
+ },
318
+ {
319
+ "action": "ping",
320
+ "input": {
321
+ },
322
+ "output": {
323
+ "pong": {
324
+ "description": "The local timestamp",
325
+ "display_as": "Timestamp",
326
+ "default": null
327
+ }
328
+ },
329
+ "display": "always",
330
+ "description": "Responds to requests for PING with PONG"
331
+ }
332
+ ]
333
+ }
@@ -0,0 +1,169 @@
1
+ metadata :name => "scout",
2
+ :description => "Choria Scout Agent Management API",
3
+ :author => "R.I.Pienaar <rip@devco.net>",
4
+ :license => "Apache-2.0",
5
+ :version => "0.0.1",
6
+ :url => "https://choria.io",
7
+ :provider => "golang",
8
+ :timeout => 5
9
+
10
+
11
+ action "checks", :description => "Obtain a list of checks and their current status" do
12
+ display :ok
13
+
14
+
15
+
16
+ output :checks,
17
+ :description => "Details about each check",
18
+ :type => "array",
19
+ :display_as => "Checks"
20
+
21
+ end
22
+
23
+ action "resume", :description => "Resume active checking of one or more checks" do
24
+ display :failed
25
+
26
+ input :checks,
27
+ :prompt => "Checks",
28
+ :description => "Check to resume, empty means all",
29
+ :type => :array,
30
+ :optional => true
31
+
32
+
33
+
34
+
35
+ output :failed,
36
+ :description => "List of checks that could not be resumed",
37
+ :type => "array",
38
+ :display_as => "Failed"
39
+
40
+ output :skipped,
41
+ :description => "List of checks that was skipped",
42
+ :type => "array",
43
+ :display_as => "Skipped"
44
+
45
+ output :transitioned,
46
+ :description => "List of checks that were resumed",
47
+ :type => "array",
48
+ :display_as => "Triggered"
49
+
50
+ end
51
+
52
+ action "maintenance", :description => "Pause checking of one or more checks" do
53
+ display :failed
54
+
55
+ input :checks,
56
+ :prompt => "Checks",
57
+ :description => "Check to pause, empty means all",
58
+ :type => :array,
59
+ :optional => true
60
+
61
+
62
+
63
+
64
+ output :failed,
65
+ :description => "List of checks that could not be paused",
66
+ :type => "array",
67
+ :display_as => "Failed"
68
+
69
+ output :skipped,
70
+ :description => "List of checks that was skipped",
71
+ :type => "array",
72
+ :display_as => "Skipped"
73
+
74
+ output :transitioned,
75
+ :description => "List of checks that were paused",
76
+ :type => "array",
77
+ :display_as => "Triggered"
78
+
79
+ end
80
+
81
+ action "goss_validate", :description => "Performs a Goss validation using a specific file" do
82
+ display :failed
83
+
84
+ input :file,
85
+ :prompt => "Goss File",
86
+ :description => "Path to the Goss validation specification",
87
+ :type => :string,
88
+ :validation => '.+',
89
+ :maxlength => 256,
90
+ :optional => false
91
+
92
+
93
+ input :vars,
94
+ :prompt => "Vars File",
95
+ :description => "Path to a file to use as template variables",
96
+ :type => :string,
97
+ :validation => '.+',
98
+ :maxlength => 256,
99
+ :optional => true
100
+
101
+
102
+
103
+
104
+ output :failures,
105
+ :description => "The number of tests that failed",
106
+ :type => "integer",
107
+ :display_as => "Failed Tests"
108
+
109
+ output :results,
110
+ :description => "The full test results",
111
+ :type => "array",
112
+ :display_as => "Results"
113
+
114
+ output :runtime,
115
+ :description => "The time it took to run the tests, in seconds",
116
+ :type => "integer",
117
+ :display_as => "Runtime"
118
+
119
+ output :success,
120
+ :description => "Indicates if the test passed",
121
+ :type => "string",
122
+ :display_as => "Success"
123
+
124
+ output :summary,
125
+ :description => "A human friendly test result",
126
+ :type => "string",
127
+ :display_as => "Summary"
128
+
129
+ output :tests,
130
+ :description => "The number of tests that were run",
131
+ :type => "integer",
132
+ :display_as => "Tests"
133
+
134
+ summarize do
135
+ aggregate summary(:tests, :format => "%s Test Cases on %d node(s)")
136
+ aggregate summary(:failures, :format => "%s Failed Cases on %d node(s)")
137
+ aggregate summary(:success, :format => "%s Passed Cases on %d node(s)")
138
+ end
139
+ end
140
+
141
+ action "trigger", :description => "Force an immediate check of one or more checks" do
142
+ display :failed
143
+
144
+ input :checks,
145
+ :prompt => "Checks",
146
+ :description => "Check to trigger, empty means all",
147
+ :type => :array,
148
+ :optional => true
149
+
150
+
151
+
152
+
153
+ output :failed,
154
+ :description => "List of checks that could not be triggered",
155
+ :type => "array",
156
+ :display_as => "Failed"
157
+
158
+ output :skipped,
159
+ :description => "List of checks that was skipped",
160
+ :type => "array",
161
+ :display_as => "Skipped"
162
+
163
+ output :transitioned,
164
+ :description => "List of checks that were triggered",
165
+ :type => "array",
166
+ :display_as => "Triggered"
167
+
168
+ end
169
+