Coverage for functions/jobs.py: 100%

30 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-08-30 11:51 -0700

1""" 

2JobHandling class. 

3""" 

4 

5# └── functions/jobs.py 

6# ├── [BROKER] get_job() 

7# ├── [BROKER] set_job() 

8# └── [BROKER] complete_job() 

9 

10from .broker import BrokerConnect 

11 

12from .information import Information 

13from .resources import Resources 

14 

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 

22 

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...") 

26 

27 status_data = self.info.read_status() 

28 

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 

34 

35 if job_str is None: 

36 jobs = status_data["jobs"] 

37 else: 

38 jobs = status_data["jobs"][job_str] 

39 

40 self.state.print_status(endpoint_json=jobs, update_only=True) 

41 return jobs 

42 

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}.") 

46 

47 lua_code = f""" 

48 local job_name = "{job_str}" 

49 set_job(job_name) 

50 

51 -- Update the job\'s status and percent: 

52 set_job(job_name, { 

53 status = "{status_message}", 

54 percent = {value} 

55 } ) 

56 """ 

57 

58 self.resource.lua(lua_code) 

59 

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`.") 

63 

64 lua_code = f""" 

65 complete_job("{job_str}") 

66 """ 

67 

68 self.resource.lua(lua_code)