X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Fopenstack%2Fopenstack_dummies%2Fnova_dummy_api.py;h=9dcfa48e27fb914e678d4a9a215fa16e559a2016;hb=7c16ebcfd5af529961175fb53b5788c276e5ae86;hp=2b356e1904398f1c92f6e5d29ae05c9b37683eb0;hpb=b668d69e8e81bf4e6378daa6fb87e1e9f493aaf7;p=osm%2Fvim-emu.git diff --git a/src/emuvim/api/openstack/openstack_dummies/nova_dummy_api.py b/src/emuvim/api/openstack/openstack_dummies/nova_dummy_api.py index 2b356e1..9dcfa48 100755 --- a/src/emuvim/api/openstack/openstack_dummies/nova_dummy_api.py +++ b/src/emuvim/api/openstack/openstack_dummies/nova_dummy_api.py @@ -1,3 +1,30 @@ +""" +Copyright (c) 2017 SONATA-NFV and Paderborn University +ALL RIGHTS RESERVED. + +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. + +Neither the name of the SONATA-NFV, Paderborn University +nor the names of its contributors may be used to endorse or promote +products derived from this software without specific prior written +permission. + +This work has been performed in the framework of the SONATA project, +funded by the European Commission under Grant number 671517 through +the Horizon 2020 and 5G-PPP programmes. The authors would like to +acknowledge the contributions of their colleagues of the SONATA +partner consortium (www.sonata-nfv.eu). +""" from flask_restful import Resource from flask import Response, request from emuvim.api.openstack.openstack_dummies.base_openstack_dummy import BaseOpenstackDummy @@ -15,10 +42,13 @@ class NovaDummyApi(BaseOpenstackDummy): def __init__(self, in_ip, in_port, compute): super(NovaDummyApi, self).__init__(in_ip, in_port) self.compute = compute + self.compute.add_flavor('m1.tiny', 1, 512, "MB", 1, "GB") + self.compute.add_flavor('m1.nano', 1, 64, "MB", 0, "GB") + self.compute.add_flavor('m1.micro', 1, 128, "MB", 0, "GB") + self.compute.add_flavor('m1.small', 1, 1024, "MB", 2, "GB") self.api.add_resource(NovaVersionsList, "/", resource_class_kwargs={'api': self}) - self.api.add_resource(Shutdown, "/shutdown") self.api.add_resource(NovaVersionShow, "/v2.1/", resource_class_kwargs={'api': self}) self.api.add_resource(NovaListServersApi, "/v2.1//servers", @@ -48,30 +78,6 @@ class NovaDummyApi(BaseOpenstackDummy): self.api.add_resource(NovaLimits, "/v2.1//limits", resource_class_kwargs={'api': self}) - def _start_flask(self): - LOG.info("Starting %s endpoint @ http://%s:%d" % ("NovaDummyApi", self.ip, self.port)) - # add some flavors for good measure - self.compute.add_flavor('m1.tiny', 1, 512, "MB", 1, "GB") - self.compute.add_flavor('m1.nano', 1, 64, "MB", 0, "GB") - self.compute.add_flavor('m1.micro', 1, 128, "MB", 0, "GB") - self.compute.add_flavor('m1.small', 1, 1024, "MB", 2, "GB") - if self.app is not None: - self.app.before_request(self.dump_playbook) - self.app.run(self.ip, self.port, debug=True, use_reloader=False) - - -class Shutdown(Resource): - """ - A get request to /shutdown will shut down this endpoint. - """ - - def get(self): - LOG.debug(("%s is beeing shut doen") % (__name__)) - func = request.environ.get('werkzeug.server.shutdown') - if func is None: - raise RuntimeError('Not running with the Werkzeug Server') - func() - class NovaVersionsList(Resource): def __init__(self, api): @@ -217,15 +223,16 @@ class NovaListServersApi(Resource): try: server_dict = json.loads(request.data)['server'] networks = server_dict.get('networks', None) - name = str(self.api.compute.dc.label) + "_man_" + server_dict["name"][0:12] + name = str(self.api.compute.dc.label) + "_" + server_dict["name"] if self.api.compute.find_server_by_name_or_id(name) is not None: + LOG.error("Server with name %s already exists. 409" % name) return Response("Server with name %s already exists." % name, status=409) # TODO: not finished! resp = dict() server = self.api.compute.create_server(name) - server.full_name = str(self.api.compute.dc.label) + "_man_" + server_dict["name"] + server.full_name = str(self.api.compute.dc.label) + "_" + server_dict["name"] server.template_name = server_dict["name"] if "metadata" in server_dict: server.properties = server_dict["metadata"] @@ -529,7 +536,7 @@ class NovaListFlavorById(Resource): Does not really remove anything from the machine, just fakes an OK. """ LOG.debug("API CALL: %s GET" % str(self.__class__.__name__)) - return Response("{}", status=204, mimetype="application/json") + return Response("", status=204, mimetype="application/json") class NovaListImages(Resource): @@ -651,7 +658,7 @@ class NovaListImageById(Resource): Does not really remove anything from the machine, just fakes an OK. """ LOG.debug("API CALL: %s GET" % str(self.__class__.__name__)) - return Response("{}", status=204, mimetype="application/json") + return Response("", status=204, mimetype="application/json") class NovaShowServerDetails(Resource): @@ -723,10 +730,10 @@ class NovaShowServerDetails(Resource): :type id: ``str`` :param serverid: The UUID of the server :type serverid: ``str`` - :return: Returns 200 if everything is fine. + :return: Returns 204 if everything is fine. :rtype: :class:`flask.response` """ - LOG.debug("API CALL: %s POST" % str(self.__class__.__name__)) + LOG.debug("API CALL: %s DELETE" % str(self.__class__.__name__)) try: server = self.api.compute.find_server_by_name_or_id(serverid) if server is None: @@ -734,7 +741,7 @@ class NovaShowServerDetails(Resource): self.api.compute.stop_compute(server) - response = Response('Server deleted.', status=204, mimetype="application/json") + response = Response('', status=204, mimetype="application/json") response.headers['Access-Control-Allow-Origin'] = '*' return response