blob: 0f3b72952b9702be0a0ebbe47429e7df82364023 [file] [log] [blame]
Iftekharul Islam99d199f2017-03-24 15:28:25 -05001/**
2 * API utilities service
3 *
4 * @module app/common/services/api-utils
5 * @exports APIUtils
6 * @name APIUtils
7 * @version 0.0.1
8 */
9
10window.angular && (function (angular) {
11 'use strict';
12 angular
13 .module('app.common.services')
Iftekharul Islamf2d74642017-07-10 16:42:14 -050014 .factory('APIUtils', ['$http', 'Constants', '$q', function($http, Constants, $q){
Iftekharul Islam99d199f2017-03-24 15:28:25 -050015 var SERVICE = {
16 LOGIN_CREDENTIALS: Constants.LOGIN_CREDENTIALS,
17 API_CREDENTIALS: Constants.API_CREDENTIALS,
18 API_RESPONSE: Constants.API_RESPONSE,
19 CHASSIS_POWER_STATE: Constants.CHASSIS_POWER_STATE,
20 HOST_STATE_TEXT: Constants.HOST_STATE,
21 HOST_STATE: Constants.HOST_STATE,
Iftekharul Islamcd789502017-04-19 14:37:55 -050022 LED_STATE: Constants.LED_STATE,
23 LED_STATE_TEXT: Constants.LED_STATE_TEXT,
Iftekharul Islam99d199f2017-03-24 15:28:25 -050024 getChassisState: function(callback){
25 $http({
26 method: 'GET',
27 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/state/chassis0",
28 headers: {
29 'Accept': 'application/json',
30 'Content-Type': 'application/json'
31 },
32 withCredentials: true
33 }).success(function(response){
34 var json = JSON.stringify(response);
35 var content = JSON.parse(json);
36 callback(content.data.CurrentPowerState);
37 }).error(function(error){
38 console.log(error);
39 });
40 },
41 getHostState: function(callback){
42 $http({
43 method: 'GET',
44 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/state/host0",
45 headers: {
46 'Accept': 'application/json',
47 'Content-Type': 'application/json'
48 },
49 withCredentials: true
50 }).success(function(response){
51 var json = JSON.stringify(response);
52 var content = JSON.parse(json);
53 callback(content.data.CurrentHostState);
54 }).error(function(error){
55 console.log(error);
56 });
57 },
Iftekharul Islamcd789502017-04-19 14:37:55 -050058 getLEDState: function(callback){
59 $http({
60 method: 'GET',
61 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/led/groups/enclosure_identify",
62 headers: {
63 'Accept': 'application/json',
64 'Content-Type': 'application/json'
65 },
66 withCredentials: true
67 }).success(function(response){
68 var json = JSON.stringify(response);
69 var content = JSON.parse(json);
Iftekharul Islam54c22e42017-06-28 11:06:16 -050070 if(callback){
71 callback(content.data.Asserted);
72 }else{
73 return content.data.Asserted;
74 }
Iftekharul Islamcd789502017-04-19 14:37:55 -050075 }).error(function(error){
76 console.log(error);
77 });
78 },
Iftekharul Islam99d199f2017-03-24 15:28:25 -050079 login: function(username, password, callback){
80 $http({
81 method: 'POST',
82 url: SERVICE.API_CREDENTIALS.host + "/login",
83 headers: {
84 'Accept': 'application/json',
85 'Content-Type': 'application/json'
86 },
87 withCredentials: true,
88 data: JSON.stringify({"data": [username, password]})
89 }).success(function(response){
90 if(callback){
91 callback(response);
92 }
93 }).error(function(error){
94 if(callback){
Iftekharul Islamcd789502017-04-19 14:37:55 -050095 if(error && error.status && error.status == 'error'){
96 callback(error);
97 }else{
98 callback(error, true);
99 }
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500100 }
101 console.log(error);
102 });
103 },
104 logout: function(callback){
105 $http({
106 method: 'POST',
107 url: SERVICE.API_CREDENTIALS.host + "/logout",
108 headers: {
109 'Accept': 'application/json',
110 'Content-Type': 'application/json'
111 },
112 withCredentials: true,
113 data: JSON.stringify({"data": []})
114 }).success(function(response){
115 if(callback){
116 callback(response);
117 }
118 }).error(function(error){
119 if(callback){
120 callback(null, error);
121 }
122 console.log(error);
123 });
124 },
125 chassisPowerOn: function(callback){
126 $http({
127 method: 'POST',
128 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/state/host0",
129 headers: {
130 'Accept': 'application/json',
131 'Content-Type': 'application/json'
132 },
133 withCredentials: true,
134 data: JSON.stringify({"data": []})
135 }).success(function(response){
136 var json = JSON.stringify(response);
137 var content = JSON.parse(json);
138 if(callback){
139 return callback(content.data.CurrentPowerState);
140 }
141 }).error(function(error){
142 if(callback){
143 callback(error);
144 }else{
145 console.log(error);
146 }
147 });
148 },
149 chassisPowerOff: function(callback){
150 $http({
151 method: 'POST',
152 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/state/host0",
153 headers: {
154 'Accept': 'application/json',
155 'Content-Type': 'application/json'
156 },
157 withCredentials: true,
158 data: JSON.stringify({"data": []})
159 }).success(function(response){
160 var json = JSON.stringify(response);
161 var content = JSON.parse(json);
162 if(callback){
163 return callback(content.data.CurrentPowerState);
164 }
165 }).error(function(error){
166 if(callback){
167 callback(error);
168 }else{
169 console.log(error);
170 }
171 });
172 },
Iftekharul Islamcd789502017-04-19 14:37:55 -0500173 setLEDState: function(state, callback){
174 $http({
175 method: 'PUT',
176 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/led/groups/enclosure_identify/attr/Asserted",
177 headers: {
178 'Accept': 'application/json',
179 'Content-Type': 'application/json'
180 },
181 withCredentials: true,
182 data: JSON.stringify({"data": state})
183 }).success(function(response){
184 var json = JSON.stringify(response);
185 var content = JSON.parse(json);
186 if(callback){
187 return callback(content.status);
188 }
189 }).error(function(error){
190 if(callback){
191 callback(error);
192 }else{
193 console.log(error);
194 }
195 });
196 },
Iftekharul Islam55368122017-03-27 09:46:50 -0500197 bmcReboot: function(callback){
198 $http({
199 method: 'PUT',
200 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/state/bmc0/attr/RequestedBmcTransition",
201 headers: {
202 'Accept': 'application/json',
203 'Content-Type': 'application/json'
204 },
205 withCredentials: true,
206 data: JSON.stringify({"data": "xyz.openbmc_project.State.BMC.Transition.Reboot"})
207 }).success(function(response){
208 var json = JSON.stringify(response);
209 var content = JSON.parse(json);
210 if(callback){
211 return callback(content.status);
212 }
213 }).error(function(error){
214 if(callback){
215 callback(error);
216 }else{
217 console.log(error);
218 }
219 });
220 },
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500221 hostPowerOn: function(callback){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500222 $http({
223 method: 'PUT',
224 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/state/host0/attr/RequestedHostTransition",
225 headers: {
226 'Accept': 'application/json',
227 'Content-Type': 'application/json'
228 },
229 withCredentials: true,
230 data: JSON.stringify({"data": "xyz.openbmc_project.State.Host.Transition.On"})
231 }).success(function(response){
232 var json = JSON.stringify(response);
233 var content = JSON.parse(json);
234 if(callback){
235 return callback(content.status);
236 }
237 }).error(function(error){
238 if(callback){
239 callback(error);
240 }else{
241 console.log(error);
242 }
243 });
244 },
245 hostPowerOff: function(callback){
246 $http({
247 method: 'PUT',
248 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/state/host0/attr/RequestedHostTransition",
249 headers: {
250 'Accept': 'application/json',
251 'Content-Type': 'application/json'
252 },
253 withCredentials: true,
254 data: JSON.stringify({"data": "xyz.openbmc_project.State.Host.Transition.Off"})
255 }).success(function(response){
256 var json = JSON.stringify(response);
257 var content = JSON.parse(json);
258 if(callback){
259 return callback(content.status);
260 }
261 }).error(function(error){
262 if(callback){
263 callback(error);
264 }else{
265 console.log(error);
266 }
267 });
268 },
269 hostReboot: function(callback){
270 $http({
271 method: 'POST',
272 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/state/host0",
273 headers: {
274 'Accept': 'application/json',
275 'Content-Type': 'application/json'
276 },
277 withCredentials: true,
278 data: JSON.stringify({"data": []}),
279 }).success(function(response){
280 var json = JSON.stringify(response);
281 var content = JSON.parse(json);
282 if(callback){
283 return callback(content);
284 }
285 }).error(function(error){
286 if(callback){
287 callback(error);
288 }else{
289 console.log(error);
290 }
291 });
292 },
293 hostShutdown: function(callback){
294 $http({
295 method: 'POST',
296 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/state/host0",
297 headers: {
298 'Accept': 'application/json',
299 'Content-Type': 'application/json'
300 },
301 withCredentials: true,
302 data: JSON.stringify({"data": []})
303 }).success(function(response){
304 var json = JSON.stringify(response);
305 var content = JSON.parse(json);
306 if(callback){
307 return callback(content);
308 }
309 }).error(function(error){
310 if(callback){
311 callback(error);
312 }else{
313 console.log(error);
314 }
315 });
Iftekharul Islamcd789502017-04-19 14:37:55 -0500316 },
317 getLogs: function(callback){
318 $http({
319 method: 'GET',
320 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/logging/enumerate",
321 headers: {
322 'Accept': 'application/json',
323 'Content-Type': 'application/json'
324 },
325 withCredentials: true
326 }).success(function(response){
327 var json = JSON.stringify(response);
328 var content = JSON.parse(json);
329 var dataClone = JSON.parse(JSON.stringify(content.data));
330 var data = [];
331 var severityCode = '';
332 var priority = '';
Iftekharul Islamcd789502017-04-19 14:37:55 -0500333 var relatedItems = [];
334
335 for(var key in content.data){
336 if(content.data.hasOwnProperty(key) && content.data[key].hasOwnProperty('Id')){
337 var severityFlags = {low: false, medium: false, high: false};
338 severityCode = content.data[key].Severity.split(".").pop();
339 priority = Constants.SEVERITY_TO_PRIORITY_MAP[severityCode];
340 severityFlags[priority.toLowerCase()] = true;
341 relatedItems = [];
342 content.data[key].associations.forEach(function(item){
Iftekharul Islam532763f2017-04-25 09:44:40 -0500343 relatedItems.push(item[2]);
Iftekharul Islamcd789502017-04-19 14:37:55 -0500344 });
345
346 data.push(Object.assign({
347 path: key,
348 copied: false,
349 priority: priority,
350 severity_code: severityCode,
351 severity_flags: severityFlags,
352 additional_data: content.data[key].AdditionalData.join("\n"),
353 selected: false,
Iftekharul Islam8b4828a2017-04-19 14:37:55 -0500354 search_text: ("#" + content.data[key].Id + " " + severityCode + " " + content.data[key].Severity + " " + content.data[key].AdditionalData.join(" ")).toLowerCase(),
Iftekharul Islamcd789502017-04-19 14:37:55 -0500355 meta: false,
356 confirm: false,
357 related_items: relatedItems,
358 data: {key: key, value: content.data[key]}
359 }, content.data[key]));
360 }
361 }
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500362 if(callback){
363 callback(data, dataClone);
364 }else{
365 return data;
366 }
Iftekharul Islamcd789502017-04-19 14:37:55 -0500367 }).error(function(error){
368 console.log(error);
369 });
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500370 },
371 getAllSensorStatus: function(callback){
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500372 $http({
373 method: 'GET',
Iftekharul Islam8947e702017-07-27 10:28:07 -0500374 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/sensors/enumerate",
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500375 headers: {
376 'Accept': 'application/json',
377 'Content-Type': 'application/json'
378 },
379 withCredentials: true
380 }).success(function(response){
381 var json = JSON.stringify(response);
382 var content = JSON.parse(json);
383 var dataClone = JSON.parse(JSON.stringify(content.data));
384 var sensorData = [];
Iftekharul Islam8947e702017-07-27 10:28:07 -0500385 var severity = {};
386 var title = "";
387 var tempKeyParts = [];
388 var order = 0;
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500389
390 function getSensorStatus(reading){
Iftekharul Islam8947e702017-07-27 10:28:07 -0500391 var severityFlags = {critical: false, warning: false, normal: false}, severityText = '', order = 0;
392
393 if(reading.hasOwnProperty('CriticalLow') &&
394 reading.Value < reading.CriticalLow
395 ){
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500396 severityFlags.critical = true;
397 severityText = 'critical';
Iftekharul Islam8947e702017-07-27 10:28:07 -0500398 order = 2;
399 }else if(reading.hasOwnProperty('CriticalHigh') &&
400 reading.Value > reading.CriticalHigh
401 ){
402 severityFlags.critical = true;
403 severityText = 'critical';
404 order = 2;
405 }else if(reading.hasOwnProperty('CriticalLow') &&
406 reading.hasOwnProperty('WarningLow') &&
407 reading.Value >= reading.CriticalLow && reading.Value <= reading.WarningLow){
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500408 severityFlags.warning = true;
409 severityText = 'warning';
Iftekharul Islam8947e702017-07-27 10:28:07 -0500410 order = 1;
411 }else if(reading.hasOwnProperty('WarningHigh') &&
412 reading.hasOwnProperty('CriticalHigh') &&
413 reading.Value >= reading.WarningHigh && reading.Value <= reading.CriticalHigh){
414 severityFlags.warning = true;
415 severityText = 'warning';
416 order = 1;
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500417 }else{
418 severityFlags.normal = true;
419 severityText = 'normal';
420 }
Iftekharul Islam8947e702017-07-27 10:28:07 -0500421 return { flags: severityFlags, severityText: severityText, order: order};
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500422 }
423
424 for(var key in content.data){
425 if(content.data.hasOwnProperty(key) && content.data[key].hasOwnProperty('Unit')){
Iftekharul Islam8947e702017-07-27 10:28:07 -0500426
427 severity = getSensorStatus(content.data[key]);
428
429 if(!content.data[key].hasOwnProperty('CriticalLow')){
430 content.data[key].CriticalLow = "--";
431 content.data[key].CriticalHigh = "--";
432 }
433
434 if(!content.data[key].hasOwnProperty('WarningLow')){
435 content.data[key].WarningLow = "--";
436 content.data[key].WarningHigh = "--";
437 }
438
439 tempKeyParts = key.split("/");
440 title = tempKeyParts.pop();
441 title = tempKeyParts.pop() + '_' + title;
442 title = title.split("_").map(function(item){
443 return item.toLowerCase().charAt(0).toUpperCase() + item.slice(1);
444 }).reduce(function(prev, el){
445 return prev + " " + el;
446 });
447
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500448 sensorData.push(Object.assign({
449 path: key,
450 selected: false,
451 confirm: false,
452 copied: false,
Iftekharul Islam8947e702017-07-27 10:28:07 -0500453 title: title,
454 unit: Constants.SENSOR_UNIT_MAP[content.data[key].Unit],
455 severity_flags: severity.flags,
456 status: severity.severityText,
457 order: severity.order,
458 search_text: (title + " " + content.data[key].Value + " " +
459 Constants.SENSOR_UNIT_MAP[content.data[key].Unit] + " " +
460 severity.severityText + " " +
461 content.data[key].CriticalLow + " " +
462 content.data[key].CriticalHigh + " " +
463 content.data[key].WarningLow + " " +
464 content.data[key].WarningHigh + " "
465 ).toLowerCase(),
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500466 original_data: {key: key, value: content.data[key]}
467 }, content.data[key]));
468 }
469 }
470
Iftekharul Islam8947e702017-07-27 10:28:07 -0500471 callback(sensorData, dataClone);
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500472 }).error(function(error){
473 console.log(error);
474 });
Iftekharul Islamc0161392017-06-14 15:46:15 -0500475 },
476 getFirmwares: function(callback){
477 $http({
478 method: 'GET',
479 //url: SERVICE.API_CREDENTIALS.mock_host + "/software",
480 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/software/enumerate",
481 headers: {
482 'Accept': 'application/json',
483 'Content-Type': 'application/json'
484 },
485 withCredentials: true
486 }).success(function(response){
487 var json = JSON.stringify(response);
488 var content = JSON.parse(json);
489 var data = [];
490 var active = false;
491 var isExtended = false;
492 var bmcActiveVersion = "";
493 var hostActiveVersion = "";
494 var imageType = "";
495 var extendedVersions = [];
496
497 function getFormatedExtendedVersions(extendedVersion){
498 var versions = [];
499 extendedVersion = extendedVersion.split(",");
500
501 extendedVersion.forEach(function(item){
502 var parts = item.split("-");
503 var numberIndex = 0;
504 for(var i = 0; i < parts.length; i++){
505 if(/[0-9]/.test(parts[i])){
506 numberIndex = i;
507 break;
508 }
509 }
510 var titlePart = parts.splice(0, numberIndex);
511 titlePart = titlePart.join("");
512 titlePart = titlePart[0].toUpperCase() + titlePart.substr(1, titlePart.length);
513 var versionPart = parts.join("-");
514 versions.push({
515 title: titlePart,
516 version: versionPart
517 });
518 });
519
520 return versions;
521 }
522
523 for(var key in content.data){
524 if(content.data.hasOwnProperty(key) && content.data[key].hasOwnProperty('Version')){
525 active = (/\.Active$/).test(content.data[key].Activation);
526 imageType = content.data[key].Purpose.split(".").pop();
527 isExtended = content.data[key].hasOwnProperty('ExtendedVersion') && content.data[key].ExtendedVersion != "";
528 if(isExtended){
529 extendedVersions = getFormatedExtendedVersions(content.data[key].ExtendedVersion);
530 }
531 data.push(Object.assign({
532 path: key,
533 active: active,
534 imageId: key.split("/").pop(),
535 imageType: imageType,
536 isExtended: isExtended,
537 extended: {
538 show: false,
539 versions: extendedVersions
540 },
541 data: {key: key, value: content.data[key]}
542 }, content.data[key]));
543
544 if(active && imageType == 'BMC'){
545 bmcActiveVersion = content.data[key].Version;
546 }
547
548 if(active && imageType == 'Host'){
549 hostActiveVersion = content.data[key].Version;
550 }
551 }
552 }
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500553 if(callback){
554 callback(data, bmcActiveVersion, hostActiveVersion);
555 }else{
556 return(data, bmcActiveVersion, hostActiveVersion);
557 }
Iftekharul Islamc0161392017-06-14 15:46:15 -0500558 }).error(function(error){
559 console.log(error);
560 });
561 },
562 uploadImage: function(file, callback){
563 $http({
564 method: 'PUT',
565 timeout: 5 * 60 * 1000,
566 //url: 'http://localhost:3002/upload',
567 url: SERVICE.API_CREDENTIALS.host + "/upload/image/",
568 headers: {
569 'Accept': 'application/octet-stream',
570 'Content-Type': 'application/octet-stream'
571 },
572 withCredentials: true,
573 data: file
574 }).success(function(response){
575 var json = JSON.stringify(response);
576 var content = JSON.parse(json);
577 if(callback){
578 return callback(content);
579 }
580 }).error(function(error){
581 if(callback){
582 callback(error);
583 }else{
584 console.log(error);
585 }
586 });
587 },
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500588 getBMCEthernetInfo: function(callback){
589 $http({
590 method: 'GET',
Iftekharul Islamf2d74642017-07-10 16:42:14 -0500591 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc/ethernet",
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500592 headers: {
593 'Accept': 'application/json',
594 'Content-Type': 'application/json'
595 },
596 withCredentials: true
597 }).success(function(response){
598 var json = JSON.stringify(response);
599 var content = JSON.parse(json);
600 if(callback){
601 callback(content.data);
602 }else{
603 return content.data;
604 }
605 }).error(function(error){
606 console.log(error);
607 });
608 },
609 getBMCInfo: function(callback){
610 $http({
611 method: 'GET',
Iftekharul Islamf2d74642017-07-10 16:42:14 -0500612 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc",
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500613 headers: {
614 'Accept': 'application/json',
615 'Content-Type': 'application/json'
616 },
617 withCredentials: true
618 }).success(function(response){
619 var json = JSON.stringify(response);
620 var content = JSON.parse(json);
621 if(callback){
622 callback(content.data);
623 }else{
624 return content.data;
625 }
626 }).error(function(error){
627 console.log(error);
628 });
629 },
Iftekharul Islamee27d752017-07-05 15:54:31 -0500630 getHardwares: function(callback){
631 $http({
632 method: 'GET',
Iftekharul Islamf2d74642017-07-10 16:42:14 -0500633 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory/enumerate",
Iftekharul Islamee27d752017-07-05 15:54:31 -0500634 headers: {
635 'Accept': 'application/json',
636 'Content-Type': 'application/json'
637 },
638 withCredentials: true
639 }).success(function(response){
640 var json = JSON.stringify(response);
641 var content = JSON.parse(json);
642 var hardwareData = [];
643 var keyIndexMap = {};
644 var title = "";
645 var data = [];
646 var searchText = "";
647 var componentIndex = -1;
648 var tempParts = [];
649
650
651 function isSubComponent(key){
652
653 for(var i = 0; i < Constants.HARDWARE.parent_components.length; i++){
654 if(key.split(Constants.HARDWARE.parent_components[i]).length == 2) return true;
655 }
656
657 return false;
658 }
659
660 function titlelize(title){
661 title = title.replace(/([A-Z0-9]+)/g, " $1").replace(/^\s+/, "");
662 for(var i = 0; i < Constants.HARDWARE.uppercase_titles.length; i++){
663 if(title.toLowerCase().indexOf((Constants.HARDWARE.uppercase_titles[i] + " ")) > -1){
664 return title.toUpperCase();
665 }
666 }
667
668 return title;
669 }
670
671 function camelcaseToLabel(obj){
Iftekharul Islam8947e702017-07-27 10:28:07 -0500672 var transformed = [], label = "", value = "";
Iftekharul Islamee27d752017-07-05 15:54:31 -0500673 for(var key in obj){
674 label = key.replace(/([A-Z0-9]+)/g, " $1").replace(/^\s+/, "");
675 if(obj[key] !== ""){
Iftekharul Islam8947e702017-07-27 10:28:07 -0500676 value = obj[key];
677 if(value == 1 || value == 0){
678 value = (value == 1) ? 'Yes' : 'No';
679 }
680 transformed.push({key:label, value: value});
Iftekharul Islamee27d752017-07-05 15:54:31 -0500681 }
682 }
683
684 return transformed;
685 }
686
687 function getSearchText(data){
688 var searchText = "";
689 for(var i = 0; i < data.length; i++){
690 searchText += " " + data[i].key + " " + data[i].value;
691 }
692
693 return searchText;
694 }
695
696 for(var key in content.data){
697 if(content.data.hasOwnProperty(key) &&
698 key.indexOf(Constants.HARDWARE.component_key_filter) == 0){
699
700 data = camelcaseToLabel(content.data[key]);
701 searchText = getSearchText(data);
702 title = key.split("/").pop();
703
704 title = titlelize(title);
705
706 if(!isSubComponent(key)){
707 hardwareData.push(Object.assign({
708 path: key,
709 title: title,
710 selected: false,
711 expanded: false,
712 search_text: title.toLowerCase() + " " + searchText.toLowerCase(),
713 sub_components: [],
714 original_data: {key: key, value: content.data[key]}
715 }, {items: data}));
716
717 keyIndexMap[key] = hardwareData.length - 1;
718 }else{
719 var tempParts = key.split("/");
720 tempParts.pop();
721 tempParts = tempParts.join("/");
722 componentIndex = keyIndexMap[tempParts];
723 data = content.data[key];
724 data.title = title;
725 hardwareData[componentIndex].sub_components.push(data);
726 hardwareData[componentIndex].search_text += " " + title.toLowerCase();
727 }
728 }
729 }
730
731 if(callback){
732 callback(hardwareData, content.data);
733 }else{
734 return { data: hardwareData, original_data: content.data};
735 }
736 });
737 },
Iftekharul Islamf2d74642017-07-10 16:42:14 -0500738 deleteLogs: function(logs) {
739 var defer = $q.defer();
740 var promises = [];
741
742 function finished(){
743 defer.resolve();
744 }
745
746 logs.forEach(function(item){
747 promises.push($http({
748 method: 'POST',
749 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/logging/entry/"+item.Id+"/action/Delete",
750 headers: {
751 'Accept': 'application/json',
752 'Content-Type': 'application/json'
753 },
754 withCredentials: true,
755 data: JSON.stringify({"data": []})
756 }));
757 });
758
759 $q.all(promises).then(finished);
760
761 return defer.promise;
762 },
763 resolveLogs: function(logs) {
764 var defer = $q.defer();
765 var promises = [];
766
767 function finished(){
768 defer.resolve();
769 }
770
771 logs.forEach(function(item){
772 promises.push($http({
773 method: 'PUT',
774 url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/logging/entry/"+item.Id+"/attr/Resolved",
775 headers: {
776 'Accept': 'application/json',
777 'Content-Type': 'application/json'
778 },
779 withCredentials: true,
780 data: JSON.stringify({"data": "1"})
781 }));
782 });
783
784 $q.all(promises).then(finished);
785
786 return defer.promise;
787 },
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500788 };
789 return SERVICE;
790 }]);
791
792 })(window.angular);