Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9343037
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
10 KB
Subscribers
None
View Options
diff --git a/PKG-INFO b/PKG-INFO
index 70619f9..29779b4 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,10 +1,10 @@
Metadata-Version: 1.0
Name: swh.vault
-Version: 0.0.1
+Version: 0.0.2
Summary: Software Heritage vault
Home-page: https://forge.softwareheritage.org/diffusion/DVAU/
Author: Software Heritage developers
Author-email: swh-devel@inria.fr
License: UNKNOWN
Description: UNKNOWN
Platform: UNKNOWN
diff --git a/debian/control b/debian/control
index 61d83dc..3f8b0ec 100644
--- a/debian/control
+++ b/debian/control
@@ -1,34 +1,34 @@
Source: swh-vault
Maintainer: Software Heritage developers <swh-devel@inria.fr>
Section: python
Priority: optional
Build-Depends: debhelper (>= 9),
dh-python (>= 2),
python3-all,
python3-click,
python3-dateutil,
python3-dulwich,
python3-fastimport,
python3-flask,
python3-nose,
python3-psycopg2,
python3-setuptools,
python3-swh.core (>= 0.0.28~),
python3-swh.model (>= 0.0.18~),
python3-swh.objstorage (>= 0.0.17~),
python3-swh.scheduler (>= 0.0.11~),
python3-swh.storage (>= 0.0.92~),
python3-vcversioner
Standards-Version: 3.9.6
Homepage: https://forge.softwareheritage.org/diffusion/DVAU/
Package: python3-swh.vault
Architecture: all
Depends: python3-swh.core (>= 0.0.28~),
python3-swh.model (>= 0.0.18~),
python3-swh.objstorage (>= 0.0.17~),
python3-swh.scheduler (>= 0.0.11~),
python3-swh.storage (>= 0.0.92~),
${misc:Depends},
${python3:Depends}
-Description: Software Heritage <module-description>
+Description: Software Heritage Vault
diff --git a/PKG-INFO b/swh.vault.egg-info/PKG-INFO
similarity index 94%
copy from PKG-INFO
copy to swh.vault.egg-info/PKG-INFO
index 70619f9..29779b4 100644
--- a/PKG-INFO
+++ b/swh.vault.egg-info/PKG-INFO
@@ -1,10 +1,10 @@
Metadata-Version: 1.0
Name: swh.vault
-Version: 0.0.1
+Version: 0.0.2
Summary: Software Heritage vault
Home-page: https://forge.softwareheritage.org/diffusion/DVAU/
Author: Software Heritage developers
Author-email: swh-devel@inria.fr
License: UNKNOWN
Description: UNKNOWN
Platform: UNKNOWN
diff --git a/swh.vault.egg-info/SOURCES.txt b/swh.vault.egg-info/SOURCES.txt
new file mode 100644
index 0000000..e5dee1f
--- /dev/null
+++ b/swh.vault.egg-info/SOURCES.txt
@@ -0,0 +1,46 @@
+.gitignore
+AUTHORS
+LICENSE
+MANIFEST.in
+Makefile
+requirements-swh.txt
+requirements.txt
+setup.py
+version.txt
+debian/changelog
+debian/compat
+debian/control
+debian/copyright
+debian/rules
+debian/source/format
+docs/.gitignore
+docs/Makefile
+docs/conf.py
+docs/index.rst
+docs/vault-blueprint.md
+docs/_static/.placeholder
+docs/_templates/.placeholder
+sql/swh-vault-schema.sql
+swh/__init__.py
+swh.vault.egg-info/PKG-INFO
+swh.vault.egg-info/SOURCES.txt
+swh.vault.egg-info/dependency_links.txt
+swh.vault.egg-info/not-zip-safe
+swh.vault.egg-info/requires.txt
+swh.vault.egg-info/top_level.txt
+swh/vault/__init__.py
+swh/vault/backend.py
+swh/vault/cache.py
+swh/vault/cooking_tasks.py
+swh/vault/api/__init__.py
+swh/vault/api/client.py
+swh/vault/api/server.py
+swh/vault/cookers/__init__.py
+swh/vault/cookers/base.py
+swh/vault/cookers/directory.py
+swh/vault/cookers/revision_flat.py
+swh/vault/cookers/revision_gitfast.py
+swh/vault/tests/test_backend.py
+swh/vault/tests/test_cache.py
+swh/vault/tests/test_cookers.py
+swh/vault/tests/vault_testing.py
\ No newline at end of file
diff --git a/swh.vault.egg-info/dependency_links.txt b/swh.vault.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/swh.vault.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/swh.vault.egg-info/not-zip-safe b/swh.vault.egg-info/not-zip-safe
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/swh.vault.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
diff --git a/swh.vault.egg-info/requires.txt b/swh.vault.egg-info/requires.txt
new file mode 100644
index 0000000..b5e5e9f
--- /dev/null
+++ b/swh.vault.egg-info/requires.txt
@@ -0,0 +1,11 @@
+click
+fastimport
+flask
+psycopg2
+python-dateutil
+swh.core>=0.0.28
+swh.model>=0.0.18
+swh.objstorage>=0.0.17
+swh.scheduler>=0.0.11
+swh.storage>=0.0.92
+vcversioner
diff --git a/swh.vault.egg-info/top_level.txt b/swh.vault.egg-info/top_level.txt
new file mode 100644
index 0000000..0cb0f8f
--- /dev/null
+++ b/swh.vault.egg-info/top_level.txt
@@ -0,0 +1 @@
+swh
diff --git a/swh/vault/api/server.py b/swh/vault/api/server.py
index 88b7079..d6625f0 100644
--- a/swh/vault/api/server.py
+++ b/swh/vault/api/server.py
@@ -1,172 +1,177 @@
# Copyright (C) 2016 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 asyncio
import aiohttp.web
import click
from swh.core import config
from swh.core.api_async import (SWHRemoteAPI,
encode_data_server as encode_data,
decode_request)
from swh.model import hashutil
from swh.vault.cookers import COOKER_TYPES
from swh.vault.backend import VaultBackend
+DEFAULT_CONFIG_PATH = 'vault/server'
DEFAULT_CONFIG = {
'storage': ('dict', {
'cls': 'local',
'args': {
'db': 'dbname=softwareheritage-dev',
'objstorage': {
'cls': 'pathslicing',
'args': {
'root': '/srv/softwareheritage/objects',
'slicing': '0:2/2:4/4:6',
},
},
},
}),
'cache': ('dict', {
'cls': 'pathslicing',
'args': {
'root': '/srv/softwareheritage/vault',
'slicing': '0:1/1:5',
},
}),
'db': ('str', 'dbname=swh-vault')
}
@asyncio.coroutine
def index(request):
return aiohttp.web.Response(body="SWH Vault API server")
# Web API endpoints
@asyncio.coroutine
def vault_fetch(request):
obj_type = request.match_info['type']
obj_id = request.match_info['id']
if not request.app['backend'].is_available(obj_type, obj_id):
raise aiohttp.web.HTTPNotFound
return encode_data(request.app['backend'].fetch(obj_type, obj_id))
def user_info(task_info):
return {'task_uuid': str(task_info['task_uuid']),
'status': task_info['task_status'],
'progress_message': task_info['progress_msg'],
'obj_type': task_info['type'],
'obj_id': hashutil.hash_to_hex(task_info['object_id'])}
@asyncio.coroutine
def vault_cook(request):
obj_type = request.match_info['type']
obj_id = request.match_info['id']
email = request.query.get('email')
sticky = request.query.get('sticky') in ('true', '1')
if obj_type not in COOKER_TYPES:
raise aiohttp.web.HTTPNotFound
info = request.app['backend'].cook_request(obj_type, obj_id,
email=email, sticky=sticky)
# TODO: return 201 status (Created) once the api supports it
return encode_data(user_info(info))
@asyncio.coroutine
def vault_progress(request):
obj_type = request.match_info['type']
obj_id = request.match_info['id']
info = request.app['backend'].task_info(obj_type, obj_id)
if not info:
raise aiohttp.web.HTTPNotFound
return encode_data(user_info(info))
# Cookers endpoints
@asyncio.coroutine
def set_progress(request):
obj_type = request.match_info['type']
obj_id = request.match_info['id']
progress = yield from decode_request(request)
request.app['backend'].set_progress(obj_type, obj_id, progress)
return encode_data(True) # FIXME: success value?
@asyncio.coroutine
def set_status(request):
obj_type = request.match_info['type']
obj_id = request.match_info['id']
status = yield from decode_request(request)
request.app['backend'].set_status(obj_type, obj_id, status)
return encode_data(True) # FIXME: success value?
@asyncio.coroutine
def put_bundle(request):
obj_type = request.match_info['type']
obj_id = request.match_info['id']
# TODO: handle streaming properly
content = yield from decode_request(request)
request.app['backend'].cache.add(obj_type, obj_id, content)
return encode_data(True) # FIXME: success value?
@asyncio.coroutine
def send_notif(request):
obj_type = request.match_info['type']
obj_id = request.match_info['id']
request.app['backend'].send_all_notifications(obj_type, obj_id)
return encode_data(True) # FIXME: success value?
# Web server
def make_app(config, **kwargs):
app = SWHRemoteAPI(**kwargs)
app.router.add_route('GET', '/', index)
# Endpoints used by the web API
app.router.add_route('GET', '/fetch/{type}/{id}', vault_fetch)
app.router.add_route('POST', '/cook/{type}/{id}', vault_cook)
app.router.add_route('GET', '/progress/{type}/{id}', vault_progress)
# Endpoints used by the Cookers
app.router.add_route('POST', '/set_progress/{type}/{id}', set_progress)
app.router.add_route('POST', '/set_status/{type}/{id}', set_status)
app.router.add_route('POST', '/put_bundle/{type}/{id}', put_bundle)
app.router.add_route('POST', '/send_notif/{type}/{id}', send_notif)
app['backend'] = VaultBackend(config)
return app
+def make_app_from_configfile(config_path=DEFAULT_CONFIG_PATH, **kwargs):
+ return make_app(config.read(config_path, DEFAULT_CONFIG), **kwargs)
+
+
@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=5005, 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 = make_app(config.read(config_path, DEFAULT_CONFIG), debug=bool(debug))
aiohttp.web.run_app(app, host=host, port=int(port))
if __name__ == '__main__':
launch()
diff --git a/version.txt b/version.txt
new file mode 100644
index 0000000..bf3e52e
--- /dev/null
+++ b/version.txt
@@ -0,0 +1 @@
+v0.0.2-0-g203fa3f
\ No newline at end of file
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Fri, Jul 4, 1:12 PM (1 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3317533
Attached To
rDVAU Software Heritage Vault
Event Timeline
Log In to Comment