NonRT-RIC A1 Northbound API
[nonrtric.git] / sdnc-a1-controller / oam / configbackuprestore / vnfconfigbackupservice / src / main / webapp / js / sdnc-controller / sdnc-compareConfig-controller.js
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : SDNC-FEATURES
4  * ================================================================================
5  * Copyright 2018 TechMahindra
6  *=================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 myApp.controller('CompareConfigCtrl', ['$scope','$filter', '$http','$window', 'growl', 'deviceConfigService', 'ObjectDiff', function($scope,$filter, $http,$window, growl, deviceConfigService, ObjectDiff) {
21
22     $scope.showResult = false;
23     $scope.showCompare = false;
24   $scope.showView=false;
25   $scope.pagination = false;
26   $scope.gap = 2;
27         $scope.filteredItems = [];
28         $scope.groupedItems = [];
29         $scope.itemsPerPage = 5;
30         $scope.pagedItems = [];
31         $scope.currentPage = 0;
32         $scope.version1=false;
33         $scope.version2=false;
34         $scope.version3=false;
35         $scope.version4=false;
36     //THIS FUNCTION WILL BE CALLED ON PAGE LOAD
37     $scope.getAllVNF = function() {
38
39         deviceConfigService.getAllVNF().then(function(data) {
40             if (data != null) {
41                 console.log(data);
42                 $scope.objvnfList = data;
43                 console.log("CompareConfigCtrl:getAllVNF called" + $scope.objvnfList);
44             } else {
45                 $scope.warningMessage = "No VNF is eligible for configuration!!!";
46                 growl.error($scope.warningMessage, {
47                     title: 'Warning!',
48                     globalDisableCloseButton: false,
49                     ttl: 7000,
50                     disableCountDown: true  
51                 });
52             }
53         });
54     };
55     $scope.getAllVNF();
56
57     $scope.selectVnf = function(selectedValueVnf) {
58
59         if (selectedValueVnf != null && selectedValueVnf != "") {
60             console.log("selectedvnf Value", selectedValueVnf);
61             var vnfId = selectedValueVnf;
62             $scope.getVersionList(vnfId);
63         } else {
64             $scope.ShowResult = false;
65             $scope.showCompare = false;
66             $scope.showResult = false;
67             $scope.errorMessage = "Please select a VNF!!!";
68             growl.error($scope.errorMessage, {
69                 title: 'Error!',
70                 globalDisableCloseButton: false,
71                 ttl: 7000,
72                 disableCountDown: true  
73             });
74         }
75
76     }
77
78     //THIS FUNCTION WILL BE CALLED ON SELECTION OF VNF
79     $scope.getVersionList = function(vnfId) {
80
81         $scope.ShowResult = false;
82
83         //service call to fetch the version list
84         deviceConfigService.getVersions(vnfId).then(function(result) {
85                 console.log("-----CompareConfigCtrl::getVersionList called from controler--", JSON.stringify(result));
86                 var status = result.status;
87                 var result = result.data;
88                 if (status == 200) {
89                     if (result.length >= 1) {
90                         //in case of success, build the model object to store the service output here
91                         $scope.createVersionModel(result);
92                         
93                     } else {
94                         $scope.ShowResult = false;
95                         $scope.warningMessage = "No configruation found for the selected VNF !!";
96                         growl.warning($scope.warningMessage, {
97                             title: 'Warning!',
98                             globalDisableCloseButton: false,
99                             ttl: 7000,
100                             disableCountDown: true  
101                         });
102                     }
103                 } else {
104                     $scope.ShowResult = false;
105                     $scope.warningMessage = "No configruation found for the selected VNF !!";
106                     growl.warning($scope.warningMessage, {
107                         title: 'Warning!',
108                         globalDisableCloseButton: false,
109                         ttl: 7000,
110                         disableCountDown: true  
111                     });
112                 }
113             },
114             function(response) {
115                 $scope.errorMessage = "Something went wrong, Please try again !!";
116                 growl.error($scope.errorMessage, {
117                     title: 'Error!',
118                     globalDisableCloseButton: false,
119                     ttl: 7000,
120                     disableCountDown: true  
121                 });
122                 console.log("--CompareConfigCtrl::getVersionList::Error--", response);
123             });
124     }
125
126     //Function to build the UI model to be shown
127     $scope.createVersionModel = function(result) {
128
129         $scope.objVersionModel = result;
130         $scope.objVersion = [];
131
132         console.log("-----CompareConfigCtrl::createVersionModel::--", JSON.stringify($scope.objVersionModel));
133         if ($scope.objVersionModel.length >= 1) {
134             $scope.ShowResult = true;
135             $scope.showCompare = true;
136             $scope.showView =true;
137             for (var i = 0; i < $scope.objVersionModel.length; i++) {
138                 var objVersionDetail = {};
139                 objVersionDetail.vnfname = $scope.objVersionModel[i].vnfname;
140                 objVersionDetail.vnfid = $scope.objVersionModel[i].vnfid;
141                 objVersionDetail.vnfversion = $scope.objVersionModel[i].vnfversion;
142                 objVersionDetail.createdAt = $scope.objVersionModel[i].creationdate;
143                 objVersionDetail.updatedAt = $scope.objVersionModel[i].lastupdated;
144                 objVersionDetail.configinfo = $scope.objVersionModel[i].configinfo;
145                 objVersionDetail.selected = false;
146                 $scope.objVersion.push(objVersionDetail);
147                 
148             }
149         }
150         console.log("-----CompareConfigCtrl::createVersionModel::final VersionModel--" + JSON.stringify($scope.objVersion));
151     
152      // init
153                 $scope.sort = {
154                         sortingOrder : 'vnfversion',
155                         reverse : true
156                 };
157
158                 var searchMatch = function(haystack, needle) {
159                         if (!needle) {
160                                 return true;
161                         }
162                         return haystack.toLowerCase().indexOf(
163                                         needle.toLowerCase()) !== -1;
164                 };
165
166                 // init the filtered items
167                 $scope.search = function() {
168                         $scope.filteredItems = $filter('filter')(
169                                         $scope.objVersion,
170                                         function(item) {
171                                                 for ( var attr in item) {
172                                                         if (searchMatch(item[attr],
173                                                                         $scope.query))
174                                                                 return true;
175                                                 }
176                                                 return false;
177                                         });
178                         // take care of the sorting order
179                         if ($scope.sort.sortingOrder !== '') {
180                                 $scope.filteredItems = $filter(
181                                                 'orderBy')(
182                                                 $scope.filteredItems,
183                                                 $scope.sort.sortingOrder,
184                                                 $scope.sort.reverse);
185                         }
186                         $scope.currentPage = 0;
187                         // now group by pages
188                         $scope.groupToPages();
189                 };
190
191                 // calculate page in place
192                 $scope.groupToPages = function() {
193                         $scope.pagedItems = [];
194
195                         for (var i = 0; i < $scope.filteredItems.length; i++) {
196                                 if (i % $scope.itemsPerPage === 0) {
197                                         $scope.pagedItems[Math.floor(i
198                                                         / $scope.itemsPerPage)] = [ $scope.filteredItems[i] ];
199                                 } else {
200                                         $scope.pagedItems[Math.floor(i
201                                                         / $scope.itemsPerPage)]
202                                                         .push($scope.filteredItems[i]);
203                                 }
204                         }
205                 };
206
207                 $scope.range = function(size, start, end) {
208                         var ret = [];
209                         //console.log(size, start, end);
210
211                         if (size < end) {
212                                 end = size;
213                                 start = size - $scope.gap;
214                         }
215                         for (var i = start; i < end; i++) {
216                                 ret.push(i);
217                         }
218                         //console.log(ret);
219                         return ret;
220                 };
221
222                 $scope.prevPage = function() {
223                         if ($scope.currentPage > 0) {
224                                 $scope.currentPage--;
225                         }
226                 };
227
228                 $scope.nextPage = function() {
229                         if ($scope.currentPage < $scope.pagedItems.length - 1) {
230                                 $scope.currentPage++;
231                         }
232                 };
233
234                 $scope.setPage = function() {
235                         $scope.currentPage = this.n;
236                 };
237
238                 // functions have been describe process the data
239                 // for display
240                 $scope.search();
241     
242     }
243   
244     
245     
246     //For apply version
247        
248  $scope.ApplyConfig = function(objVersion){
249            var count = 0;
250        angular.forEach(objVersion, function(item) {
251            if (item.selected == true) 
252                count++;
253        });
254        if (count < 1) {
255            $scope.errorMessage = "Select a config file to apply !!!";
256            growl.error($scope.errorMessage, {
257                title: 'Error!',
258                globalDisableCloseButton: false,
259                ttl: 7000,
260                disableCountDown: true  
261            });
262          }else if (count > 1) {
263              $scope.errorMessage = "Only one config file can be applyed at a time !!!";
264              growl.error($scope.errorMessage, {
265                  title: 'Error!',
266                  globalDisableCloseButton: false,
267                  ttl: 7000,
268                  disableCountDown: true  
269              });
270          }else
271                  $scope.applyModelNew(objVersion);
272    };
273    
274    
275    $scope.applyModelNew = function(objVersion){
276            
277            $scope.objCompareModel1 = {};
278
279        $scope.versionsSelected = [];
280        angular.forEach(objVersion, function(item) {
281            angular.forEach($scope.objVersionModel, function(val, index) {
282                if (item.selected) {
283                    if ($scope.versionsSelected.indexOf(item) == -1)
284                        $scope.versionsSelected.push(item);
285                }
286            })
287        });
288        console.log("--CompareConfigCtrl::createCompareModel::$scope.objVersionModel", JSON.stringify($scope.objVersionModel));
289      
290        angular.forEach($scope.versionsSelected, function(item) {
291            var versionObj = {};
292            var versionDetails = {};
293            versionDetails.vnfversion = item['vnfversion'];
294            versionDetails.vnfName = item['vnfname'];
295            var vnfid = item['vnfid'];
296            var config = item['configinfo'];
297            var config1=JSON.parse(config);
298            console.log("CompareConfigCtrl::createCompareModel::objCompareModel1", config1);
299            deviceConfigService.runApplyconfig(vnfid,config1);
300            $scope.showResult = false;
301            $scope.successMessage = "File uploaded successfully";
302            growl.success($scope.successMessage, {
303                title: 'Success!',
304                globalDisableCloseButton: false,
305                ttl: 7000,
306                disableCountDown: true  
307           }); 
308        });
309    } 
310    
311 //View Configuration
312    
313    $scope.ViewConfig = function(objVersion){
314            var elmnt1 = document.getElementById("view");
315         
316        elmnt1.style.display = "block";
317            var count = 0;
318        angular.forEach(objVersion, function(item) {
319            if (item.selected == true) 
320                count++;
321        });
322        if (count < 1) {
323            $scope.showResult = false;
324            $scope.errorMessage = "Select a config file to view !!!";
325            growl.error($scope.errorMessage, {
326                title: 'Error!',
327                globalDisableCloseButton: false,
328                ttl: 7000,
329                disableCountDown: true  
330            });
331          }else if (count > 1) {
332              $scope.showResult = false;
333              $scope.errorMessage = "Only one config file can be viewed at a time !!!";
334              growl.error($scope.errorMessage, {
335                  title: 'Error!',
336                  globalDisableCloseButton: false,
337                  ttl: 7000,
338                  disableCountDown: true  
339              });
340          }else
341                  $scope.ViewCompareModelNew(objVersion); 
342         };
343    
344     $scope.ViewCompareModelNew = function(objVersion) {
345         $scope.objCompareModel1 = {};
346
347         $scope.versionsSelected = [];
348         angular.forEach(objVersion, function(item) {
349             angular.forEach($scope.objVersionModel, function(val, index) {
350                 if (item.selected) {
351                     if ($scope.versionsSelected.indexOf(item) == -1)
352                         $scope.versionsSelected.push(item);
353                 }
354             })
355         });
356         console.log("--CompareConfigCtrl::createCompareModel::$scope.objVersionModel", JSON.stringify($scope.objVersionModel));
357       
358         angular.forEach($scope.versionsSelected, function(item) {
359             var versionObj = {};
360             var versionDetails = {};
361             versionDetails.vnfversion = item['vnfversion'];
362             versionDetails.vnfName = item['vnfname'];
363             var vnfid = item['vnfid'];
364             
365             
366             versionDetails.timeStamp = item.createdAt;
367             versionObj.versionDetails = versionDetails;
368
369             //fetch all the other topology/network,opertaion status for the vnf
370             versionObj.topologyInfo = $scope.fetchTopologyInfo(item);
371             versionObj.vnfIdInfo = $scope.fetchVnfId(item);     
372             versionObj.serviceStatusInfo= $scope.fetchServiceStatus(item);
373             versionObj.vnfTopologyIdentifier = $scope.vnfTopologyIdentifier(item);
374             versionObj.operationStatus = $scope.operationStatus(item);
375             versionObj.vnfRequestInfo=$scope.fetchVnfRequestInfo(item);
376             versionObj.serviceInfo= $scope.fetchServiceInfo(item);
377             versionObj.requestHeader= $scope.serviceRequestHeader(item);
378             versionObj.requestInfo=$scope.fetchRequestInfo(item);
379            
380             if ((versionObj.versionDetails.vnfversion == $scope.versionsSelected[0].vnfversion)) {
381                 $scope.objCompareModel1 = versionObj;
382             } else
383                 {console.log("CompareConfigCtrl::createCompareModel::objCompareModel1");
384
385         }
386        document.getElementById("compare").style.display = "none";
387     } );
388         $scope.showView=true;
389         $scope.showResult = true;
390         var elmnt1 = document.getElementById("view");
391         elmnt1.scrollIntoView();
392         console.log("CompareConfigCtrl::createCompareModel::objCompareModel1", JSON.stringify($scope.objCompareModel1));
393     }
394  
395    
396     //compare
397     
398     
399     $scope.CompareConfig = function(objVersion) {
400          var elmnt = document.getElementById("compare");
401         elmnt.style.display = "block";
402         var count = 0;
403         angular.forEach(objVersion, function(item) {
404             if (item.selected == true) 
405                 count++;
406         });
407         if (count > 4) {
408                 $scope.showResult = false;
409             $scope.errorMessage = "Four or lessthan four and gretterthan two config files can be selected for the comparison!!!";
410             growl.error($scope.errorMessage, {
411                 title: 'Error!',
412                 globalDisableCloseButton: false,
413                 ttl: 7000,
414                 disableCountDown: true  
415             });
416         } else if (count < 2){
417                 $scope.showResult = false;
418                  $scope.errorMessage = "At least two config files can be selected for the comparison!!!";
419              growl.error($scope.errorMessage, {
420                  title: 'Error!',
421                  globalDisableCloseButton: false,
422                  ttl: 7000,
423                  disableCountDown: true  
424              });
425         }else
426             $scope.createCompareModelNew(objVersion);
427     };
428
429     $scope.createCompareModelNew = function(objVersion) {
430
431         $scope.objCompareModel1 = {};
432         $scope.objCompareModel2 = {};
433
434         $scope.versionsSelected = [];
435         angular.forEach(objVersion, function(item) {
436             angular.forEach($scope.objVersionModel, function(val, index) {
437                 if (item.selected) {
438                     if ($scope.versionsSelected.indexOf(item) == -1)
439                         $scope.versionsSelected.push(item);
440                 }
441             })
442         });
443         console.log("--CompareConfigCtrl::createCompareModel::$scope.objVersionModel", JSON.stringify($scope.objVersionModel));
444         console.log("--CompareConfigCtrl::createCompareModel::$scope.objVersionModel", JSON.stringify($scope.versionsSelected));
445       
446         angular.forEach($scope.versionsSelected, function(item) {
447             var versionObj = {};
448             var versionDetails = {};
449             versionDetails.vnfversion = item.vnfversion;
450             versionDetails.timeStamp = item.createdAt;
451             versionObj.versionDetails = versionDetails;
452
453             //fetch all the other topology/network,opertaion status for the vnf
454             versionObj.topologyInfo = $scope.fetchTopologyInfo(item);
455             versionObj.vnfIdInfo = $scope.fetchVnfId(item);     
456             versionObj.serviceStatusInfo= $scope.fetchServiceStatus(item);
457             versionObj.vnfTopologyIdentifier = $scope.vnfTopologyIdentifier(item);
458             versionObj.operationStatus = $scope.operationStatus(item);
459             versionObj.vnfRequestInfo=$scope.fetchVnfRequestInfo(item);
460             versionObj.serviceInfo= $scope.fetchServiceInfo(item);
461             versionObj.requestHeader= $scope.serviceRequestHeader(item);
462             versionObj.requestInfo=$scope.fetchRequestInfo(item);
463            
464             if ((versionObj.versionDetails.vnfversion == $scope.versionsSelected[0].vnfversion)) {
465                 $scope.objCompareModel1 = versionObj;
466                 $scope.version1=true;
467             } else if ((versionObj.versionDetails.vnfversion == $scope.versionsSelected[1].vnfversion))
468                 {$scope.objCompareModel2 = versionObj;
469                 $scope.version2=true;
470                 $scope.version3=false;
471                 $scope.version4=false;
472         }else if((versionObj.versionDetails.vnfversion == $scope.versionsSelected[2].vnfversion)){
473                 $scope.objCompareModel3 = versionObj;
474                 $scope.version3=true;
475                 $scope.version4=false;
476         }else if((versionObj.versionDetails.vnfversion == $scope.versionsSelected[3].vnfversion)){
477                 $scope.objCompareModel4 = versionObj;
478                 $scope.version4=true;
479                 }
480       document.getElementById("view").style.display = "none";
481         } );
482         $scope.showResult = true;
483         var elmnt = document.getElementById("compare");
484         elmnt.scrollIntoView();
485         console.log("CompareConfigCtrl::createCompareModel::objCompareModel1", JSON.stringify($scope.objCompareModel1));
486         console.log("CompareConfigCtrl::createCompareModel::objCompareModel2", JSON.stringify($scope.objCompareModel2));
487         
488     }
489     
490     //1'st comparison for vnf topology info vnf-parameters
491    $scope.fetchTopologyInfo = function(item) {
492         var topologyInfo = {};
493         item = JSON.parse(item.configinfo);
494         var item= item['vnf-list'][0];
495         if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['vnf-topology-information'])) {
496             var vnfTopologyInfo = item['service-data']['vnf-topology-information'];
497             if (angular.isDefined(vnfTopologyInfo['vnf-parameters'] && vnfTopologyInfo['vnf-parameters'] != null)) {
498                 var vnfParameters = vnfTopologyInfo['vnf-parameters'];
499                 for (var i = 0; i < vnfParameters.length; i++) {
500
501                     var key = vnfParameters[i]['vnf-parameter-name'];
502                     var value = vnfParameters[i]['vnf-parameter-value'];
503                    console.log("CompareConfigCtrl::fetchTopologyInfo::key", key);
504                    console.log("CompareConfigCtrl::fetchTopologyInfo::value", value);
505                     topologyInfo[key] = value;
506
507                 }
508             console.log("CompareConfigCtrl::fetchTopologyInfo::", JSON.stringify(topologyInfo));
509                 return topologyInfo;
510             }
511         }
512     }
513     
514  
515    
516    //2nd comparison for vnf id
517    
518   $scope.fetchVnfId = function(item){
519           var vnfIdInfo = {}; 
520           item = JSON.parse(item.configinfo);
521           var item= item['vnf-list'][0];
522           if (angular.isDefined(item['vnf-id'])) {
523           var key=item['vnf-id'];
524           vnfIdInfo['vnf-id']=key;
525           }
526         console.log("CompareConfigCtrl::fetchVnfId::", JSON.stringify( vnfIdInfo));
527           return vnfIdInfo;
528   }  
529   
530  
531   //3rd comparison for service status
532   
533   $scope.fetchServiceStatus = function(item) {
534       var serviceStatusInfo = {};
535       
536       item = JSON.parse(item.configinfo);
537       var item= item['vnf-list'][0];
538       
539       if (angular.isDefined(item['service-status'])) {
540           var serviceStatus = item['service-status'];
541           if (angular.isDefined(serviceStatus)) {
542               angular.forEach(serviceStatus, function(value, key) {
543
544                  console.log("CompareConfigCtrl::fetchServiceStatus::key", key);
545                console.log("CompareConfigCtrl::fetchServiceStatus::value", value);
546                   serviceStatusInfo[key] = value;
547               });
548           }
549       }
550
551      console.log("CompareConfigCtrl::fetchServiceStatus::", JSON.stringify(serviceStatusInfo));
552       return serviceStatusInfo;
553   }
554   
555   // 4th comparison for vnf topology identifire
556   
557   $scope.vnfTopologyIdentifier = function(item) {
558       var topologyIdnetifier = {};
559       item = JSON.parse(item.configinfo);
560       var item= item['vnf-list'][0];
561       if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['vnf-topology-information']['vnf-topology-identifier'])) {
562           var topologyInfoidentifier = item['service-data']['vnf-topology-information']['vnf-topology-identifier'];
563           if (angular.isDefined(topologyInfoidentifier)) {
564               angular.forEach(topologyInfoidentifier, function(value, key) {
565
566                console.log("CompareConfigCtrl::fetchTopologyInfo::key", key);
567            console.log("CompareConfigCtrl::fetchTopologyInfo::value", value);
568                   topologyIdnetifier[key] = value;
569               });
570           }
571       }
572
573       console.log("CompareConfigCtrl::vnfTopologyIdentifier::", JSON.stringify(topologyIdnetifier));
574       return topologyIdnetifier;
575   }
576  
577   // 5th comparison for vnf request information
578   
579   $scope.fetchVnfRequestInfo = function(item) {
580       var vnfRequestInfo = {};
581       item = JSON.parse(item.configinfo);
582       var item= item['vnf-list'][0];
583       if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['vnf-request-information'])) {
584           var vnfRequest = item['service-data']['vnf-request-information'];
585           if (angular.isDefined(vnfRequest) && vnfRequest != null) {
586
587                   angular.forEach(vnfRequest, function(value, key) {
588
589              console.log("CompareConfigCtrl::fetchVnfRequestInfo::key", key);
590               console.log("CompareConfigCtrl::fetchVnfRequestInfo::value", value);
591                   vnfRequestInfo[key] = value;
592               });
593           }
594       }
595 console.log("CompareConfigCtrl::fetchVnfRequestInfo::", JSON.stringify(vnfRequestInfo));
596       return vnfRequestInfo;
597   }
598   
599   // 6th comparison for service info
600   
601
602   $scope.fetchServiceInfo = function(item) {
603       var serviceInfo = {};
604       item = JSON.parse(item.configinfo);
605       var item= item['vnf-list'][0];
606       if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['service-information'])) {
607           var service= item['service-data']['service-information'];
608           if (angular.isDefined(service) && service != null) {
609
610                   angular.forEach(service, function(value, key) {
611
612            console.log("CompareConfigCtrl::fetchServiceInfo::key", key);
613            console.log("CompareConfigCtrl::fetchServiceInfo::value", value);
614                   serviceInfo[key] = value;
615               });
616           }
617       }
618  console.log("CompareConfigCtrl::fetchServiceInfo::", JSON.stringify(serviceInfo));
619       return serviceInfo;
620   }
621   
622   // 7th comparison for sdnc request header
623   
624   $scope.serviceRequestHeader = function(item) {
625       var requestHeader = {};
626       item = JSON.parse(item.configinfo);
627       var item= item['vnf-list'][0];
628       if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['sdnc-request-header'])) {
629           var requestHeaderInfo = item['service-data']['sdnc-request-header'];
630           if (angular.isDefined(requestHeaderInfo) && requestHeaderInfo != null) {
631
632                   angular.forEach(requestHeaderInfo, function(value, key) {
633
634                  console.log("CompareConfigCtrl::serviceRequestHeader::key", key);
635              console.log("CompareConfigCtrl::serviceRequestHeader::value", value);
636                   requestHeader[key] = value;
637               });
638
639           }
640       }
641   console.log("CompareConfigCtrl::serviceRequestHeader::", JSON.stringify(requestHeader));
642       return requestHeader;
643   }
644   
645   // 8th comparison for oper status
646   $scope.operationStatus = function(item) {
647       var operationStatus = {};
648       item = JSON.parse(item.configinfo);
649       var item= item['vnf-list'][0];
650       if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['oper-status'])) {
651           var operStatus = item['service-data']['oper-status'];
652           if (angular.isDefined(operStatus) && operStatus != null) {
653
654                   angular.forEach(operStatus, function(value, key) {
655
656                  console.log("CompareConfigCtrl::operationStatus::key", key);
657                 console.log("CompareConfigCtrl::operationStatus::value", value);
658                   operationStatus[key] = value;
659               });
660
661           }
662       }
663      console.log("CompareConfigCtrl::operationStatus::", JSON.stringify(operationStatus));
664       return operationStatus;
665   }
666   // 9th comparison for request info
667  
668   $scope.fetchRequestInfo = function(item) {
669       var requestInfo = {};
670       item = JSON.parse(item.configinfo);
671       var item= item['vnf-list'][0];
672       if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['request-information'])) {
673           var request = item['service-data']['request-information'];
674           if (angular.isDefined(request) && request != null) {
675
676                   angular.forEach(request, function(value, key) {
677
678                  console.log("CompareConfigCtrl::fetchRequestInfo::key", key);
679                 console.log("CompareConfigCtrl::fetchRequestInfo::value", value);
680                   requestInfo[key] = value;
681               });
682
683           }
684       }
685      console.log("CompareConfigCtrl::fetchRequestInfo::", JSON.stringify(requestInfo));
686       return requestInfo;
687   }
688   
689 }]);