Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9123936
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
View Options
diff --git a/swh/storage/objstorage/api/server.py b/swh/storage/objstorage/api/server.py
index 6a2a2593..cfb3d25d 100644
--- a/swh/storage/objstorage/api/server.py
+++ b/swh/storage/objstorage/api/server.py
@@ -1,74 +1,89 @@
# Copyright (C) 2015 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
import click
+import logging
from flask import Flask, g, request
from swh.core import config
from swh.storage.objstorage import ObjStorage
from swh.storage.api.common import (BytesRequest, decode_request,
error_handler,
encode_data_server as encode_data)
DEFAULT_CONFIG = {
'storage_base': ('str', '/tmp/swh-storage/objects/'),
'storage_depth': ('int', 3)
}
app = Flask(__name__)
app.request_class = BytesRequest
@app.errorhandler(Exception)
def my_error_handler(exception):
return error_handler(exception, encode_data)
@app.before_request
def before_request():
g.objstorage = ObjStorage(app.config['storage_base'],
app.config['storage_depth'])
@app.route('/')
def index():
return "SWH Objstorage API server"
@app.route('/content')
def content():
return str(list(g.storage))
@app.route('/content/add', methods=['POST'])
def add_bytes():
return encode_data(g.objstorage.add_bytes(**decode_request(request)))
@app.route('/content/get', methods=['POST'])
def get_bytes():
return encode_data(g.objstorage.get_bytes(**decode_request(request)))
@app.route('/content/check', methods=['POST'])
def check():
return encode_data(g.objstorage.check(**decode_request(request)))
+def run_from_webserver(environ, start_response):
+ """Run the WSGI app from the webserver, loading the configuration.
+
+ """
+ config_path = '/etc/softwareheritage/storage/objstorage.ini'
+
+ app.config.update(config.read(config_path, DEFAULT_CONFIG))
+
+ handler = logging.StreamHandler()
+ app.logger.addHandler(handler)
+
+ return app(environ, start_response)
+
+
@click.command()
@click.argument('config-path', required=1)
@click.option('--host', default='0.0.0.0', help="Host to run the server")
@click.option('--port', default=5000, type=click.INT,
help="Binding port of the server")
@click.option('--debug/--nodebug', default=True,
help="Indicates if the server should run in debug mode")
def launch(config_path, host, port, debug):
app.config.update(config.read(config_path, DEFAULT_CONFIG))
app.run(host, port=int(port), debug=bool(debug))
if __name__ == '__main__':
launch()
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Jun 21, 6:24 PM (2 w, 3 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3248128
Attached To
rDSTO Storage manager
Event Timeline
Log In to Comment