From fec3113178dd3acac7a9567a6eb6c0055096e526 Mon Sep 17 00:00:00 2001 From: Audrius Mecionis Date: Tue, 22 Sep 2020 12:07:09 +0200 Subject: [PATCH] rest: retreive workspace disk usage from db models addresses: https://github.com/reanahub/reana-server/issues/279 --- AUTHORS.rst | 1 + reana_workflow_controller/rest/workflows.py | 22 +++++++-------------- requirements.txt | 4 ++-- setup.py | 5 ++--- 4 files changed, 12 insertions(+), 20 deletions(-) diff --git a/AUTHORS.rst b/AUTHORS.rst index 5f776220..b1434d7d 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -4,6 +4,7 @@ Authors The list of contributors in alphabetical order: - `Adelina Lintuluoto `_ +- `Audrius Mecionis `_ - `Anton Khodak `_ - `Diego Rodriguez `_ - `Dinos Kousidis `_ diff --git a/reana_workflow_controller/rest/workflows.py b/reana_workflow_controller/rest/workflows.py index fa655d00..ef57c72e 100644 --- a/reana_workflow_controller/rest/workflows.py +++ b/reana_workflow_controller/rest/workflows.py @@ -11,16 +11,13 @@ import json from uuid import uuid4 -import fs from flask import Blueprint, jsonify, request -from reana_commons.utils import get_workspace_disk_usage from reana_db.database import Session from reana_db.models import User, Workflow from reana_db.utils import _get_workflow_with_uuid_or_name from reana_workflow_controller.config import ( DEFAULT_NAME_FOR_WORKFLOWS, - SHARED_VOLUME_PATH, WORKFLOW_TIME_FORMAT, ) from reana_workflow_controller.errors import ( @@ -207,18 +204,13 @@ def get_workflows(paginate=None): # noqa workflow_response["session_type"] = workflow.interactive_session_type workflow_response["session_uri"] = workflow.interactive_session if verbose: - reana_fs = fs.open_fs(SHARED_VOLUME_PATH) - if reana_fs.exists(workflow.workspace_path): - absolute_workspace_path = reana_fs.getospath( - workflow.workspace_path - ) - disk_usage_info = get_workspace_disk_usage( - absolute_workspace_path, block_size=block_size - ) - if disk_usage_info: - workflow_response["size"] = disk_usage_info[-1]["size"] - else: - workflow_response["size"] = "0K" + disk_usage_info = workflow.get_workspace_disk_usage( + summarize=True, block_size=block_size + ) + if disk_usage_info: + workflow_response["size"] = disk_usage_info[0]["size"] + else: + workflow_response["size"] = "0K" workflows.append(workflow_response) pagination_dict["items"] = workflows return jsonify(pagination_dict), 200 diff --git a/requirements.txt b/requirements.txt index 06f9c9c6..99cb30c0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -51,8 +51,8 @@ python-dateutil==2.8.1 # via alembic, bravado, bravado-core, kubernetes python-editor==1.0.4 # via alembic pytz==2020.1 # via bravado-core, fs pyyaml==5.3.1 # via bravado, bravado-core, kubernetes, reana-commons, swagger-spec-validator -reana-commons[kubernetes]==0.7.0a4 # via reana-db, reana-workflow-controller (setup.py) -reana-db==0.7.0a6 # via reana-workflow-controller (setup.py) +reana-commons[kubernetes]==0.8.0a1 # via reana-db, reana-workflow-controller (setup.py) +reana-db==0.8.0a1 # via reana-workflow-controller (setup.py) requests-oauthlib==1.3.0 # via kubernetes requests==2.20.0 # via bravado, kubernetes, reana-workflow-controller (setup.py), requests-oauthlib rfc3987==1.3.8 # via jsonschema diff --git a/setup.py b/setup.py index 83945df9..141b8882 100644 --- a/setup.py +++ b/setup.py @@ -47,13 +47,12 @@ install_requires = [ "Flask>=0.12", "werkzeug>=0.16.1,<0.17", - "fs>=2.0", "gitpython>=2.1", "jsonpickle>=0.9.6", "marshmallow>2.13.0,<=2.20.1", "packaging>=18.0", - "reana-commons[kubernetes]>=0.7.0a4,<0.8.0", - "reana-db>=0.7.0a6,<0.8.0", + "reana-commons[kubernetes]>=0.8.0a1,<0.9.0", + "reana-db>=0.8.0a1,<0.9.0", "requests==2.20.0", "sqlalchemy-utils>=0.31.0", "uwsgi-tools>=1.1.1",