choria-mcorpc-support 2.21.1 → 2.23.1

Sign up to get free protection for your applications and to get access to all the features.
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
+