Manually added OpenStack API code
[osm/vim-emu.git] / src / emuvim / api / openstack / openstack_dummies / base_openstack_dummy.py
diff --git a/src/emuvim/api/openstack/openstack_dummies/base_openstack_dummy.py b/src/emuvim/api/openstack/openstack_dummies/base_openstack_dummy.py
new file mode 100644 (file)
index 0000000..a2c4714
--- /dev/null
@@ -0,0 +1,38 @@
+from flask import Flask, request
+from flask_restful import Api, Resource
+import logging
+
+
+class BaseOpenstackDummy(Resource):
+    """
+    This class is the base class for all openstack entrypoints of son-emu.
+    """
+
+    def __init__(self, listenip, port):
+        self.ip = listenip
+        self.port = port
+        self.compute = None
+        self.manage = None
+        self.playbook_file = '/tmp/son-emu-requests.log'
+        with open(self.playbook_file, 'w'):
+            pass
+
+        # setup Flask
+        self.app = Flask(__name__)
+        self.api = Api(self.app)
+
+    def _start_flask(self):
+        logging.info("Starting %s endpoint @ http://%s:%d" % (__name__, self.ip, self.port))
+        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)
+
+    def dump_playbook(self):
+        with self.manage.lock:
+            with open(self.playbook_file, 'a') as logfile:
+                if len(request.data) > 0:
+                    data = "# %s API\n" % str(self.__class__).split('.')[-1].rstrip('\'>')
+                    data += "curl -X {type} -H \"Content-type: application/json\" -d '{data}' {url}".format(type=request.method,
+                                                                                            data=request.data,
+                                                                                            url=request.url)
+                    logfile.write(data + "\n")