3 * Copyright 2016 RIFT.IO Inc
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 var app
= require('express').Router();
20 var cors
= require('cors');
21 var utils
= require('../../framework/core/api_utils/utils.js');
22 var launchpadAPI
= require('./api/launchpad.js');
24 app
.get('/api/nsr', cors(), function(req
, res
) {
25 launchpadAPI
['nsr'].get(req
).then(function(data
) {
28 res
.status(error
.statusCode
);
29 res
.send(error
.errorMessage
);
32 app
.get('/api/nsr/:id', cors(), function(req
, res
) {
33 launchpadAPI
['nsr'].get(req
).then(function(data
) {
36 res
.status(error
.statusCode
);
37 res
.send(error
.errorMessage
);
40 app
.delete('/api/nsr/:id', cors(), function(req
, res
) {
41 launchpadAPI
['nsr'].delete(req
).then(function(response
) {
42 utils
.sendSuccessResponse(response
, res
);
44 sendErrorResponse(error
, res
);
47 app
.post('/api/nsr', cors(), function(req
, res
) {
48 launchpadAPI
['nsr'].create(req
).then(function(data
) {
52 res
.status(error
.statusCode
);
53 res
.send(error
.errorMessage
);
56 app
.get('/api/nsr/:nsr_id/vnfr', cors(), function(req
, res
) {
57 launchpadAPI
['vnfr'].get(req
).then(function(data
) {
60 res
.status(error
.statusCode
);
61 res
.send(error
.errorMessage
);
62 }).catch(function(error
) {
66 app
.get('/api/nsr/:nsr_id/vld', cors(), function(req
, res
) {
67 launchpadAPI
['nsr'].nsd
.vld
.get(req
).then(function(data
) {
68 utils
.sendSuccessResponse(data
, res
);
70 utils
.sendErrorResponse(error
, res
);
73 app
.get('/api/nsr/:nsr_id/vld/:vld_id', cors(), function(req
, res
) {
74 launchpadAPI
['nsr'].nsd
.vld
.get(req
).then(function(data
) {
75 utils
.sendSuccessResponse(data
, res
);
77 utils
.sendErrorResponse(error
, res
);
80 app
.delete('/api/nsr/:nsr_id/vld/:vld_id', function(req
, res
) {
81 launchpadAPI
['nsr'].nsd
.vld
.delete(req
).then(function(data
) {
82 utils
.sendSuccessResponse(data
, res
);
84 utils
.sendErrorResponse(error
, res
);
87 app
.post('/api/nsr/:nsr_id/vld', cors(), function(req
, res
) {
88 launchpadAPI
['nsr'].nsd
.vld
.create(req
).then(function(data
) {
89 utils
.sendSuccessResponse(data
, res
);
91 utils
.sendErrorResponse(error
, res
);
94 app
.put('/api/nsr/:nsr_id/vld/:vld_id', cors(), function(req
, res
) {
95 launchpadAPI
['nsr'].nsd
.vld
.update(req
).then(function(data
) {
96 utils
.sendSuccessResponse(data
, res
);
98 utils
.sendErrorResponse(error
, res
);
101 app
.get('/api/vlr', cors(), function(req
, res
) {
102 launchpadAPI
['vlr'].get(req
).then(function(data
) {
103 utils
.sendSuccessResponse(data
, res
);
105 utils
.sendErrorResponse(error
, res
);
108 app
.get('/api/vlr/:id', cors(), function(req
, res
) {
109 launchpadAPI
['vlr'].get(req
).then(function(data
) {
110 utils
.sendSuccessResponse(data
, res
);
112 utils
.sendErrorResponse(error
, res
);
116 app
.put('/api/nsr/:id/admin-status', cors(), function(req
, res
) {
117 launchpadAPI
['nsr'].setStatus(req
).then(function(data
) {
120 res
.status(error
.statusCode
);
121 res
.send(error
.errorMessage
);
124 app
.post('/api/nsr/:id/:scaling_group_id/instance', cors(), function(req
, res
) {
125 launchpadAPI
['nsr'].createScalingGroupInstance(req
).then(function(data
) {
126 utils
.sendSuccessResponse(data
, res
);
129 utils
.sendErrorResponse(error
, res
);
132 app
.delete('/api/nsr/:id/:scaling_group_id/instance/:scaling_instance_id', cors(), function(req
, res
) {
133 launchpadAPI
['nsr'].deleteScalingGroupInstance(req
).then(function(data
) {
134 utils
.sendSuccessResponse(data
, res
);
137 utils
.sendErrorResponse(error
, res
);
140 app
.get('/api/vnfr', cors(), function(req
, res
) {
141 launchpadAPI
['vnfr'].get(req
).then(function(data
) {
144 res
.status(error
.statusCode
);
145 res
.send(error
.errorMessage
);
148 app
.get('/api/vnfr/:id', cors(), function(req
, res
) {
149 launchpadAPI
['vnfr'].get(req
).then(function(data
) {
152 res
.status(error
.statusCode
);
153 res
.send(error
.errorMessage
);
156 app
.get('/api/vnfr/:vnfr_id/:vdur_id', cors(), function(req
, res
) {
157 launchpadAPI
['vdur'].get(req
).then(function(data
) {
158 utils
.sendSuccessResponse(data
, res
);
160 utils
.sendErrorResponse(error
, res
);
163 app
.get('/api/vnfr/:vnfr_id/vdur/:vdur_id/console-url', function(req
, res
) {
164 launchpadAPI
['vdur']['consoleUrl'].get(req
).then(function(data
) {
165 utils
.sendSuccessResponse(data
, res
);
167 utils
.sendErrorResponse(error
, res
);
170 app
.get('/api/catalog', cors(), function(req
, res
) {
171 launchpadAPI
['catalog'].get(req
).then(function(data
) {
172 utils
.sendSuccessResponse(data
, res
);
174 if(!error
|| !error
.statusCode
) {
177 message
: 'unknown error with Catalog.get'
180 utils
.sendErrorResponse(error
, res
);
183 //TODO refactor this query
184 app
.get('/api/decorated-catalog', cors(), function(req
, res
) {
185 launchpadAPI
['catalog'].get(req
).then(function(data
) {
186 var returnData
= launchpadAPI
['catalog'].decorateNsdCatalogWithPlacementGroups(data
)
187 utils
.sendSuccessResponse(returnData
, res
);
189 if(!error
|| !error
.statusCode
) {
192 message
: 'unknown error with Catalog.get'
195 utils
.sendErrorResponse(error
, res
);
199 //TODO refactor this query
200 app
.post('/api/vnfd', cors(), function(req
, res
) {
201 launchpadAPI
['catalog'].getVNFD(req
).then(function(data
) {
203 }).catch(function(error
) {
207 app
.get('/api/nsd/:nsd_id/input-param', cors(), function(req
, res
) {
208 launchpadAPI
['nsd'].getInputParams(req
).then(function(data
) {
209 utils
.sendSuccessResponse(data
, res
);
211 utils
.sendErrorResponse(error
, res
);
214 app
.post('/api/exec-ns-service-primitive', cors(), function(req
, res
) {
215 launchpadAPI
['rpc'].executeNSServicePrimitive(req
).then(function(data
) {
216 utils
.sendSuccessResponse(data
, res
);
218 utils
.sendErrorResponse(error
, res
);
221 app
.get('/api/get-ns-service-primitives', cors(), function(req
, res
) {
222 launchpadAPI
['rpc'].getNSServicePrimitiveValues(req
).then(function(data
) {
223 utils
.sendSuccessResponse(data
, res
);
225 utils
.sendErrorResponse(error
, res
);
228 app
.delete('/api/catalog/:catalogType/:id', cors(), function(req
, res
) {
229 launchpadAPI
['catalog'].delete(req
).then(function(response
) {
230 res
.status(response
.statusCode
);
233 res
.status(error
.statusCode
);
234 res
.send(error
.errorMessage
);
237 app
.post('/api/catalog/:catalogType', cors(), function(req
, res
) {
238 launchpadAPI
['catalog'].create(req
).then(function(data
) {
241 res
.status(error
.statusCode
);
242 res
.send(error
.errorMessage
);
245 app
.put('/api/catalog/:catalogType/:id', cors(), function(req
, res
) {
246 launchpadAPI
['catalog'].update(req
).then(function(data
) {
249 res
.status(error
.statusCode
);
250 res
.send(error
.errorMessage
);
253 app
.get('/api/nsr/:id/compute-topology', cors(), function(req
, res
) {
254 launchpadAPI
['computeTopology'].get(req
).then(function(data
) {
255 utils
.sendSuccessResponse(data
, res
);
257 utils
.sendErrorResponse(error
, res
);
260 app
.get('/api/network-topology', cors(), function(req
, res
) {
261 launchpadAPI
['networkTopology'].get(req
).then(function(data
) {
262 utils
.sendSuccessResponse(data
, res
);
264 utils
.sendErrorResponse(error
, res
);
267 app
.get('/api/cloud-account', cors(), function(req
, res
) {
268 launchpadAPI
['cloud_account'].get(req
).then(function(data
) {
269 utils
.sendSuccessResponse(data
, res
);
271 utils
.sendErrorResponse(error
, res
);
274 app
.get('/api/config', cors(), function(req
, res
) {
275 launchpadAPI
['config'].get(req
).then(function(data
) {
276 utils
.sendSuccessResponse(data
, res
);
278 utils
.sendErrorResponse(error
, res
);
281 app
.get('/api/config-agent-account', cors(), function(req
, res
) {
282 launchpadAPI
['config-agent-account'].get(req
).then(function(data
) {
283 utils
.sendSuccessResponse(data
, res
);
285 utils
.sendErrorResponse(error
, res
);
288 app
.get('/api/config-agent-account/:id', cors(), function(req
, res
) {
289 launchpadAPI
['config-agent-account'].get(req
).then(function(data
) {
290 utils
.sendSuccessResponse(data
, res
);
292 utils
.sendErrorResponse(error
, res
);
295 app
.post('/api/config-agent-account', cors(), function(req
, res
) {
296 launchpadAPI
['config-agent-account'].create(req
).then(function(data
) {
297 utils
.sendSuccessResponse(data
, res
);
299 utils
.sendErrorResponse(error
, res
);
302 app
.put('/api/config-agent-account/:id', cors(), function(req
, res
) {
303 launchpadAPI
['config-agent-account'].update(req
).then(function(data
) {
304 utils
.sendSuccessResponse(data
, res
);
306 utils
.sendErrorResponse(error
, res
);
309 app
.delete('/api/config-agent-account/:id', cors(), function(req
, res
) {
310 launchpadAPI
['config-agent-account'].delete(req
).then(function(data
) {
311 utils
.sendSuccessResponse(data
, res
);
313 utils
.sendErrorResponse(error
, res
);
317 app
.get('/api/data-centers', cors(), function(req
, res
) {
318 launchpadAPI
['data_centers'].get(req
).then(function(data
) {
319 utils
.sendSuccessResponse(data
, res
);
321 utils
.sendErrorResponse(error
, res
);
324 app
.get('/api/ssh-key', cors(), function(req
, res
) {
325 launchpadAPI
['SSHkey'].get(req
).then(function(data
) {
326 utils
.sendSuccessResponse(data
, res
);
328 utils
.sendErrorResponse(error
, res
);
331 app
.put('/api/ssh-key', cors(), function(req
, res
) {
332 launchpadAPI
['SSHkey'].put(req
).then(function(data
) {
333 utils
.sendSuccessResponse(data
, res
);
335 utils
.sendErrorResponse(error
, res
);
338 app
.post('/api/ssh-key', cors(), function(req
, res
) {
339 launchpadAPI
['SSHkey'].post(req
).then(function(data
) {
340 utils
.sendSuccessResponse(data
, res
);
342 utils
.sendErrorResponse(error
, res
);
345 app
.delete('/api/ssh-key/:name', cors(), function(req
, res
) {
346 launchpadAPI
['SSHkey'].delete(req
).then(function(data
) {
347 utils
.sendSuccessResponse(data
, res
);
349 utils
.sendErrorResponse(error
, res
);
353 utils
.passThroughConstructor(app
);
355 module
.exports
= app
;