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