blob: 3e0c59e22520e1113c6ee9c8b3c3705c253fe646 [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 Islam1acb4122017-11-02 13:20:32 -050014 .factory('APIUtils', ['$http', 'Constants', '$q', 'dataService',function($http, Constants, $q, DataService){
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 Islam1acb4122017-11-02 13:20:32 -050024 HOST_SESSION_STORAGE_KEY: Constants.API_CREDENTIALS.host_storage_key,
Iftekharul Islam99d199f2017-03-24 15:28:25 -050025 getChassisState: function(callback){
26 $http({
27 method: 'GET',
Iftekharul Islam1acb4122017-11-02 13:20:32 -050028 url: DataService.getHost() + "/xyz/openbmc_project/state/chassis0",
Iftekharul Islam99d199f2017-03-24 15:28:25 -050029 headers: {
30 'Accept': 'application/json',
31 'Content-Type': 'application/json'
32 },
33 withCredentials: true
Ed Tanousbbcf6702017-10-06 13:53:06 -070034 }).then(function(response){
35 var json = JSON.stringify(response.data);
Iftekharul Islam99d199f2017-03-24 15:28:25 -050036 var content = JSON.parse(json);
37 callback(content.data.CurrentPowerState);
Ed Tanousbbcf6702017-10-06 13:53:06 -070038 }, function(error){
Iftekharul Islam99d199f2017-03-24 15:28:25 -050039 console.log(error);
40 });
41 },
42 getHostState: function(callback){
43 $http({
44 method: 'GET',
Iftekharul Islam1acb4122017-11-02 13:20:32 -050045 url: DataService.getHost() + "/xyz/openbmc_project/state/host0",
Iftekharul Islam99d199f2017-03-24 15:28:25 -050046 headers: {
47 'Accept': 'application/json',
48 'Content-Type': 'application/json'
49 },
50 withCredentials: true
Ed Tanousbbcf6702017-10-06 13:53:06 -070051 }).then(function(response){
52 var json = JSON.stringify(response.data);
Iftekharul Islam99d199f2017-03-24 15:28:25 -050053 var content = JSON.parse(json);
54 callback(content.data.CurrentHostState);
Ed Tanousbbcf6702017-10-06 13:53:06 -070055 }, function(error){
Iftekharul Islam99d199f2017-03-24 15:28:25 -050056 console.log(error);
57 });
58 },
Iftekharul Islam171c6a12017-08-11 08:35:47 -050059 getNetworkInfo: function(){
60 var deferred = $q.defer();
61 $http({
62 method: 'GET',
Iftekharul Islam1acb4122017-11-02 13:20:32 -050063 url: DataService.getHost() + "/xyz/openbmc_project/network/enumerate",
Iftekharul Islam171c6a12017-08-11 08:35:47 -050064 headers: {
65 'Accept': 'application/json',
66 'Content-Type': 'application/json'
67 },
68 withCredentials: true
Ed Tanousbbcf6702017-10-06 13:53:06 -070069 }).then(function(response){
70 var json = JSON.stringify(response.data);
Iftekharul Islam171c6a12017-08-11 08:35:47 -050071 var content = JSON.parse(json);
72 var hostname = "";
73 var macAddress = "";
74
Iftekharul Islam2a489552017-11-02 13:23:08 -050075 function parseNetworkData(content){
76 var data = {
77 interface_ids: [],
78 interfaces: {
79 }
80 };
81 var interfaceId = '', keyParts = [], interfaceHash = '', interfaceType = '';
82 for(var key in content.data){
83 if(key.match(/network\/eth\d+$/ig)){
84 interfaceId = key.split("/").pop();
85 if(data.interface_ids.indexOf(interfaceId) == -1){
86 data.interface_ids.push(interfaceId);
87 data.interfaces[interfaceId] = {
88 interfaceIname: '',
89 domainName:'',
90 MACAddress:'',
91 Nameservers: [],
92 DHCPEnabled: 0,
93 ipv4:
94 {
95 ids: [],
96 values: []
97 },
98 ipv6:
99 {
100 ids: [],
101 values: []
102 }
103 };
104 data.interfaces[interfaceId].MACAddress = content.data[key].MACAddress;
105 data.interfaces[interfaceId].DomainName = content.data[key].DomainName.join(" ");
106 data.interfaces[interfaceId].Nameservers = content.data[key].Nameservers;
107 data.interfaces[interfaceId].DHCPEnabled = content.data[key].DHCPEnabled;
108 }
109 }else if(key.match(/network\/eth\d+\/ipv[4|6]\/[a-z0-9]+$/ig)){
110 keyParts = key.split("/");
111 interfaceHash = keyParts.pop();
112 interfaceType = keyParts.pop();
113 interfaceId = keyParts.pop();
114
115 if(data.interfaces[interfaceId][interfaceType].ids.indexOf(interfaceHash) == -1){
116 data.interfaces[interfaceId][interfaceType].ids.push(interfaceHash);
117 data.interfaces[interfaceId][interfaceType].values.push(content.data[key]);
118 }
119 }
120 }
121 return data;
122 }
123
Iftekharul Islam171c6a12017-08-11 08:35:47 -0500124 if(content.data.hasOwnProperty('/xyz/openbmc_project/network/config') &&
125 content.data['/xyz/openbmc_project/network/config'].hasOwnProperty('HostName')
126 ){
127 hostname = content.data['/xyz/openbmc_project/network/config'].HostName;
128 }
129
130 if(content.data.hasOwnProperty('/xyz/openbmc_project/network/eth0') &&
131 content.data['/xyz/openbmc_project/network/eth0'].hasOwnProperty('MACAddress')
132 ){
133 macAddress = content.data['/xyz/openbmc_project/network/eth0'].MACAddress;
134 }
135
136 deferred.resolve({
137 data: content.data,
138 hostname: hostname,
139 mac_address: macAddress,
Iftekharul Islam2a489552017-11-02 13:23:08 -0500140 formatted_data: parseNetworkData(content)
Iftekharul Islam171c6a12017-08-11 08:35:47 -0500141 });
Ed Tanousbbcf6702017-10-06 13:53:06 -0700142 }, function(error){
Iftekharul Islam171c6a12017-08-11 08:35:47 -0500143 console.log(error);
144 deferred.reject(error);
145 });
146 return deferred.promise;
147 },
Michael Davisdf3bd122017-08-10 11:03:42 -0500148 getLEDState: function(){
149 var deferred = $q.defer();
Iftekharul Islamcd789502017-04-19 14:37:55 -0500150 $http({
151 method: 'GET',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500152 url: DataService.getHost() + "/xyz/openbmc_project/led/groups/enclosure_identify",
Iftekharul Islamcd789502017-04-19 14:37:55 -0500153 headers: {
154 'Accept': 'application/json',
155 'Content-Type': 'application/json'
156 },
157 withCredentials: true
Ed Tanousbbcf6702017-10-06 13:53:06 -0700158 }).then(function(response){
159 var json = JSON.stringify(response.data);
Michael Davisdf3bd122017-08-10 11:03:42 -0500160 var content = JSON.parse(json);
161 deferred.resolve(content.data.Asserted);
Ed Tanousbbcf6702017-10-06 13:53:06 -0700162 }, function(error){
Iftekharul Islamcd789502017-04-19 14:37:55 -0500163 console.log(error);
Michael Davisdf3bd122017-08-10 11:03:42 -0500164 deferred.reject(error);
Iftekharul Islamcd789502017-04-19 14:37:55 -0500165 });
Michael Davisdf3bd122017-08-10 11:03:42 -0500166 return deferred.promise;
Iftekharul Islamcd789502017-04-19 14:37:55 -0500167 },
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500168 login: function(username, password, callback){
169 $http({
170 method: 'POST',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500171 url: DataService.getHost() + "/login",
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500172 headers: {
173 'Accept': 'application/json',
174 'Content-Type': 'application/json'
175 },
176 withCredentials: true,
177 data: JSON.stringify({"data": [username, password]})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700178 }).then(function(response){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500179 if(callback){
Ed Tanousbbcf6702017-10-06 13:53:06 -0700180 callback(response.data);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500181 }
Ed Tanousbbcf6702017-10-06 13:53:06 -0700182 }, function(error){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500183 if(callback){
Iftekharul Islamcd789502017-04-19 14:37:55 -0500184 if(error && error.status && error.status == 'error'){
185 callback(error);
186 }else{
187 callback(error, true);
188 }
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500189 }
190 console.log(error);
191 });
192 },
193 logout: function(callback){
194 $http({
195 method: 'POST',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500196 url: DataService.getHost() + "/logout",
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500197 headers: {
198 'Accept': 'application/json',
199 'Content-Type': 'application/json'
200 },
201 withCredentials: true,
202 data: JSON.stringify({"data": []})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700203 }).then(function(response){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500204 if(callback){
Iftekharul Islamde883402018-02-05 11:16:21 -0600205 callback(response.data);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500206 }
Ed Tanousbbcf6702017-10-06 13:53:06 -0700207 }, function(error){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500208 if(callback){
209 callback(null, error);
210 }
211 console.log(error);
212 });
213 },
214 chassisPowerOn: function(callback){
215 $http({
216 method: 'POST',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500217 url: DataService.getHost() + "/xyz/openbmc_project/state/host0",
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500218 headers: {
219 'Accept': 'application/json',
220 'Content-Type': 'application/json'
221 },
222 withCredentials: true,
223 data: JSON.stringify({"data": []})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700224 }).then(function(response){
225 var json = JSON.stringify(response.data);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500226 var content = JSON.parse(json);
227 if(callback){
228 return callback(content.data.CurrentPowerState);
229 }
Ed Tanousbbcf6702017-10-06 13:53:06 -0700230 }, function(error){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500231 if(callback){
232 callback(error);
233 }else{
234 console.log(error);
235 }
236 });
237 },
238 chassisPowerOff: function(callback){
239 $http({
Gunnar Mills3aa8b532018-02-06 15:42:29 -0600240 method: 'PUT',
241 url: DataService.getHost() + "/xyz/openbmc_project/state/chassis0/attr/RequestedPowerTransition",
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500242 headers: {
243 'Accept': 'application/json',
244 'Content-Type': 'application/json'
245 },
246 withCredentials: true,
Gunnar Mills3aa8b532018-02-06 15:42:29 -0600247 data: JSON.stringify({"data": "xyz.openbmc_project.State.Chassis.Transition.Off"})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700248 }).then(function(response){
249 var json = JSON.stringify(response.data);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500250 var content = JSON.parse(json);
251 if(callback){
Gunnar Mills3aa8b532018-02-06 15:42:29 -0600252 return callback(content.status);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500253 }
Ed Tanousbbcf6702017-10-06 13:53:06 -0700254 }, function(error){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500255 if(callback){
256 callback(error);
257 }else{
258 console.log(error);
259 }
260 });
261 },
Iftekharul Islamcd789502017-04-19 14:37:55 -0500262 setLEDState: function(state, callback){
263 $http({
264 method: 'PUT',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500265 url: DataService.getHost() + "/xyz/openbmc_project/led/groups/enclosure_identify/attr/Asserted",
Iftekharul Islamcd789502017-04-19 14:37:55 -0500266 headers: {
267 'Accept': 'application/json',
268 'Content-Type': 'application/json'
269 },
270 withCredentials: true,
271 data: JSON.stringify({"data": state})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700272 }).then(function(response){
273 var json = JSON.stringify(response.data);
Iftekharul Islamcd789502017-04-19 14:37:55 -0500274 var content = JSON.parse(json);
275 if(callback){
276 return callback(content.status);
277 }
Ed Tanousbbcf6702017-10-06 13:53:06 -0700278 }, function(error){
Iftekharul Islamcd789502017-04-19 14:37:55 -0500279 if(callback){
280 callback(error);
281 }else{
282 console.log(error);
283 }
284 });
285 },
Iftekharul Islam55368122017-03-27 09:46:50 -0500286 bmcReboot: function(callback){
287 $http({
288 method: 'PUT',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500289 url: DataService.getHost() + "/xyz/openbmc_project/state/bmc0/attr/RequestedBmcTransition",
Iftekharul Islam55368122017-03-27 09:46:50 -0500290 headers: {
291 'Accept': 'application/json',
292 'Content-Type': 'application/json'
293 },
294 withCredentials: true,
295 data: JSON.stringify({"data": "xyz.openbmc_project.State.BMC.Transition.Reboot"})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700296 }).then(function(response){
297 var json = JSON.stringify(response.data);
Iftekharul Islam55368122017-03-27 09:46:50 -0500298 var content = JSON.parse(json);
299 if(callback){
300 return callback(content.status);
301 }
Ed Tanousbbcf6702017-10-06 13:53:06 -0700302 }, function(error){
Iftekharul Islam55368122017-03-27 09:46:50 -0500303 if(callback){
304 callback(error);
305 }else{
306 console.log(error);
307 }
308 });
309 },
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500310 hostPowerOn: function(callback){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500311 $http({
312 method: 'PUT',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500313 url: DataService.getHost() + "/xyz/openbmc_project/state/host0/attr/RequestedHostTransition",
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500314 headers: {
315 'Accept': 'application/json',
316 'Content-Type': 'application/json'
317 },
318 withCredentials: true,
319 data: JSON.stringify({"data": "xyz.openbmc_project.State.Host.Transition.On"})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700320 }).then(function(response){
321 var json = JSON.stringify(response.data);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500322 var content = JSON.parse(json);
323 if(callback){
324 return callback(content.status);
325 }
Ed Tanousbbcf6702017-10-06 13:53:06 -0700326 }, function(error){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500327 if(callback){
328 callback(error);
329 }else{
330 console.log(error);
331 }
332 });
333 },
334 hostPowerOff: function(callback){
335 $http({
336 method: 'PUT',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500337 url: DataService.getHost() + "/xyz/openbmc_project/state/host0/attr/RequestedHostTransition",
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500338 headers: {
339 'Accept': 'application/json',
340 'Content-Type': 'application/json'
341 },
342 withCredentials: true,
343 data: JSON.stringify({"data": "xyz.openbmc_project.State.Host.Transition.Off"})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700344 }).then(function(response){
345 var json = JSON.stringify(response.data);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500346 var content = JSON.parse(json);
347 if(callback){
348 return callback(content.status);
349 }
Ed Tanousbbcf6702017-10-06 13:53:06 -0700350 }, function(error){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500351 if(callback){
352 callback(error);
353 }else{
354 console.log(error);
355 }
356 });
357 },
358 hostReboot: function(callback){
359 $http({
Gunnar Millscacfa6d2018-02-07 12:09:02 -0600360 method: 'PUT',
361 url: DataService.getHost() + "/xyz/openbmc_project/state/host0/attr/RequestedHostTransition",
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500362 headers: {
363 'Accept': 'application/json',
364 'Content-Type': 'application/json'
365 },
366 withCredentials: true,
Gunnar Millscacfa6d2018-02-07 12:09:02 -0600367 data: JSON.stringify({"data": "xyz.openbmc_project.State.Host.Transition.Reboot"})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700368 }).then(function(response){
369 var json = JSON.stringify(response.data);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500370 var content = JSON.parse(json);
371 if(callback){
Gunnar Millscacfa6d2018-02-07 12:09:02 -0600372 return callback(content.status);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500373 }
Ed Tanousbbcf6702017-10-06 13:53:06 -0700374 }, function(error){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500375 if(callback){
376 callback(error);
377 }else{
378 console.log(error);
379 }
380 });
381 },
382 hostShutdown: function(callback){
383 $http({
384 method: 'POST',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500385 url: DataService.getHost() + "/xyz/openbmc_project/state/host0",
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500386 headers: {
387 'Accept': 'application/json',
388 'Content-Type': 'application/json'
389 },
390 withCredentials: true,
391 data: JSON.stringify({"data": []})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700392 }).then(function(response){
393 var json = JSON.stringify(response.data);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500394 var content = JSON.parse(json);
395 if(callback){
396 return callback(content);
397 }
Ed Tanousbbcf6702017-10-06 13:53:06 -0700398 }, function(error){
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500399 if(callback){
400 callback(error);
401 }else{
402 console.log(error);
403 }
404 });
Iftekharul Islamcd789502017-04-19 14:37:55 -0500405 },
Michael Davisdf3bd122017-08-10 11:03:42 -0500406 getLogs: function(){
407 var deferred = $q.defer();
Iftekharul Islamcd789502017-04-19 14:37:55 -0500408 $http({
409 method: 'GET',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500410 url: DataService.getHost() + "/xyz/openbmc_project/logging/enumerate",
Iftekharul Islamcd789502017-04-19 14:37:55 -0500411 headers: {
412 'Accept': 'application/json',
413 'Content-Type': 'application/json'
414 },
415 withCredentials: true
Ed Tanousbbcf6702017-10-06 13:53:06 -0700416 }).then(function(response){
417 var json = JSON.stringify(response.data);
Iftekharul Islamcd789502017-04-19 14:37:55 -0500418 var content = JSON.parse(json);
419 var dataClone = JSON.parse(JSON.stringify(content.data));
420 var data = [];
421 var severityCode = '';
422 var priority = '';
Iftekharul Islamec6bcd12017-09-06 10:49:07 -0500423 var health = '';
Iftekharul Islamcd789502017-04-19 14:37:55 -0500424 var relatedItems = [];
425
426 for(var key in content.data){
427 if(content.data.hasOwnProperty(key) && content.data[key].hasOwnProperty('Id')){
428 var severityFlags = {low: false, medium: false, high: false};
Iftekharul Islamec6bcd12017-09-06 10:49:07 -0500429 var healthFlags = {critical: false, warning: false, good: false};
Iftekharul Islamcd789502017-04-19 14:37:55 -0500430 severityCode = content.data[key].Severity.split(".").pop();
431 priority = Constants.SEVERITY_TO_PRIORITY_MAP[severityCode];
432 severityFlags[priority.toLowerCase()] = true;
Iftekharul Islamec6bcd12017-09-06 10:49:07 -0500433 health = Constants.SEVERITY_TO_HEALTH_MAP[severityCode];
434 healthFlags[health.toLowerCase()] = true;
Iftekharul Islamcd789502017-04-19 14:37:55 -0500435 relatedItems = [];
436 content.data[key].associations.forEach(function(item){
Iftekharul Islam532763f2017-04-25 09:44:40 -0500437 relatedItems.push(item[2]);
Iftekharul Islamcd789502017-04-19 14:37:55 -0500438 });
439
440 data.push(Object.assign({
441 path: key,
442 copied: false,
443 priority: priority,
444 severity_code: severityCode,
445 severity_flags: severityFlags,
Iftekharul Islamec6bcd12017-09-06 10:49:07 -0500446 health_flags: healthFlags,
Iftekharul Islamcd789502017-04-19 14:37:55 -0500447 additional_data: content.data[key].AdditionalData.join("\n"),
Gunnar Mills43a2ed12018-02-08 15:42:30 -0600448 type: content.data[key].Message,
Iftekharul Islamcd789502017-04-19 14:37:55 -0500449 selected: false,
Iftekharul Islam8b4828a2017-04-19 14:37:55 -0500450 search_text: ("#" + content.data[key].Id + " " + severityCode + " " + content.data[key].Severity + " " + content.data[key].AdditionalData.join(" ")).toLowerCase(),
Iftekharul Islamcd789502017-04-19 14:37:55 -0500451 meta: false,
452 confirm: false,
453 related_items: relatedItems,
454 data: {key: key, value: content.data[key]}
455 }, content.data[key]));
456 }
457 }
Michael Davisdf3bd122017-08-10 11:03:42 -0500458 deferred.resolve({data: data, original: dataClone});
Ed Tanousbbcf6702017-10-06 13:53:06 -0700459 }, function(error){
Iftekharul Islamcd789502017-04-19 14:37:55 -0500460 console.log(error);
Michael Davisdf3bd122017-08-10 11:03:42 -0500461 deferred.reject(error);
Iftekharul Islamcd789502017-04-19 14:37:55 -0500462 });
Michael Davisdf3bd122017-08-10 11:03:42 -0500463
464 return deferred.promise;
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500465 },
466 getAllSensorStatus: function(callback){
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500467 $http({
468 method: 'GET',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500469 url: DataService.getHost() + "/xyz/openbmc_project/sensors/enumerate",
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500470 headers: {
471 'Accept': 'application/json',
472 'Content-Type': 'application/json'
473 },
474 withCredentials: true
Ed Tanousbbcf6702017-10-06 13:53:06 -0700475 }).then(function(response){
476 var json = JSON.stringify(response.data);
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500477 var content = JSON.parse(json);
478 var dataClone = JSON.parse(JSON.stringify(content.data));
479 var sensorData = [];
Iftekharul Islam8947e702017-07-27 10:28:07 -0500480 var severity = {};
481 var title = "";
482 var tempKeyParts = [];
483 var order = 0;
Iftekharul Islam8a122842017-09-11 10:58:16 -0500484 var customOrder = 0;
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500485
Iftekharul Islam96bbf312017-08-22 13:44:38 -0500486 function getScaledValue(value, scale){
487 scale = scale + "";
Iftekharul Islamec6bcd12017-09-06 10:49:07 -0500488 scale = parseInt(scale, 10);
489 var power = Math.abs(parseInt(scale,10));
Iftekharul Islam96bbf312017-08-22 13:44:38 -0500490
Iftekharul Islamec6bcd12017-09-06 10:49:07 -0500491 if(scale > 0){
Iftekharul Islam96bbf312017-08-22 13:44:38 -0500492 value = value * Math.pow(10, power);
Iftekharul Islamec6bcd12017-09-06 10:49:07 -0500493 }else if(scale < 0){
Iftekharul Islam96bbf312017-08-22 13:44:38 -0500494 value = value / Math.pow(10, power);
495 }
496 return value;
497 }
498
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500499 function getSensorStatus(reading){
Iftekharul Islam8947e702017-07-27 10:28:07 -0500500 var severityFlags = {critical: false, warning: false, normal: false}, severityText = '', order = 0;
501
Gunnar Millseedefd32018-02-28 17:02:34 -0600502 if(reading.hasOwnProperty('CriticalLow') &&
Iftekharul Islam8947e702017-07-27 10:28:07 -0500503 reading.Value < reading.CriticalLow
504 ){
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500505 severityFlags.critical = true;
506 severityText = 'critical';
Iftekharul Islam8947e702017-07-27 10:28:07 -0500507 order = 2;
Gunnar Millseedefd32018-02-28 17:02:34 -0600508 }else if(reading.hasOwnProperty('CriticalHigh') &&
509 reading.Value > reading.CriticalHigh
Iftekharul Islam8947e702017-07-27 10:28:07 -0500510 ){
511 severityFlags.critical = true;
512 severityText = 'critical';
513 order = 2;
Gunnar Millseedefd32018-02-28 17:02:34 -0600514 }else if(reading.hasOwnProperty('CriticalLow') &&
515 reading.hasOwnProperty('WarningLow') &&
Iftekharul Islam8947e702017-07-27 10:28:07 -0500516 reading.Value >= reading.CriticalLow && reading.Value <= reading.WarningLow){
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500517 severityFlags.warning = true;
518 severityText = 'warning';
Iftekharul Islam8947e702017-07-27 10:28:07 -0500519 order = 1;
Gunnar Millseedefd32018-02-28 17:02:34 -0600520 }else if(reading.hasOwnProperty('WarningHigh') &&
521 reading.hasOwnProperty('CriticalHigh') &&
Iftekharul Islam8947e702017-07-27 10:28:07 -0500522 reading.Value >= reading.WarningHigh && reading.Value <= reading.CriticalHigh){
523 severityFlags.warning = true;
524 severityText = 'warning';
525 order = 1;
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500526 }else{
527 severityFlags.normal = true;
528 severityText = 'normal';
529 }
Iftekharul Islam8947e702017-07-27 10:28:07 -0500530 return { flags: severityFlags, severityText: severityText, order: order};
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500531 }
532
533 for(var key in content.data){
534 if(content.data.hasOwnProperty(key) && content.data[key].hasOwnProperty('Unit')){
Iftekharul Islam8947e702017-07-27 10:28:07 -0500535
536 severity = getSensorStatus(content.data[key]);
537
538 if(!content.data[key].hasOwnProperty('CriticalLow')){
539 content.data[key].CriticalLow = "--";
540 content.data[key].CriticalHigh = "--";
541 }
542
543 if(!content.data[key].hasOwnProperty('WarningLow')){
544 content.data[key].WarningLow = "--";
545 content.data[key].WarningHigh = "--";
546 }
547
548 tempKeyParts = key.split("/");
549 title = tempKeyParts.pop();
550 title = tempKeyParts.pop() + '_' + title;
551 title = title.split("_").map(function(item){
552 return item.toLowerCase().charAt(0).toUpperCase() + item.slice(1);
553 }).reduce(function(prev, el){
554 return prev + " " + el;
555 });
556
Iftekharul Islam96bbf312017-08-22 13:44:38 -0500557 content.data[key].Value = getScaledValue(content.data[key].Value, content.data[key].Scale);
Gunnar Mills022f5642018-02-07 14:30:17 -0600558 content.data[key].CriticalLow = getScaledValue(content.data[key].CriticalLow, content.data[key].Scale);
559 content.data[key].CriticalHigh = getScaledValue(content.data[key].CriticalHigh, content.data[key].Scale);
560 content.data[key].WarningLow = getScaledValue(content.data[key].WarningLow, content.data[key].Scale);
561 content.data[key].WarningHigh = getScaledValue(content.data[key].WarningHigh, content.data[key].Scale);
Iftekharul Islam8a122842017-09-11 10:58:16 -0500562 if(Constants.SENSOR_SORT_ORDER.indexOf(content.data[key].Unit) > -1){
563 customOrder = Constants.SENSOR_SORT_ORDER.indexOf(content.data[key].Unit);
564 }else{
565 customOrder = Constants.SENSOR_SORT_ORDER_DEFAULT;
566 }
567
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500568 sensorData.push(Object.assign({
569 path: key,
570 selected: false,
571 confirm: false,
572 copied: false,
Iftekharul Islam8947e702017-07-27 10:28:07 -0500573 title: title,
574 unit: Constants.SENSOR_UNIT_MAP[content.data[key].Unit],
575 severity_flags: severity.flags,
576 status: severity.severityText,
577 order: severity.order,
Iftekharul Islam8a122842017-09-11 10:58:16 -0500578 custom_order: customOrder,
Gunnar Millseedefd32018-02-28 17:02:34 -0600579 search_text: (title + " " + content.data[key].Value + " " +
580 Constants.SENSOR_UNIT_MAP[content.data[key].Unit] + " " +
581 severity.severityText + " " +
Iftekharul Islam8947e702017-07-27 10:28:07 -0500582 content.data[key].CriticalLow + " " +
583 content.data[key].CriticalHigh + " " +
584 content.data[key].WarningLow + " " +
585 content.data[key].WarningHigh + " "
586 ).toLowerCase(),
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500587 original_data: {key: key, value: content.data[key]}
588 }, content.data[key]));
589 }
590 }
591
Iftekharul Islam8947e702017-07-27 10:28:07 -0500592 callback(sensorData, dataClone);
Ed Tanousbbcf6702017-10-06 13:53:06 -0700593 }, function(error){
Iftekharul Islamd2269e22017-05-02 09:32:45 -0500594 console.log(error);
595 });
Iftekharul Islamc0161392017-06-14 15:46:15 -0500596 },
Michael Davisdf3bd122017-08-10 11:03:42 -0500597 getFirmwares: function(){
598 var deferred = $q.defer();
Iftekharul Islamc0161392017-06-14 15:46:15 -0500599 $http({
600 method: 'GET',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500601 url: DataService.getHost() + "/xyz/openbmc_project/software/enumerate",
Iftekharul Islamc0161392017-06-14 15:46:15 -0500602 headers: {
603 'Accept': 'application/json',
604 'Content-Type': 'application/json'
605 },
606 withCredentials: true
Ed Tanousbbcf6702017-10-06 13:53:06 -0700607 }).then(function(response){
608 var json = JSON.stringify(response.data);
Iftekharul Islamc0161392017-06-14 15:46:15 -0500609 var content = JSON.parse(json);
610 var data = [];
Gunnar Mills902c38c2018-02-23 10:12:39 -0600611 var activationStatus = "";
Iftekharul Islamc0161392017-06-14 15:46:15 -0500612 var isExtended = false;
613 var bmcActiveVersion = "";
614 var hostActiveVersion = "";
615 var imageType = "";
616 var extendedVersions = [];
Gunnar Mills9b733bd2018-02-23 21:16:20 -0600617 var functionalImages = [];
Iftekharul Islamc0161392017-06-14 15:46:15 -0500618
619 function getFormatedExtendedVersions(extendedVersion){
620 var versions = [];
621 extendedVersion = extendedVersion.split(",");
622
623 extendedVersion.forEach(function(item){
624 var parts = item.split("-");
625 var numberIndex = 0;
626 for(var i = 0; i < parts.length; i++){
627 if(/[0-9]/.test(parts[i])){
628 numberIndex = i;
629 break;
630 }
631 }
632 var titlePart = parts.splice(0, numberIndex);
633 titlePart = titlePart.join("");
634 titlePart = titlePart[0].toUpperCase() + titlePart.substr(1, titlePart.length);
635 var versionPart = parts.join("-");
636 versions.push({
637 title: titlePart,
638 version: versionPart
639 });
640 });
641
642 return versions;
643 }
644
Gunnar Mills9b733bd2018-02-23 21:16:20 -0600645 // Get the list of functional images so we can compare
646 // later if an image is functional
647 if (content.data[Constants.FIRMWARE.FUNCTIONAL_OBJPATH])
648 {
649 functionalImages = content.data[Constants.FIRMWARE.FUNCTIONAL_OBJPATH].endpoints;
650 }
Iftekharul Islamc0161392017-06-14 15:46:15 -0500651 for(var key in content.data){
652 if(content.data.hasOwnProperty(key) && content.data[key].hasOwnProperty('Version')){
Gunnar Mills902c38c2018-02-23 10:12:39 -0600653 // If the image is "Functional" use that for the
654 // activation status, else use the value of "Activation"
655 // github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/Software/Activation.interface.yaml
656 activationStatus = content.data[key].Activation.split(".").pop();
Gunnar Mills9b733bd2018-02-23 21:16:20 -0600657 if (functionalImages.includes(key))
Gunnar Mills902c38c2018-02-23 10:12:39 -0600658 {
659 activationStatus = "Functional";
660 }
Gunnar Mills9b733bd2018-02-23 21:16:20 -0600661
Iftekharul Islamc0161392017-06-14 15:46:15 -0500662 imageType = content.data[key].Purpose.split(".").pop();
663 isExtended = content.data[key].hasOwnProperty('ExtendedVersion') && content.data[key].ExtendedVersion != "";
664 if(isExtended){
665 extendedVersions = getFormatedExtendedVersions(content.data[key].ExtendedVersion);
666 }
667 data.push(Object.assign({
668 path: key,
Gunnar Mills902c38c2018-02-23 10:12:39 -0600669 activationStatus: activationStatus,
Iftekharul Islamc0161392017-06-14 15:46:15 -0500670 imageId: key.split("/").pop(),
671 imageType: imageType,
672 isExtended: isExtended,
673 extended: {
674 show: false,
675 versions: extendedVersions
676 },
677 data: {key: key, value: content.data[key]}
678 }, content.data[key]));
679
Gunnar Mills902c38c2018-02-23 10:12:39 -0600680 if(activationStatus == 'Functional' && imageType == 'BMC'){
Iftekharul Islamc0161392017-06-14 15:46:15 -0500681 bmcActiveVersion = content.data[key].Version;
682 }
683
Gunnar Mills902c38c2018-02-23 10:12:39 -0600684 if(activationStatus == 'Functional' && imageType == 'Host'){
Iftekharul Islamc0161392017-06-14 15:46:15 -0500685 hostActiveVersion = content.data[key].Version;
686 }
687 }
688 }
Michael Davisdf3bd122017-08-10 11:03:42 -0500689
690 deferred.resolve({
Gunnar Millseedefd32018-02-28 17:02:34 -0600691 data: data,
692 bmcActiveVersion: bmcActiveVersion,
Michael Davisdf3bd122017-08-10 11:03:42 -0500693 hostActiveVersion: hostActiveVersion
694 });
Ed Tanousbbcf6702017-10-06 13:53:06 -0700695 }, function(error){
Iftekharul Islamc0161392017-06-14 15:46:15 -0500696 console.log(error);
Michael Davisdf3bd122017-08-10 11:03:42 -0500697 deferred.reject(error);
Iftekharul Islamc0161392017-06-14 15:46:15 -0500698 });
Michael Davisdf3bd122017-08-10 11:03:42 -0500699
700 return deferred.promise;
Iftekharul Islamc0161392017-06-14 15:46:15 -0500701 },
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500702 changePriority: function(imageId, priority){
703 var deferred = $q.defer();
704 $http({
705 method: 'PUT',
706 url: DataService.getHost() + "/xyz/openbmc_project/software/" + imageId + "/attr/Priority",
707 headers: {
Iftekharul Islam2a489552017-11-02 13:23:08 -0500708 'Accept': 'application/json',
709 'Content-Type': 'application/json'
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500710 },
711 withCredentials: true,
712 data: JSON.stringify({"data": priority})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700713 }).then(function(response){
714 var json = JSON.stringify(response.data);
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500715 var content = JSON.parse(json);
716 deferred.resolve(content);
Ed Tanousbbcf6702017-10-06 13:53:06 -0700717 }, function(error){
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500718 console.log(error);
719 deferred.reject(error);
720 });
721
722 return deferred.promise;
723 },
Iftekharul Islam2a489552017-11-02 13:23:08 -0500724 deleteImage: function(imageId){
725 var deferred = $q.defer();
726 $http({
727 method: 'POST',
728 url: DataService.getHost() + "/xyz/openbmc_project/software/" + imageId + "/action/Delete",
729 headers: {
730 'Accept': 'application/json',
731 'Content-Type': 'application/json'
732 },
733 withCredentials: true,
734 data: JSON.stringify({"data": []})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700735 }).then(function(response){
736 var json = JSON.stringify(response.data);
Iftekharul Islam2a489552017-11-02 13:23:08 -0500737 var content = JSON.parse(json);
738 deferred.resolve(content);
Ed Tanousbbcf6702017-10-06 13:53:06 -0700739 }, function(error){
Iftekharul Islam2a489552017-11-02 13:23:08 -0500740 console.log(error);
741 deferred.reject(error);
742 });
743
744 return deferred.promise;
745 },
746 activateImage: function(imageId){
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500747 var deferred = $q.defer();
Iftekharul Islamc0161392017-06-14 15:46:15 -0500748 $http({
749 method: 'PUT',
Iftekharul Islam2a489552017-11-02 13:23:08 -0500750 url: DataService.getHost() + "/xyz/openbmc_project/software/" + imageId + "/attr/RequestedActivation",
751 headers: {
752 'Accept': 'application/json',
753 'Content-Type': 'application/json'
754 },
755 withCredentials: true,
756 data: JSON.stringify({"data": Constants.FIRMWARE.ACTIVATE_FIRMWARE})
Ed Tanousbbcf6702017-10-06 13:53:06 -0700757 }).then(function(response){
758 var json = JSON.stringify(response.data);
Iftekharul Islam2a489552017-11-02 13:23:08 -0500759 var content = JSON.parse(json);
760 deferred.resolve(content);
Ed Tanousbbcf6702017-10-06 13:53:06 -0700761 }, function(error){
Iftekharul Islam2a489552017-11-02 13:23:08 -0500762 console.log(error);
763 deferred.reject(error);
764 });
765
766 return deferred.promise;
767 },
768 uploadImage: function(file){
769 var deferred = $q.defer();
770 $http({
771 method: 'POST',
Iftekharul Islamc0161392017-06-14 15:46:15 -0500772 timeout: 5 * 60 * 1000,
Gunnar Millsdddb1492018-02-19 16:27:27 -0600773 url: DataService.getHost() + "/upload/image",
Iftekharul Islamc0161392017-06-14 15:46:15 -0500774 headers: {
Iftekharul Islam2a489552017-11-02 13:23:08 -0500775 'Content-Type': 'application/octet-stream'
Iftekharul Islamc0161392017-06-14 15:46:15 -0500776 },
777 withCredentials: true,
778 data: file
Ed Tanousbbcf6702017-10-06 13:53:06 -0700779 }).then(function(response){
780 var json = JSON.stringify(response.data);
Iftekharul Islamc0161392017-06-14 15:46:15 -0500781 var content = JSON.parse(json);
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500782 deferred.resolve(content);
Ed Tanousbbcf6702017-10-06 13:53:06 -0700783 }, function(error){
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500784 console.log(error);
785 deferred.reject(error);
Iftekharul Islamc0161392017-06-14 15:46:15 -0500786 });
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500787
788 return deferred.promise;
789 },
790 downloadImage: function(host, filename){
791 var deferred = $q.defer();
792 $http({
793 method: 'POST',
Gunnar Millse345cac2018-02-20 11:16:53 -0600794 url: DataService.getHost() + "/xyz/openbmc_project/software/action/DownloadViaTFTP",
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500795 headers: {
796 'Accept': 'application/json',
797 'Content-Type': 'application/json'
798 },
799 withCredentials: true,
Gunnar Millse345cac2018-02-20 11:16:53 -0600800 data: JSON.stringify({"data": [filename, host]}),
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500801 responseType: 'arraybuffer'
Ed Tanousbbcf6702017-10-06 13:53:06 -0700802 }).then(function(response, status, headers){
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500803 deferred.resolve({
804 data: response,
805 status: status,
806 headers: headers
807 });
Ed Tanousbbcf6702017-10-06 13:53:06 -0700808 }, function(error){
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500809 console.log(error);
810 deferred.reject(error);
811 });
812
813 return deferred.promise;
Iftekharul Islamc0161392017-06-14 15:46:15 -0500814 },
Michael Davisdf3bd122017-08-10 11:03:42 -0500815 getBMCEthernetInfo: function(){
816 var deferred = $q.defer();
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500817 $http({
818 method: 'GET',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500819 url: DataService.getHost() + "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc/ethernet",
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500820 headers: {
821 'Accept': 'application/json',
822 'Content-Type': 'application/json'
823 },
824 withCredentials: true
Ed Tanousbbcf6702017-10-06 13:53:06 -0700825 }).then(function(response){
826 var json = JSON.stringify(response.data);
Michael Davisdf3bd122017-08-10 11:03:42 -0500827 var content = JSON.parse(json);
828 deferred.resolve(content.data);
Ed Tanousbbcf6702017-10-06 13:53:06 -0700829 }, function(error){
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500830 console.log(error);
Michael Davisdf3bd122017-08-10 11:03:42 -0500831 deferred.reject(error);
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500832 });
Michael Davisdf3bd122017-08-10 11:03:42 -0500833
834 return deferred.promise;
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500835 },
836 getBMCInfo: function(callback){
Michael Davisdf3bd122017-08-10 11:03:42 -0500837 var deferred = $q.defer();
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500838 $http({
839 method: 'GET',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500840 url: DataService.getHost() + "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc",
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500841 headers: {
842 'Accept': 'application/json',
843 'Content-Type': 'application/json'
844 },
845 withCredentials: true
Ed Tanousbbcf6702017-10-06 13:53:06 -0700846 }).then(function(response){
847 var json = JSON.stringify(response.data);
Michael Davisdf3bd122017-08-10 11:03:42 -0500848 var content = JSON.parse(json);
849 deferred.resolve(content.data);
Ed Tanousbbcf6702017-10-06 13:53:06 -0700850 }, function(error){
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500851 console.log(error);
Michael Davisdf3bd122017-08-10 11:03:42 -0500852 deferred.reject(error);
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500853 });
Michael Davisdf3bd122017-08-10 11:03:42 -0500854 return deferred.promise;
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500855 },
Iftekharul Islamee27d752017-07-05 15:54:31 -0500856 getHardwares: function(callback){
857 $http({
858 method: 'GET',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500859 url: DataService.getHost() + "/xyz/openbmc_project/inventory/enumerate",
Iftekharul Islamee27d752017-07-05 15:54:31 -0500860 headers: {
861 'Accept': 'application/json',
862 'Content-Type': 'application/json'
863 },
864 withCredentials: true
Ed Tanousbbcf6702017-10-06 13:53:06 -0700865 }).then(function(response){
866 var json = JSON.stringify(response.data);
Iftekharul Islamee27d752017-07-05 15:54:31 -0500867 var content = JSON.parse(json);
868 var hardwareData = [];
869 var keyIndexMap = {};
870 var title = "";
871 var data = [];
872 var searchText = "";
873 var componentIndex = -1;
874 var tempParts = [];
875
876
877 function isSubComponent(key){
878
879 for(var i = 0; i < Constants.HARDWARE.parent_components.length; i++){
880 if(key.split(Constants.HARDWARE.parent_components[i]).length == 2) return true;
881 }
882
883 return false;
884 }
885
886 function titlelize(title){
887 title = title.replace(/([A-Z0-9]+)/g, " $1").replace(/^\s+/, "");
888 for(var i = 0; i < Constants.HARDWARE.uppercase_titles.length; i++){
889 if(title.toLowerCase().indexOf((Constants.HARDWARE.uppercase_titles[i] + " ")) > -1){
890 return title.toUpperCase();
891 }
892 }
893
894 return title;
895 }
896
897 function camelcaseToLabel(obj){
Iftekharul Islam8947e702017-07-27 10:28:07 -0500898 var transformed = [], label = "", value = "";
Iftekharul Islamee27d752017-07-05 15:54:31 -0500899 for(var key in obj){
900 label = key.replace(/([A-Z0-9]+)/g, " $1").replace(/^\s+/, "");
901 if(obj[key] !== ""){
Iftekharul Islam8947e702017-07-27 10:28:07 -0500902 value = obj[key];
903 if(value == 1 || value == 0){
904 value = (value == 1) ? 'Yes' : 'No';
905 }
906 transformed.push({key:label, value: value});
Iftekharul Islamee27d752017-07-05 15:54:31 -0500907 }
908 }
909
910 return transformed;
911 }
912
913 function getSearchText(data){
914 var searchText = "";
915 for(var i = 0; i < data.length; i++){
916 searchText += " " + data[i].key + " " + data[i].value;
917 }
918
Gunnar Millseedefd32018-02-28 17:02:34 -0600919 return searchText;
Iftekharul Islamee27d752017-07-05 15:54:31 -0500920 }
921
922 for(var key in content.data){
Gunnar Millseedefd32018-02-28 17:02:34 -0600923 if(content.data.hasOwnProperty(key) &&
Iftekharul Islamee27d752017-07-05 15:54:31 -0500924 key.indexOf(Constants.HARDWARE.component_key_filter) == 0){
925
926 data = camelcaseToLabel(content.data[key]);
927 searchText = getSearchText(data);
928 title = key.split("/").pop();
929
930 title = titlelize(title);
931
932 if(!isSubComponent(key)){
933 hardwareData.push(Object.assign({
934 path: key,
935 title: title,
936 selected: false,
937 expanded: false,
938 search_text: title.toLowerCase() + " " + searchText.toLowerCase(),
Gunnar Millseedefd32018-02-28 17:02:34 -0600939 sub_components: [],
Iftekharul Islamee27d752017-07-05 15:54:31 -0500940 original_data: {key: key, value: content.data[key]}
941 }, {items: data}));
942
943 keyIndexMap[key] = hardwareData.length - 1;
944 }else{
945 var tempParts = key.split("/");
946 tempParts.pop();
947 tempParts = tempParts.join("/");
948 componentIndex = keyIndexMap[tempParts];
949 data = content.data[key];
950 data.title = title;
951 hardwareData[componentIndex].sub_components.push(data);
952 hardwareData[componentIndex].search_text += " " + title.toLowerCase();
953 }
954 }
955 }
956
957 if(callback){
958 callback(hardwareData, content.data);
959 }else{
960 return { data: hardwareData, original_data: content.data};
961 }
962 });
963 },
Iftekharul Islamf2d74642017-07-10 16:42:14 -0500964 deleteLogs: function(logs) {
965 var defer = $q.defer();
966 var promises = [];
967
968 function finished(){
969 defer.resolve();
970 }
971
972 logs.forEach(function(item){
973 promises.push($http({
974 method: 'POST',
Iftekharul Islam1acb4122017-11-02 13:20:32 -0500975 url: DataService.getHost() + "/xyz/openbmc_project/logging/entry/"+item.Id+"/action/Delete",
Iftekharul Islamf2d74642017-07-10 16:42:14 -0500976 headers: {
977 'Accept': 'application/json',
978 'Content-Type': 'application/json'
979 },
980 withCredentials: true,
981 data: JSON.stringify({"data": []})
982 }));
983 });
984
985 $q.all(promises).then(finished);
986
987 return defer.promise;
988 },
989 resolveLogs: function(logs) {
990 var defer = $q.defer();
991 var promises = [];
992
993 function finished(){
994 defer.resolve();
995 }
996
997 logs.forEach(function(item){
998 promises.push($http({
999 method: 'PUT',
Iftekharul Islam1acb4122017-11-02 13:20:32 -05001000 url: DataService.getHost() + "/xyz/openbmc_project/logging/entry/"+item.Id+"/attr/Resolved",
Iftekharul Islamf2d74642017-07-10 16:42:14 -05001001 headers: {
1002 'Accept': 'application/json',
1003 'Content-Type': 'application/json'
1004 },
1005 withCredentials: true,
1006 data: JSON.stringify({"data": "1"})
1007 }));
1008 });
1009
1010 $q.all(promises).then(finished);
1011
1012 return defer.promise;
1013 },
Iftekharul Islam99d199f2017-03-24 15:28:25 -05001014 };
1015 return SERVICE;
1016 }]);
1017
1018 })(window.angular);