From b78ff1a82609b1efb1b27b9ab1ea1d1700646c67 Mon Sep 17 00:00:00 2001 From: George Zubrienko Date: Tue, 7 Nov 2023 13:55:47 +0100 Subject: [PATCH] Update v3 models and add get_logs method (#79) --- .../beast/v3/_connector.py | 15 ++++++++ esd_services_api_client/beast/v3/_models.py | 37 +++++++++---------- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/esd_services_api_client/beast/v3/_connector.py b/esd_services_api_client/beast/v3/_connector.py index 8f4e3fa..075fbef 100644 --- a/esd_services_api_client/beast/v3/_connector.py +++ b/esd_services_api_client/beast/v3/_connector.py @@ -280,3 +280,18 @@ def get_configuration( response.raise_for_status() return SparkSubmissionConfiguration.from_dict(response.json()) + + def get_logs(self, request_id: str) -> Optional[str]: + """ + Returns logs for a running or a completed submission. + + :param request_id: Submission request identifier. + :return: A job log, if found, or None + """ + response = self.http.get(f"{self.base_url}/job/logs/{request_id}") + if response.status_code == 404: + return None + if not response.ok: + response.raise_for_status() + + return "\n".join(response.json()) diff --git a/esd_services_api_client/beast/v3/_models.py b/esd_services_api_client/beast/v3/_models.py index a237b7f..9ca9b11 100644 --- a/esd_services_api_client/beast/v3/_models.py +++ b/esd_services_api_client/beast/v3/_models.py @@ -204,33 +204,18 @@ class RequestDebugMode(DataClassJsonMixin): @dataclass_json(letter_case=LetterCase.CAMEL) @dataclass -class V1TypedLocalObjectReference(DataClassJsonMixin): +class SparkSubmissionDetails(DataClassJsonMixin): """ - Reference to another SparkJob. + Job runtime details """ - api_group: str - kind: str - name: str - - -@dataclass_json(letter_case=LetterCase.CAMEL) -@dataclass -class SparkSubmissionConfiguration(DataClassJsonMixin): - """ - Configuration CRD used by Beast to run Spark apps. - """ - - root_path: str - project_name: str version: str - runnable: str execution_group: str expected_parallelism: Optional[int] flexible_driver: Optional[bool] additional_driver_node_tolerations: Dict[str, str] max_runtime_hours: Optional[int] - debug_mode: RequestDebugMode + debug_mode: Optional[RequestDebugMode] submission_mode: Optional[str] extended_code_mount: Optional[bool] submission_job_template: str @@ -239,5 +224,17 @@ class SparkSubmissionConfiguration(DataClassJsonMixin): default_arguments: Dict[str, str] inputs: List[JobSocket] outputs: List[JobSocket] - overwrite: bool - base_submission_configuration_ref: V1TypedLocalObjectReference + overwrite: Optional[bool] + + +@dataclass_json(letter_case=LetterCase.CAMEL) +@dataclass +class SparkSubmissionConfiguration(DataClassJsonMixin): + """ + Configuration CRD used by Beast to run Spark apps. + """ + + root_path: str + project_name: str + runnable: str + submission_details: SparkSubmissionDetails