diff --git a/reana_workflow_controller/config.py b/reana_workflow_controller/config.py index 40f8bd08..7f8c4222 100644 --- a/reana_workflow_controller/config.py +++ b/reana_workflow_controller/config.py @@ -109,8 +109,59 @@ def compose_reana_url(hostname: str, hostport: int) -> str: ) """Snakemake workflow engine version.""" +REANA_KUBERNETES_JOBS_CPU_REQUEST = os.getenv("REANA_KUBERNETES_JOBS_CPU_REQUEST") +"""Default CPU request for user job containers. + +Please see the following URL for possible values +https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu. +""" + +REANA_KUBERNETES_JOBS_CPU_LIMIT = os.getenv("REANA_KUBERNETES_JOBS_CPU_LIMIT") +"""Default CPU limit for user job containers. + +Please see the following URL for possible values +https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu. +""" + +REANA_KUBERNETES_JOBS_MEMORY_REQUEST = os.getenv("REANA_KUBERNETES_JOBS_MEMORY_REQUEST") +"""Default memory request for user job containers. + +Please see the following URL for possible values +https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory. +""" + REANA_KUBERNETES_JOBS_MEMORY_LIMIT = os.getenv("REANA_KUBERNETES_JOBS_MEMORY_LIMIT") -"""Maximum default memory limit for user job containers. Exceeding this limit will terminate the container. +"""Default memory limit for user job containers. Exceeding this limit will terminate the container. + +Please see the following URL for possible values +https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory. +""" + +REANA_KUBERNETES_JOBS_MAX_USER_CPU_REQUEST = os.getenv( + "REANA_KUBERNETES_JOBS_MAX_USER_CPU_REQUEST" +) +"""Maximum custom CPU request that users can assign to their job containers via +``kubernetes_cpu_request`` in reana.yaml. + +Please see the following URL for possible values +https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu. +""" + +REANA_KUBERNETES_JOBS_MAX_USER_CPU_LIMIT = os.getenv( + "REANA_KUBERNETES_JOBS_MAX_USER_CPU_LIMIT" +) +"""Maximum custom CPU limit that users can assign to their job containers via +``kubernetes_cpu_limit`` in reana.yaml. Exceeding this limit will terminate the container. + +Please see the following URL for possible values +https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu. +""" + +REANA_KUBERNETES_JOBS_MAX_USER_MEMORY_REQUEST = os.getenv( + "REANA_KUBERNETES_JOBS_MAX_USER_MEMORY_REQUEST" +) +"""Maximum custom memory request that users can assign to their job containers via +``kubernetes_memory_request`` in reana.yaml. Please see the following URL for possible values https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory. diff --git a/reana_workflow_controller/workflow_run_manager.py b/reana_workflow_controller/workflow_run_manager.py index 160af252..202e6f01 100644 --- a/reana_workflow_controller/workflow_run_manager.py +++ b/reana_workflow_controller/workflow_run_manager.py @@ -75,9 +75,15 @@ REANA_INTERACTIVE_SESSIONS_ENVIRONMENTS, REANA_INTERACTIVE_SESSIONS_RECOMMENDED_IMAGES, REANA_RUNTIME_BATCH_TERMINATION_GRACE_PERIOD, - REANA_KUBERNETES_JOBS_MAX_USER_MEMORY_LIMIT, + REANA_KUBERNETES_JOBS_CPU_REQUEST, + REANA_KUBERNETES_JOBS_CPU_LIMIT, + REANA_KUBERNETES_JOBS_MEMORY_REQUEST, REANA_KUBERNETES_JOBS_MEMORY_LIMIT, REANA_KUBERNETES_JOBS_TIMEOUT_LIMIT, + REANA_KUBERNETES_JOBS_MAX_USER_CPU_REQUEST, + REANA_KUBERNETES_JOBS_MAX_USER_CPU_LIMIT, + REANA_KUBERNETES_JOBS_MAX_USER_MEMORY_REQUEST, + REANA_KUBERNETES_JOBS_MAX_USER_MEMORY_LIMIT, REANA_KUBERNETES_JOBS_MAX_USER_TIMEOUT_LIMIT, REANA_WORKFLOW_ENGINE_IMAGE_CWL, REANA_WORKFLOW_ENGINE_IMAGE_SERIAL, @@ -765,10 +771,34 @@ def _create_job_spec( REANA_RUNTIME_KUBERNETES_KEEP_ALIVE_JOBS_WITH_STATUSES ), }, + { + "name": "REANA_KUBERNETES_JOBS_CPU_REQUEST", + "value": REANA_KUBERNETES_JOBS_CPU_REQUEST, + }, + { + "name": "REANA_KUBERNETES_JOBS_CPU_LIMIT", + "value": REANA_KUBERNETES_JOBS_CPU_LIMIT, + }, + { + "name": "REANA_KUBERNETES_JOBS_MEMORY_REQUEST", + "value": REANA_KUBERNETES_JOBS_MEMORY_REQUEST, + }, { "name": "REANA_KUBERNETES_JOBS_MEMORY_LIMIT", "value": REANA_KUBERNETES_JOBS_MEMORY_LIMIT, }, + { + "name": "REANA_KUBERNETES_JOBS_MAX_USER_CPU_REQUEST", + "value": REANA_KUBERNETES_JOBS_MAX_USER_CPU_REQUEST, + }, + { + "name": "REANA_KUBERNETES_JOBS_MAX_USER_CPU_LIMIT", + "value": REANA_KUBERNETES_JOBS_MAX_USER_CPU_LIMIT, + }, + { + "name": "REANA_KUBERNETES_JOBS_MAX_USER_MEMORY_REQUEST", + "value": REANA_KUBERNETES_JOBS_MAX_USER_MEMORY_REQUEST, + }, { "name": "REANA_KUBERNETES_JOBS_MAX_USER_MEMORY_LIMIT", "value": REANA_KUBERNETES_JOBS_MAX_USER_MEMORY_LIMIT,