Endpoint added
[groupbasedpolicy.git] / groupbasedpolicy-ui / module / src / main / resources / gbp / endpoints / endpoint.service.js
1 define([], function () {
2     'use strict';
3
4     angular.module('app.gbp').service('EndpointService', EndpointService);
5
6     EndpointService.$inject = ['Restangular'];
7
8     function EndpointService(Restangular) {
9         /* methods */
10         this.createObject = createObject;
11
12         /**
13          * Endpoint constructor
14          * @constructor
15          */
16         function Endpoint() {
17             /* properties */
18             this.data = {};
19             this.data['endpoint-group'] = [];
20             this.data.condition = [];
21             /* methods */
22             this.setData = setData;
23             this.get = get;
24             // this.put = put;
25             this.post = post;
26             this.deleteEndpoint = deleteEndpoint;
27
28             /* Implementation */
29             /**
30              * fills Endpoint object with data
31              * @param data
32              */
33             function setData(data) {
34                 this.data['context-type'] = data['context-type'];
35                 this.data['context-id'] = data['context-id'];
36                 this.data['address-type'] = data['address-type'];
37                 this.data.address = data.address;
38                 this.data['network-containment'] = data['network-containment'];
39                 this.data.tenant = data.tenant;
40                 this.data.timestamp = Date();
41                 this.data['endpoint-group'] = data['endpoint-group'];
42             }
43             /**
44              * gets one Endpoint object from Restconf
45              * @param id
46              * @returns {*}
47              */
48             function get() {
49                 var self = this;
50
51                 var restObj = Restangular
52                     .one('restconf')
53                     .one('config')
54                     .one('policy:tenants')
55                     .one('tenant')
56                     .one(id)
57                     .one('policy')
58                     .one('Endpoint')
59                     .one(id);
60
61                 return restObj.get().then(function (data) {
62                     self.setData(data.Endpoint[0]);
63                 });
64             }
65
66             function post(successCbk) {
67
68                 var self = this,
69                     restObj = Restangular.one('restconf').one('operations').one('base-endpoint:register-endpoint'),
70                     reqData = {
71                         'input': {
72                             'address-endpoint-reg': [
73                                 self.data,
74                             ],
75                         },
76                     };
77                 restObj.customPOST(reqData).then(function (data) {
78                     successCbk(data);
79                 }, function () {
80
81                 });
82             }
83
84             function deleteEndpoint(id, successCallback) {
85                 var self = this;
86
87                 var restObj = Restangular
88                     .one('restconf')
89                     .one('config')
90                     .one('policy:tenants')
91                     .one('tenant')
92                     .one(id)
93                     .one('policy')
94                     .one('Endpoint')
95                     .one(self.data.id);
96
97                 return restObj.remove().then(function (data) {
98                     successCallback(data);
99                 }, function () {
100
101                 });
102             }
103
104         }
105
106         /**
107          * creates Endpoint object and fills it with data if available
108          * @param data
109          * @returns {Endpoint}
110          */
111         function createObject(data) {
112             var obj = new Endpoint();
113
114             if (data) {
115                 obj.setData(data);
116             }
117
118             return obj;
119         }
120     }
121
122     return EndpointService;
123 });