Skip to content

Commit 009ca53

Browse files
committed
review
1 parent 4edd278 commit 009ca53

8 files changed

Lines changed: 72 additions & 41 deletions

File tree

deployment/config.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ custom:
6464
serviceAccountName: default
6565
containers:
6666
- name: taskmaster
67-
image: eu.gcr.io/tes-wes/taskmaster:v0.0.5.2
67+
image: docker.io/elixircloud/tesk-core-taskmaster:v0.10.2
6868
args:
6969
- -f
7070
- /jsoninput/JSON_INPUT.gz
@@ -98,13 +98,13 @@ custom:
9898
restartPolicy: Never
9999
taskmaster_env_properties:
100100
# Taskmaster image name
101-
imageName: eu.gcr.io/tes-wes/taskmaster
101+
imageName: docker.io/elixircloud/tesk-core-taskmaster
102102
# Taskmaster image version
103-
imageVersion: v0.10.0
103+
imageVersion: latest
104104
# Filer image name
105-
filerImageName: eu.gcr.io/tes-wes/filer
105+
filerImageName: docker.io/elixircloud/tesk-core-filer
106106
# Filer image version
107-
filerImageVersion: v0.10.0
107+
filerImageVersion: latest
108108
# Test FTP account settings
109109
ftp:
110110
# Name of the secret with FTP account credentials

tesk/api/ga4gh/tes/controllers.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from tesk.api.ga4gh.tes.models import TesTask
99
from tesk.utils import get_custom_config
1010
from tesk.api.kubernetes.converter import TesKubernetesConverter
11-
11+
from tesk.exceptions import BadRequest, InternalServerError
1212
# from tesk.api.ga4gh.tes.task.create_task import CreateTask as TaskCreater
1313

1414
# Get logger instance
@@ -37,16 +37,13 @@ def CreateTask(**kwargs) -> dict: # type: ignore
3737
*args: Variable length argument list.
3838
**kwargs: Arbitrary keyword arguments.
3939
"""
40-
request_body = kwargs["body"]
41-
create_task_request = TesTask(**request_body)
42-
user = {
43-
"username": "test",
44-
"is_member": True,
45-
"any_group": "test_group",
46-
}
47-
tkc = TesKubernetesConverter().from_tes_task_to_k8s_job(create_task_request, user)
48-
print(tkc)
49-
pass
40+
try:
41+
request_body = kwargs.get("body")
42+
if request_body is None:
43+
logger("Nothing recieved in request body.")
44+
raise BadRequest("No request body recieved.")
45+
except Exception as e:
46+
raise InternalServerError from e
5047

5148

5249
# GET /tasks/service-info

tesk/api/ga4gh/tes/task/create_task.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@
77
from tesk.api.kubernetes.constants import Constants
88
from tesk.api.kubernetes.converter import TesKubernetesConverter
99
from tesk.exceptions import KubernetesError
10+
from tesk.constants import TeskConstants
1011

1112
logger = logging.getLogger(__name__)
1213

1314

1415
class CreateTesTask:
1516
"""Create TES task."""
1617

17-
def __init__(self, task: TesTask, user=None, namespace="default"):
18+
# TODO: Add user to the class when auth implemented in FOCA
19+
def __init__(self, task: TesTask, namespace=TeskConstants.tesk_namespace):
1820
"""Initialize the CreateTask class.
1921
2022
Args:
@@ -23,7 +25,7 @@ def __init__(self, task: TesTask, user=None, namespace="default"):
2325
namespace: Kubernetes namespace where the task is created.
2426
"""
2527
self.task = task
26-
self.user = user
28+
# self.user = user
2729
self.kubernetes_client_wrapper = KubernetesClientWrapper()
2830
self.namespace = namespace
2931
self.tes_kubernetes_converter = TesKubernetesConverter(self.namespace)
@@ -32,7 +34,7 @@ def __init__(self, task: TesTask, user=None, namespace="default"):
3234
def create_task(self):
3335
"""Create TES task."""
3436
attempts_no = 0
35-
while True:
37+
while attempts_no > self.constants.job_create_attempts_no:
3638
try:
3739
resources = self.task.resources
3840

@@ -46,7 +48,7 @@ def create_task(self):
4648
self.task, self.user
4749
)
4850
)
49-
51+
5052
# TODO: Create ConfigMap
5153
# TODO: Create Job
5254
# TODO Return created job

tesk/api/kubernetes/client_wrapper.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from kubernetes.client import V1ConfigMap, V1Job, V1LimitRangeList
88
from kubernetes.utils.quantity import parse_quantity # type: ignore
99

10+
from tesk.constants import TeskConstants
1011
from tesk.exceptions import KubernetesError, NotFound
1112

1213
logger = logging.getLogger(__name__)
@@ -15,7 +16,7 @@
1516
class KubernetesClientWrapper:
1617
"""Kubernetes client wrapper class."""
1718

18-
def __init__(self, namespace="tesk"):
19+
def __init__(self, namespace=TeskConstants.tesk_namespace):
1920
"""Initialize the Kubernetes client wrapper.
2021
2122
Args:
@@ -132,9 +133,12 @@ def minimum_ram_gb(self) -> float:
132133
mem_bytes = self.quantity_to_bytes(mem_quantity)
133134
min_ram = max(min_ram, mem_bytes)
134135
return min_ram / (1024**3)
135-
except Exception as e:
136+
except (ValueError, TypeError) as e:
136137
logger.error(f"Error in minimum_ram_gb: {e}")
137138
return 0.0
139+
except Exception as e:
140+
logger.error(f"Unexpected error in minimum_ram_gb: {e}")
141+
raise
138142

