3238aec915a8212da106f4ee6019954c254b5612
[osm/UI.git] / skyquake / framework / core / modules / api / projectManagementAPI.js
1 /*
2 *
3 * Copyright 2016 RIFT.IO Inc
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 */
18 // DescriptorModelMeta API (NSD + VNFD)
19
20
21 var ProjectManagement = {};
22 var Promise = require('bluebird');
23 var rp = require('request-promise');
24 var Promise = require('promise');
25 var constants = require('../../api_utils/constants');
26 var utils = require('../../api_utils/utils');
27 var _ = require('lodash');
28
29 ProjectManagement.get = function(req) {
30 var self = this;
31 var api_server = req.query['api_server'];
32
33 return new Promise(function(resolve, reject) {
34 Promise.all([
35 rp({
36 uri: utils.confdPort(api_server) + '/api/operational/project',
37 method: 'GET',
38 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
39 'Authorization': req.session && req.session.authorization
40 }),
41 forever: constants.FOREVER_ON,
42 rejectUnauthorized: false,
43 resolveWithFullResponse: true
44 })
45 ]).then(function(result) {
46 var response = {};
47 response['data'] = {};
48 if (result[0].body) {
49 response['data']['project'] = JSON.parse(result[0].body)['rw-project:project'];
50 }
51 response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
52
53 resolve(response);
54 }).catch(function(error) {
55 var response = {};
56 console.log('Problem with ProjectManagement.get', error);
57 response.statusCode = error.statusCode || 500;
58 response.errorMessage = {
59 error: 'Failed to get ProjectManagement' + error
60 };
61 reject(response);
62 });
63 });
64 };
65
66 ProjectManagement.create = function(req) {
67 var self = this;
68 var api_server = req.query['api_server'];
69 var data = req.body;
70 data = {
71 "project":[data]
72 }
73 return new Promise(function(resolve, reject) {
74 Promise.all([
75 rp({
76 uri: utils.confdPort(api_server) + '/api/config/project',
77 method: 'POST',
78 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
79 'Authorization': req.session && req.session.authorization
80 }),
81 forever: constants.FOREVER_ON,
82 json: data,
83 rejectUnauthorized: false,
84 resolveWithFullResponse: true
85 })
86 ]).then(function(result) {
87 var response = {};
88 response['data'] = {};
89 if (result[0].body) {
90 response['data'] = result[0].body;
91 }
92 response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
93
94 resolve(response);
95 }).catch(function(error) {
96 var response = {};
97 console.log('Problem with ProjectManagement.create', error);
98 response.statusCode = error.statusCode || 500;
99 response.errorMessage = {
100 error: 'Failed to create user' + error
101 };
102 reject(response);
103 });
104 });
105 };
106 ProjectManagement.update = function(req) {
107 var self = this;
108 var api_server = req.query['api_server'];
109 var bodyData = req.body;
110 data = {
111 "project":[bodyData]
112 }
113 var updateTasks = [];
114
115 var updateUser = rp({
116 uri: utils.confdPort(api_server) + '/api/config/project',
117 method: 'PUT',
118 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
119 'Authorization': req.session && req.session.authorization
120 }),
121 forever: constants.FOREVER_ON,
122 json: data,
123 rejectUnauthorized: false,
124 resolveWithFullResponse: true
125 });
126 updateTasks.push(updateUser)
127 return new Promise(function(resolve, reject) {
128 Promise.all([
129 updateTasks
130 ]).then(function(result) {
131 var response = {};
132 response['data'] = {};
133 if (result[0].body) {
134 response['data'] = result[0].body;
135 }
136 response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
137
138 resolve(response);
139 }).catch(function(error) {
140 var response = {};
141 console.log('Problem with ProjectManagement.update', error);
142 response.statusCode = error.statusCode || 500;
143 response.errorMessage = {
144 error: 'Failed to passwordChange user' + error
145 };
146 reject(response);
147 });
148 });
149 };
150
151 ProjectManagement.delete = function(req) {
152 var self = this;
153 var projectname = req.params.projectname;
154 var api_server = req.query["api_server"];
155 var requestHeaders = {};
156 var url = `${utils.confdPort(api_server)}/api/config/project/${projectname}`
157 return new Promise(function(resolve, reject) {
158 _.extend(requestHeaders,
159 constants.HTTP_HEADERS.accept.data,
160 constants.HTTP_HEADERS.content_type.data, {
161 'Authorization': req.session && req.session.authorization
162 });
163 rp({
164 url: url,
165 method: 'DELETE',
166 headers: requestHeaders,
167 forever: constants.FOREVER_ON,
168 rejectUnauthorized: false,
169 }, function(error, response, body) {
170 if (utils.validateResponse('ProjectManagement.DELETE', error, response, body, resolve, reject)) {
171 return resolve({
172 statusCode: response.statusCode,
173 data: JSON.stringify(response.body)
174 });
175 };
176 });
177 })
178 }
179
180
181 ProjectManagement.getPlatform = function(req) {
182 var self = this;
183 var api_server = req.query['api_server'];
184
185 return new Promise(function(resolve, reject) {
186 Promise.all([
187 rp({
188 uri: utils.confdPort(api_server) + '/api/operational/rbac-platform-config',
189 method: 'GET',
190 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
191 'Authorization': req.session && req.session.authorization
192 }),
193 forever: constants.FOREVER_ON,
194 rejectUnauthorized: false,
195 resolveWithFullResponse: true
196 })
197 ]).then(function(result) {
198 var response = {};
199 response['data'] = {};
200 if (result[0].body) {
201 response['data']['platform'] = JSON.parse(result[0].body)['rw-rbac-platform:rbac-platform-config'];
202 }
203 response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
204
205 resolve(response);
206 }).catch(function(error) {
207 var response = {};
208 console.log('Problem with ProjectManagement.getPlatform', error);
209 response.statusCode = error.statusCode || 500;
210 response.errorMessage = {
211 error: 'Failed to get ProjectManagement.getPlatform' + error
212 };
213 reject(response);
214 });
215 });
216 };
217
218 ProjectManagement.updatePlatform = function(req) {
219 var self = this;
220 var api_server = req.query['api_server'];
221 var bodyData = req.body;
222 data = bodyData;
223 var updateTasks = [];
224
225 var updateUser = rp({
226 uri: utils.confdPort(api_server) + '/api/config/rbac-platform-config',
227 method: 'PUT',
228 headers: _.extend({}, constants.HTTP_HEADERS.accept.data, {
229 'Authorization': req.session && req.session.authorization
230 }),
231 forever: constants.FOREVER_ON,
232 json: data,
233 rejectUnauthorized: false,
234 resolveWithFullResponse: true
235 });
236 updateTasks.push(updateUser)
237 return new Promise(function(resolve, reject) {
238 Promise.all([
239 updateTasks
240 ]).then(function(result) {
241 var response = {};
242 response['data'] = {};
243 if (result[0].body) {
244 response['data'] = result[0].body;
245 }
246 response.statusCode = constants.HTTP_RESPONSE_CODES.SUCCESS.OK
247
248 resolve(response);
249 }).catch(function(error) {
250 var response = {};
251 console.log('Problem with ProjectManagement.updatePlatform', error);
252 response.statusCode = error.statusCode || 500;
253 response.errorMessage = {
254 error: 'Failed to passwordChange user' + error
255 };
256 reject(response);
257 });
258 });
259 };
260
261
262 module.exports = ProjectManagement;