Coverage for functions/jobs.py: 100%
30 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-08-30 11:51 -0700
« prev ^ index » next coverage.py v7.4.4, created at 2024-08-30 11:51 -0700
1"""
2JobHandling class.
3"""
5# └── functions/jobs.py
6# ├── [BROKER] get_job()
7# ├── [BROKER] set_job()
8# └── [BROKER] complete_job()
10from .broker import BrokerConnect
12from .information import Information
13from .resources import Resources
15class JobHandling():
16 """Job handling class."""
17 def __init__(self, state):
18 self.broker = BrokerConnect(state)
19 self.info = Information(state)
20 self.resource = Resources(state)
21 self.state = state
23 def get_job(self, job_str=None):
24 """Retrieves the status or details of the specified job."""
25 self.state.print_status(description="Retrieving job data...")
27 status_data = self.info.read_status()
29 if status_data is None:
30 error = "ERROR: No job data available."
31 self.state.print_status(description=error, update_only=True)
32 self.state.error = error
33 return
35 if job_str is None:
36 jobs = status_data["jobs"]
37 else:
38 jobs = status_data["jobs"][job_str]
40 self.state.print_status(endpoint_json=jobs, update_only=True)
41 return jobs
43 def set_job(self, job_str, status_message, value):
44 """Initiates or modifies job with given parameters."""
45 self.state.print_status(description=f"Marking job {job_str} as {value}% {status_message}.")
47 lua_code = f"""
48 local job_name = "{job_str}"
49 set_job(job_name)
51 -- Update the job\'s status and percent:
52 set_job(job_name, {
53 status = "{status_message}",
54 percent = {value}
55 } )
56 """
58 self.resource.lua(lua_code)
60 def complete_job(self, job_str):
61 """Marks job as completed and triggers any associated actions."""
62 self.state.print_status(description=f"Marking job {job_str} as `complete`.")
64 lua_code = f"""
65 complete_job("{job_str}")
66 """
68 self.resource.lua(lua_code)