Rift.IO OSM R1 Initial Submission
[osm/UI.git] / skyquake / plugins / launchpad / routes.js
diff --git a/skyquake/plugins/launchpad/routes.js b/skyquake/plugins/launchpad/routes.js
new file mode 100644 (file)
index 0000000..d8f6493
--- /dev/null
@@ -0,0 +1,348 @@
+/*
+ * 
+ *   Copyright 2016 RIFT.IO Inc
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+var app = require('express').Router();
+var cors = require('cors');
+var utils = require('../../framework/core/api_utils/utils.js');
+var launchpadAPI = require('./api/launchpad.js');
+
+app.get('/api/nsr', cors(), function(req, res) {
+        launchpadAPI['nsr'].get(req).then(function(data) {
+            res.send(data);
+        }, function(error) {
+            res.status(error.statusCode);
+            res.send(error.errorMessage);
+        });
+    });
+    app.get('/api/nsr/:id', cors(), function(req, res) {
+        launchpadAPI['nsr'].get(req).then(function(data) {
+            res.send(data);
+        }, function(error) {
+            res.status(error.statusCode);
+            res.send(error.errorMessage);
+        });
+    });
+    app.delete('/api/nsr/:id', cors(), function(req, res) {
+        launchpadAPI['nsr'].delete(req).then(function(response) {
+            utils.sendSuccessResponse(response, res);
+        }, function(error) {
+            sendErrorResponse(error, res);
+        });
+    });
+    app.post('/api/nsr', cors(), function(req, res) {
+        launchpadAPI['nsr'].create(req).then(function(data) {
+            res.send(data);
+        }, function(error) {
+            console.log(error)
+            res.status(error.statusCode);
+            res.send(error.errorMessage);
+        });
+    });
+    app.get('/api/nsr/:nsr_id/vnfr', cors(), function(req, res) {
+        launchpadAPI['vnfr'].get(req).then(function(data) {
+            res.send(data);
+        }, function(error) {
+            res.status(error.statusCode);
+            res.send(error.errorMessage);
+        }).catch(function(error) {
+            console.log(error)
+        });
+    });
+    app.get('/api/nsr/:nsr_id/vld', cors(), function(req, res) {
+        launchpadAPI['nsr'].nsd.vld.get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.get('/api/nsr/:nsr_id/vld/:vld_id', cors(), function(req, res) {
+        launchpadAPI['nsr'].nsd.vld.get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.delete('/api/nsr/:nsr_id/vld/:vld_id', function(req, res) {
+        launchpadAPI['nsr'].nsd.vld.delete(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.post('/api/nsr/:nsr_id/vld', cors(), function(req, res) {
+        launchpadAPI['nsr'].nsd.vld.create(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.put('/api/nsr/:nsr_id/vld/:vld_id', cors(), function(req, res) {
+        launchpadAPI['nsr'].nsd.vld.update(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.get('/api/vlr', cors(), function(req, res) {
+        launchpadAPI['vlr'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.get('/api/vlr/:id', cors(), function(req, res) {
+        launchpadAPI['vlr'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+
+    app.put('/api/nsr/:id/admin-status', cors(), function(req, res) {
+        launchpadAPI['nsr'].setStatus(req).then(function(data) {
+            res.send(data);
+        }, function(error) {
+            res.status(error.statusCode);
+            res.send(error.errorMessage);
+        });
+    });
+    app.post('/api/nsr/:id/:scaling_group_id/instance', cors(), function(req, res) {
+        launchpadAPI['nsr'].createScalingGroupInstance(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            console.log(error)
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.delete('/api/nsr/:id/:scaling_group_id/instance/:scaling_instance_id', cors(), function(req, res) {
+        launchpadAPI['nsr'].deleteScalingGroupInstance(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            console.log(error)
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.get('/api/vnfr', cors(), function(req, res) {
+        launchpadAPI['vnfr'].get(req).then(function(data) {
+            res.send(data);
+        }, function(error) {
+            res.status(error.statusCode);
+            res.send(error.errorMessage);
+        });
+    });
+    app.get('/api/vnfr/:id', cors(), function(req, res) {
+        launchpadAPI['vnfr'].get(req).then(function(data) {
+            res.send(data);
+        }, function(error) {
+            res.status(error.statusCode);
+            res.send(error.errorMessage);
+        });
+    });
+    app.get('/api/vnfr/:vnfr_id/:vdur_id', cors(), function(req, res) {
+        launchpadAPI['vdur'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        })
+    });
+    app.get('/api/catalog', cors(), function(req, res) {
+        launchpadAPI['catalog'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            if(!error || !error.statusCode) {
+                error = {
+                    statusCode: 500,
+                    message: 'unknown error with Catalog.get'
+                }
+            }
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    //TODO refactor this query
+    app.get('/api/decorated-catalog', cors(), function(req, res) {
+        launchpadAPI['catalog'].get(req).then(function(data) {
+            var returnData = launchpadAPI['catalog'].decorateNsdCatalogWithPlacementGroups(data)
+            utils.sendSuccessResponse(returnData, res);
+        }, function(error) {
+            if(!error || !error.statusCode) {
+                error = {
+                    statusCode: 500,
+                    message: 'unknown error with Catalog.get'
+                }
+            }
+            utils.sendErrorResponse(error, res);
+        });
+    });
+
+    //TODO refactor this query
+    app.post('/api/vnfd', cors(), function(req, res) {
+        launchpadAPI['catalog'].getVNFD(req).then(function(data) {
+            res.send(data);
+        }).catch(function(error) {
+            console.log(error)
+        });
+    });
+    app.get('/api/nsd/:nsd_id/input-param', cors(), function(req, res) {
+        launchpadAPI['nsd'].getInputParams(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.post('/api/exec-ns-service-primitive', cors(), function(req, res) {
+        launchpadAPI['rpc'].executeNSServicePrimitive(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.get('/api/get-ns-service-primitives', cors(), function(req, res) {
+        launchpadAPI['rpc'].getNSServicePrimitiveValues(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.delete('/api/catalog/:catalogType/:id', cors(), function(req, res) {
+        launchpadAPI['catalog'].delete(req).then(function(response) {
+            res.status(response.statusCode);
+            res.send({});
+        }, function(error) {
+            res.status(error.statusCode);
+            res.send(error.errorMessage);
+        });
+    });
+    app.post('/api/catalog/:catalogType', cors(), function(req, res) {
+        launchpadAPI['catalog'].create(req).then(function(data) {
+            res.send(data);
+        }, function(error) {
+            res.status(error.statusCode);
+            res.send(error.errorMessage);
+        });
+    });
+    app.put('/api/catalog/:catalogType/:id', cors(), function(req, res) {
+        launchpadAPI['catalog'].update(req).then(function(data) {
+            res.send(data);
+        }, function(error) {
+            res.status(error.statusCode);
+            res.send(error.errorMessage);
+        });
+    });
+    app.get('/api/nsr/:id/compute-topology', cors(), function(req, res) {
+        launchpadAPI['computeTopology'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        })
+    });
+    app.get('/api/network-topology', cors(), function(req, res) {
+        launchpadAPI['networkTopology'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        })
+    });
+    app.get('/api/cloud-account', cors(), function(req, res) {
+        launchpadAPI['cloud_account'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        })
+    });
+    app.get('/api/config', cors(), function(req, res) {
+        launchpadAPI['config'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        })
+    });
+    app.get('/api/config-agent-account', cors(), function(req, res) {
+        launchpadAPI['config-agent-account'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.get('/api/config-agent-account/:id', cors(), function(req, res) {
+        launchpadAPI['config-agent-account'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.post('/api/config-agent-account', cors(), function(req, res) {
+        launchpadAPI['config-agent-account'].create(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.put('/api/config-agent-account/:id', cors(), function(req, res) {
+        launchpadAPI['config-agent-account'].update(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.delete('/api/config-agent-account/:id', cors(), function(req, res) {
+        launchpadAPI['config-agent-account'].delete(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    //DataCenters
+    app.get('/api/data-centers', cors(), function(req, res) {
+        launchpadAPI['data_centers'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });//DataCenters
+    app.get('/api/ssh-key', cors(), function(req, res) {
+        launchpadAPI['SSHkey'].get(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.put('/api/ssh-key', cors(), function(req, res) {
+        launchpadAPI['SSHkey'].put(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.post('/api/ssh-key', cors(), function(req, res) {
+        launchpadAPI['SSHkey'].post(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+    app.delete('/api/ssh-key/:name', cors(), function(req, res) {
+        launchpadAPI['SSHkey'].delete(req).then(function(data) {
+            utils.sendSuccessResponse(data, res);
+        }, function(error) {
+            utils.sendErrorResponse(error, res);
+        });
+    });
+
+    utils.passThroughConstructor(app);
+
+module.exports = app;