From d47958a7e2fc35b25ebc28388e78b293fe9e5428 Mon Sep 17 00:00:00 2001 From: Alputer Date: Tue, 5 Nov 2024 15:19:41 +0100 Subject: [PATCH] feat(engines): add workflow engine versions to info endpoint (#711) Closes reanahub/reana-client#734 --- docs/openapi.json | 108 ++++++++++++++++++++++++++++++++++++++ reana_server/rest/info.py | 103 ++++++++++++++++++++++++++++++++++++ 2 files changed, 211 insertions(+) diff --git a/docs/openapi.json b/docs/openapi.json index 96ce8eae..cdd5dcc0 100644 --- a/docs/openapi.json +++ b/docs/openapi.json @@ -421,6 +421,10 @@ "description": "Request succeeded. The response contains general info about the cluster.", "examples": { "application/json": { + "adage_version": { + "title": "CWL version", + "value": "0.11.0" + }, "compute_backends": { "title": "List of supported compute backends", "value": [ @@ -429,6 +433,14 @@ "slurmcern" ] }, + "cwl_package": { + "title": "CWL package", + "value": "cwltool" + }, + "cwl_version": { + "title": "CWL version", + "value": "3.1.20210628163208" + }, "dask_cluster_default_number_of_workers": { "title": "The number of Dask workers created by default", "value": "2Gi" @@ -473,6 +485,23 @@ "title": "Maximum retention period in days for workspace files", "value": "3650" }, + "packtivity_version": { + "title": "Packtivity version", + "value": "0.16.2" + }, + "snakemake_version": { + "title": "Snakemake", + "value": "8.24.1" + }, + "supported_workflow_engines": { + "title": "List of supported worfklow engines", + "value": [ + "cwl", + "serial", + "snakemake", + "yadage" + ] + }, "workspaces_available": { "title": "List of available workspaces", "value": [ @@ -480,11 +509,25 @@ "/eos/home", "/var/reana" ] + }, + "yadage_version": { + "title": "Yadage version", + "value": "0.20.1" } } }, "schema": { "properties": { + "adage_version": { + "properties": { + "title": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, "compute_backends": { "properties": { "title": { @@ -499,6 +542,27 @@ }, "type": "object" }, + "cwl_package": { + "properties": { + "title": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "cwl_version": { + "properties": { + "title": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, "dask_cluster_default_number_of_workers": { "properties": { "title": { @@ -634,6 +698,40 @@ }, "type": "object" }, + "packtivity_version": { + "properties": { + "title": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "snakemake_version": { + "properties": { + "title": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "supported_workflow_engines": { + "properties": { + "title": { + "type": "string" + }, + "value": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, "workspaces_available": { "properties": { "title": { @@ -647,6 +745,16 @@ } }, "type": "object" + }, + "yadage_version": { + "properties": { + "title": { + "type": "string" + }, + "value": { + "type": "string" + } + } } }, "type": "object" diff --git a/reana_server/rest/info.py b/reana_server/rest/info.py index 71cdeb6d..500367f3 100644 --- a/reana_server/rest/info.py +++ b/reana_server/rest/info.py @@ -10,6 +10,7 @@ import logging import traceback +from importlib.metadata import version from flask import Blueprint, jsonify from marshmallow import Schema, fields @@ -130,6 +131,52 @@ def info(user, **kwargs): # noqa type: string type: array type: object + supported_workflow_engines: + properties: + title: + type: string + value: + items: + type: string + type: array + type: object + cwl_package: + properties: + title: + type: string + value: + type: string + cwl_version: + properties: + title: + type: string + value: + type: string + type: object + yadage_version: + properties: + title: + type: string + value: + type: string + adage_version: + properties: + title: + type: string + value: + type: string + packtivity_version: + properties: + title: + type: string + value: + type: string + snakemake_version: + properties: + title: + type: string + value: + type: string dask_enabled: properties: title: @@ -205,6 +252,39 @@ def info(user, **kwargs): # noqa "title": "Maximum timeout for Kubernetes jobs", "value": "1209600" }, + "supported_workflow_engines": { + "title": "List of supported worfklow engines", + "value": [ + "cwl", + "serial", + "snakemake", + "yadage" + ] + }, + "cwl_package": { + "title": "CWL package", + "value": "cwltool" + }, + "cwl_version": { + "title": "CWL version", + "value": "3.1.20210628163208" + }, + "yadage_version": { + "title": "Yadage version", + "value": "0.20.1" + }, + "adage_version": { + "title": "CWL version", + "value": "0.11.0" + }, + "packtivity_version": { + "title": "Packtivity version", + "value": "0.16.2" + }, + "snakemake_version": { + "title": "Snakemake", + "value": "8.24.1" + }, "dask_enabled": { "title": "Dask workflows allowed in the cluster", "value": "False" @@ -277,6 +357,21 @@ def info(user, **kwargs): # noqa title="Maximum inactivity period in days before automatic closure of interactive sessions", value=REANA_INTERACTIVE_SESSION_MAX_INACTIVITY_PERIOD, ), + supported_workflow_engines=dict( + title="List of supported workflow engines", + value=["cwl", "serial", "snakemake", "yadage"], + ), + cwl_package=dict(title="CWL package", value="cwltool"), + cwl_version=dict(title="CWL version", value=version("cwltool")), + yadage_version=dict(title="Yadage version", value=version("yadage")), + adage_version=dict(title="Adage version", value=version("adage")), + packtivity_version=dict( + title="Packtivity version", value=version("packtivity") + ), + snakemake_version=dict( + title="Snakemake version", + value=version("snakemake"), + ), dask_enabled=dict( title="Dask workflows allowed in the cluster", value=bool(DASK_ENABLED), @@ -343,6 +438,14 @@ class InfoSchema(Schema): StringNullableInfoValue ) kubernetes_max_memory_limit = fields.Nested(StringInfoValue) + supported_workflow_engines = fields.Nested(ListStringInfoValue) + cwl_package = fields.Nested(StringInfoValue) + cwl_version = fields.Nested(StringInfoValue) + yadage_version = fields.Nested(StringInfoValue) + adage_version = fields.Nested(StringInfoValue) + packtivity_version = fields.Nested(StringInfoValue) + snakemake_version = fields.Nested(StringInfoValue) + dask_enabled = fields.Nested(StringInfoValue) if DASK_ENABLED: dask_cluster_default_number_of_workers = fields.Nested(StringInfoValue)