xclarity_client 0.6.4 → 0.6.5
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.
- checksums.yaml +4 -4
- data/docs/apib/discover_request.apib +3 -1
- data/docs/apib/manage_request.apib +359 -0
- data/docs/apib/update_comp.apib +426 -0
- data/docs/apib/update_repo.apib +0 -57
- data/lib/xclarity_client/client.rb +2 -0
- data/lib/xclarity_client/endpoints/endpoints.rb +2 -0
- data/lib/xclarity_client/endpoints/manage_request.rb +11 -0
- data/lib/xclarity_client/endpoints/update_comp.rb +18 -0
- data/lib/xclarity_client/mixins/manage_request_mixin.rb +54 -0
- data/lib/xclarity_client/mixins/mixins.rb +2 -0
- data/lib/xclarity_client/mixins/update_comp_mixin.rb +37 -0
- data/lib/xclarity_client/services/manage_request_management.rb +62 -0
- data/lib/xclarity_client/services/services.rb +2 -0
- data/lib/xclarity_client/services/update_comp_management.rb +111 -0
- data/lib/xclarity_client/version.rb +1 -1
- metadata +10 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a94d8c6370c78465f0607a7ea7d5dece6ac95d94
|
|
4
|
+
data.tar.gz: ce694e22536e0b68ee82ad13bc8e523a9e497b84
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '09cb4cfa48391846096107de5f4989d20246d8bd0edae3735264f304cf3d4df1b7d884ba0f9ad3f74f456aa971d83f5885e7fb8e503213f4356e1f5c607b503f'
|
|
7
|
+
data.tar.gz: dbb35e325ad671c58f5431bec6d40577f4655a569008afd33b2df25d4a9866d05bd809767c137e962c37ae558699068ebf25d50ef9c4f8a2f027b10fe030152d
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
FORMAT: 1A
|
|
2
|
+
|
|
3
|
+
# XClarity Users
|
|
4
|
+
|
|
5
|
+
# GET /manageRequest/jobs/4229
|
|
6
|
+
|
|
7
|
+
+ Response 200 (application/json)
|
|
8
|
+
{
|
|
9
|
+
"progress": 100.0,
|
|
10
|
+
"results": [{
|
|
11
|
+
"result": "OTHER_FAIL",
|
|
12
|
+
"resultLongDescription": "An internal error occurred during the management process. Attempt the management operation again. If the problem persists, contact Support.",
|
|
13
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.rest.messages",
|
|
14
|
+
"messageParameters": "10.240.72.172",
|
|
15
|
+
"resultShortDescription": "Other failure",
|
|
16
|
+
"progress": 100.0,
|
|
17
|
+
"messageID": "0509_LONG",
|
|
18
|
+
"uuid": "46920c143355486f97c19a34abc7d746",
|
|
19
|
+
"taskid": 4228,
|
|
20
|
+
"time_spent": 68026,
|
|
21
|
+
"status": {
|
|
22
|
+
"substatus": [{
|
|
23
|
+
"longDescription": "Starting endpoint management job",
|
|
24
|
+
"userAction": "",
|
|
25
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
26
|
+
"messageID": "1000_SHORT",
|
|
27
|
+
"progress": 100.0,
|
|
28
|
+
"started": true,
|
|
29
|
+
"id": "STARTING",
|
|
30
|
+
"shortDescription": "Starting",
|
|
31
|
+
"completed": true,
|
|
32
|
+
"status": {
|
|
33
|
+
"percentage": 100.0,
|
|
34
|
+
"description": [{
|
|
35
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
36
|
+
"messageID": "1027_LONG"
|
|
37
|
+
}],
|
|
38
|
+
"state": "Complete"
|
|
39
|
+
}
|
|
40
|
+
}, {
|
|
41
|
+
"longDescription": "Choosing best network path to manage the endpoint",
|
|
42
|
+
"userAction": "",
|
|
43
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
44
|
+
"messageID": "1001_SHORT",
|
|
45
|
+
"progress": 100.0,
|
|
46
|
+
"started": true,
|
|
47
|
+
"id": "NETWORK_CHOICE",
|
|
48
|
+
"shortDescription": "Network choice",
|
|
49
|
+
"completed": true,
|
|
50
|
+
"status": {
|
|
51
|
+
"percentage": 100.0,
|
|
52
|
+
"description": [{
|
|
53
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
54
|
+
"messageID": "1027_LONG"
|
|
55
|
+
}],
|
|
56
|
+
"state": "Complete"
|
|
57
|
+
}
|
|
58
|
+
}, {
|
|
59
|
+
"longDescription": "Creating hardware descriptor",
|
|
60
|
+
"userAction": "",
|
|
61
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
62
|
+
"messageID": "1002_SHORT",
|
|
63
|
+
"progress": 100.0,
|
|
64
|
+
"started": true,
|
|
65
|
+
"id": "DESCRIPTOR",
|
|
66
|
+
"shortDescription": "Descriptor",
|
|
67
|
+
"completed": true,
|
|
68
|
+
"status": {
|
|
69
|
+
"percentage": 100.0,
|
|
70
|
+
"description": [{
|
|
71
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
72
|
+
"messageID": "1027_LONG"
|
|
73
|
+
}],
|
|
74
|
+
"state": "Complete"
|
|
75
|
+
}
|
|
76
|
+
}, {
|
|
77
|
+
"longDescription": "Logging in to endpoint",
|
|
78
|
+
"userAction": "",
|
|
79
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
80
|
+
"messageID": "1003_SHORT",
|
|
81
|
+
"progress": 100.0,
|
|
82
|
+
"started": true,
|
|
83
|
+
"id": "LOGIN",
|
|
84
|
+
"shortDescription": "Login",
|
|
85
|
+
"completed": true,
|
|
86
|
+
"status": {
|
|
87
|
+
"percentage": 100.0,
|
|
88
|
+
"description": [{
|
|
89
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
90
|
+
"messageID": "1027_LONG"
|
|
91
|
+
}],
|
|
92
|
+
"state": "Complete"
|
|
93
|
+
}
|
|
94
|
+
}, {
|
|
95
|
+
"longDescription": "Checking for duplicates of endpoint management",
|
|
96
|
+
"userAction": "",
|
|
97
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
98
|
+
"messageID": "1004_SHORT",
|
|
99
|
+
"progress": 100.0,
|
|
100
|
+
"started": true,
|
|
101
|
+
"id": "DUPLICATE_CHECK",
|
|
102
|
+
"shortDescription": "Duplicate check",
|
|
103
|
+
"completed": true,
|
|
104
|
+
"status": {
|
|
105
|
+
"percentage": 100.0,
|
|
106
|
+
"description": [{
|
|
107
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
108
|
+
"messageID": "1027_LONG"
|
|
109
|
+
}],
|
|
110
|
+
"state": "Complete"
|
|
111
|
+
}
|
|
112
|
+
}, {
|
|
113
|
+
"longDescription": "Collecting endpoint inventory",
|
|
114
|
+
"userAction": "",
|
|
115
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
116
|
+
"messageID": "1005_SHORT",
|
|
117
|
+
"progress": 0.0,
|
|
118
|
+
"started": false,
|
|
119
|
+
"id": "INVENTORY",
|
|
120
|
+
"shortDescription": "Inventory",
|
|
121
|
+
"completed": false,
|
|
122
|
+
"status": {
|
|
123
|
+
"substatus": [{
|
|
124
|
+
"longDescription": "Collecting chassis inventory",
|
|
125
|
+
"userAction": "",
|
|
126
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
127
|
+
"messageID": "1006_SHORT",
|
|
128
|
+
"progress": 0.0,
|
|
129
|
+
"started": false,
|
|
130
|
+
"id": "INV_CHASSIS",
|
|
131
|
+
"shortDescription": "Chassis inventory",
|
|
132
|
+
"completed": false,
|
|
133
|
+
"status": {
|
|
134
|
+
"percentage": 0.0,
|
|
135
|
+
"description": [{
|
|
136
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
137
|
+
"messageID": "1027_LONG"
|
|
138
|
+
}],
|
|
139
|
+
"state": "Stopped_With_Error"
|
|
140
|
+
}
|
|
141
|
+
}, {
|
|
142
|
+
"longDescription": "Collecting node inventory",
|
|
143
|
+
"userAction": "",
|
|
144
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
145
|
+
"messageID": "1007_SHORT",
|
|
146
|
+
"progress": 0.0,
|
|
147
|
+
"started": false,
|
|
148
|
+
"id": "INV_NODES",
|
|
149
|
+
"shortDescription": "Node inventory",
|
|
150
|
+
"completed": false,
|
|
151
|
+
"status": {
|
|
152
|
+
"percentage": 0.0,
|
|
153
|
+
"description": [{
|
|
154
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
155
|
+
"messageID": "1027_LONG"
|
|
156
|
+
}],
|
|
157
|
+
"state": "Stopped_With_Error"
|
|
158
|
+
}
|
|
159
|
+
}, {
|
|
160
|
+
"longDescription": "Collection I/O module inventory",
|
|
161
|
+
"userAction": "",
|
|
162
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
163
|
+
"messageID": "1008_SHORT",
|
|
164
|
+
"progress": 0.0,
|
|
165
|
+
"started": false,
|
|
166
|
+
"id": "INV_IOMS",
|
|
167
|
+
"shortDescription": "I/O module inventory",
|
|
168
|
+
"completed": false,
|
|
169
|
+
"status": {
|
|
170
|
+
"percentage": 0.0,
|
|
171
|
+
"description": [{
|
|
172
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
173
|
+
"messageID": "1027_LONG"
|
|
174
|
+
}],
|
|
175
|
+
"state": "Stopped_With_Error"
|
|
176
|
+
}
|
|
177
|
+
}],
|
|
178
|
+
"percentage": 0.0,
|
|
179
|
+
"description": [{
|
|
180
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
181
|
+
"messageID": "1027_LONG"
|
|
182
|
+
}],
|
|
183
|
+
"state": "Stopped_With_Error"
|
|
184
|
+
}
|
|
185
|
+
}, {
|
|
186
|
+
"longDescription": "Verifying endpoint interoperability",
|
|
187
|
+
"userAction": "",
|
|
188
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
189
|
+
"messageID": "1009_SHORT",
|
|
190
|
+
"progress": 0.0,
|
|
191
|
+
"started": false,
|
|
192
|
+
"id": "INTEROP_CHECK",
|
|
193
|
+
"shortDescription": "Interoperability check",
|
|
194
|
+
"completed": false,
|
|
195
|
+
"status": {
|
|
196
|
+
"percentage": 0.0,
|
|
197
|
+
"description": [{
|
|
198
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
199
|
+
"messageID": "1027_LONG"
|
|
200
|
+
}],
|
|
201
|
+
"state": "Stopped_With_Error"
|
|
202
|
+
}
|
|
203
|
+
}, {
|
|
204
|
+
"longDescription": "Configuring endpoint for management",
|
|
205
|
+
"userAction": "",
|
|
206
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
207
|
+
"messageID": "1010_SHORT",
|
|
208
|
+
"progress": 0.0,
|
|
209
|
+
"started": false,
|
|
210
|
+
"id": "CONFIGURATION",
|
|
211
|
+
"shortDescription": "Configuration",
|
|
212
|
+
"completed": false,
|
|
213
|
+
"status": {
|
|
214
|
+
"substatus": [{
|
|
215
|
+
"longDescription": "Configuring NTP",
|
|
216
|
+
"userAction": "",
|
|
217
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
218
|
+
"messageID": "1011_SHORT",
|
|
219
|
+
"progress": 0.0,
|
|
220
|
+
"started": false,
|
|
221
|
+
"id": "CFG_NTP",
|
|
222
|
+
"shortDescription": "NTP",
|
|
223
|
+
"completed": false,
|
|
224
|
+
"status": {
|
|
225
|
+
"percentage": 0.0,
|
|
226
|
+
"description": [{
|
|
227
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
228
|
+
"messageID": "1027_LONG"
|
|
229
|
+
}],
|
|
230
|
+
"state": "Stopped_With_Error"
|
|
231
|
+
}
|
|
232
|
+
}, {
|
|
233
|
+
"longDescription": "Updating DNS servers ip addresses on CMM as part of the manage chassis process.",
|
|
234
|
+
"userAction": "",
|
|
235
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
236
|
+
"messageID": "1067_SHORT",
|
|
237
|
+
"progress": 0.0,
|
|
238
|
+
"started": false,
|
|
239
|
+
"id": "CFG_DNS_UPD",
|
|
240
|
+
"shortDescription": "Updating DNS servers ip addresses on CMM",
|
|
241
|
+
"completed": false,
|
|
242
|
+
"status": {
|
|
243
|
+
"percentage": 0.0,
|
|
244
|
+
"description": [{
|
|
245
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
246
|
+
"messageID": "1027_LONG"
|
|
247
|
+
}],
|
|
248
|
+
"state": "Stopped_With_Error"
|
|
249
|
+
}
|
|
250
|
+
}, {
|
|
251
|
+
"longDescription": "Configuring security",
|
|
252
|
+
"userAction": "",
|
|
253
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
254
|
+
"messageID": "1012_SHORT",
|
|
255
|
+
"progress": 0.0,
|
|
256
|
+
"started": false,
|
|
257
|
+
"id": "CFG_SECURITY",
|
|
258
|
+
"shortDescription": "Security",
|
|
259
|
+
"completed": false,
|
|
260
|
+
"status": {
|
|
261
|
+
"percentage": 0.0,
|
|
262
|
+
"description": [{
|
|
263
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
264
|
+
"messageID": "1027_LONG"
|
|
265
|
+
}],
|
|
266
|
+
"state": "Stopped_With_Error"
|
|
267
|
+
}
|
|
268
|
+
}, {
|
|
269
|
+
"longDescription": "Putting endpoint under managed authentication",
|
|
270
|
+
"userAction": "",
|
|
271
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
272
|
+
"messageID": "1013_SHORT",
|
|
273
|
+
"progress": 0.0,
|
|
274
|
+
"started": false,
|
|
275
|
+
"id": "CFG_CMGMT",
|
|
276
|
+
"shortDescription": "Managed authentication",
|
|
277
|
+
"completed": false,
|
|
278
|
+
"status": {
|
|
279
|
+
"percentage": 0.0,
|
|
280
|
+
"description": [{
|
|
281
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
282
|
+
"messageID": "1027_LONG"
|
|
283
|
+
}],
|
|
284
|
+
"state": "Stopped_With_Error"
|
|
285
|
+
}
|
|
286
|
+
}],
|
|
287
|
+
"percentage": 0.0,
|
|
288
|
+
"description": [{
|
|
289
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
290
|
+
"messageID": "1027_LONG"
|
|
291
|
+
}],
|
|
292
|
+
"state": "Stopped_With_Error"
|
|
293
|
+
}
|
|
294
|
+
}, {
|
|
295
|
+
"longDescription": "Configuring Hardware location",
|
|
296
|
+
"userAction": "",
|
|
297
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
298
|
+
"messageID": "1097_SHORT",
|
|
299
|
+
"progress": 0.0,
|
|
300
|
+
"started": false,
|
|
301
|
+
"id": "CFG_CABINET",
|
|
302
|
+
"shortDescription": "Configuring Hardware location",
|
|
303
|
+
"completed": false,
|
|
304
|
+
"status": {
|
|
305
|
+
"percentage": 0.0,
|
|
306
|
+
"description": [{
|
|
307
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
308
|
+
"messageID": "1027_LONG"
|
|
309
|
+
}],
|
|
310
|
+
"state": "Stopped_With_Error"
|
|
311
|
+
}
|
|
312
|
+
}, {
|
|
313
|
+
"longDescription": "Completing endpoint management job",
|
|
314
|
+
"userAction": "",
|
|
315
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
316
|
+
"messageID": "1114_SHORT",
|
|
317
|
+
"progress": 0.0,
|
|
318
|
+
"started": true,
|
|
319
|
+
"id": "MANAGESTOP",
|
|
320
|
+
"shortDescription": "Completing",
|
|
321
|
+
"completed": false,
|
|
322
|
+
"status": {
|
|
323
|
+
"percentage": 0.0,
|
|
324
|
+
"description": [{
|
|
325
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
326
|
+
"messageID": "1027_LONG"
|
|
327
|
+
}],
|
|
328
|
+
"state": "Running"
|
|
329
|
+
}
|
|
330
|
+
}],
|
|
331
|
+
"percentage": 100.0,
|
|
332
|
+
"description": [{
|
|
333
|
+
"messageBundle": "com.lenovo.lxca.discovery.bundle.tasks.messages",
|
|
334
|
+
"messageID": "1027_LONG"
|
|
335
|
+
}],
|
|
336
|
+
"state": "Stopped_With_Error"
|
|
337
|
+
}
|
|
338
|
+
}],
|
|
339
|
+
"status": "INCOMPLETE"
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
+ Response 400
|
|
343
|
+
+ Response 401
|
|
344
|
+
+ Response 404
|
|
345
|
+
+ Response 409
|
|
346
|
+
+ Response 500
|
|
347
|
+
|
|
348
|
+
# POST /manageRequest
|
|
349
|
+
+ Request (application/json)
|
|
350
|
+
|
|
351
|
+
+ Response 200 (application/json)
|
|
352
|
+
+ Headers
|
|
353
|
+
Location: /manageRequest/jobs/4229
|
|
354
|
+
|
|
355
|
+
+ Response 400
|
|
356
|
+
+ Response 401
|
|
357
|
+
+ Response 404
|
|
358
|
+
+ Response 409
|
|
359
|
+
+ Response 500
|
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
FORMAT: 1A
|
|
2
|
+
|
|
3
|
+
# XClarity UpdateComp
|
|
4
|
+
|
|
5
|
+
# Components [/updatableComponents]
|
|
6
|
+
|
|
7
|
+
## Retrieve [GET]
|
|
8
|
+
+ Response 200
|
|
9
|
+
{
|
|
10
|
+
"DeviceList": [
|
|
11
|
+
{
|
|
12
|
+
"CMMList": [
|
|
13
|
+
{
|
|
14
|
+
"UpdateStatus": {
|
|
15
|
+
"JobID": 1,
|
|
16
|
+
"PercentComplete": 1,
|
|
17
|
+
"Phase": "Applying",
|
|
18
|
+
"StartTime": "2015-04-13 12:50:31.077",
|
|
19
|
+
"State": "InProgress",
|
|
20
|
+
"Status": "Active",
|
|
21
|
+
"TaskID": 1
|
|
22
|
+
},
|
|
23
|
+
"UUID": "6134AFCEA91311E199A5A45AC8953137"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"ServerList": [
|
|
29
|
+
{
|
|
30
|
+
"UUID": "8BFBADCC33CB11E499F740F2E9903640",
|
|
31
|
+
"Components": [{
|
|
32
|
+
"Component": "System Prerequisites",
|
|
33
|
+
"UpdateStatus": {
|
|
34
|
+
"JobID": 1,
|
|
35
|
+
"PercentComplete": 0,
|
|
36
|
+
"Phase": "Queued",
|
|
37
|
+
"State": "Blocked",
|
|
38
|
+
"Status": "Queued",
|
|
39
|
+
"TaskID": 4
|
|
40
|
+
},
|
|
41
|
+
"Weight": 1
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"Component": "ITE",
|
|
45
|
+
"UpdateStatus": {
|
|
46
|
+
"CurrentComponent": {
|
|
47
|
+
"Component": "Queued"
|
|
48
|
+
},
|
|
49
|
+
"PercentComplete": 0,
|
|
50
|
+
"State": "NotStarted",
|
|
51
|
+
"Status": "Active",
|
|
52
|
+
"TotalComplete": 0,
|
|
53
|
+
"TotalComponents": 32
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"UUID": "0CDF130FDFC211E392806CAE8B704250",
|
|
60
|
+
"Components": [
|
|
61
|
+
{
|
|
62
|
+
"Component": "System Prerequisites",
|
|
63
|
+
"UpdateStatus": {
|
|
64
|
+
"JobID": 1,
|
|
65
|
+
"PercentComplete": 0,
|
|
66
|
+
"Phase": "Queued",
|
|
67
|
+
"State": "Blocked",
|
|
68
|
+
"Status": "Queued",
|
|
69
|
+
"TaskID": 64
|
|
70
|
+
},
|
|
71
|
+
"Weight": 1
|
|
72
|
+
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"Component": "ITE",
|
|
76
|
+
"UpdateStatus": {
|
|
77
|
+
"CurrentComponent": {
|
|
78
|
+
"Component": "Queued"
|
|
79
|
+
},
|
|
80
|
+
"PercentComplete": 0,
|
|
81
|
+
"State": "NotStarted",
|
|
82
|
+
"Status": "Active",
|
|
83
|
+
"TotalComplete": 0,
|
|
84
|
+
"TotalComponents": 30
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"SwitchList": [
|
|
93
|
+
{
|
|
94
|
+
"ReadinessCheck": {
|
|
95
|
+
"ElapsedTime": "00:00:00:01.509",
|
|
96
|
+
"ElapsedTimeFormatted": "1 second 509 milliseconds",
|
|
97
|
+
"EndTime": "2016-04-07 23:44:10.366",
|
|
98
|
+
"JobID": 1,
|
|
99
|
+
"PercentComplete": 100,
|
|
100
|
+
"Phase": "Complete",
|
|
101
|
+
"StartTime": "2016-04-07 23:44:08.857",
|
|
102
|
+
"State": "Complete",
|
|
103
|
+
"Status": "Failed",
|
|
104
|
+
"TaskID": 1,
|
|
105
|
+
"Message": {
|
|
106
|
+
"result": "informational",
|
|
107
|
+
"messages": [
|
|
108
|
+
{
|
|
109
|
+
"id": "FQXHMUP1000I",
|
|
110
|
+
"text": "The command completed successfully."
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"id": "FQXHMUP4545L",
|
|
114
|
+
"text": "The device is not ready for an update.",
|
|
115
|
+
"explanation": "The device did not pass validation for firmware updates..",
|
|
116
|
+
"recovery": {
|
|
117
|
+
"text": "Correct the issues discovered by validation checks."
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"UpdateStatus": {
|
|
124
|
+
"EndTime": "2016-04-07 23:44:10.869",
|
|
125
|
+
"JobID": 1,
|
|
126
|
+
"PercentComplete": 100,
|
|
127
|
+
"Phase": "Complete",
|
|
128
|
+
"State": "Complete",
|
|
129
|
+
"Status": "Canceled",
|
|
130
|
+
"TaskID": 3,
|
|
131
|
+
"Message": {
|
|
132
|
+
"result": "warning",
|
|
133
|
+
"messages": [
|
|
134
|
+
{
|
|
135
|
+
"id": "FQXHMUP4086F",
|
|
136
|
+
"text": "The RackSwitch G7052 xHMCUpdates task was canceled.",
|
|
137
|
+
"explanation": "The task was canceled",
|
|
138
|
+
"recovery": {
|
|
139
|
+
"text": "Try to perform the update again.If the problem persists"
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"UUID": "0b0f5101bb8844b8b2d1c1aaeb24f446"
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
"UpdateStatusMetrics": {
|
|
151
|
+
"TotaldeviceUpdates": 6,
|
|
152
|
+
"TotaldeviceUpdatesActive": 6,
|
|
153
|
+
"TotaldeviceUpdatesComplete": 0,
|
|
154
|
+
"TotaldeviceUpdatesInProgress": 1,
|
|
155
|
+
"TotalJobs": 1,
|
|
156
|
+
"TotalJobsComplete": 0,
|
|
157
|
+
"TotalJobsInProgress": 1,
|
|
158
|
+
"TotalJobsPercentComplete": 0,
|
|
159
|
+
"TotalSupportTasks": 18,
|
|
160
|
+
"TotalSupportTasksActive": 18,
|
|
161
|
+
"TotalTasks": 93,
|
|
162
|
+
"TotalTasksBlocked": 92,
|
|
163
|
+
"TotalTasksCanceled": 0,
|
|
164
|
+
"TotalTasksComplete": 0,
|
|
165
|
+
"TotalTasksFailed": 0,
|
|
166
|
+
"TotalTasksInProgress": 1,
|
|
167
|
+
"TotalTasksSuccess": 0,
|
|
168
|
+
"TotalUpdateTasks": 75,
|
|
169
|
+
"TotalUpdateTasksActive": 72
|
|
170
|
+
},
|
|
171
|
+
"result": "informational",
|
|
172
|
+
"messages": [
|
|
173
|
+
{
|
|
174
|
+
"id": "FQXHMUP4091I",
|
|
175
|
+
"text": "Update Status was obtained successfully."
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
+ Response 400
|
|
181
|
+
+ Response 401
|
|
182
|
+
+ Response 404
|
|
183
|
+
+ Response 409
|
|
184
|
+
+ Response 500
|
|
185
|
+
|
|
186
|
+
# Components [/updatableComponents?action=getComponents]
|
|
187
|
+
|
|
188
|
+
## Retrieve [GET]
|
|
189
|
+
+ Response 200
|
|
190
|
+
{
|
|
191
|
+
"DeviceList": [
|
|
192
|
+
{
|
|
193
|
+
"CMMList": [
|
|
194
|
+
{
|
|
195
|
+
"UpdateStatus": {
|
|
196
|
+
"JobID": 1,
|
|
197
|
+
"PercentComplete": 1,
|
|
198
|
+
"Phase": "Applying",
|
|
199
|
+
"StartTime": "2015-04-13 12:50:31.077",
|
|
200
|
+
"State": "InProgress",
|
|
201
|
+
"Status": "Active",
|
|
202
|
+
"TaskID": 1
|
|
203
|
+
},
|
|
204
|
+
"UUID": "6134AFCEA91311E199A5A45AC8953137"
|
|
205
|
+
}
|
|
206
|
+
]
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"ServerList": [
|
|
210
|
+
{
|
|
211
|
+
"UUID": "8BFBADCC33CB11E499F740F2E9903640",
|
|
212
|
+
"Components": [
|
|
213
|
+
{
|
|
214
|
+
"Component": "System Prerequisites",
|
|
215
|
+
"UpdateStatus": {
|
|
216
|
+
"JobID": 1,
|
|
217
|
+
"PercentComplete": 0,
|
|
218
|
+
"Phase": "Queued",
|
|
219
|
+
"State": "Blocked",
|
|
220
|
+
"Status": "Queued",
|
|
221
|
+
"TaskID": 4
|
|
222
|
+
},
|
|
223
|
+
"Weight": 1
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"Component": "ITE",
|
|
227
|
+
"UpdateStatus": {
|
|
228
|
+
"CurrentComponent": {
|
|
229
|
+
"Component": "Queued"
|
|
230
|
+
},
|
|
231
|
+
"PercentComplete": 0,
|
|
232
|
+
"State": "NotStarted",
|
|
233
|
+
"Status": "Active",
|
|
234
|
+
"TotalComplete": 0,
|
|
235
|
+
"TotalComponents": 32
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
]
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"UUID": "0CDF130FDFC211E392806CAE8B704250",
|
|
242
|
+
"Components": [
|
|
243
|
+
{
|
|
244
|
+
"Component": "System Prerequisites",
|
|
245
|
+
"UpdateStatus": {
|
|
246
|
+
"JobID": 1,
|
|
247
|
+
"PercentComplete": 0,
|
|
248
|
+
"Phase": "Queued",
|
|
249
|
+
"State": "Blocked",
|
|
250
|
+
"Status": "Queued",
|
|
251
|
+
"TaskID": 64
|
|
252
|
+
},
|
|
253
|
+
"Weight": 1
|
|
254
|
+
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"Component": "ITE",
|
|
258
|
+
"UpdateStatus": {
|
|
259
|
+
"CurrentComponent": {
|
|
260
|
+
"Component": "Queued"
|
|
261
|
+
},
|
|
262
|
+
"PercentComplete": 0,
|
|
263
|
+
"State": "NotStarted",
|
|
264
|
+
"Status": "Active",
|
|
265
|
+
"TotalComplete": 0,
|
|
266
|
+
"TotalComponents": 30
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"SwitchList": [
|
|
275
|
+
{
|
|
276
|
+
"ReadinessCheck": {
|
|
277
|
+
"ElapsedTime": "00:00:00:01.509",
|
|
278
|
+
"ElapsedTimeFormatted": "1 second 509 milliseconds",
|
|
279
|
+
"EndTime": "2016-04-07 23:44:10.366",
|
|
280
|
+
"JobID": 1,
|
|
281
|
+
"PercentComplete": 100,
|
|
282
|
+
"Phase": "Complete",
|
|
283
|
+
"StartTime": "2016-04-07 23:44:08.857",
|
|
284
|
+
"State": "Complete",
|
|
285
|
+
"Status": "Failed",
|
|
286
|
+
"TaskID": 1,
|
|
287
|
+
"Message": {
|
|
288
|
+
"result": "informational",
|
|
289
|
+
"messages": [
|
|
290
|
+
{
|
|
291
|
+
"id": "FQXHMUP1000I",
|
|
292
|
+
"text": "The command completed successfully."
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"id": "FQXHMUP4545L",
|
|
296
|
+
"text": "The device is not ready for an update.",
|
|
297
|
+
"explanation": "The device did not pass validation for firmware updates..",
|
|
298
|
+
"recovery": {
|
|
299
|
+
"text": "Correct the issues discovered by validation checks."
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
]
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
"UpdateStatus": {
|
|
306
|
+
"EndTime": "2016-04-07 23:44:10.869",
|
|
307
|
+
"JobID": 1,
|
|
308
|
+
"PercentComplete": 100,
|
|
309
|
+
"Phase": "Complete",
|
|
310
|
+
"State": "Complete",
|
|
311
|
+
"Status": "Canceled",
|
|
312
|
+
"TaskID": 3,
|
|
313
|
+
"Message": {
|
|
314
|
+
"result": "warning",
|
|
315
|
+
"messages": [
|
|
316
|
+
{
|
|
317
|
+
"id": "FQXHMUP4086F",
|
|
318
|
+
"text": "The RackSwitch G7052 xHMCUpdates task was canceled.",
|
|
319
|
+
"explanation": "The task was canceled",
|
|
320
|
+
"recovery": {
|
|
321
|
+
"text": "Try to perform the update again"
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
]
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
"UUID": "0b0f5101bb8844b8b2d1c1aaeb24f446"
|
|
328
|
+
}
|
|
329
|
+
]
|
|
330
|
+
}
|
|
331
|
+
],
|
|
332
|
+
"UpdateStatusMetrics": {
|
|
333
|
+
"TotaldeviceUpdates": 6,
|
|
334
|
+
"TotaldeviceUpdatesActive": 6,
|
|
335
|
+
"TotaldeviceUpdatesComplete": 0,
|
|
336
|
+
"TotaldeviceUpdatesInProgress": 1,
|
|
337
|
+
"TotalJobs": 1,
|
|
338
|
+
"TotalJobsComplete": 0,
|
|
339
|
+
"TotalJobsInProgress": 1,
|
|
340
|
+
"TotalJobsPercentComplete": 0,
|
|
341
|
+
"TotalSupportTasks": 18,
|
|
342
|
+
"TotalSupportTasksActive": 18,
|
|
343
|
+
"TotalTasks": 93,
|
|
344
|
+
"TotalTasksBlocked": 92,
|
|
345
|
+
"TotalTasksCanceled": 0,
|
|
346
|
+
"TotalTasksComplete": 0,
|
|
347
|
+
"TotalTasksFailed": 0,
|
|
348
|
+
"TotalTasksInProgress": 1,
|
|
349
|
+
"TotalTasksSuccess": 0,
|
|
350
|
+
"TotalUpdateTasks": 75,
|
|
351
|
+
"TotalUpdateTasksActive": 72
|
|
352
|
+
},
|
|
353
|
+
"result": "informational",
|
|
354
|
+
"messages": [
|
|
355
|
+
{
|
|
356
|
+
"id": "FQXHMUP4091I",
|
|
357
|
+
"text": "Update Status was obtained successfully."
|
|
358
|
+
}
|
|
359
|
+
]
|
|
360
|
+
}
|
|
361
|
+
+ Response 400
|
|
362
|
+
+ Response 401
|
|
363
|
+
+ Response 404
|
|
364
|
+
+ Response 409
|
|
365
|
+
+ Response 500
|
|
366
|
+
|
|
367
|
+
# Components [/updatableComponents{?action,activationMode,onErrorMode,forceUpdateMode}]
|
|
368
|
+
|
|
369
|
+
+ Parameters
|
|
370
|
+
+ action - The action to take. This can be one of the following values - apply, cancelApply, powerState
|
|
371
|
+
+ activationMode - Indicates when to activate the update. This can be one of the following values - immediate, delayed
|
|
372
|
+
+ forceUpdateMode - Indicates whether to apply the update if firmware is already compliant. This can be one of the following values - true, false
|
|
373
|
+
+ onErrorMode - Indicates how to handle errors during the firmware update. This can be one of the following values - stopOnError, stopdeviceOnError, continueOnError
|
|
374
|
+
|
|
375
|
+
## Apply [PUT]
|
|
376
|
+
+ Request (application/json)
|
|
377
|
+
{
|
|
378
|
+
"DeviceList": [
|
|
379
|
+
{
|
|
380
|
+
"ServerList":[{"UUID": "8BFBADCC33CB11E499F740F2E9903640","Components": [{"Fixid": "lnvgy_fw_storage_1.1.1","Component": "Controller a"}]}]
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"SwitchList":[{"UUID": "8BFBADCC33CB11E499F740F2E9903640","Components": [{"Fixid": "lnvgy_fw_scsw_en4093r-8.3.9.0_anyons_noarch","Component": "Main application"}]}]
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"StorageList":[{"UUID": "8BFBADCC33CB11E499F740F2E9903640","Components": [{"Fixid": "lnvgy_fw_storage_1.1.1","Component": "Controller a"}]}]
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"CMMList":[{"UUID": "8BFBADCC33CB11E499F740F2E9903640","Components": [{"Fixid": "lnvgy_fw_storage_1.1.1","Component": "Controller a"}]
|
|
390
|
+
}
|
|
391
|
+
]
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
+ Response 200
|
|
395
|
+
|
|
396
|
+
+ Response 400
|
|
397
|
+
+ Response 401
|
|
398
|
+
+ Response 404
|
|
399
|
+
+ Response 409
|
|
400
|
+
+ Response 500
|
|
401
|
+
|
|
402
|
+
+ Request (application/json)
|
|
403
|
+
{
|
|
404
|
+
"DeviceList": [
|
|
405
|
+
{
|
|
406
|
+
"ServerList":[{"PowerState": "reset","UUID": "8BFBADCC33CB11E499F740F2E9972457"}]
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
"SwitchList":[{"PowerState": "powerOn","UUID": "8BFBADCC33CB11E499F740F2E9972458"}]
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"StorageList":[{"PowerState": "powerCycleSoft","UUID": "8BFBADCC33CB11E499F740F2E9972457"}]
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"CMMList":[{"PowerState": "reset","UUID": "8BFBADCC33CB11E499F740F2E213123"}]
|
|
416
|
+
}
|
|
417
|
+
]
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
+ Response 200
|
|
421
|
+
|
|
422
|
+
+ Response 400
|
|
423
|
+
+ Response 401
|
|
424
|
+
+ Response 404
|
|
425
|
+
+ Response 409
|
|
426
|
+
+ Response 500
|
data/docs/apib/update_repo.apib
CHANGED
|
@@ -1547,60 +1547,3 @@ FORMAT: 1A
|
|
|
1547
1547
|
+ Response 404
|
|
1548
1548
|
+ Response 409
|
|
1549
1549
|
+ Response 500
|
|
1550
|
-
|
|
1551
|
-
# XClarity Update Repositories [/updatableComponents{?action,with,filetypes}]
|
|
1552
|
-
|
|
1553
|
-
+ Parameters
|
|
1554
|
-
+ action - The action to take. This can be one of the following values - read, refresh, acquire, delete, export
|
|
1555
|
-
+ with - The scope of the action. This can be one of the following values - all, latest, payloads
|
|
1556
|
-
+ filetypes - When action=delete or action=export is specified, this parameter is used. Value can be set to payloads
|
|
1557
|
-
|
|
1558
|
-
## Update Repo [PUT]
|
|
1559
|
-
+ Request (application/json)
|
|
1560
|
-
{
|
|
1561
|
-
"mt": [
|
|
1562
|
-
"7167"
|
|
1563
|
-
],
|
|
1564
|
-
"os": "",
|
|
1565
|
-
"type": "catalog"
|
|
1566
|
-
}
|
|
1567
|
-
+ Response 200
|
|
1568
|
-
|
|
1569
|
-
+ Response 400
|
|
1570
|
-
+ Response 401
|
|
1571
|
-
+ Response 404
|
|
1572
|
-
+ Response 409
|
|
1573
|
-
+ Response 500
|
|
1574
|
-
|
|
1575
|
-
+ Request (application/json)
|
|
1576
|
-
{
|
|
1577
|
-
"fixids": [
|
|
1578
|
-
"brcd_fw_bcsw_nos5.0.1_anyos_noarch",
|
|
1579
|
-
"brcd_fw_cna_3.2.4.0_linux_32-64",
|
|
1580
|
-
"brcd_fw_cna_3.2.3.0_linux_32-64",
|
|
1581
|
-
"lenovo_fw_dsa_dsyte2f-9.61_anyos_32-64"
|
|
1582
|
-
],
|
|
1583
|
-
"mt": "0000",
|
|
1584
|
-
"type": "latest"
|
|
1585
|
-
}
|
|
1586
|
-
+ Response 200
|
|
1587
|
-
|
|
1588
|
-
+ Response 400
|
|
1589
|
-
+ Response 401
|
|
1590
|
-
+ Response 404
|
|
1591
|
-
+ Response 409
|
|
1592
|
-
+ Response 500
|
|
1593
|
-
|
|
1594
|
-
+ Request (application/json)
|
|
1595
|
-
{
|
|
1596
|
-
"fixids": [
|
|
1597
|
-
"lnvgy_fw_cmm_1aon01k-1.0.0k_anyos_noarch"
|
|
1598
|
-
]
|
|
1599
|
-
}
|
|
1600
|
-
+ Response 200
|
|
1601
|
-
|
|
1602
|
-
+ Response 400
|
|
1603
|
-
+ Response 401
|
|
1604
|
-
+ Response 404
|
|
1605
|
-
+ Response 409
|
|
1606
|
-
+ Response 500
|
|
@@ -31,7 +31,9 @@ module XClarityClient
|
|
|
31
31
|
include XClarityClient::Mixins::StorageMixin
|
|
32
32
|
include XClarityClient::Mixins::SwitchMixin
|
|
33
33
|
include XClarityClient::Mixins::UnmanageRequestMixin
|
|
34
|
+
include XClarityClient::Mixins::ManageRequestMixin
|
|
34
35
|
include XClarityClient::Mixins::UpdateRepoMixin
|
|
36
|
+
include XClarityClient::Mixins::UpdateCompMixin
|
|
35
37
|
include XClarityClient::Mixins::UserMixin
|
|
36
38
|
|
|
37
39
|
def initialize(config)
|
|
@@ -26,7 +26,9 @@ require 'xclarity_client/endpoints/scalable_complex'
|
|
|
26
26
|
require 'xclarity_client/endpoints/switch'
|
|
27
27
|
require 'xclarity_client/endpoints/storage'
|
|
28
28
|
require 'xclarity_client/endpoints/unmanage_request'
|
|
29
|
+
require 'xclarity_client/endpoints/manage_request'
|
|
29
30
|
require 'xclarity_client/endpoints/update_repo'
|
|
31
|
+
require 'xclarity_client/endpoints/update_comp'
|
|
30
32
|
require 'xclarity_client/endpoints/user'
|
|
31
33
|
require 'xclarity_client/endpoints/remote_access'
|
|
32
34
|
require 'xclarity_client/endpoints/globalsettings'
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module XClarityClient
|
|
2
|
+
# ManageRequest class
|
|
3
|
+
class ManageRequest < Endpoints::XclarityEndpoint
|
|
4
|
+
BASE_URI = '/manageRequest'.freeze
|
|
5
|
+
LIST_NAME = 'manageRequestList'.freeze
|
|
6
|
+
|
|
7
|
+
attr_accessor :progress, :results, :messageBundle, :messageID,
|
|
8
|
+
:messageParameters, :result, :resultLongDescription,
|
|
9
|
+
:resultShortDescription, :status, :taskid, :time_spent, :uuid
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module XClarityClient
|
|
2
|
+
# update component class
|
|
3
|
+
class UpdateComp < Endpoints::XclarityEndpoint
|
|
4
|
+
BASE_URI = '/updatableComponents'.freeze
|
|
5
|
+
LIST_NAME = 'updateCompList'.freeze
|
|
6
|
+
|
|
7
|
+
attr_accessor :DeviceList, :CMMList, :ServerList, :StorageList, :SwitchList,
|
|
8
|
+
:UpdateStatusMetrics, :TotaldeviceUpdates,
|
|
9
|
+
:TotaldeviceUpdatesActive, :TotaldeviceUpdatesComplete,
|
|
10
|
+
:TotaldeviceUpdatesInProgress, :TotalJobs, :TotalJobsComplete,
|
|
11
|
+
:TotalJobsInProgress, :TotalJobsPercentComplete,
|
|
12
|
+
:TotalSupportTasks, :TotalSupportTasksActive, :TotalTasks,
|
|
13
|
+
:TotalTasksBlocked, :TotalTasksCanceled, :TotalTasksComplete,
|
|
14
|
+
:TotalTasksFailed, :TotalTasksInProgress, :TotalTasksSuccess,
|
|
15
|
+
:TotalUpdateTasksActive, :TotalUpdateTasks, :result,
|
|
16
|
+
:messages, :id, :text
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
module XClarityClient
|
|
2
|
+
#
|
|
3
|
+
# Exposes ManageRequestManagement features
|
|
4
|
+
#
|
|
5
|
+
module Mixins::ManageRequestMixin
|
|
6
|
+
def fetch_manage_request(job_id)
|
|
7
|
+
ManageRequestManagement.new(@config).fetch_manage_request(job_id)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def get_job_progress(dji, discovery_job_progress)
|
|
11
|
+
discovery_result = DiscoverRequestManagement.new(@config)\
|
|
12
|
+
.monitor_discover_request(dji)
|
|
13
|
+
discovery_result.map do |req|
|
|
14
|
+
req.instance_variables.each do |attr|
|
|
15
|
+
value = req.instance_variable_get(attr)
|
|
16
|
+
discovery_job_progress = value if attr.id2name.eql?('@progress')
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
{ :discovery_job_progress => discovery_job_progress,
|
|
20
|
+
:discovery_result => discovery_result }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def get_discovery_result(discovery_job_id)
|
|
24
|
+
discovery_job_id = discovery_job_id[:location].split('/')[3]
|
|
25
|
+
discovery_job_progress = 0
|
|
26
|
+
return false if discovery_job_id.nil?
|
|
27
|
+
while discovery_job_progress < 100
|
|
28
|
+
sleep 30
|
|
29
|
+
opts = get_job_progress(discovery_job_id, discovery_job_progress)
|
|
30
|
+
discovery_job_progress = opts[:discovery_job_progress]
|
|
31
|
+
end
|
|
32
|
+
opts[:discovery_result]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def update_manage_request(manage_request, force, discovery_result)
|
|
36
|
+
ManageRequestManagement.new(@config)\
|
|
37
|
+
.update_manage_request(manage_request,
|
|
38
|
+
force,
|
|
39
|
+
discovery_result)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def manage_discovered_devices(manage_request, force)
|
|
43
|
+
discovery_job_id = DiscoverRequestManagement.new(@config)\
|
|
44
|
+
.discover_manageable_devices(
|
|
45
|
+
manage_request[:ip_address]
|
|
46
|
+
)
|
|
47
|
+
d_res = get_discovery_result(discovery_job_id)
|
|
48
|
+
raise 'manageable device Discovery failed' unless d_res
|
|
49
|
+
update_manage_request(manage_request, force, d_res)
|
|
50
|
+
ManageRequestManagement.new(@config)\
|
|
51
|
+
.manage_discovered_devices(manage_request)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -34,5 +34,7 @@ require 'xclarity_client/mixins/scalable_complex_mixin'
|
|
|
34
34
|
require 'xclarity_client/mixins/storage_mixin'
|
|
35
35
|
require 'xclarity_client/mixins/switch_mixin'
|
|
36
36
|
require 'xclarity_client/mixins/unmanage_request_mixin'
|
|
37
|
+
require 'xclarity_client/mixins/manage_request_mixin'
|
|
37
38
|
require 'xclarity_client/mixins/update_repo_mixin'
|
|
39
|
+
require 'xclarity_client/mixins/update_comp_mixin'
|
|
38
40
|
require 'xclarity_client/mixins/user_mixin'
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module XClarityClient
|
|
2
|
+
#
|
|
3
|
+
# Exposes UpdateCompManagement features
|
|
4
|
+
#
|
|
5
|
+
module Mixins::UpdateCompMixin
|
|
6
|
+
def discover_firmware_update_status
|
|
7
|
+
UpdateCompManagement.new(@config).fetch_all
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def discover_updatable_device_comp
|
|
11
|
+
UpdateCompManagement.new(@config).updatable_device_comp
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def apply_firmware_update(opts, activation_mode = nil,
|
|
15
|
+
force_update_mode = nil, onerror_mode = nil)
|
|
16
|
+
UpdateCompManagement.new(@config).apply_firmware_update(opts,
|
|
17
|
+
activation_mode,
|
|
18
|
+
force_update_mode,
|
|
19
|
+
onerror_mode)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def cancel_firmware_update(server = nil, switch = nil, storage = nil,
|
|
23
|
+
cmm = nil)
|
|
24
|
+
UpdateCompManagement.new(@config).cancel_firmware_update(server,
|
|
25
|
+
switch,
|
|
26
|
+
storage,
|
|
27
|
+
cmm)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def modify_power_state(server = nil, switch = nil, storage = nil, cmm = nil)
|
|
31
|
+
UpdateCompManagement.new(@config).modify_power_state(server,
|
|
32
|
+
switch,
|
|
33
|
+
storage,
|
|
34
|
+
cmm)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
module XClarityClient
|
|
4
|
+
# manage request management class
|
|
5
|
+
class ManageRequestManagement < Services::XClarityService
|
|
6
|
+
manages_endpoint ManageRequest
|
|
7
|
+
|
|
8
|
+
def manage_discovered_devices(manage_request)
|
|
9
|
+
@connection.do_post(ManageRequest::BASE_URI,
|
|
10
|
+
JSON.generate([manage_request]))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def populate_manage_req_with_security_descriptor(manage_request, val)
|
|
14
|
+
security_descriptor = {}
|
|
15
|
+
val = val['securityDescriptor']
|
|
16
|
+
security_descriptor[:managedAuthEnabled] = val['managedAuthSupported']
|
|
17
|
+
security_descriptor[:managedAuthSupported] = val['managedAuthSupported']
|
|
18
|
+
res = security_descriptor[:managedAuthEnabled]
|
|
19
|
+
security_descriptor[:storedCredentials] = val['storedCredentials'] if res
|
|
20
|
+
manage_request[:securityDescriptor] = security_descriptor
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def parse_manage_request(manage_request, val)
|
|
24
|
+
return false unless val.kind_of?(Array) && !val.empty?
|
|
25
|
+
manage_request[:managementPorts] = val[0]['managementPorts']
|
|
26
|
+
manage_request[:type] = val[0]['type']
|
|
27
|
+
manage_request[:uuid] = val[0]['uuid']
|
|
28
|
+
discovery_ip_addr = val[0]['ipAddresses'][0]
|
|
29
|
+
manage_request[:ipAddresses] = [discovery_ip_addr]
|
|
30
|
+
manage_request[:os] = val[0]['os'] if val[0]['type'] == 'Rackswitch'
|
|
31
|
+
populate_manage_req_with_security_descriptor(manage_request, val[0])
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def populate_manage_request_with_discovery_res(discovery_result,
|
|
35
|
+
manage_request)
|
|
36
|
+
discovery_result.map do |req|
|
|
37
|
+
req.instance_variables.each do |attr|
|
|
38
|
+
val = req.instance_variable_get(attr)
|
|
39
|
+
parse_manage_request(manage_request, val)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def update_manage_request(manage_request, force, discovery_result)
|
|
45
|
+
populate_manage_request_with_discovery_res(discovery_result,
|
|
46
|
+
manage_request)
|
|
47
|
+
manage_request[:forceManage] = true if force.casecmp('true')
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def fetch_manage_request(job_id)
|
|
51
|
+
response = @connection.do_get(ManageRequest::BASE_URI + '/jobs/' + job_id)
|
|
52
|
+
return [] unless response.success?
|
|
53
|
+
body = JSON.parse(response.body)
|
|
54
|
+
body = { ManageRequest::LIST_NAME => body } if body.kind_of?(Array)
|
|
55
|
+
mrql = ManageRequest::LIST_NAME
|
|
56
|
+
body = { ManageRequest::LIST_NAME => [body] } unless body.key?(mrql)
|
|
57
|
+
body[ManageRequest::LIST_NAME].map do |resource_params|
|
|
58
|
+
ManageRequest.new(resource_params)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -34,6 +34,8 @@ require 'xclarity_client/services/scalable_complex_management'
|
|
|
34
34
|
require 'xclarity_client/services/switch_management'
|
|
35
35
|
require 'xclarity_client/services/storage_management'
|
|
36
36
|
require 'xclarity_client/services/unmanage_request_management'
|
|
37
|
+
require 'xclarity_client/services/manage_request_management'
|
|
37
38
|
require 'xclarity_client/services/update_repo_management'
|
|
39
|
+
require 'xclarity_client/services/update_comp_management'
|
|
38
40
|
require 'xclarity_client/services/user_management'
|
|
39
41
|
require 'xclarity_client/services/virtual_appliance_management'
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
module XClarityClient
|
|
4
|
+
# update component management class
|
|
5
|
+
class UpdateCompManagement < Services::XClarityService
|
|
6
|
+
manages_endpoint UpdateComp
|
|
7
|
+
|
|
8
|
+
def updatable_device_comp
|
|
9
|
+
response = @connection.do_get(UpdateComp::BASE_URI\
|
|
10
|
+
+ '?action=getComponents')
|
|
11
|
+
return [] unless response.success?
|
|
12
|
+
body = JSON.parse(response.body)
|
|
13
|
+
body = { UpdateComp::LIST_NAME => body } if body.kind_of?(Array)
|
|
14
|
+
j = body.key?(UpdateComp::LIST_NAME)
|
|
15
|
+
body = { UpdateComp::LIST_NAME => [body] } unless j
|
|
16
|
+
body[UpdateComp::LIST_NAME].map do |resource_params|
|
|
17
|
+
UpdateComp.new(resource_params)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def apply_firmware_update(opts, activation_mode, force_update_mode,
|
|
22
|
+
onerror_mode)
|
|
23
|
+
validate_arguments(activation_mode, force_update_mode, onerror_mode)
|
|
24
|
+
|
|
25
|
+
uri = create_uri(activation_mode, force_update_mode, onerror_mode)
|
|
26
|
+
|
|
27
|
+
apply_req = create_req_json(opts['server'], opts['switch'],
|
|
28
|
+
opts['storage'], opts['cmm'])
|
|
29
|
+
response = @connection.do_put(UpdateComp::BASE_URI + '?action=apply'\
|
|
30
|
+
+ uri, apply_req)
|
|
31
|
+
response.body
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def cancel_firmware_update(server, switch, storage, cmm)
|
|
35
|
+
cancel_req = create_req_json(server, switch, storage, cmm)
|
|
36
|
+
response = @connection.do_put(UpdateComp::BASE_URI\
|
|
37
|
+
+ '?action=cancelApply',
|
|
38
|
+
cancel_req)
|
|
39
|
+
response.body
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def modify_power_state(server, switch, storage, cmm)
|
|
43
|
+
power_state_req = create_req_json(server, switch, storage, cmm)
|
|
44
|
+
response = @connection.do_put(UpdateComp::BASE_URI + '?action=powerState',
|
|
45
|
+
power_state_req)
|
|
46
|
+
response.body
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def validate_activation_mode(activation_mode)
|
|
50
|
+
if !activation_mode.nil? && !activation_mode.casecmp('immediate').zero? &&
|
|
51
|
+
!activation_mode.casecmp('delayed').zero?
|
|
52
|
+
|
|
53
|
+
raise 'Invalid argument specified. Operation apply_firmware_update'\
|
|
54
|
+
+ ' can have activationMode as either immediare or delayed.'
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def validate_forceupdate_mode(forceupdate_mode)
|
|
59
|
+
if !forceupdate_mode.nil? && !forceupdate_mode.casecmp('true').zero? &&
|
|
60
|
+
!forceupdate_mode.casecmp('false').zero?
|
|
61
|
+
|
|
62
|
+
raise 'Invalid argument specified. Value for forceUpdateMode on'\
|
|
63
|
+
+ ' operation apply_firmware_update should have a value'\
|
|
64
|
+
+ ' of either true or false'
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def validate_onerror_mode(onerror_mode)
|
|
69
|
+
if !onerror_mode.nil? && !onerror_mode.eql?('stopOnError') &&
|
|
70
|
+
!onerror_mode.eql?('stopdeviceOnError') &&
|
|
71
|
+
!onerror_mode.eql?('continueOnError')
|
|
72
|
+
|
|
73
|
+
raise 'Invalid argument specified. Operation apply_firmware_update'\
|
|
74
|
+
+ " should have onErrorMode as : 'stopOnError' or"\
|
|
75
|
+
+ " 'stopdeviceOnError' or 'continueOnError'"
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def validate_arguments(activation_mode, forceupdate_mode, onerror_mode)
|
|
80
|
+
validate_activation_mode(activation_mode)
|
|
81
|
+
validate_forceupdate_mode(forceupdate_mode)
|
|
82
|
+
validate_onerror_mode(onerror_mode)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# splitted create_uri just to fix codeclimate error
|
|
86
|
+
def add_uri(force_update_mode, onerror_mode, uri)
|
|
87
|
+
fmode = force_update_mode.nil?
|
|
88
|
+
uri += '&forceUpdateMode=' + force_update_mode unless fmode
|
|
89
|
+
uri += '&onErrorMode=' + onerror_mode unless onerror_mode.nil?
|
|
90
|
+
uri
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def create_uri(activation_mode, force_update_mode, onerror_mode)
|
|
94
|
+
uri = ''
|
|
95
|
+
amode = activation_mode.nil?
|
|
96
|
+
uri += '&activationMode=' + activation_mode unless amode
|
|
97
|
+
add_uri(force_update_mode, onerror_mode, uri)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def create_req_json(server, switch, storage, cmm)
|
|
101
|
+
server_json = JSON.generate(:ServerList => server)
|
|
102
|
+
switch_json = JSON.generate(:SwitchList => switch)
|
|
103
|
+
storage_json = JSON.generate(:StorageList => storage)
|
|
104
|
+
cmm_json = JSON.generate(:CMMList => cmm)
|
|
105
|
+
|
|
106
|
+
req_json = "{\"DeviceList\": [#{server_json},#{switch_json},"\
|
|
107
|
+
+ "#{storage_json},#{cmm_json}]}"
|
|
108
|
+
req_json
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: xclarity_client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Manasa Rao
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2018-
|
|
12
|
+
date: 2018-10-22 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
@@ -204,6 +204,7 @@ files:
|
|
|
204
204
|
- docs/apib/fan_muxes.apib
|
|
205
205
|
- docs/apib/ffdc.apib
|
|
206
206
|
- docs/apib/jobs.apib
|
|
207
|
+
- docs/apib/manage_request.apib
|
|
207
208
|
- docs/apib/node.apib
|
|
208
209
|
- docs/apib/node_bmc.apib
|
|
209
210
|
- docs/apib/persisted_result.apib
|
|
@@ -213,6 +214,7 @@ files:
|
|
|
213
214
|
- docs/apib/storages.apib
|
|
214
215
|
- docs/apib/switches.apib
|
|
215
216
|
- docs/apib/unmanage_request.apib
|
|
217
|
+
- docs/apib/update_comp.apib
|
|
216
218
|
- docs/apib/update_repo.apib
|
|
217
219
|
- docs/apib/users.apib
|
|
218
220
|
- example/simple.rb
|
|
@@ -242,6 +244,7 @@ files:
|
|
|
242
244
|
- lib/xclarity_client/endpoints/globalsettings.rb
|
|
243
245
|
- lib/xclarity_client/endpoints/hostplatform.rb
|
|
244
246
|
- lib/xclarity_client/endpoints/job.rb
|
|
247
|
+
- lib/xclarity_client/endpoints/manage_request.rb
|
|
245
248
|
- lib/xclarity_client/endpoints/node.rb
|
|
246
249
|
- lib/xclarity_client/endpoints/osimage.rb
|
|
247
250
|
- lib/xclarity_client/endpoints/persisted_result.rb
|
|
@@ -252,6 +255,7 @@ files:
|
|
|
252
255
|
- lib/xclarity_client/endpoints/storage.rb
|
|
253
256
|
- lib/xclarity_client/endpoints/switch.rb
|
|
254
257
|
- lib/xclarity_client/endpoints/unmanage_request.rb
|
|
258
|
+
- lib/xclarity_client/endpoints/update_comp.rb
|
|
255
259
|
- lib/xclarity_client/endpoints/update_repo.rb
|
|
256
260
|
- lib/xclarity_client/endpoints/user.rb
|
|
257
261
|
- lib/xclarity_client/endpoints/xclarity_endpoint.rb
|
|
@@ -279,6 +283,7 @@ files:
|
|
|
279
283
|
- lib/xclarity_client/mixins/global_setting_mixin.rb
|
|
280
284
|
- lib/xclarity_client/mixins/host_platform_mixin.rb
|
|
281
285
|
- lib/xclarity_client/mixins/job_mixin.rb
|
|
286
|
+
- lib/xclarity_client/mixins/manage_request_mixin.rb
|
|
282
287
|
- lib/xclarity_client/mixins/mixins.rb
|
|
283
288
|
- lib/xclarity_client/mixins/node_mixin.rb
|
|
284
289
|
- lib/xclarity_client/mixins/os_image_mixin.rb
|
|
@@ -290,6 +295,7 @@ files:
|
|
|
290
295
|
- lib/xclarity_client/mixins/storage_mixin.rb
|
|
291
296
|
- lib/xclarity_client/mixins/switch_mixin.rb
|
|
292
297
|
- lib/xclarity_client/mixins/unmanage_request_mixin.rb
|
|
298
|
+
- lib/xclarity_client/mixins/update_comp_mixin.rb
|
|
293
299
|
- lib/xclarity_client/mixins/update_repo_mixin.rb
|
|
294
300
|
- lib/xclarity_client/mixins/user_mixin.rb
|
|
295
301
|
- lib/xclarity_client/schemas.rb
|
|
@@ -311,6 +317,7 @@ files:
|
|
|
311
317
|
- lib/xclarity_client/services/globalsettings_management.rb
|
|
312
318
|
- lib/xclarity_client/services/hostplatform_management.rb
|
|
313
319
|
- lib/xclarity_client/services/job_management.rb
|
|
320
|
+
- lib/xclarity_client/services/manage_request_management.rb
|
|
314
321
|
- lib/xclarity_client/services/mixins/endpoint_manager_mixin.rb
|
|
315
322
|
- lib/xclarity_client/services/mixins/list_name_interpreter_mixin.rb
|
|
316
323
|
- lib/xclarity_client/services/mixins/power_action_sender_mixin.rb
|
|
@@ -326,6 +333,7 @@ files:
|
|
|
326
333
|
- lib/xclarity_client/services/storage_management.rb
|
|
327
334
|
- lib/xclarity_client/services/switch_management.rb
|
|
328
335
|
- lib/xclarity_client/services/unmanage_request_management.rb
|
|
336
|
+
- lib/xclarity_client/services/update_comp_management.rb
|
|
329
337
|
- lib/xclarity_client/services/update_repo_management.rb
|
|
330
338
|
- lib/xclarity_client/services/user_management.rb
|
|
331
339
|
- lib/xclarity_client/services/virtual_appliance_management.rb
|