139143
def quantity_to_bytes(self, quantity: str) -> int:
140144
"""Convert quantity(resource) to bytes."""

tesk/api/kubernetes/converter.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@
1616
from tesk.api.ga4gh.tes.models import TesTask
1717
from tesk.api.kubernetes.constants import Constants, K8sConstants
1818
from tesk.api.kubernetes.template import KubernetesTemplateSupplier
19+
from tesk.constants import TeskConstants
1920
from tesk.custom_config import TaskmasterEnvProperties
2021
from tesk.utils import get_taskmaster_env_property, get_taskmaster_template
2122

2223
logger = logging.getLogger(__name__)
2324

2425

2526
class TesKubernetesConverter:
26-
def __init__(self, namespace="default"):
27+
def __init__(self, namespace=TeskConstants.tesk_namespace):
2728
"""Initialize the converter."""
2829
self.taskmaster_template: V1Job = get_taskmaster_template()
2930
self.taskmaster_env_properties: TaskmasterEnvProperties = (
@@ -33,7 +34,8 @@ def __init__(self, namespace="default"):
3334
self.k8s_constants = K8sConstants()
3435
self.namespace = namespace
3536

36-
def from_tes_task_to_k8s_job(self, task: TesTask, user):
37+
# TODO: Add user to the mmethod when auth implemented in FOCA
38+
def from_tes_task_to_k8s_job(self, task: TesTask):
3739
taskmsater_job: V1Job = KubernetesTemplateSupplier(
3840
self.namespace
3941
).task_master_template()
@@ -50,18 +52,18 @@ def from_tes_task_to_k8s_job(self, task: TesTask, user):
5052
taskmsater_job.metadata.annotations[self.constants.ann_testask_name_key] = (
5153
task.name
5254
)
53-
taskmsater_job.metadata.labels[self.constants.label_userid_key] = user[
54-
"username"
55-
]
56-
57-
if task.tags and "GROUP_NAME" in task.tags:
58-
taskmsater_job.metadata.labels[self.constants.label_userid_key] = task[
59-
"tags"
60-
]["GROUP_NAME"]
61-
elif user["is_member"]:
62-
taskmsater_job.metadata.labels[self.constants.label_groupname_key] = user[
63-
"any_group"
64-
]
55+
# taskmsater_job.metadata.labels[self.constants.label_userid_key] = user[
56+
# "username"
57+
# ]
58+
59+
# if task.tags and "GROUP_NAME" in task.tags:
60+
# taskmsater_job.metadata.labels[self.constants.label_userid_key] = task[
61+
# "tags"
62+
# ]["GROUP_NAME"]
63+
# elif user["is_member"]:
64+
# taskmsater_job.metadata.labels[self.constants.label_groupname_key] = user[
65+
# "any_group"
66+
# ]
6567

6668
try:
6769
taskmsater_job.metadata.annotations[self.constants.ann_json_input_key] = (

tesk/api/kubernetes/template.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from kubernetes.client.models import V1Job
1010

1111
from tesk.api.kubernetes.constants import Constants, K8sConstants
12+
from tesk.constants import TeskConstants
1213
from tesk.custom_config import TaskmasterEnvProperties
1314
from tesk.utils import get_taskmaster_env_property, get_taskmaster_template
1415

@@ -18,7 +19,7 @@
1819
class KubernetesTemplateSupplier:
1920
"""Templates for tasmaster's and executor's job object.."""
2021

21-
def __init__(self, namespace="default"):
22+
def __init__(self, namespace=TeskConstants.tesk_namespace):
2223
"""Initialize the converter."""
2324
self.taskmaster_template: V1Job = get_taskmaster_template()
2425
self.taskmaster_env_properties: TaskmasterEnvProperties = (

tesk/constants.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
"""Tesk scoped constants."""
2+
3+
import os
4+
5+
6+
class TeskConstants:
7+
"""Tesk scoped constants."""
8+
9+
filer_image_name: str = os.getenv(
10+
"FILER_IMAGE_NAME", "docker.io/elixircloud/tesk-core-filer"
11+
)
12+
filer_image_version: str = os.getenv("FILER_IMAGE_VERSION", "latest")
13+
taskmaster_image_name: str = os.getenv(
14+
"TASKMASTER_IMAGE_NAME", "docker.io/elixircloud/tesk-core-taskmaster"
15+
)
16+
taskmaster_image_version: str = os.getenv("TASKMASTER_IMAGE_VERSION", "latest")
17+
tesk_namespace: str = os.getenv("TESK_NAMESPACE", "tesk")

tesk/custom_config.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
from pydantic import BaseModel, Field
66

7+
from tesk.constants import TeskConstants
8+
79

810
class FtpConfig(BaseModel):
911
"""Ftp configuration model for the TESK."""
@@ -21,13 +23,19 @@ class TaskmasterEnvProperties(BaseModel):
2123
"""Taskmaster environment properties model for the TESK."""
2224

2325
imageName: str = Field(
24-
default="eu.gcr.io/tes-wes/taskmaster", description="Taskmaster image name"
26+
default=TeskConstants.taskmaster_image_name,
27+
description="Taskmaster image name",
28+
)
29+
imageVersion: str = Field(
30+
default=TeskConstants.taskmaster_image_version,
31+
description="Taskmaster image version",
2532
)
26-
imageVersion: str = Field(default="v0.10.0", description="Taskmaster image version")
2733
filerImageName: str = Field(
28-
default="eu.gcr.io/tes-wes/filer", description="Filer image name"
34+
default=TeskConstants.filer_image_name, description="Filer image name"
35+
)
36+
filerImageVersion: str = Field(
37+
default=TeskConstants.filer_image_version, description="Filer image version"
2938
)
30-
filerImageVersion: str = Field(default="v0.10.0", description="Filer image version")
3139
ftp: FtpConfig = Field(default=None, description="Test FTP account settings")
3240
debug: bool = Field(
3341
default=False,

0 commit comments

Comments
 (0)