EPG CRUD
[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(id, idTenant) {
55                 var self = this;
56
57                 var restObj = Restangular.one('restconf').one('config').one('policy:tenants').one('tenant')
58                     .one(idTenant).one('policy').one('endpoint-group').one(this.data.id || id);
59
60                 return restObj.get().then(function(data) {
61                     self.setData(data['endpoint-group'][0]);
62                 });
63             }
64
65             function put(idTenant, successCallback) {
66                 var self = this;
67
68                 var restObj = Restangular.one('restconf').one('config').one('policy:tenants').one('tenant')
69                     .one(idTenant).one('policy').one('endpoint-group').one(self.data.id),
70                     dataObj = {'endpoint-group': [self.data]};
71
72                 return restObj.customPUT(dataObj).then(function(data) {
73                     successCallback(data);
74                 }, function(res) {
75
76                 });
77             }
78
79             function deleteEpg(idTenant, successCallback) {
80                 var self = this;
81
82                 var restObj = Restangular.one('restconf').one('config').one('policy:tenants').one('tenant')
83                     .one(idTenant).one('policy').one('endpoint-group').one(self.data.id);
84
85                 return restObj.remove().then(function(data) {
86                     successCallback(data);
87                 }, function(res) {
88
89                 });
90             }
91         }
92
93         /**
94          * creates Epg object and fills it with data if available
95          * @param data
96          * @returns {Epg}
97          */
98         function createObject(data) {
99             var obj = new Epg();
100
101             if (data) {
102                 obj.setData(data);
103             }
104
105             return obj;
106         }
107     }
108
109     return EpgService;
110 });