From a09e4ca8b90fcc91b3a030c514023ba007b2abb2 Mon Sep 17 00:00:00 2001 From: Markus Scheidgen <markus.scheidgen@gmail.com> Date: Thu, 22 Nov 2018 15:06:52 +0100 Subject: [PATCH] Refactored raw API endpoint to use upload relative paths. --- .vscode/launch.json | 2 +- docs/components.graffle/data.plist | Bin 30924 -> 32511 bytes nomad/api/__init__.py | 2 +- nomad/api/raw.py | 149 +++++++++++++++++++++++++++++ nomad/api/repository.py | 124 +----------------------- nomad/files.py | 8 +- repository/utils.http | 18 +++- tests/test_api.py | 86 ++++++++++------- 8 files changed, 223 insertions(+), 166 deletions(-) create mode 100644 nomad/api/raw.py diff --git a/.vscode/launch.json b/.vscode/launch.json index 4e37dcb07a..dea8e53995 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -44,7 +44,7 @@ "cwd": "${workspaceFolder}", "program": "${workspaceFolder}/.pyenv/bin/pytest", "args": [ - "-sv", "tests/test_coe_repo.py::test_add_upload" + "-sv", "tests/test_api.py::test_raw_file" ] }, { diff --git a/docs/components.graffle/data.plist b/docs/components.graffle/data.plist index c7ad94d850eadaea9b782de7222868be0ffe114f..a4c84e98527444421bbec047bf3a37349dc9b1f6 100644 GIT binary patch literal 32511 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 literal 30924 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	V8!-R3xZ?5 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 V2Q&Abt)Khne=zTiL)Qh^7y#fTldb>& diff --git a/nomad/api/__init__.py b/nomad/api/__init__.py index e8c0b118b1..32a0f1aa86 100644 --- a/nomad/api/__init__.py +++ b/nomad/api/__init__.py @@ -28,4 +28,4 @@ There is a separate documentation for the API endpoints from a client perspectiv """ from .app import app -from . import upload, repository, archive +from . import upload, repository, archive, raw diff --git a/nomad/api/raw.py b/nomad/api/raw.py new file mode 100644 index 0000000000..42d2bb32cf --- /dev/null +++ b/nomad/api/raw.py @@ -0,0 +1,149 @@ +# Copyright 2018 Markus Scheidgen +# +# 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. + +""" +The raw API of the nomad@FAIRDI APIs. Can be used to retrieve raw calculation files. +""" + +# TODO implement restrictions based on user, permissions, and upload/calc metadata + +import os.path +from zipfile import ZIP_DEFLATED + +import zipstream +from flask import Response, request, send_file +from flask_restful import abort +from werkzeug.exceptions import HTTPException + +from nomad.files import RepositoryFile +from nomad.utils import get_logger + +from .app import app, base_path + + +@app.route('%s/raw/<string:upload_hash>/<path:upload_filepath>' % base_path, methods=['GET']) +def get_raw_file(upload_hash, upload_filepath): + """ + Get a single raw calculation file from a given upload. + + .. :quickref: raw; Get single raw calculation file. + + **Example request**: + + .. sourcecode:: http + + GET /nomad/api/raw/W36aqCzAKxOCfIiMFsBJh3nHPb4a/Si/si.out HTTP/1.1 + Accept: application/gz + + :param string upload_hash: the hash based identifier of the upload + :param path upload_filepath: the path to the desired file within the upload + :resheader Content-Type: application/gz + :status 200: calc raw data successfully retrieved + :status 404: upload with given hash does not exist or the given file does not exist + :returns: the gzipped raw data in the body + """ + + repository_file = RepositoryFile(upload_hash) + if not repository_file.exists(): + abort(404, message='The upload with hash %s does not exist.' % upload_hash) + + try: + the_file = repository_file.get_file(upload_filepath) + with the_file.open() as f: + rv = send_file( + f, + mimetype='application/octet-stream', + as_attachment=True, + attachment_filename=os.path.basename(upload_filepath)) + return rv + except KeyError: + abort(404, message='The file %s does not exist.' % upload_filepath) + except FileNotFoundError: + abort(404, message='The file %s does not exist.' % upload_filepath) + except HTTPException as e: + raise e + except Exception as e: + logger = get_logger( + __name__, endpoint='raw', action='get', + upload_hash=upload_hash, upload_filepath=upload_filepath) + logger.error('Exception on accessing raw data', exc_info=e) + abort(500, message='Could not accessing the raw data.') + + +@app.route('%s/raw/<string:upload_hash>' % base_path, methods=['GET']) +def get_raw_files(upload_hash): + """ + Get multiple raw calculation files. + + .. :quickref: raw; Get multiple raw calculation files. + + **Example request**: + + .. sourcecode:: http + + GET /nomad/api/raw/W36aqCzAKxOCfIiMFsBJh3nHPb4a?files=Si/si.out,Si/aux.txt HTTP/1.1 + Accept: application/gz + + :param string upload_hash: the hash based identifier of the upload + :qparam str files: a comma separated list of file path + :resheader Content-Type: application/json + :status 200: calc raw data successfully retrieved + :status 404: calc with given hash does not exist or one of the given files does not exist + :returns: a streamed .zip archive with the raw data + """ + logger = get_logger(__name__, endpoint='raw', action='get', upload_hash=upload_hash) + + files_str = request.args.get('files', None) + if files_str is None: + abort(400, message="No files argument given.") + files = [file.strip() for file in files_str.split(',')] + + repository_file = RepositoryFile(upload_hash) + if not repository_file.exists(): + abort(404, message='The upload with hash %s does not exist.' % upload_hash) + + def generator(): + """ Stream a zip file with all files using zipstream. """ + def iterator(): + """ Replace the directory based iter of zipstream with an iter over all given files. """ + try: + for filename in files: + # Write a file to the zipstream. + try: + the_file = repository_file.get_file(filename) + with the_file.open() as f: + def iter_content(): + while True: + data = f.read(1024) + if not data: + break + yield data + + yield dict(arcname=filename, iterable=iter_content()) + except KeyError as e: + # files that are not found, will not be returned + pass + + except Exception as e: + logger.error('Exception while accessing auxfiles.', exc_info=e) + + zip_stream = zipstream.ZipFile(mode='w', compression=ZIP_DEFLATED) + zip_stream.paths_to_write = iterator() + + for chunk in zip_stream: + yield chunk + + response = Response(generator(), mimetype='application/zip') + response.headers['Content-Disposition'] = 'attachment; filename={}'.format('%s.zip' % upload_hash) + return response diff --git a/nomad/api/repository.py b/nomad/api/repository.py index 586210b80f..f4a863fcfa 100644 --- a/nomad/api/repository.py +++ b/nomad/api/repository.py @@ -14,24 +14,16 @@ """ The repository API of the nomad@FAIRDI APIs. Currently allows to resolve repository -meta-data as well as raw-calculation files. +meta-data. """ -import os.path -from contextlib import contextmanager -from zipfile import ZIP_DEFLATED - -import zipstream from elasticsearch.exceptions import NotFoundError -from flask import Response, g, request, send_file +from flask import g, request from flask_restful import Resource, abort -from werkzeug.exceptions import HTTPException -from nomad.files import RepositoryFile from nomad.repo import RepoCalc -from nomad.utils import get_logger -from .app import api, app, auth, base_path +from .app import api, auth, base_path class RepoCalcRes(Resource): @@ -196,115 +188,5 @@ class RepoCalcsRes(Resource): } -@app.route('%s/raw/<string:upload_hash>/<string:calc_hash>' % base_path, methods=['GET']) -def get_raw(upload_hash, calc_hash): - """ - Get calculation mainfile raw data. Calcs are references via *upload_hash*, *calc_hash* - pairs. Returns the mainfile, unless an aux_file is specified. Aux files are stored - in repository entries. See ``/repo`` endpoint. - - .. :quickref: repo; Get calculation raw data. - - **Example request**: - - .. sourcecode:: http - - GET /nomad/api/raw/W36aqCzAKxOCfIiMFsBJh3nHPb4a/7ddvtfRfZAvc3Crr7jOJ8UH0T34I HTTP/1.1 - Accept: application/gz - - :param string upload_hash: the hash of the upload (from uploaded file contents) - :param string calc_hash: the hash of the calculation (from mainfile) - :qparam str auxfile: an optional aux_file to download the respective aux file, default is mainfile - :qparam all: set any value to get a .zip with main and aux files instead of an individual file - :resheader Content-Type: application/json - :status 200: calc raw data successfully retrieved - :status 404: calc with given hashes does not exist or the given aux file does not exist - :returns: the raw data in body - """ - archive_id = '%s/%s' % (upload_hash, calc_hash) - logger = get_logger(__name__, endpoint='raw', action='get', archive_id=archive_id) - - try: - repo = RepoCalc.get(id=archive_id) - except NotFoundError: - abort(404, message='There is no calculation for %s/%s' % (upload_hash, calc_hash)) - except Exception as e: - abort(500, message=str(e)) - - repository_file = RepositoryFile(upload_hash) - - @contextmanager - def raw_file(filename): - try: - the_file = repository_file.get_file(filename) - with the_file.open() as f: - yield f - except KeyError: - abort(404, message='The file %s does not exist.' % filename) - except FileNotFoundError: - abort(404, message='The file %s does not exist.' % filename) - - get_all = request.args.get('all', None) is not None - if get_all: - # retrieve the 'whole' calculation, meaning the mainfile and all aux files as - # a .zip archive - def generator(): - """ Stream a zip file with all files using zipstream. """ - def iterator(): - """ Replace the directory based iter of zipstream with an iter over all raw files. """ - def write(filename): - """ Write a raw file to the zipstream. """ - def iter_content(): - """ Iterate the raw file contents. """ - with raw_file(filename) as file_object: - while True: - data = file_object.read(1024) - if not data: - break - yield data - return dict(arcname=filename, iterable=iter_content()) - - yield write(repo.mainfile) - try: - for auxfile in repo.aux_files: - yield write(os.path.join(os.path.dirname(repo.mainfile), auxfile)) - except Exception as e: - logger.error('Exception while accessing auxfiles.', exc_info=e) - - zip_stream = zipstream.ZipFile(mode='w', compression=ZIP_DEFLATED) - zip_stream.paths_to_write = iterator() - - for chunk in zip_stream: - yield chunk - - response = Response(generator(), mimetype='application/zip') - response.headers['Content-Disposition'] = 'attachment; filename={}'.format('%s.zip' % archive_id) - return response - else: - # retrieve an individual raw file - auxfile = request.args.get('auxfile', None) - if auxfile: - filename = os.path.join(os.path.dirname(repo.mainfile), auxfile) - else: - filename = repo.mainfile - - try: - with raw_file(filename) as f: - rv = send_file( - f, - mimetype='application/octet-stream', - as_attachment=True, - attachment_filename=os.path.basename(filename)) - return rv - except HTTPException as e: - raise e - except Exception as e: - logger = get_logger( - __name__, endpoint='archive', action='get', - upload_hash=upload_hash, calc_hash=calc_hash) - logger.error('Exception on accessing archive', exc_info=e) - abort(500, message='Could not accessing the archive.') - - api.add_resource(RepoCalcsRes, '%s/repo' % base_path) api.add_resource(RepoCalcRes, '%s/repo/<string:upload_hash>/<string:calc_hash>' % base_path) diff --git a/nomad/files.py b/nomad/files.py index 984b4fec3f..bb768d651a 100644 --- a/nomad/files.py +++ b/nomad/files.py @@ -386,17 +386,13 @@ class UploadFile(ObjectFile): Returns the names of all files that share the same prefix (object id), respectively are part of the same directory (incl. files in sub directories). In nomad terms, the aux files the this file. Returned siblings are relative - to this files directory. + to the upload root directory. """ dirname = os.path.dirname(filename) dirname_len = len(dirname) + 1 for other in self.filelist: if other.startswith(dirname) and other != filename: - yield other[dirname_len:] - - def get_sibling_file(self, filename: str, sibling: str) -> File: - sibling_name = os.path.join(os.path.dirname(filename), sibling) - return self.get_file(sibling_name) + yield other class RepositoryFile(ObjectFile): diff --git a/repository/utils.http b/repository/utils.http index afa0e7a6b8..d75b409d06 100644 --- a/repository/utils.http +++ b/repository/utils.http @@ -1,13 +1,13 @@ -DELETE http://localhost:9200/index2018-11-15 HTTP/1.1; +DELETE http://localhost:9200/repo_index HTTP/1.1; ### -DELETE http://localhost:9200/topics2018-11-15 HTTP/1.1; +DELETE http://localhost:9200/repo_topics HTTP/1.1; ### GET http://localhost:9200/_cat/indices HTTP/1.1; ### -GET http://localhost:9200/index2018-11-15/_search HTTP/1.1; +GET http://localhost:9200/repo_index/_search HTTP/1.1; ### @@ -15,5 +15,15 @@ POST http://localhost:8111/repo/repo-update/index/calculation HTTP/1.1; content-type: application/json { - "calc_ids": [10] + "calc_ids": [13] } + + +### +POST http://localhost:8000/nomad/api/uploads/-kp9ZIYTSJa0EWUAgtKU4A HTTP/1.1; +content-type: application/json +Authorization: Basic bGVvbmFyZC5ob2ZzdGFkdGVyQG5vbWFkLWZhaXJkaS50ZXN0cy5kZTpub21hZA== + +{ + "operation": "unstage" +} \ No newline at end of file diff --git a/tests/test_api.py b/tests/test_api.py index fc973cc551..b36c759425 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -336,45 +336,65 @@ def test_get_non_existing_archive(client, no_warn): assert rv.status_code == 404 -@pytest.fixture -def example_repo_with_files(mockmongo, example_elastic_calc): - upload = Upload(id=example_elastic_calc.upload_id, local_path=os.path.abspath(example_file)) - upload.create_time = datetime.now() - upload.user_id = 'does@not.exist' - upload.save() - - with UploadFile(upload.upload_id, local_path=upload.local_path) as upload_file: - upload_file.persist(example_elastic_calc.upload_hash) +class TestRaw: - return example_elastic_calc + @pytest.fixture + def example_repo_with_files(self, mockmongo, example_elastic_calc, no_warn): + upload = Upload(id=example_elastic_calc.upload_id, local_path=os.path.abspath(example_file)) + upload.create_time = datetime.now() + upload.user_id = 'does@not.exist' + upload.save() + with UploadFile(upload.upload_id, local_path=upload.local_path) as upload_file: + upload_file.persist(example_elastic_calc.upload_hash) -def test_raw_mainfile(client, example_repo_with_files, no_warn): - rv = client.get('/raw/%s' % example_repo_with_files.archive_id) - assert rv.status_code == 200 - assert len(rv.data) > 0 - - -def test_raw_auxfile(client, example_repo_with_files, no_warn): - rv = client.get('/raw/%s?auxfile=1.aux' % example_repo_with_files.archive_id) - assert rv.status_code == 200 - assert len(rv.data) == 0 + return example_elastic_calc + def test_raw_file(self, client, example_repo_with_files): + repo_entry = example_repo_with_files + url = '/raw/%s/%s' % (repo_entry.upload_hash, repo_entry.mainfile) + rv = client.get(url) + assert rv.status_code == 200 + assert len(rv.data) > 0 + + def test_raw_file_missing_file(self, client, example_repo_with_files): + repo_entry = example_repo_with_files + url = '/raw/%s/does/not/exist' % repo_entry.upload_hash + rv = client.get(url) + assert rv.status_code == 404 + + def test_raw_file_missing_upload(self, client, example_repo_with_files): + repo_entry = example_repo_with_files + url = '/raw/doesnotexist/%s' % repo_entry.mainfile + rv = client.get(url) + assert rv.status_code == 404 + + def test_raw_files(self, client, example_repo_with_files): + repo_entry = example_repo_with_files + url = '/raw/%s?files=%s,%s' % ( + repo_entry.upload_hash, repo_entry.mainfile, ','.join(repo_entry.aux_files)) + rv = client.get(url) -def test_raw_missing_auxfile(client, example_repo_with_files, no_warn): - rv = client.get('/raw/%s?auxfile=doesnotexist' % example_repo_with_files.archive_id) - assert rv.status_code == 404 + assert rv.status_code == 200 + assert len(rv.data) > 0 + with zipfile.ZipFile(io.BytesIO(rv.data)) as zip_file: + assert zip_file.testzip() is None + assert len(zip_file.namelist()) == 5 + def test_raw_files_missing_file(self, client, example_repo_with_files): + repo_entry = example_repo_with_files + url = '/raw/%s?files=%s,missing/file.txt' % ( + repo_entry.upload_hash, repo_entry.mainfile) + rv = client.get(url) -def test_raw_all_files(client, example_repo_with_files, no_warn): - rv = client.get('/raw/%s?all=1' % example_repo_with_files.archive_id) - assert rv.status_code == 200 - assert len(rv.data) > 0 - with zipfile.ZipFile(io.BytesIO(rv.data)) as zip_file: - assert zip_file.testzip() is None - assert len(zip_file.namelist()) == 5 + assert rv.status_code == 200 + assert len(rv.data) > 0 + with zipfile.ZipFile(io.BytesIO(rv.data)) as zip_file: + assert zip_file.testzip() is None + assert len(zip_file.namelist()) == 1 + def test_raw_files_missing_upload(self, client, example_repo_with_files): + url = '/raw/doesnotexist?files=shoud/not/matter.txt' + rv = client.get(url) -def test_raw_missing_mainfile(client, no_warn): - rv = client.get('/raw/doesnot/exist') - assert rv.status_code == 404 + assert rv.status_code == 404 -- GitLab