choria-mcorpc-support 2.24.1 → 2.24.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mcollective/agent/choria_util.ddl +206 -107
- data/lib/mcollective/agent/choria_util.json +101 -1
- data/lib/mcollective/agent/rpcutil.json +2 -3
- data/lib/mcollective/agent/scout.json +107 -135
- data/lib/mcollective/util.rb +2 -4
- data/lib/mcollective/util/tasks_support.rb +14 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c9b96995926bcb736c4d7340f1e35c82673db5ce74de15443a79fba36873a2a
|
4
|
+
data.tar.gz: f00bd913097f164271403440750015b73041d61b54712dadc728f0b56859d9c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 996376fe60e4d07d576f18900fb17c062888e467dc04354b58665d7f16ac55dbd44a778146d70e517ea4e5c5ba11cc3437a83ac83644ff9493fcb3c48cc5fece
|
7
|
+
data.tar.gz: 217bcb3d3b7ec754dcb0756c68d68ec539546b44f084191b5abd47a21628b1029deabe118ab356db34a5727565734d34bf74c15d4c518a9fcc8109a066442fab
|
@@ -1,152 +1,251 @@
|
|
1
|
-
metadata
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
metadata :name => "choria_util",
|
2
|
+
:description => "Choria Utilities",
|
3
|
+
:author => "R.I.Pienaar <rip@devco.net>",
|
4
|
+
:license => "Apache-2.0",
|
5
|
+
:version => "0.19.0",
|
6
|
+
:url => "https://choria.io",
|
7
|
+
:timeout => 2
|
8
8
|
|
9
|
-
requires :mcollective => "2.9.0"
|
10
9
|
|
11
|
-
action "
|
10
|
+
action "info", :description => "Choria related information from the running Daemon and Middleware" do
|
11
|
+
display :failed
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
output :choria_version,
|
16
|
+
:description => "Choria version",
|
17
|
+
:display_as => "Choria Version"
|
18
|
+
|
19
|
+
output :client_flavour,
|
20
|
+
:description => "Middleware client gem flavour",
|
21
|
+
:display_as => "Middleware Client Flavour"
|
22
|
+
|
23
|
+
output :client_options,
|
24
|
+
:description => "Active Middleware client gem options",
|
25
|
+
:display_as => "Middleware Client Options"
|
26
|
+
|
27
|
+
output :client_stats,
|
28
|
+
:description => "Middleware client gem statistics",
|
29
|
+
:display_as => "Middleware Client Stats"
|
30
|
+
|
31
|
+
output :client_version,
|
32
|
+
:description => "Middleware client library version",
|
33
|
+
:display_as => "Middleware Client Library Version"
|
34
|
+
|
35
|
+
output :connected_server,
|
36
|
+
:description => "Connected middleware server",
|
37
|
+
:display_as => "Connected Broker"
|
38
|
+
|
39
|
+
output :connector,
|
40
|
+
:description => "Connector plugin",
|
41
|
+
:display_as => "Connector"
|
42
|
+
|
43
|
+
output :connector_tls,
|
44
|
+
:description => "If the connector is running with TLS security enabled",
|
45
|
+
:display_as => "Connector TLS"
|
46
|
+
|
47
|
+
output :facter_command,
|
48
|
+
:description => "Command used for Facter",
|
49
|
+
:display_as => "Facter"
|
50
|
+
|
51
|
+
output :facter_domain,
|
52
|
+
:description => "Facter domain",
|
53
|
+
:display_as => "Facter Domain"
|
54
|
+
|
55
|
+
output :middleware_servers,
|
56
|
+
:description => "Middleware Servers configured or discovered",
|
57
|
+
:display_as => "Middleware"
|
58
|
+
|
59
|
+
output :path,
|
60
|
+
:description => "Active OS PATH",
|
61
|
+
:display_as => "Path"
|
62
|
+
|
63
|
+
output :secure_protocol,
|
64
|
+
:description => "If the protocol is running with PKI security enabled",
|
65
|
+
:display_as => "Protocol Secure"
|
66
|
+
|
67
|
+
output :security,
|
68
|
+
:description => "Security Provider plugin",
|
69
|
+
:display_as => "Security Provider"
|
70
|
+
|
71
|
+
output :srv_domain,
|
72
|
+
:description => "Configured SRV domain",
|
73
|
+
:display_as => "SRV Domain"
|
74
|
+
|
75
|
+
output :using_srv,
|
76
|
+
:description => "Indicates if SRV records are considered",
|
77
|
+
:display_as => "SRV Used"
|
78
|
+
|
79
|
+
summarize do
|
80
|
+
aggregate summary(:choria_version)
|
81
|
+
aggregate summary(:client_version)
|
82
|
+
aggregate summary(:client_flavour)
|
83
|
+
aggregate summary(:connected_server)
|
84
|
+
aggregate summary(:srv_domain)
|
85
|
+
aggregate summary(:using_srv)
|
86
|
+
aggregate summary(:secure_protocol)
|
87
|
+
aggregate summary(:connector_tls)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
action "machine_state", :description => "Retrieves the current state of a specific Choria Autonomous Agent" do
|
92
|
+
display :ok
|
93
|
+
|
12
94
|
input :instance,
|
13
|
-
:prompt
|
95
|
+
:prompt => "Instance ID",
|
14
96
|
:description => "Machine Instance ID",
|
15
|
-
:type
|
16
|
-
:validation
|
17
|
-
:maxlength
|
18
|
-
:optional
|
97
|
+
:type => :string,
|
98
|
+
:validation => '^.+-.+-.+-.+-.+$',
|
99
|
+
:maxlength => 36,
|
100
|
+
:optional => true
|
19
101
|
|
20
|
-
input :version,
|
21
|
-
:prompt => "Version",
|
22
|
-
:description => "Machine Version",
|
23
|
-
:type => :string,
|
24
|
-
:validation => '^\d+\.\d+\.\d+$',
|
25
|
-
:maxlength => 20,
|
26
|
-
:optional => true
|
27
102
|
|
28
103
|
input :name,
|
29
|
-
:prompt
|
104
|
+
:prompt => "Name",
|
30
105
|
:description => "Machine Name",
|
31
|
-
:type
|
32
|
-
:validation
|
33
|
-
:maxlength
|
34
|
-
:optional
|
106
|
+
:type => :string,
|
107
|
+
:validation => '^[a-zA-Z][a-zA-Z0-9_-]+',
|
108
|
+
:maxlength => 128,
|
109
|
+
:optional => true
|
110
|
+
|
35
111
|
|
36
112
|
input :path,
|
37
|
-
:prompt
|
113
|
+
:prompt => "Path",
|
38
114
|
:description => "Machine Path",
|
39
|
-
:type
|
40
|
-
:validation
|
41
|
-
:maxlength
|
42
|
-
:optional
|
115
|
+
:type => :string,
|
116
|
+
:validation => '.+',
|
117
|
+
:maxlength => 512,
|
118
|
+
:optional => true
|
43
119
|
|
44
|
-
input :transition,
|
45
|
-
:prompt => "Transition Name",
|
46
|
-
:description => "The transition event to send to the machine",
|
47
|
-
:type => :string,
|
48
|
-
:validation => '^[a-zA-Z][a-zA-Z0-9_-]+$',
|
49
|
-
:maxlength => 128,
|
50
|
-
:optional => false
|
51
120
|
|
52
|
-
|
53
|
-
|
54
|
-
|
121
|
+
|
122
|
+
|
123
|
+
output :available_transitions,
|
124
|
+
:description => "The list of available transitions this autonomous agent can make",
|
125
|
+
:type => "array",
|
126
|
+
:display_as => "Available Transitions"
|
127
|
+
|
128
|
+
output :current_state,
|
129
|
+
:description => "The Choria Scout specific state for Scout checks",
|
130
|
+
:display_as => "Scout State"
|
131
|
+
|
132
|
+
output :id,
|
133
|
+
:description => "The unique running ID of the autonomous agent",
|
134
|
+
:type => "string",
|
135
|
+
:display_as => "ID"
|
136
|
+
|
137
|
+
output :name,
|
138
|
+
:description => "The name of the autonomous agent",
|
139
|
+
:type => "string",
|
140
|
+
:display_as => "Name"
|
141
|
+
|
142
|
+
output :path,
|
143
|
+
:description => "The location on disk where the autonomous agent is stored",
|
144
|
+
:type => "string",
|
145
|
+
:display_as => "Path"
|
146
|
+
|
147
|
+
output :scout,
|
148
|
+
:description => "True when this autonomous agent represents a Choria Scout Check",
|
149
|
+
:type => "boolean",
|
150
|
+
:display_as => "Scout Check"
|
151
|
+
|
152
|
+
output :start_time,
|
153
|
+
:description => "The time the autonomous agent was started in unix seconds",
|
154
|
+
:type => "string",
|
155
|
+
:display_as => "Started"
|
156
|
+
|
157
|
+
output :state,
|
158
|
+
:description => "The current state the agent is in",
|
159
|
+
:type => "string",
|
160
|
+
:display_as => "State"
|
161
|
+
|
162
|
+
output :version,
|
163
|
+
:description => "The version of the autonomous agent",
|
164
|
+
:type => "string",
|
165
|
+
:display_as => "Version"
|
166
|
+
|
167
|
+
summarize do
|
168
|
+
aggregate summary(:state)
|
169
|
+
aggregate summary(:name)
|
170
|
+
aggregate summary(:version)
|
171
|
+
end
|
55
172
|
end
|
56
173
|
|
57
174
|
action "machine_states", :description => "States of the hosted Choria Autonomous Agents" do
|
58
175
|
display :always
|
59
176
|
|
60
|
-
|
61
|
-
:description => "List of running machine names",
|
62
|
-
:display_as => "Machine Names"
|
177
|
+
|
63
178
|
|
64
179
|
output :machine_ids,
|
65
180
|
:description => "List of running machine IDs",
|
66
|
-
:display_as
|
181
|
+
:display_as => "Machine IDs"
|
182
|
+
|
183
|
+
output :machine_names,
|
184
|
+
:description => "List of running machine names",
|
185
|
+
:display_as => "Machine Names"
|
67
186
|
|
68
187
|
output :states,
|
69
188
|
:description => "Hash map of machine statusses indexed by machine ID",
|
70
|
-
:display_as
|
189
|
+
:display_as => "Machine States"
|
71
190
|
|
72
191
|
summarize do
|
73
192
|
aggregate summary(:machine_names)
|
74
193
|
end
|
75
194
|
end
|
76
195
|
|
77
|
-
action "
|
78
|
-
|
79
|
-
:description => "Security Provider plugin",
|
80
|
-
:display_as => "Security Provider"
|
81
|
-
|
82
|
-
output :secure_protocol,
|
83
|
-
:description => "If the protocol is running with PKI security enabled",
|
84
|
-
:display_as => "Protocol Secure"
|
85
|
-
|
86
|
-
output :connector,
|
87
|
-
:description => "Connector plugin",
|
88
|
-
:display_as => "Connector"
|
196
|
+
action "machine_transition", :description => "Attempts to force a transition in a hosted Choria Autonomous Agent" do
|
197
|
+
display :failed
|
89
198
|
|
90
|
-
|
91
|
-
|
92
|
-
|
199
|
+
input :instance,
|
200
|
+
:prompt => "Instance ID",
|
201
|
+
:description => "Machine Instance ID",
|
202
|
+
:type => :string,
|
203
|
+
:validation => '^.+-.+-.+-.+-.+$',
|
204
|
+
:maxlength => 36,
|
205
|
+
:optional => true
|
93
206
|
|
94
|
-
output :path,
|
95
|
-
:description => "Active OS PATH",
|
96
|
-
:display_as => "Path"
|
97
207
|
|
98
|
-
|
99
|
-
|
100
|
-
|
208
|
+
input :name,
|
209
|
+
:prompt => "Name",
|
210
|
+
:description => "Machine Name",
|
211
|
+
:type => :string,
|
212
|
+
:validation => '^[a-zA-Z][a-zA-Z0-9_-]+',
|
213
|
+
:maxlength => 128,
|
214
|
+
:optional => true
|
101
215
|
|
102
|
-
output :client_version,
|
103
|
-
:description => "Middleware client library version",
|
104
|
-
:display_as => "Middleware Client Library Version"
|
105
216
|
|
106
|
-
|
107
|
-
|
108
|
-
|
217
|
+
input :path,
|
218
|
+
:prompt => "Path",
|
219
|
+
:description => "Machine Path",
|
220
|
+
:type => :string,
|
221
|
+
:validation => '.+',
|
222
|
+
:maxlength => 512,
|
223
|
+
:optional => true
|
109
224
|
|
110
|
-
output :client_options,
|
111
|
-
:description => "Active Middleware client gem options",
|
112
|
-
:display_as => "Middleware Client Options"
|
113
225
|
|
114
|
-
|
115
|
-
|
116
|
-
|
226
|
+
input :transition,
|
227
|
+
:prompt => "Transition Name",
|
228
|
+
:description => "The transition event to send to the machine",
|
229
|
+
:type => :string,
|
230
|
+
:validation => '^[a-zA-Z][a-zA-Z0-9_-]+$',
|
231
|
+
:maxlength => 128,
|
232
|
+
:optional => false
|
117
233
|
|
118
|
-
output :client_stats,
|
119
|
-
:description => "Middleware client gem statistics",
|
120
|
-
:display_as => "Middleware Client Stats"
|
121
234
|
|
122
|
-
|
123
|
-
|
124
|
-
|
235
|
+
input :version,
|
236
|
+
:prompt => "Version",
|
237
|
+
:description => "Machine Version",
|
238
|
+
:type => :string,
|
239
|
+
:validation => '^\d+\.\d+\.\d+$',
|
240
|
+
:maxlength => 20,
|
241
|
+
:optional => true
|
125
242
|
|
126
|
-
output :facter_command,
|
127
|
-
:description => "Command used for Facter",
|
128
|
-
:display_as => "Facter"
|
129
243
|
|
130
|
-
output :srv_domain,
|
131
|
-
:description => "Configured SRV domain",
|
132
|
-
:display_as => "SRV Domain"
|
133
244
|
|
134
|
-
output :using_srv,
|
135
|
-
:description => "Indicates if SRV records are considered",
|
136
|
-
:display_as => "SRV Used"
|
137
245
|
|
138
|
-
output :
|
139
|
-
:description => "
|
140
|
-
:display_as
|
246
|
+
output :success,
|
247
|
+
:description => "Indicates if the transition was successfully accepted",
|
248
|
+
:display_as => "Accepted"
|
141
249
|
|
142
|
-
summarize do
|
143
|
-
aggregate summary(:choria_version)
|
144
|
-
aggregate summary(:client_version)
|
145
|
-
aggregate summary(:client_flavour)
|
146
|
-
aggregate summary(:connected_server)
|
147
|
-
aggregate summary(:srv_domain)
|
148
|
-
aggregate summary(:using_srv)
|
149
|
-
aggregate summary(:secure_protocol)
|
150
|
-
aggregate summary(:connector_tls)
|
151
|
-
end
|
152
250
|
end
|
251
|
+
|
@@ -149,6 +149,106 @@
|
|
149
149
|
}
|
150
150
|
]
|
151
151
|
},
|
152
|
+
{
|
153
|
+
"action": "machine_state",
|
154
|
+
"description": "Retrieves the current state of a specific Choria Autonomous Agent",
|
155
|
+
"display": "ok",
|
156
|
+
"input": {
|
157
|
+
"instance": {
|
158
|
+
"prompt": "Instance ID",
|
159
|
+
"description": "Machine Instance ID",
|
160
|
+
"type": "string",
|
161
|
+
"default": null,
|
162
|
+
"optional": true,
|
163
|
+
"validation": "^.+-.+-.+-.+-.+$",
|
164
|
+
"maxlength": 36
|
165
|
+
},
|
166
|
+
"name": {
|
167
|
+
"prompt": "Name",
|
168
|
+
"description": "Machine Name",
|
169
|
+
"type": "string",
|
170
|
+
"default": null,
|
171
|
+
"optional": true,
|
172
|
+
"validation": "^[a-zA-Z][a-zA-Z0-9_-]+",
|
173
|
+
"maxlength": 128
|
174
|
+
},
|
175
|
+
"path": {
|
176
|
+
"prompt": "Path",
|
177
|
+
"description": "Machine Path",
|
178
|
+
"type": "string",
|
179
|
+
"default": null,
|
180
|
+
"optional": true,
|
181
|
+
"validation": ".+",
|
182
|
+
"maxlength": 512
|
183
|
+
}
|
184
|
+
},
|
185
|
+
"aggregate": [
|
186
|
+
{
|
187
|
+
"function": "summary",
|
188
|
+
"args": [
|
189
|
+
"state"
|
190
|
+
]
|
191
|
+
},
|
192
|
+
{
|
193
|
+
"function": "summary",
|
194
|
+
"args": [
|
195
|
+
"name"
|
196
|
+
]
|
197
|
+
},
|
198
|
+
{
|
199
|
+
"function": "summary",
|
200
|
+
"args": [
|
201
|
+
"version"
|
202
|
+
]
|
203
|
+
}
|
204
|
+
],
|
205
|
+
"output": {
|
206
|
+
"name": {
|
207
|
+
"type": "string",
|
208
|
+
"description": "The name of the autonomous agent",
|
209
|
+
"display_as": "Name"
|
210
|
+
},
|
211
|
+
"version": {
|
212
|
+
"type": "string",
|
213
|
+
"description": "The version of the autonomous agent",
|
214
|
+
"display_as": "Version"
|
215
|
+
},
|
216
|
+
"state": {
|
217
|
+
"type": "string",
|
218
|
+
"description": "The current state the agent is in",
|
219
|
+
"display_as": "State"
|
220
|
+
},
|
221
|
+
"path": {
|
222
|
+
"type": "string",
|
223
|
+
"description": "The location on disk where the autonomous agent is stored",
|
224
|
+
"display_as": "Path"
|
225
|
+
},
|
226
|
+
"id": {
|
227
|
+
"type": "string",
|
228
|
+
"description": "The unique running ID of the autonomous agent",
|
229
|
+
"display_as": "ID"
|
230
|
+
},
|
231
|
+
"start_time": {
|
232
|
+
"type": "string",
|
233
|
+
"description": "The time the autonomous agent was started in unix seconds",
|
234
|
+
"display_as": "Started"
|
235
|
+
},
|
236
|
+
"available_transitions": {
|
237
|
+
"type": "array",
|
238
|
+
"description": "The list of available transitions this autonomous agent can make",
|
239
|
+
"display_as": "Available Transitions"
|
240
|
+
},
|
241
|
+
"scout": {
|
242
|
+
"type": "boolean",
|
243
|
+
"description": "True when this autonomous agent represents a Choria Scout Check",
|
244
|
+
"display_as": "Scout Check"
|
245
|
+
},
|
246
|
+
"current_state": {
|
247
|
+
"description": "The Choria Scout specific state for Scout checks",
|
248
|
+
"display_as": "Scout State"
|
249
|
+
}
|
250
|
+
}
|
251
|
+
},
|
152
252
|
{
|
153
253
|
"action": "machine_states",
|
154
254
|
"input": {
|
@@ -241,4 +341,4 @@
|
|
241
341
|
"description": "Attempts to force a transition in a hosted Choria Autonomous Agent"
|
242
342
|
}
|
243
343
|
]
|
244
|
-
}
|
344
|
+
}
|
@@ -308,8 +308,7 @@
|
|
308
308
|
},
|
309
309
|
"machines": {
|
310
310
|
"description": "Autonomous Agents",
|
311
|
-
"display_as": "Machines"
|
312
|
-
"default": null
|
311
|
+
"display_as": "Machines"
|
313
312
|
}
|
314
313
|
},
|
315
314
|
"display": "always",
|
@@ -330,4 +329,4 @@
|
|
330
329
|
"description": "Responds to requests for PING with PONG"
|
331
330
|
}
|
332
331
|
]
|
333
|
-
}
|
332
|
+
}
|
@@ -1,122 +1,58 @@
|
|
1
1
|
{
|
2
2
|
"$schema": "https://choria.io/schemas/mcorpc/ddl/v1/agent.json",
|
3
3
|
"metadata": {
|
4
|
-
"name": "scout",
|
5
|
-
"description": "Choria Scout Agent Management API",
|
6
|
-
"author": "R.I.Pienaar <rip@devco.net>",
|
7
4
|
"license": "Apache-2.0",
|
5
|
+
"author": "R.I.Pienaar <rip@devco.net>",
|
6
|
+
"timeout": 5,
|
7
|
+
"name": "scout",
|
8
8
|
"version": "0.0.1",
|
9
9
|
"url": "https://choria.io",
|
10
|
-
"
|
11
|
-
"
|
10
|
+
"description": "Choria Scout Agent Management API",
|
11
|
+
"provider": "golang"
|
12
12
|
},
|
13
13
|
"actions": [
|
14
14
|
{
|
15
15
|
"action": "checks",
|
16
|
-
"
|
17
|
-
|
16
|
+
"display": "ok",
|
17
|
+
"description": "Obtain a list of checks and their current status",
|
18
|
+
"input": {},
|
18
19
|
"output": {
|
19
20
|
"checks": {
|
20
21
|
"description": "Details about each check",
|
21
|
-
"
|
22
|
-
"
|
23
|
-
"type": "array"
|
22
|
+
"type": "array",
|
23
|
+
"display_as": "Checks"
|
24
24
|
}
|
25
|
-
}
|
26
|
-
"display": "ok",
|
27
|
-
"description": "Obtain a list of checks and their current status"
|
25
|
+
}
|
28
26
|
},
|
29
27
|
{
|
30
|
-
"action": "
|
28
|
+
"action": "resume",
|
31
29
|
"input": {
|
32
|
-
"
|
33
|
-
"prompt": "
|
34
|
-
"description": "
|
35
|
-
"type": "
|
36
|
-
"
|
37
|
-
"optional": false,
|
38
|
-
"validation": ".+",
|
39
|
-
"maxlength": 256
|
40
|
-
},
|
41
|
-
"vars": {
|
42
|
-
"prompt": "Vars File",
|
43
|
-
"description": "Path to a file to use as template variables",
|
44
|
-
"type": "string",
|
45
|
-
"default": null,
|
46
|
-
"optional": true,
|
47
|
-
"validation": ".+",
|
48
|
-
"maxlength": 256
|
30
|
+
"checks": {
|
31
|
+
"prompt": "Checks",
|
32
|
+
"description": "Check to resume, empty means all",
|
33
|
+
"type": "array",
|
34
|
+
"optional": true
|
49
35
|
}
|
50
36
|
},
|
51
37
|
"output": {
|
52
|
-
"
|
53
|
-
"description": "
|
54
|
-
"display_as": "Failed
|
55
|
-
"default": null,
|
56
|
-
"type": "integer"
|
57
|
-
},
|
58
|
-
"results": {
|
59
|
-
"description": "The full test results",
|
60
|
-
"display_as": "Results",
|
61
|
-
"default": null,
|
38
|
+
"failed": {
|
39
|
+
"description": "List of checks that could not be resumed",
|
40
|
+
"display_as": "Failed",
|
62
41
|
"type": "array"
|
63
42
|
},
|
64
|
-
"
|
65
|
-
"description": "
|
66
|
-
"display_as": "
|
67
|
-
"
|
68
|
-
"type": "integer"
|
69
|
-
},
|
70
|
-
"success": {
|
71
|
-
"description": "Indicates if the test passed",
|
72
|
-
"display_as": "Success",
|
73
|
-
"default": null,
|
74
|
-
"type": "string"
|
75
|
-
},
|
76
|
-
"summary": {
|
77
|
-
"description": "A human friendly test result",
|
78
|
-
"display_as": "Summary",
|
79
|
-
"default": null,
|
80
|
-
"type": "string"
|
43
|
+
"transitioned": {
|
44
|
+
"description": "List of checks that were resumed",
|
45
|
+
"display_as": "Triggered",
|
46
|
+
"type": "array"
|
81
47
|
},
|
82
|
-
"
|
83
|
-
"description": "
|
84
|
-
"display_as": "
|
85
|
-
"
|
86
|
-
"type": "integer"
|
48
|
+
"skipped": {
|
49
|
+
"description": "List of checks that was skipped",
|
50
|
+
"display_as": "Skipped",
|
51
|
+
"type": "array"
|
87
52
|
}
|
88
53
|
},
|
89
54
|
"display": "failed",
|
90
|
-
"description": "
|
91
|
-
"aggregate": [
|
92
|
-
{
|
93
|
-
"function": "summary",
|
94
|
-
"args": [
|
95
|
-
"tests",
|
96
|
-
{
|
97
|
-
"format": "%s Test Cases on %d node(s)"
|
98
|
-
}
|
99
|
-
]
|
100
|
-
},
|
101
|
-
{
|
102
|
-
"function": "summary",
|
103
|
-
"args": [
|
104
|
-
"failures",
|
105
|
-
{
|
106
|
-
"format": "%s Failed Cases on %d node(s)"
|
107
|
-
}
|
108
|
-
]
|
109
|
-
},
|
110
|
-
{
|
111
|
-
"function": "summary",
|
112
|
-
"args": [
|
113
|
-
"success",
|
114
|
-
{
|
115
|
-
"format": "%s Passed Cases on %d node(s)"
|
116
|
-
}
|
117
|
-
]
|
118
|
-
}
|
119
|
-
]
|
55
|
+
"description": "Resume active checking of one or more checks"
|
120
56
|
},
|
121
57
|
{
|
122
58
|
"action": "maintenance",
|
@@ -125,7 +61,6 @@
|
|
125
61
|
"prompt": "Checks",
|
126
62
|
"description": "Check to pause, empty means all",
|
127
63
|
"type": "array",
|
128
|
-
"default": null,
|
129
64
|
"optional": true
|
130
65
|
}
|
131
66
|
},
|
@@ -133,19 +68,16 @@
|
|
133
68
|
"failed": {
|
134
69
|
"description": "List of checks that could not be paused",
|
135
70
|
"display_as": "Failed",
|
136
|
-
"default": null,
|
137
|
-
"type": "array"
|
138
|
-
},
|
139
|
-
"skipped": {
|
140
|
-
"description": "List of checks that was skipped",
|
141
|
-
"display_as": "Skipped",
|
142
|
-
"default": null,
|
143
71
|
"type": "array"
|
144
72
|
},
|
145
73
|
"transitioned": {
|
146
74
|
"description": "List of checks that were paused",
|
147
75
|
"display_as": "Triggered",
|
148
|
-
"
|
76
|
+
"type": "array"
|
77
|
+
},
|
78
|
+
"skipped": {
|
79
|
+
"description": "List of checks that was skipped",
|
80
|
+
"display_as": "Skipped",
|
149
81
|
"type": "array"
|
150
82
|
}
|
151
83
|
},
|
@@ -153,38 +85,82 @@
|
|
153
85
|
"description": "Pause checking of one or more checks"
|
154
86
|
},
|
155
87
|
{
|
156
|
-
"action": "
|
88
|
+
"action": "goss_validate",
|
89
|
+
"description": "Performs a Goss validation using a specific file",
|
90
|
+
"display": "failed",
|
91
|
+
"aggregate": [
|
92
|
+
{
|
93
|
+
"function": "summary",
|
94
|
+
"args": [
|
95
|
+
"tests",
|
96
|
+
{"format": "%s Tests on %d node(s)"}
|
97
|
+
]
|
98
|
+
},
|
99
|
+
{
|
100
|
+
"function": "summary",
|
101
|
+
"args": [
|
102
|
+
"failures",
|
103
|
+
{"format": "%s Failed test on %d node(s)"}
|
104
|
+
]
|
105
|
+
},
|
106
|
+
{
|
107
|
+
"function": "summary",
|
108
|
+
"args": [
|
109
|
+
"success",
|
110
|
+
{"format": "%s Passed tests on %d node(s)"}
|
111
|
+
]
|
112
|
+
}
|
113
|
+
],
|
157
114
|
"input": {
|
158
|
-
"
|
159
|
-
"prompt": "
|
160
|
-
"description": "
|
161
|
-
"type": "
|
162
|
-
"
|
115
|
+
"file": {
|
116
|
+
"prompt": "Goss File",
|
117
|
+
"description": "Path to the Goss validation specification",
|
118
|
+
"type": "string",
|
119
|
+
"maxlength": 256,
|
120
|
+
"validation": ".+",
|
121
|
+
"optional": false
|
122
|
+
},
|
123
|
+
"vars": {
|
124
|
+
"prompt": "Vars File",
|
125
|
+
"description": "Path to a file to use as template variables",
|
126
|
+
"type": "string",
|
127
|
+
"maxlength": 256,
|
128
|
+
"validation": ".+",
|
163
129
|
"optional": true
|
164
130
|
}
|
165
131
|
},
|
166
132
|
"output": {
|
167
|
-
"
|
168
|
-
"description": "
|
169
|
-
"display_as": "
|
170
|
-
"
|
171
|
-
"type": "array"
|
133
|
+
"tests": {
|
134
|
+
"description": "The number of tests that were run",
|
135
|
+
"display_as": "Tests",
|
136
|
+
"type": "integer"
|
172
137
|
},
|
173
|
-
"
|
174
|
-
"description": "
|
175
|
-
"display_as": "
|
176
|
-
"
|
177
|
-
"type": "array"
|
138
|
+
"failures": {
|
139
|
+
"description": "The number of tests that failed",
|
140
|
+
"display_as": "Failed Tests",
|
141
|
+
"type": "integer"
|
178
142
|
},
|
179
|
-
"
|
180
|
-
"description": "
|
181
|
-
"display_as": "
|
182
|
-
"
|
143
|
+
"runtime": {
|
144
|
+
"description": "The time it took to run the tests, in seconds",
|
145
|
+
"display_as": "Runtime",
|
146
|
+
"type": "integer"
|
147
|
+
},
|
148
|
+
"success": {
|
149
|
+
"description": "Indicates if the test passed",
|
150
|
+
"display_as": "Success",
|
151
|
+
"type": "string"
|
152
|
+
},
|
153
|
+
"summary": {
|
154
|
+
"description": "A human friendly test result",
|
155
|
+
"display_as": "Summary",
|
156
|
+
"type": "string"
|
157
|
+
},
|
158
|
+
"results": {
|
159
|
+
"description": "The full test results",
|
160
|
+
"display_as": "Results",
|
183
161
|
"type": "array"
|
184
162
|
}
|
185
|
-
}
|
186
|
-
"display": "failed",
|
187
|
-
"description": "Resume active checking of one or more checks"
|
163
|
+
}
|
188
164
|
},
|
189
165
|
{
|
190
166
|
"action": "trigger",
|
@@ -193,7 +169,6 @@
|
|
193
169
|
"prompt": "Checks",
|
194
170
|
"description": "Check to trigger, empty means all",
|
195
171
|
"type": "array",
|
196
|
-
"default": null,
|
197
172
|
"optional": true
|
198
173
|
}
|
199
174
|
},
|
@@ -201,19 +176,16 @@
|
|
201
176
|
"failed": {
|
202
177
|
"description": "List of checks that could not be triggered",
|
203
178
|
"display_as": "Failed",
|
204
|
-
"default": null,
|
205
|
-
"type": "array"
|
206
|
-
},
|
207
|
-
"skipped": {
|
208
|
-
"description": "List of checks that was skipped",
|
209
|
-
"display_as": "Skipped",
|
210
|
-
"default": null,
|
211
179
|
"type": "array"
|
212
180
|
},
|
213
181
|
"transitioned": {
|
214
182
|
"description": "List of checks that were triggered",
|
215
183
|
"display_as": "Triggered",
|
216
|
-
"
|
184
|
+
"type": "array"
|
185
|
+
},
|
186
|
+
"skipped": {
|
187
|
+
"description": "List of checks that was skipped",
|
188
|
+
"display_as": "Skipped",
|
217
189
|
"type": "array"
|
218
190
|
}
|
219
191
|
},
|
@@ -221,4 +193,4 @@
|
|
221
193
|
"description": "Force an immediate check of one or more checks"
|
222
194
|
}
|
223
195
|
]
|
224
|
-
}
|
196
|
+
}
|
data/lib/mcollective/util.rb
CHANGED
@@ -147,13 +147,11 @@ module MCollective
|
|
147
147
|
|
148
148
|
# Returns the PuppetLabs mcollective path for windows
|
149
149
|
def self.windows_prefix
|
150
|
-
|
151
|
-
File.join(Dir::COMMON_APPDATA, "PuppetLabs", "choria")
|
150
|
+
File.join(ENV["ALLUSERSPROFILE"], "PuppetLabs", "choria")
|
152
151
|
end
|
153
152
|
|
154
153
|
def self.choria_windows_prefix
|
155
|
-
|
156
|
-
File.join(Dir::COMMON_APPDATA, "ChoriaIO", "choria")
|
154
|
+
File.join(ENV["ALLUSERSPROFILE"], "choria")
|
157
155
|
end
|
158
156
|
|
159
157
|
def self.config_paths_for_user
|
@@ -157,7 +157,7 @@ module MCollective
|
|
157
157
|
# @return [String] path to the command
|
158
158
|
def task_command(spooldir, task)
|
159
159
|
file_spec = task["files"][0]
|
160
|
-
file_name = File.join(spooldir, "files", file_spec["filename"])
|
160
|
+
file_name = File.join(spooldir, "files", task_module(task["task"]), "tasks", file_spec["filename"])
|
161
161
|
|
162
162
|
command = platform_specific_command(file_name)
|
163
163
|
|
@@ -220,7 +220,10 @@ module MCollective
|
|
220
220
|
# @param task [Hash] task specification
|
221
221
|
def populate_spooldir(spooldir, task)
|
222
222
|
task["files"].each do |file|
|
223
|
-
|
223
|
+
filename = file["filename"]
|
224
|
+
filename = File.join(task_module(task["task"]), "tasks", filename) unless filename.index("/")
|
225
|
+
|
226
|
+
spool_filename = File.join(spooldir, "files", filename)
|
224
227
|
|
225
228
|
FileUtils.mkdir_p(File.dirname(spool_filename), :mode => 0o0750)
|
226
229
|
FileUtils.cp(task_file_name(file), spool_filename)
|
@@ -569,6 +572,15 @@ module MCollective
|
|
569
572
|
parts
|
570
573
|
end
|
571
574
|
|
575
|
+
# Return a task's module
|
576
|
+
#
|
577
|
+
# @param task [String]
|
578
|
+
# @return [String] the module name
|
579
|
+
# @raise [StandardError] for invalid task names
|
580
|
+
def task_module(task)
|
581
|
+
parse_task(task)[0]
|
582
|
+
end
|
583
|
+
|
572
584
|
# Determines the cache path for a task file
|
573
585
|
#
|
574
586
|
# @param file [Hash] a file hash as per the task metadata
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: choria-mcorpc-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.24.
|
4
|
+
version: 2.24.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- R.I.Pienaar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: systemu
|