![]() |
Belle II Software development
|
Public Member Functions | |
| __init__ (self, name, job_dict=None) | |
| __repr__ (self) | |
| ready (self) | |
| update_status (self) | |
| create_subjob (self, i, input_files=None, args=None) | |
| status (self) | |
| status (self, status) | |
| dump_to_json (self, file_path) | |
| from_json (cls, file_path) | |
| job_dict (self) | |
| dump_input_data (self) | |
| copy_input_sandbox_files_to_working_dir (self) | |
| check_input_data_files (self) | |
| full_command (self) | |
| append_current_basf2_setup_cmds (self) | |
Public Attributes | |
| name = name | |
| Job object's name. | |
| splitter = None | |
The SubjobSplitter used to create subjobs if necessary. | |
| list | input_sandbox_files = [] |
Files to be copied directly into the working directory (pathlib.Path). | |
| working_dir = Path() | |
Working directory of the job (pathlib.Path). | |
| output_dir = Path() | |
Output directory (pathlib.Path), where we will download our output_files to. | |
| list | output_patterns = [] |
| Files that we produce during the job and want to be returned. | |
| list | cmd = [] |
| Command and arguments as a list that will be run by the job on the backend. | |
| list | args = [] |
The arguments that will be applied to the cmd (These are ignored by SubJobs as they have their own arguments) | |
| list | input_files = [] |
Input files to job (str), a list of these is copied to the working directory. | |
| list | setup_cmds = [] |
| Bash commands to run before the main self.cmd (mainly used for batch system setup) | |
| dict | backend_args = {} |
| Config dictionary for the backend to use when submitting the job. | |
| dict | subjobs = {} |
| dict of subjobs assigned to this job | |
| result = None | |
| The result object of this Job. | |
| status = job_status | |
| Not a real attribute, it's a property. | |
Static Public Attributes | |
| dict | statuses = {"init": 0, "submitted": 1, "running": 2, "failed": 3, "completed": 4} |
| Allowed Job status dictionary. | |
| list | exit_statuses = ["failed", "completed"] |
| Job statuses that correspond to the Job being finished (successfully or not) | |
Protected Member Functions | |
| _get_overall_status_from_subjobs (self) | |
Protected Attributes | |
| str | _status = "init" |
The actual status of the overall Job. | |
This generic Job object is used to tell a Backend what to do.
This object basically holds necessary information about a process you want to submit to a `Backend`.
It should *not* do anything that is backend specific, just hold the configuration for a job to be
successfully submitted and monitored using a backend. The result attribute is where backend
specific job monitoring goes.
Parameters:
name (str): Simply a name to describe the Job, not used for any critical purpose in the CAF
.. warning:: It is recommended to always use absolute paths for files when submitting a `Job`.
Definition at line 336 of file backends.py.
| __init__ | ( | self, | |
| name, | |||
| job_dict = None ) |
Definition at line 357 of file backends.py.
| __repr__ | ( | self | ) |
Representation of Job class (what happens when you print a Job() instance).
Definition at line 406 of file backends.py.
|
protected |
Definition at line 463 of file backends.py.
| append_current_basf2_setup_cmds | ( | self | ) |
This adds simple setup commands like ``source /path/to/tools/b2setup`` to your `Job`. It should detect if you are using a local release or CVMFS and append the correct commands so that the job will have the same basf2 release environment. It should also detect if a local release is not compiled with the ``opt`` option. Note that this *doesn't mean that every environment variable is inherited* from the submitting process environment.
Definition at line 640 of file backends.py.
| check_input_data_files | ( | self | ) |
Check the input files and make sure that there aren't any duplicates. Also check if the files actually exist if possible.
Definition at line 598 of file backends.py.
| copy_input_sandbox_files_to_working_dir | ( | self | ) |
Get all of the requested files for the input sandbox and copy them to the working directory. Files like the submit.sh or input_data.json are not part of this process.
Definition at line 587 of file backends.py.
| create_subjob | ( | self, | |
| i, | |||
| input_files = None, | |||
| args = None ) |
Creates a subjob Job object that references that parent Job. Returns the SubJob object at the end.
Definition at line 435 of file backends.py.
| dump_input_data | ( | self | ) |
Dumps the `Job.input_files` attribute to a JSON file. input_files should be a list of string URI objects.
Definition at line 579 of file backends.py.
| dump_to_json | ( | self, | |
| file_path ) |
Dumps the Job object configuration to a JSON file so that it can be read in again later. Parameters: file_path(`basf2.Path`): The filepath we'll dump to
Definition at line 538 of file backends.py.
| from_json | ( | cls, | |
| file_path ) |
Definition at line 551 of file backends.py.
| full_command | ( | self | ) |
Returns:
str: The full command that this job will run including any arguments.
Definition at line 628 of file backends.py.
| job_dict | ( | self | ) |
Returns:
dict: A JSON serialisable representation of the `Job` and its `SubJob` objects.
`Path <basf2.Path>` objects are converted to string via ``Path.as_posix()``.
Reimplemented in SubJob.
Definition at line 559 of file backends.py.
| ready | ( | self | ) |
Returns whether or not the Job has finished. If the job has subjobs then it will return true when they are all finished. It will return False as soon as it hits the first failure. Meaning that you cannot guarantee that all subjobs will have their status updated when calling this method. Instead use :py:meth:`update_status` to update all statuses if necessary.
Definition at line 412 of file backends.py.
| status | ( | self | ) |
Returns the status of this Job. If the job has subjobs then it will return the overall status equal to the lowest subjob status in the hierarchy of statuses in `Job.statuses`.
Reimplemented in SubJob, and SubJob.
Definition at line 451 of file backends.py.
| status | ( | self, | |
| status ) |
Sets the status of this Job.
Reimplemented in SubJob, and SubJob.
Definition at line 473 of file backends.py.
| update_status | ( | self | ) |
Calls :py:meth:`update_status` on the job's result. The result object should update all of the subjobs (if there are any) in the best way for the type of result object/backend.
Definition at line 424 of file backends.py.
|
protected |
The actual status of the overall Job.
The property handles querying for the subjob status to set this
Definition at line 404 of file backends.py.
| args = [] |
The arguments that will be applied to the cmd (These are ignored by SubJobs as they have their own arguments)
Definition at line 376 of file backends.py.
| dict backend_args = {} |
Config dictionary for the backend to use when submitting the job.
Saves us from having multiple attributes that may or may not be used.
Definition at line 383 of file backends.py.
| list cmd = [] |
Command and arguments as a list that will be run by the job on the backend.
Definition at line 374 of file backends.py.
|
static |
Job statuses that correspond to the Job being finished (successfully or not)
Definition at line 355 of file backends.py.
| input_files = [] |
Input files to job (str), a list of these is copied to the working directory.
Definition at line 378 of file backends.py.
| list input_sandbox_files = [] |
Files to be copied directly into the working directory (pathlib.Path).
Not the input root files, those should be in Job.input_files.
Definition at line 366 of file backends.py.
| name = name |
Job object's name.
Only descriptive, not necessarily unique.
Reimplemented in SubJob.
Definition at line 361 of file backends.py.
| output_dir = Path() |
Output directory (pathlib.Path), where we will download our output_files to.
Default is '.'
Reimplemented in SubJob.
Definition at line 370 of file backends.py.
| list output_patterns = [] |
Files that we produce during the job and want to be returned.
Can use wildcard (*)
Definition at line 372 of file backends.py.
| result = None |
The result object of this Job.
Only filled once the job is submitted to a backend since the backend creates a special result class depending on its type.
Definition at line 402 of file backends.py.
| setup_cmds = [] |
Bash commands to run before the main self.cmd (mainly used for batch system setup)
Definition at line 380 of file backends.py.
| splitter = None |
The SubjobSplitter used to create subjobs if necessary.
Definition at line 363 of file backends.py.
| status = job_status |
Not a real attribute, it's a property.
Reimplemented in SubJob, and SubJob.
Definition at line 460 of file backends.py.
|
static |
Allowed Job status dictionary.
The key is the status name and the value is its level. The lowest level out of all subjobs is the one that is the overall status of the overall job.
Definition at line 352 of file backends.py.
| dict subjobs = {} |
dict of subjobs assigned to this job
Reimplemented in SubJob.
Definition at line 385 of file backends.py.
| working_dir = Path() |
Working directory of the job (pathlib.Path).
Default is '.', mostly used in Local() backend
Reimplemented in SubJob.
Definition at line 368 of file backends.py.