646321e887706d27d7e8caa1fc3a2d618f9bfae8
[groupbasedpolicy.git] / groupbasedpolicy-ui / module / src / main / resources / gbp / epg / epg.service.js
1 define([], function() {
2     'use strict';
3
4     angular.module('app.gbp').service('EpgService', EpgService);
5
6     EpgService.$inject = ['Restangular'];
7
8     function EpgService(Restangular) {
9         /* methods */
10         this.createObject = createObject;
11
12
13         /**
14          * Epg constructor
15          * @constructor
16          */
17         function Epg() {
18             /* properties */
19             this.data = {};
20             /* methods */
21             this.setData = setData;
22             this.get = get;
23             this.put = put;
24             this.deleteEpg = deleteEpg;
25
26             /* Implementation */
27             /**
28              * fills Epg object with data
29              * @param data
30              */
31             function setData(data) {
32                 this.data.id = data.id;
33                 this.data.name = data.name;
34                 this.data.description = data.description;
35                 this.data['intra-group-policy'] = data['intra-group-policy'];
36
37                 this.data['consumer-named-selector'] = data['consumer-named-selector'];
38                 this.data['provider-named-selector'] = data['provider-named-selector'];
39                 this.data['consumer-target-selector'] = data['consumer-target-selector'];
40                 this.data['provider-target-selector'] = data['provider-target-selector'];
41
42                 this.data['network-domain'] = data['network-domain'];
43                 this.data.parent = data.parent;
44
45                 this.data.requirement = data.requirement;
46                 this.data.capability = data.capability;
47             }
48
49             /**
50              * gets one Epg object from Restconf
51              * @param id
52              * @returns {*}
53              */
54             function get(idEpg, idTenant, apiType, successCallback) {
55                 var self = this;
56
57                 var restObj = Restangular.one('restconf').one(apiType).one('policy:tenants').one('tenant')
58                     .one(idTenant).one('policy').one('endpoint-group').one(this.data.id || idEpg);
59
60                 return restObj.get().then(function(data) {
61                     self.setData(data['endpoint-group'][0]);
62                     successCallback();
63                 });
64             }
65
66             function put(idTenant, successCallback) {
67                 var self = this;
68
69                 var restObj = Restangular.one('restconf').one('config').one('policy:tenants').one('tenant')
70                     .one(idTenant).one('policy').one('endpoint-group').one(self.data.id),
71                     dataObj = {'endpoint-group': [self.data]};
72
73                 return restObj.customPUT(dataObj).then(function(data) {
74                     successCallback(data);
75                 }, function(res) {
76
77                 });
78             }
79
80             function deleteEpg(idTenant, successCallback) {
81                 var self = this;
82
83                 var restObj = Restangular.one('restconf').one('config').one('policy:tenants').one('tenant')
84                     .one(idTenant).one('policy').one('endpoint-group').one(self.data.id);
85
86                 return restObj.remove().then(function(data) {
87                     successCallback(data);
88                 }, function(res) {
89
90                 });
91             }
92         }
93
94         /**
95          * creates Epg object and fills it with data if available
96          * @param data
97          * @returns {Epg}
98          */
99         function createObject(data) {
100             var obj = new Epg();
101
102             if (data) {
103                 obj.setData(data);
104             }
105
106             return obj;
107         }
108     }
109
110     return EpgService;
111 });