369d4e3bc402b2de7a257661cdf28a05673a7816
[groupbasedpolicy.git] / groupbasedpolicy-ui / module / src / main / resources / gbp / endpoints / endpoints-list.service.js
1 define([], function () {
2     'use strict';
3
4     angular.module('app.gbp').service('EndpointsListService', EndpointsListService);
5
6     EndpointsListService.$inject = ['$filter', 'Restangular', 'EndpointService'];
7
8     function EndpointsListService($filter, Restangular, EndpointService) {
9         /* methods */
10         this.createList = createList;
11
12         function EndpointsList() {
13             /* properties */
14             this.data = [];
15
16             /* methods */
17             this.setData = setData;
18             this.get = get;
19             this.getByEpg = getByEpg;
20             this.getByTenantId = getByTenantId;
21             this.clearData = clearData;
22
23             /* Implementation */
24             /**
25              * fills EndpointsList object with data
26              * @param data
27              */
28             function setData(data) {
29                 var self = this;
30
31                 self.clearData();
32                 data && data.forEach(function (dataElement) {
33                     self.data.push(EndpointService.createObject(dataElement));
34                 });
35             }
36
37             function clearData() {
38                 var self = this;
39                 self.data = [];
40             }
41
42             function get() {
43                 /* jshint validthis:true */
44                 var self = this;
45                 var restObj = Restangular.one('restconf').one('operational').one('base-endpoint:endpoints');
46
47                 return restObj.get().then(function (data) {
48                     self.setData(data.endpoints['address-endpoints']['address-endpoint']);
49                 });
50             }
51
52             function getByEpg(epg, tenant, successCallback) {
53                 /* jshint validthis:true */
54                 var self = this;
55                 var restObj = Restangular.one('restconf').one('operational').one('base-endpoint:endpoints');
56
57                 return restObj.get().then(function (data) {
58                     var endpoints = $filter('filter')(
59                         data.endpoints['address-endpoints']['address-endpoint'].map(function(endpoint) {
60                             return endpoint;
61                         }),
62                         function (ep) {
63                             if (ep.tenant === tenant && ep['endpoint-group'].indexOf(epg.id) !== -1) {
64                                 return true;
65                             }
66                         }
67                     );
68                     self.setData(endpoints);
69
70                     (successCallback || angular.noop)();
71                 });
72             }
73
74             function getByTenantId(rootTenant) {
75                 var self = this;
76                 var restObj = Restangular.one('restconf').one('operational').one('base-endpoint:endpoints');
77                 return restObj.get().then(function (data) {
78                     var endpoints = $filter('filter')(data.endpoints['address-endpoints']['address-endpoint'].map(function(endpoint) {
79                         return endpoint;
80                     }), { 'tenant': rootTenant });
81                     self.setData(endpoints);
82                 });
83             }
84
85         }
86
87         function createList() {
88             var obj = new EndpointsList();
89
90             return obj;
91         }
92     }
93
94     return EndpointsListService;
95 });