diff --git a/src/DIRAC/WorkloadManagementSystem/Client/JobStateUpdateClient.py b/src/DIRAC/WorkloadManagementSystem/Client/JobStateUpdateClient.py index d49468f8c6f..87072b9a337 100644 --- a/src/DIRAC/WorkloadManagementSystem/Client/JobStateUpdateClient.py +++ b/src/DIRAC/WorkloadManagementSystem/Client/JobStateUpdateClient.py @@ -1,12 +1,17 @@ """ Class that contains client access to the JobStateUpdate handler. """ from DIRAC.Core.Base.Client import Client, createClient +from DIRAC.WorkloadManagementSystem.FutureClient.JobStateUpdateClient import ( + JobStateUpdateClient as futureJobStateUpdateClient, +) @createClient("WorkloadManagement/JobStateUpdate") class JobStateUpdateClient(Client): """JobStateUpdateClient sets url for the JobStateUpdateHandler.""" + diracxClient = futureJobStateUpdateClient + def __init__(self, url=None, **kwargs): """ Sets URL for JobStateUpdate handler diff --git a/src/DIRAC/WorkloadManagementSystem/FutureClient/JobStateUpdateClient.py b/src/DIRAC/WorkloadManagementSystem/FutureClient/JobStateUpdateClient.py new file mode 100644 index 00000000000..f8f662d7b30 --- /dev/null +++ b/src/DIRAC/WorkloadManagementSystem/FutureClient/JobStateUpdateClient.py @@ -0,0 +1,50 @@ +from DIRAC.Core.Security.DiracX import DiracXClient +from DIRAC.Core.Utilities.ReturnValues import convertToReturnValue + + +class JobStateUpdateClient: + def sendHeartBeat(self, jobID: str | int, dynamicData: dict, staticData: dict): + raise NotImplementedError("TODO") + + def setJobApplicationStatus(self, jobID: str | int, appStatus: str, source: str = "Unknown"): + raise NotImplementedError("TODO") + + def setJobAttribute(self, jobID: str | int, attribute: str, value: str): + with DiracXClient() as api: + api.jobs.set_single_job_properties(jobID, "need to [patch the client to have a nice summer body ?") + raise NotImplementedError("TODO") + + def setJobFlag(self, jobID: str | int, flag: str): + raise NotImplementedError("TODO") + + def setJobParameter(self, jobID: str | int, name: str, value: str): + raise NotImplementedError("TODO") + + def setJobParameters(self, jobID: str | int, parameters: list): + raise NotImplementedError("TODO") + + def setJobSite(self, jobID: str | int, site: str): + raise NotImplementedError("TODO") + + def setJobStatus( + self, + jobID: str | int, + status: str = "", + minorStatus: str = "", + source: str = "Unknown", + datetime=None, + force=False, + ): + raise NotImplementedError("TODO") + + def setJobStatusBulk(self, jobID: str | int, statusDict: dict, force=False): + raise NotImplementedError("TODO") + + def setJobsParameter(self, jobsParameterDict: dict): + raise NotImplementedError("TODO") + + def unsetJobFlag(self, jobID: str | int, flag: str): + raise NotImplementedError("TODO") + + def updateJobFromStager(self, jobID: str | int, status: str): + raise NotImplementedError("TODO") diff --git a/tests/Integration/FutureClient/WorkloadManagement/Test_JobStateUpdate.py b/tests/Integration/FutureClient/WorkloadManagement/Test_JobStateUpdate.py new file mode 100644 index 00000000000..c9fbf920367 --- /dev/null +++ b/tests/Integration/FutureClient/WorkloadManagement/Test_JobStateUpdate.py @@ -0,0 +1,81 @@ +from functools import partial + +import pytest + +import DIRAC + +DIRAC.initialize() +from DIRAC.WorkloadManagementSystem.Client.JobStateUpdateClient import JobStateUpdateClient +from ..utils import compare_results + + +def test_sendHeartBeat(monkeypatch): + # JobStateUpdateClient().sendHeartBeat(jobID: str | int, dynamicData: dict, staticData: dict) + method = JobStateUpdateClient().sendHeartBeat + pytest.skip() + + +def test_setJobApplicationStatus(monkeypatch): + # JobStateUpdateClient().setJobApplicationStatus(jobID: str | int, appStatus: str, source: str = Unknown) + method = JobStateUpdateClient().setJobApplicationStatus + pytest.skip() + + +def test_setJobAttribute(monkeypatch): + # JobStateUpdateClient().setJobAttribute(jobID: str | int, attribute: str, value: str) + method = JobStateUpdateClient().setJobAttribute + pytest.skip() + + +def test_setJobFlag(monkeypatch): + # JobStateUpdateClient().setJobFlag(jobID: str | int, flag: str) + method = JobStateUpdateClient().setJobFlag + pytest.skip() + + +def test_setJobParameter(monkeypatch): + # JobStateUpdateClient().setJobParameter(jobID: str | int, name: str, value: str) + method = JobStateUpdateClient().setJobParameter + pytest.skip() + + +def test_setJobParameters(monkeypatch): + # JobStateUpdateClient().setJobParameters(jobID: str | int, parameters: list) + method = JobStateUpdateClient().setJobParameters + pytest.skip() + + +def test_setJobSite(monkeypatch): + # JobStateUpdateClient().setJobSite(jobID: str | int, site: str) + method = JobStateUpdateClient().setJobSite + pytest.skip() + + +def test_setJobStatus(monkeypatch): + # JobStateUpdateClient().setJobStatus(jobID: str | int, status: str = , minorStatus: str = , source: str = Unknown, datetime = None, force = False) + method = JobStateUpdateClient().setJobStatus + pytest.skip() + + +def test_setJobStatusBulk(monkeypatch): + # JobStateUpdateClient().setJobStatusBulk(jobID: str | int, statusDict: dict, force = False) + method = JobStateUpdateClient().setJobStatusBulk + pytest.skip() + + +def test_setJobsParameter(monkeypatch): + # JobStateUpdateClient().setJobsParameter(jobsParameterDict: dict) + method = JobStateUpdateClient().setJobsParameter + pytest.skip() + + +def test_unsetJobFlag(monkeypatch): + # JobStateUpdateClient().unsetJobFlag(jobID: str | int, flag: str) + method = JobStateUpdateClient().unsetJobFlag + pytest.skip() + + +def test_updateJobFromStager(monkeypatch): + # JobStateUpdateClient().updateJobFromStager(jobID: str | int, status: str) + method = JobStateUpdateClient().updateJobFromStager + pytest.skip()