Endpoints
[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
22             /* methods */
23             this.setData = setData;
24             this.post = post;
25             this.deleteEndpoint = deleteEndpoint;
26
27             /* Implementation */
28             /**
29              * fills Endpoint object with data
30              * @param data
31              */
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['endpoint-group'] = data['endpoint-group'] ? data['endpoint-group'] : [];
41                 this.data.condition = data.condition ? data.condition : [];
42                 this.data.timestamp = data.timestamp ? data.timestamp : Date();
43                 if (this.data['absolute-location']){
44                     this.data['absolute-location']['internal-node'] = data['absolute-location']['internal-node'];
45                     this.data['absolute-location']['internal-node-connector'] = data['absolute-location']['internal-node-connector'];
46                 }
47             }
48             /**
49              * gets one Endpoint object from Restconf
50              * @param id
51              * @returns {*}
52              */
53
54             function post(successCbk) {
55
56                 var self = this,
57                     restObj = Restangular.one('restconf').one('operations').one('base-endpoint:register-endpoint'),
58                     reqData = {
59                         'input': {
60                             'address-endpoint-reg': [
61                                 self.data,
62                             ],
63                         },
64                     };
65                 restObj.customPOST(reqData).then(function (data) {
66                     successCbk(data);
67                 }, function () {
68
69                 });
70             }
71
72             function deleteEndpoint(successCallback) {
73                 var self = this,
74                     tmpEndpointObject = {
75                         'context-type': self.data['context-type'],
76                         'context-id': self.data['context-id'],
77                         'address': self.data.address,
78                         'address-type': self.data['address-type'],
79                     };
80                 var restObj = Restangular
81                         .one('restconf')
82                         .one('operations')
83                         .one('base-endpoint:unregister-endpoint'),
84                     reqData = {
85                         'input': {
86                             'address-endpoint-unreg': [
87                                 tmpEndpointObject,
88                             ],
89                         },
90                     };
91                 return restObj.customPOST(reqData).then(function (data) {
92                     successCallback(data);
93                 }, function () {
94
95                 });
96             }
97         }
98
99         /**
100          * creates Endpoint object and fills it with data if available
101          * @param data
102          * @returns {Endpoint}
103          */
104         function createObject(data) {
105             var obj = new Endpoint();
106
107             if (data) {
108                 obj.setData(data);
109             }
110
111             return obj;
112         }
113     }
114
115     return EndpointService;
116 });